ラベル line の投稿を表示しています。 すべての投稿を表示
ラベル line の投稿を表示しています。 すべての投稿を表示

2017-04-04

LINE BOT APIを使っていたものをLINE Messaging APIに書き直す

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
すごく今更ですが、以前LINE BOT APIを使ってみたものを、LINE Messaging APIに直したものを紹介します。

ちなみにLINE Messaging APIを始めるには、以下が参考になりました。
http://milk0824.hatenadiary.jp/entry/2016/10/01/211555

まずは、
LINE BOT APIのcallbackにAWS Lambdaを使ってみる
を直したのは、以下のような感じです。

お次は、rubyで書いたものです。
ruby2.0以上ならば、line-bot-apiというgemがあり、こっちを使うと、もうちょっと楽にかけそうなのですが、以下はruby1.9でも動くことを前提としているのでline-bot-apiは使っていません。

rubyで書いたものの最初の、
LINE BOT APIを利用して電車遅延情報の送信を改良した
を直したのは、以下のような感じです。

そして、
LINE BOT APIを利用してGoogle Calendarの情報を通知する
を直したのは、以下のような感じです。
ちなみにキャンセルされた予定の処理を追加しています。

最後に、
LINE BOT APIを利用して雨が降りそうな時は通知するようにしてみる
を直したのは、以下のような感じです。

2016-05-09

LINE BOT APIを利用して雨が降りそうな時は通知するようにしてみる

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
※サンプルをLINE BOT APIからLINE Messaging APIに書き換えたものを以下で公開しました。
https://kingyo-bachi.blogspot.jp/2017/04/line-bot-apiline-messaging-api.html

LINEで電車遅延情報を送ってみる

LINEでGoogle Calendarの情報を送ってみる
に続きLINEで雨が降りそうな時に通知してみることにしてみます。

天気に関する情報を取得する手段はいろいろあるのですが、降水確率を取得する手段はあまりなく、以下ぐらいしか見つけられませんでした。
http://www.drk7.jp/weather/
こちらを活用させていただきます。

家を出る直前ぐらいにLINEで通知する感じにして祝日は通知しないようにしたいと思います。

以下のような感じになります。



これを以下のような感じでcron設定して月曜から金曜までの出勤前の6:50に動作するようにしました。
50 6 * * 1,2,3,4,5 /usr/bin/ruby /home/hogehoge/ruby/line_bot/rain_chk.rb >> /home/hogehoge/ruby/line_bot/rain_chk.log

毎日、朝お天気アプリを見て天気を見ているのに、出る直前には傘を持つことを忘れてしまうので何かの形でわかるようにしたいと思ったわけです。

一番よいのは傘が置いてあるところでわかりやすく気付ける形になれればよいのですけどね。


2016-05-07

LINE BOT APIを利用してGoogle Calendarの情報を通知する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
※サンプルをLINE BOT APIからLINE Messaging APIに書き換えたものを以下で公開しました。
https://kingyo-bachi.blogspot.jp/2017/04/line-bot-apiline-messaging-api.html

LINEに電車遅延情報を送ってみるに続き、Google Calendarの情報を送ってみます。

Google Calendarの情報を取得するには、
rubyでGoogle Calendarをいじる
を参考にしていただけたらと思います。
google-api-clientを利用するのですが、今回は古いバージョンの0.6.4を利用します。
最新バージョンでは結構使い方が変わっているようです。

そして情報を取得したいユーザのoauth情報を取得した「.google-api.yaml」を作成しておいて以下のプログラムと同じ場所に置いておきます。
以下は明日の予定をチェックして予定があればLINEに通知するものになります。



ローカル環境で利用することを前提にしています。 送信先IDはcallbackを設定してなんとか事前に取得しておく必要があります。

これを以下のような感じでcron設定して毎日23:10に動作するようにしました。
10 23 * * * /usr/bin/ruby /home/hogehoge/ruby/line_bot/gcal_chk.rb >> /home/hogehoge/ruby/line_bot/gcal_chk.log


Google Nowを使っていれば不要な気がするけれど、いずれLINE BOT APIでグループチャットにもメッセージが送れるようになると信じて、その時はグループチャットにグループの予定を送るものとして使いたいなぁと思ってみたりしています。

2016-04-30

LINE BOT APIを利用して電車遅延情報の送信を改良した

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
※サンプルをLINE BOT APIからLINE Messaging APIに書き換えたものを以下で公開しました。
https://kingyo-bachi.blogspot.jp/2017/04/line-bot-apiline-messaging-api.html

以前
LINE BOT APIを利用して電車遅延情報を送信する
というのを書いたのですが、ちょっと改造しました。

以下をできるようにしようと思います。
・祝日は通知しなくてよくしたい
・localで実行しているがIPアドレスが変わる可能性があるので送信できなかったときはメール通知をしたい

祝日に関してはholiday_jpというgemを使って判別することにしました。
https://github.com/komagata/holiday_jp

メール送信はGmailを利用しようと思います。以下が参考になりました。
http://qiita.com/nownabe/items/3a348c86b3c0a2c87ab0
http://grottad.com/blog/228


で、改良版の電車遅延情報を送信するものは以下のとおりです。



これを以下のような感じでcron設定して月曜から金曜までの出勤前の6:50に動作するようにしました。
50 6 * * 1,2,3,4,5 /usr/bin/ruby /home/hogehoge/ruby/line_bot/train_chk2.rb >> /home/hogehoge/ruby/line_bot/train_chk.log

2016-04-27

LINE BOT APIを利用して電車遅延情報を送信する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
LINE BOT APIを利用してメッセージを送信するには、以下のような感じでできます。



ローカル環境で利用することを前提にしています。
送信先IDはcallbackを設定してなんとか事前に取得しておく必要があります。

これでメッセージは送信できたのですが、せっかくなので役に立つ機能を作りたいものです。
なので電車が遅延していたら通知するbotを作ってみます。
適当な時間に自動実行できるようにさせたら便利な気がします。

電車遅延情報の取得は
鉄道遅延情報のjson(https://rti-giken.jp/fhc/api/train_tetsudo/)
を使わせていただきます。

以下のような感じです。



遅延を確認したい電車情報の部分は、
鉄道遅延情報のjson(https://rti-giken.jp/fhc/api/train_tetsudo/)
を見ながら適当に変更します。

なんとなく便利そうな気がします。


LINE BOT APIを使ってみた感想としては、まだトライアルで機能が少ないので機能追加を期待したいところです。
個人的には以下のような改善されるとうれしいなぁと思うしだいです。
・グループチャットにbotから送信ができるようになってほしい
・callbackがなくてもフレンドリストなどを取得できるようになってほしい
・IPのホワイトリストは、めんどくさいのでなくしてもらいたいなぁ

LINE BOT APIのcallbackにAWS Lambdaを使ってみる

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
※サンプルをLINE BOT APIからLINE Messaging APIに書き換えたものを以下で公開しました。
https://kingyo-bachi.blogspot.jp/2017/04/line-bot-apiline-messaging-api.html

LINE BOT APIを試すにはcallbackを設定しないと試せることがほとんどないことがわかったのでcallbackを設定できるようにします。

VPSとかすでに持っているのならば簡単なのでしょうが、残念ながら私はお手軽に使えるものを持っていません。

他の方の例などを見るとAWS LambdaにAPI Gatewayを組み合わせるとお手軽な気配だったのでやってみました。

ちなみにLambdaとかで何ができるかと、ちっともわかってなかったのですが、以下が参考になりました。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/getting-started.html

試してみた結論としては、お手軽に動作を見るにはLambdaはよい感じなのですが、ずっとcallbackとして利用するにはIPアドレスが変わってしまうので使い続けることは現実的ではなさそうでした。

ずっと使うには向いてないかもしれないですが、お手軽に試すにはよかったのでLambdaでLINE BOT APIを使う方法を紹介します。


Lambdaの画面でCreate a Lambda Functionをクリック



ここはSKIPを選択します。



適当にName欄に名前をつけて、RuntaimeにNode.js 0.10を選択します。



コードを記載します。


記載するコードは以下のような感じです。



RoleをそれっぽいものにしてNextをクリック



Create functionをクリック



これでLambdaファンクションはできあがります。なんとなくTestをクリックします



Save and testをクリック



下の方にtestの結果が表示されます。エラーはでますが、Log outputにとりあえず受け取ったイベントが表示されているのでよしとします。



作成したLambdaファンクションにAPI Gatewayを設定します。
API endpointsタブを選択してAdd API endpointをクリック



API nameを適当につけて
MethodをPOST
SecurityをOpen
にしてSubmitをクリック



API Gatewayが設定されました
API endpoint URLをコピーします。



LINEのcallback設定ページにいって上記のURLをペーストします。その際に443を追加します。


しばらくしてから(10分後ぐらいには使えました)、LINEでbotにメッセージを送ります。
ですが、botのIPをホワイトリストに登録してないので何も返答がありません。
またlambdaの方に戻ります。
Monitoringタブを選択して、View logs in CloudWatchをクリック



logの中にLINEにはじかれたIPアドレスが表示されているので確認します。



そのIPアドレスをLINEの方のホワイトリストに登録します


これで再度LINEからbotにメッセージを送ると同じメッセージをbotが返してくれるようになります。
そしてlogの方でもうまくいったことが確認できます。
そしてlogに自分のLINEアカウントのIDを記録するようにしたので、それも確認できます。




以下のページが参考になりました。
http://dev.classmethod.jp/cloud/build-line-bot-api-using-lambda/
http://qiita.com/teyosh/items/567ee416c94c2af2fe91
http://shunirr.hatenablog.jp/entry/2016/04/13/164902

2016-04-26

LINE BOT APIをまずはできるところまで試す

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
LINE BOT APIが利用できるようになり、いろんな方が試しているようなので試してみることにしました。

利用を開始する手順は以下が参考になりました。
https://www.panzee.biz/archives/9115
(今は上限に達して登録はできないようです)

APIを利用するためにはメッセージを受け取るcallbackの設定が必要なのですが、インターネットで受け取れるようなサーバを持っていないので、callbackの設定なしで自分のローカル環境だけでできるところまでやってみることにします。

私がやりたいなぁと思っていることは、なんらかの情報をグループチャットに通知するだけで、BOTでよくある対話的なことは、まぁ後でもよいかなぁと思っているのでcallbackなしでいろいろできると便利です。

ただ結論から言うとcallbackを用意しないと自分のプロファイルを取得することしかできなかったです。なのでとりあえず利用できるということが確認できることぐらいしか今はできないようです。

以下のような感じで試せます。

まずはAPIをたたくもとのIPアドレスをホワイトリストに登録が必要なので以下などでIPアドレスを調べてホワイトリストに登録します。
https://www.cman.jp/network/support/go_access.cgi

ここまで準備できて、linuxを利用できるならばcurlで以下のようにすれば、とりあえず確認ができます。

curl -H "X-Line-ChannelID: 自分のChannel_ID" -H "X-Line-ChannelSecret: 自分のChannel _Secret" -H "X-Line-Trusted-User-With-ACL: 自分のMID" -XGET https://trialbot-api.line.me/v1/profiles?mids=自分のMID

rubyでたたくならば以下のような感じです。


以下が参考になりました。
http://ola.kironono.com/entry/2016/04/09/205251

できるのがこれだけだと寂しいのでcallbackできるものを準備できるようにしようと思います。