Qiitaでお母さんにLINEbotを作った記事を見つけ「JavaScriptならある程度分かるしこれならすぐできそう」と思い、天気予報Botを作りました。
- 天気予報の上には一応メッセージをつけています。
概要
- GAS(Google Apps Script)を利用し、サーバーレスでLINE botを開発します。
- 同じような記事はググればたくさん出てくるので、この記事では開発してて迷いどころになりそうな『LINE USER ID の取得方法』と『LINE APIの仕様に準拠したflexメッセージ』について書いていこうと思います。
事前準備
- Google Apps Script を利用するため、勿論ですがGoogleアカウントが必要となります。
- OpenWeatherMap、及びLINEMessagingAPIを利用するため各サービスへの事前登録が必要になります。
- ローカル環境構築
- ブラウザ上のエディタでコーディングするのはキツいですし何よりローカルでバージョン管理などもしたいと思います。環境構築に関しては、多くの方が記事にしているので
「 clasp GAS 」
でググれば沢山の情報が出てくるかと思いますので是非参考にしてください。 - 尚、Node.jsで開発していると
npm install {パッケージ名} --save
でバシバシ追加パッケージをインストールしていくと思いますが、GAS上では動かない物もありますし、逆に通常のNode.jsだと動かないオリジナルクラス(UrlFetchApp
とか)がGASで動いたりするのでその辺の整合性を揃えるためにも以下のブログは参考になるかと思います。
- ブラウザ上のエディタでコーディングするのはキツいですし何よりローカルでバージョン管理などもしたいと思います。環境構築に関しては、多くの方が記事にしているので
参考記事:
get user id
LINEBotには大きく分けて応答メッセージとプッシュメッセージの二つが存在します。今回のBotはその仕様から後者のプッシュメッセージを利用します。その際問題になってくるのが、**『メッセージを送りたい相手のLINE User ID の把握』**です。これよくLINEの友達になる際に利用するものではなく、普段サービスを利用するだけだと、絶対に目にすることのないものです。今回お天気ボットを作るに当たって、予めUserIDを取得できるBotを別に作りました。
このbotに対して、なんでも良いのでメッセージを送ると[user_id, group_id, room_id]がそれぞれ返ってきます。図のように特にLINE Groupではない場合、"undefind"で返ってきます。
flex messageの送付
line bot には様々なメッセージ形式が用意されており、それらを指定されたjsonフォーマットで準備する必要があります。
今回はこの中から、自由にカスタマイズできるflexを利用しますが、これを一からデザインしてると本当に大変です。そこで自分はLINE Developers公式のFlex Message Simulatorを利用しました。ここである程度のテンプレからスタートし、あとは自分で少しjsonを整形することでなんとかイメージしているものを作り上げる感じです。