Line Messaging API で Line Bot を作ってみた | AWS lambda

目次

line


Line Messaging API を AWS Lambda + API Gatewayで実装する設定方法のご紹介です。


はじめに

Twitterをやっていて、いろんなエンジニアを見て触発されたので、

自分の事業にためになるものを!と思い!

今や老若男女、ほとんどの人が使っているLineを使った簡単なサービスができたらな。と思い、

何かできないかと考えていたところ、

自分の事業でやっている焼肉店で使えるものがいいなっと思い、

今回は、

どの部位を食べればいいかわからない時に、提案してくれるBot

を作成してみました。




使うもの


サーバーが必要

色々と、迷ったのですが、一番使い慣れている、AWS(API Gateway + Lambda)を使いました。他に、GCPやLine developerのドキュメント見るとHerokuでの方法が紹介されていました。

Line側でメッセージを受信すると、設定されているwebhookのURLに著名をつけて、httpリクエストを投げるので、それを受け取れれば、どこでもOKです。

Ngrokを使えば、localで試すこともできますね

参考([Rails]LINE Botをローカル環境で動かしたりデバッグしたりする方法)


Line Developer登録

こちらのLine Developerサイトから、

「今すぐはじめよう」から進みます。

必要事項を入力していきます。

入力内容は、Messaging APIを利用するにはを見ればわかります。

進めていき、webhookのURLを有効にし、設定しますが、まだわかりませんね。


必要事項だけメモ

の2つをメモして、一旦AWSの設定に行きます。


AWS 側

Lambdaの作成

こちら参考にさせていただきました。

Lambdaは以上です。


APIGatewayの設定

統合タイプ = Lambda

Lambda プロキシ統合の使用 = チェック

Lambda リージョン = 先ほど作ったLambdaのリージョン

先程Lambda 先程作ったLambda関数を選択

LINEからのリクエストには「X-Line-Signature」がついてくるので、これを必須とする

リクエストの検証 = なし

HTTP リクエストヘッダー = “X-Line-Signature”


Line Developerでwebhookを設定

Messaging API設定の設定から

StatusOKとなれば、大丈夫です。

ここまでで、AWSとLine messaging APIの設定はOKです。


試す

Line Developer のMessaging API設定に、QRコードがあると思うので、これを取ると、トーク画面にいけますね。

たぶん、アカウントの認証すれば、LINE上で検索しても出てくると思います。


どんなBOTか?

僕は、焼肉店を経営しているのですが、お客さんによく部位の質問をされます。

そんときに、面白おかしく、Lineで

その人におすすめのお肉を提案してあげる

というようなBOTにしました。

AWS Lambda上で、コード修正し実装しましたが、質問して、YESかNOで答えてもらって、 その内容に応じて質問を変えていき、最終的に絞り込み、肉の部位を答えるというような、

一時期はやったアキネイターみたいなイメージをラインのトークで行うというものです。

AI的な要素は全くの素人なので難しいですね。

本当は、DynamoDBとかにデータ用意したほうがいいと思うのですが、とりあえず配列で、

こんな感じデータを用意し、配列をガチャガチャいじって、 最終的に「ユーザーが答えることにより抽出された残りの答えリスト」が一つになったら終了という感じです。

コードの内容はお見せするに価しないので、どうしてもの方がもしいらっしゃれば、Twitterにでもコメント下さい。。。

なお、Lineから取得するリクエストデータと、返すべきレスポンスの一覧はそれぞれ以下に記載があります。


まとめ

今回なんとか、対話ができ、最終的におすすめのお肉を提案できるところまで行きました。 Lambdaのグローバル変数により、キャッシュされるので、それのおかげで、対話の答えを記録し、最終的に答えまで持って行けていますが、 実際サービスにする場合は、

これをLineからくるユーザーIDごとに、DyanamoDBにしまう処理が必要になるので後日改修し、サービスインできたらなーっと 思います。

結構面白いので、ぜひやってみて下さい。

あとAIエンジニアの方、いい方法あったら教えて下さい。

追記 2020/03/04

→ DynamoDBにデータを保存し、Lineに申請を出しました! 申請が降りたら使って頂けます!楽しみです。

サンプルはこんな感じです。動画キャプチャです。

U-chan ( Nobuyuki Ukai )

学生時代は建築やデザインを専攻していたが、Yahoo!Japanにエンジニアとして運良く入社し、2年半で波情報を配信する波伝説に転職。3年後、Yahoo!時代の先輩の立ち上げたベンチャーに転職。数年後、伊豆下田に移住し、ゲストハウスを開業しながらリモートでエンジニアを続けたが、焼肉店の開業とともに株式会社UKAIを立ち上げ、法人成り。その後、カフェとゲストハウスをもう一軒開業し、現在は焼肉店、カフェ、ゲストハウス2件目を運営。今季は自社Webサイトの立ち上げ予定!

comments powered by Disqus