つよく、やさしく、泥臭く生きていくブログ

日常とポエムと、ときどき技術

LINE botを作る方法その2

自分LINE -> LINE bot -> AWS API Gateway -> Lambda 関数
という風にしたいので、Lambda関数、API Gatewaybotのwebhookの設定をする。
LINE botのwebhook先URLはhttpsでなければいけない。

処理をするのは例えばEC2上にwebサーバ立ててやってもいいのだけれど、手軽にhttps使えるようにしたかったのと、単純にLambdaを使って作ってみたかったので、このような API GatewayとLambdaを使うことにした。

Lambda 関数を作成

  • 関数名適当
  • 今回はPython 3.8を使う
  • できた関数にとりあえず
    print(event) を追記する。(デバッグ用)

API Gateway の設定

叩かれることができるメソッドとURLを作る
  • API を作成」
  • 「HTTP API」を「構築」
    こここれじゃなくてもいいのかな
  • API名だけ適当にいれて作成
  • 左メニューの「開発」 の「ルート」を選ぶ
  • Create を選び、POSTメソッドを選び作成する
そのURLを叩かれたときに呼ぶ処理を設定する。Lambdaを呼ぶようにする
  • 左メニューの「統合」を選ぶ
  • 先ほど作ったメソッド名を選ぶ「統合を作成してアタッチ」を選ぶ
  • 統合タイプで「Lambda 関数」を選ぶ
  • Lambda関数名で先ほど作ったLambda関数名を選ぶ
  • 「作成」する

LINE botweb hookAPI GatewayのURLを設定する

  • LINE developer コンソールで作ったMessagingAPIのチャネルを選び、Messagind API設定からWebhook設定の編集を押す
  • AWS API GatewayのエンドポイントURLを入力し、更新を押す
    https://hogehoge123.execute-api.ap-northeast-1.amazonaws.com みたいなURL
    API GatewayAPI名クリックした後の詳細画面で確認できる
  • 更新できたら、検証ボタンが出るので押す。成功したらOK。
  • もし失敗したら、何か間違ってる。
  • 成功したら、Webhookの利用をONにする

確認

  • 自分のLINEで、botあてに適当にメッセージを送る。
  • 現時点では返答は返ってこない
  • Lambdaのログを確認する
  • Lambdaで作った関数の画面で、「モニタリング」> 「ClowdWatchのログを表示」
  • ログストリームのところにログがあるので選ぶ。複数あるときは最新ぽいのを選ぶ
  • {'version': '2.0',~~みたいな行をクリックすると、print(event)でprintされた内容が見れる。
  • これはLINE botからAPIGatewayを通してLambdaに送り付けられてきた情報。
  • 中に、LINEでbotあてに送ったメッセージが含まれているはず。body.events[0].text あたり

次回は、オウム返しするだけの設定。
次々回は、googleカレンダーAPIを叩く & それをLambdaにデプロイする。