Line bot

ランダムにお店を選んでくれるLine Botを作った。

Line bot

「?飯」というコマンドの後に改行で地名と予算を入れて呟くと、ぐるなびからランダムに3件選んでURLを返すBOTをつくりました。

課題

基本的にアルコールが飲めないのと、食べ物に対する好き嫌いはあれどこだわりが一切ないので、「どこか店決めといて」と言われた際におすすめできるような店のストックが自分のなかにありません。仕方がないので、食べログやくるナビなどを検索して「この店どう?」といった提案をするわけですが、「私のおすすめの店 = ぐるなびの検索結果」なら、別にBotでいいじゃないかと思いついたので作ってみました。

仕組み

Line botはGoogle Apps Scriptを使って作ってます。
初めはAWS Lamdaを使う予定でしたが、これだけのためにAPI Gateway の設定とかするのもめんどくさいし、GASだと1ファイルで作れて楽そうだったので。
お店の情報は「ぐるなび Web Service」の「レストラン検索API」を使って取得しています。

Line側の設定

LINE Developersに登録し、プロバイダーを作成、新規チャンネルとして「Messaging API」を登録します。
今回はお試しなのでプランは「Developer Trial」にしました。
「Messaging API」の設定画面で「Webhook送信」を有効にし、「Webhook URL」にGASのURLを入力しています。
(GASのURLはスクリプトを公開後に取得して入力します)
アクセストークンを生成してメモって置くのを忘れずに。

ぐるなび側の設定

ぐるなびwebサービスに登録し、「マイページ」から「アプリケーションを追加」してアクセスキーを取得します。
ぐるなびwebサービス

Google App Scriptの設定

Googleドライブで「新規→その他→Google Apps Script」を選択し、新たなスクリプトファイルを作成します。

サンプルコード

GASを「ウェブアプリケーション」として公開するとURLが取得できるます。

取得したURLをLine message APIの設定画面でWebhook URLとして登録すれば完成です。
LINE-Developers-2018-09-28-12-27-05.png (1623×595) 2018-09-29 11-18-12

総括

エラー処理もまったくしていない、なぜかforEachメソッドを使うと返答されないというバグの原因も不明なままのざっくりとしたスクリプトですが、とりあえずBotとしては機能しています。
思った以上に簡単に作れて楽しいのでおすすめです。
今後の展開としては、ぐるなびから取得した情報のうちURLしか返さない手抜き仕様を、もうちょっと頑張ってちゃんとテンプレートメッセージ(JSON)を生成してみやすい返答にするのと、フィルタリング条件を予算以外でもできるようにしたいかと思います。