Node.js
Line
serverless
linebot
LINEmessagingAPI

LINEで電車遅延連絡Bot(改)

More than 1 year has passed since last update.


概要

電車の路線名(山手線、中央線、丸ノ内線など)を送ると、遅延発生しているかどうかを知らせてくれる「電車遅延お知らせBOT」を以前作りました。

http://qiita.com/k1_style/items/67e548959374e34ce751

昨年LINEがBOT API Trialを止めてMessagingAPIを新たにリリースしたため、当BOTもこの仕様に合わせて作り変えました。

BOT API Trialが終了して3ヶ月も経って、ようやく重い腰を上げました。。遅くなりすみません。


Bot友だち追加+QR Code

qr_code.png

友だち追加

LINE利用しているみなさま、またココからおともだちになってください!


使い方イメージ

screenshot.png

↑こんな感じで電車の路線名または企業名を送ると、遅延発生している情報を拾って知らせてくれます。

前回は路線名の完全一致のみで対応してましたが、

今回は部分一致で当てはまる遅延情報全て表示させるように修正しました。


使った技術

前回はGoogleAppsScriptでかんたんに実装しました。が、

node.jsを利用したローカル開発やテストを実際に試してみたくなり、

どうせならAWSでより実用的な運用方法を目指したくなってServerlessFrameworkを導入してみました。


実装

GitHubにソースコードを上げました。

https://github.com/K1-Style/line-train-bot


LINE Developerアカウント用意

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

Serverless FrameworkでLINE BOTが簡単にできちゃった


ローカルで開発を行う場合

Serverless FrameworkでAWSを使ったサービスを作る場合は、事前に以下公式ドキュメントに目を通してください。

https://serverless.com/framework/docs/providers/aws/guide/

また、上記serverless.ymlを見ればおわかりとは思いますが、

以下の環境変数を事前に定義しておいてください。


  • LINE_ACCESS_TOKEN


    • LINE BOTのアクセストークン

      (LINE Developersアカウント用意すると取得できます)



  • LINE_CHANNEL_SECRET


    • LINE BOTのCHANNEL SECRET

      (LINE Developersアカウント用意すると取得できます)

      (リクエストの送信元チェックで利用)



  • AWS_PROFILE


    • 使用するAWS環境のcredencial profile名。

      (デフォルトを利用する場合はprofileの定義は無くて良いです)




テスト

mocha,chaiを利用して、自分が独自に作った関数(utilディレクトリ以下)のテストを作ってます。

npm testって実行すると、testディレクトリ以下のテストソースが実行されるようになってます。


その他


アイコン(いらすとやさん)

http://www.irasutoya.com/2014/06/blog-post_9691.html

前回に引き続きBOTアイコンとして採用させていただきました。


不具合や要望がございましたら、

GitHubでissueやプルリクいただけるとうれしいです!


余談

LINE BOT AWARDSにて当Botエントリーしました。

暇を見つけては改良を加えていこうかなと思ってます。