LoginSignup
1
0

More than 3 years have passed since last update.

「桜井さん」をAPI Gateway + LambdaでLINE BOT化してみた

Last updated at Posted at 2020-08-17

はじめに

これは前回作成した記事「「アイネクライネナハトムジーク」に出てくる斉藤さんをミスチルの桜井さんとして再現してみた」の続きになります。
気になった方は上記の記事をまず読むことをおすすめします。

作ったもの

まずはどんなものを作ったか紹介します。

こちらで友達登録したら試すことができます!

https://lin.ee/WEqJMO7 すみません。公開停止しています。

使い方はシンプルです。
桜井さんに何か話しかけます。
そうするとその心境に合うようなミスチルの曲の一部を桜井さんが歌ってくれます。(正確にはテキストで返信してくれます)
裏でCOTOHAの感情分析APIを活用していて、
送信した文章と感情スコアの近い歌詞の一部を返すようになっています。
なのであまり内容が一致してないことも多々あることはご了承ください。(お遊び感覚でお使いください。。)

コロナによる自粛疲れを希望がちらつかすといった表現で励ましているような気がします。

システム概要

歌詞フレーズと感情スコアを格納するDBへの登録部分は前回の記事を参照してください。
今回はLINEから送って返信が返ってくるまでの構成を紹介します。
構成はシンプルでLINEのMessaging API、AWSのAPI Gateway、Lambda、RDS、COTOHAのAPIを利用しています。

sakuraisan-image2 (1).png

① - ②:LINE Messaging APIを使ってLINEからWeb HookによりAPI Gatewayを呼び出すようにする
③:API Gatewayの設定により作成したLambda関数を呼び出す
④:COTOHA APIを呼び出して送ったメッセージの感情スコアを取得
⑤:感情スコアの近い歌詞のフレーズをRDS上に作成したDBから取得
⑥ - ⑦:取得したフレーズをLINEの返信としてMessaging APIにより返す

各サービスの詳細説明

設定に手こずりそうなAPI Gateway、Lambda、LINE Messaging APIの説明をします。
RDSとCOTOHAについては特に難しい設定はないため、省略させていただきます。

API Gatewayの設定

(1) API Gatewayから新規にAPIを作成
api-1.png

(2) RESTの新しいAPIとして作成

api-2.png

(3) 新しいメソッドの作成

POSTで作成します。

api-3.png

(4) Lambdaの登録

Lambdaが実行できるように統合タイプを「Lambda関数」、Lambda関数にLambda名を入力

スクリーンショット 2020-08-17 22.33.40.png

(5) 統合リクエストをクリック

api-4.png

(6) HTTPヘッダーの設定

名前をAuthentication、マッピング元を'Bearer <LINEのアクセストークン>' として登録します。
LINEのアクセストークンの取得については後述します。
登録したらこちらに入力しましょう。

api-5.png

(7) APIのデプロイ

「アクション」→APIのデプロイをクリックし、
ステージ名を入力してデプロイします。(ここではprodとする)

api-7.png

(8) APIのURIの発行

デプロイされると左メニューのステージ→prod→POSTにURLが発行されているはずです。
後のLINE Messaging APIのWebhookとして登録するのでどこかにURLをコピーしておきましょう。

api-6.png

Lambdaの設定

ソースコードはGitHubのlambda/lambda.pyを参照してください。
注意点としては、DBの接続情報、COTOHA APIの接続情報、LINE APIのトークン情報はLambdaの環境変数に登録していることです。

lambda-1.png

また、デフォルトでmysql-connector-pythonが入っていないためLambda上に入れる必要があります。
今回はLambdaのレイヤーを利用しました。
使い方はここを参照すると良いでしょう。

LINE Messaging APIの設定

初めて使う方は、チャネル作成についてはこちらを参照してください。

最低限必要な設定は以下です。

(1) Webhookの設定

事前にAPI Gatewayで作成したURLを登録します。

line-1.png

(2) アクセストークンの発行

line-2.png

(3) 自動応答の設定をオフにする

これを設定しないと関係ない返信をしてしまいます。

line-3.png

(4) Messaging APIの設定確認

LINE Official Account Managerに飛び、
左メニューのMessaging APIをクリックし、Webhook URLが登録されているか確認してください。
登録されていなければ(1)同様にAPIのURLを入力します。

line-5.png

line-4.png

参考

以下記事を参考にさせていただきました。

API Gateway + LambdaでLINE Bot開発

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0