やること
LINE Messaging APIとAmazon API Gatewayで、オウム返しするBotを作ります。
参考
以下サイトを参考にしました。(というかそのまま)
前提
LINE developersとAWSへのアカウント登録が必要です。
構成図
このような構成を作ります。
LINE Messaging APIでBot用のチャネルを作り、API Gatewayで作成したAPIを呼び出します。APIは受信したメッセージをそのまま返信します。これでオウム返しBotを作ります。では、作っていきます。
1.LINE Developersでプロバイダーとチャネルを作ろう
1-1.LINE developersのサイトにログインしプロバイダーリスト
を開き、新規プロバイダー作成
ボタンをクリックします。
1-2.プロバイダー名を入力し、確認する
ボタンをクリックします。
1-3.プロバイダーが作成したら、チャネル作成する
ボタンをクリックして、チャネルを作成します。
必要事項を記載したら、最下部にある入力内容を確認する
ボタンをクリックします。
情報利用に関する同意について
を確認し、同意する
ボタンをクリックします。更に、利用規約に同意するかのチェックを行い、作成
ボタンをクリックします。このように、Messaging APIのチャネルが作成されれば成功です。
1-4.作成したチャネルの設定を変更します。作成したチャネルをクリックし、チャネルの基本設定
タブを開きます。
2.AWSのAPI GatewayでREST APIを作ろう
2-1.API Gatewayでオウム返しするAPIを作ります。API GatewayのAPIの作成
ボタンをクリックします。
2-2.API名、説明などを入力し、APIの作成
ボタンをクリックします。
2-3.アクション
のメソッドの作成
をクリックします。
2-4.POST
を選択し、チェックマークをクリックします。
2-5.エンドポイントに https://api.line.me/v2/bot/message/reply
を設定し、保存
ボタンをクリックします。
2-6.作成したPOSTを選択し統合リクエスト
をクリックします。
2-7.アクセストークン
の再発行
ボタンをクリックします。
2-8.HTTPヘッダー
のヘッダーの追加
をクリックします。
2-9.名前にAuthorization
を、マッピング元に 'Bearer△<アクセストークン>'
(△は半角空白)と入力し、チェックマークをクリックします。※ '(シングルクォーテーション)で囲むことを忘れないよう注意
2-10.マッピングテンプレートを追加します。マッピングテンプレートで application/json
を新規に作成します。
#set($data = $input.path('$.events[0]'))
{
"replyToken": "$data.replyToken",
"messages": [
{
"type": "text",
"text": "$data.message.text"
}
]
}
2-11.ヘッダーの追加が完了したら、上部にあるメソッドの実行
のリンクをクリックし、POSTメソッドの画面に戻ります。
2-12.API GatewayをデプロイしてURLを取得します。アクション
のAPIのデプロイ
をクリックします。
2-12.ステージ名などを登録し、デプロイ
ボタンをクリックします。
2-13.これでURLが作成されました。後で使うのでURLの呼び出し
のURLをコピーします
3.LINE Developersでチャネルの設定を更新しよう
3-1.作成したチャネルのチャネルの基本設定
のWebhook送信
にAPI GatewayのURLを登録します(手順 2-13 でコピーしたURL)。
4.Botを友達登録します。
4-1.作成したチャネルのチャネルの基本設定
のBot情報
のQRコードから友達登録します。
5.動作を確認します
5-1.以下のように、チャネルの設定により、挙動が異なりますが、送ったメッセージをオウム返しすれば成功です。
(以下は、LINEチャネルの設定による挙動の違いを示しています)
※注意事項※ AWS利用料に注意
API Gatewayは、受信したAPI呼び出しと、送出したデータ量に対して料金が発生します。今回紹介した作り方は、インターネットを経由して、どこからでもAPIを呼び出せるので、嫌がらせ(大量アクセス)によって利用料が高くなる可能性があります。使わないときは削除するなど、何か対策することをオススメします。
API Gatewayの利用料について、詳細はこちらを確認ください。
Amazon API Gateway の料金
おわりに
とりあえずオウム返しのLINE Botを作ることができました。紹介した作り方では、API Gatewayの安全対策が不十分なので、今後は、安全対策も含めたAPIの作り方を調査しようと思います。
追記 2019/11/28
APIキーでアクセス制御した方法を以下で紹介しました。
8万語の辞書を持ったインテリBotを常時利用できるようにした話
https://qiita.com/zgw426/items/67c4ef35ed62e799461b