LINE BOT API でのハマりどころ

LINE BOT API

こんにちは、🌸満開で花見日和ですね。 LINE BOT API が公開されたので golangbot を一番手軽に出来そうな環境 heroku 上で作ってみました。
プログラム自体は JSON をコールバックで受け取り、メッセージを送るにはセキュリティ情報を設定し所定のフォーマットで JSON を POST するだけなので特に難しいところはないですが環境面や設定でハマりそうなポイントがあったので、まとめておきます。
ソースコードのサンプルは PHP であれば、ネット上にたくさんあるようなので Qiita などで参考にしてみてください。

github.com

手順

  1. LINE developer に登録し BOT API を利用出来る準備を整える LINE Developers

  2. BOT が LINE メッセージを受け取った際のコールバック実装
    LINE BOT には証明書および固定 IP アドレスが必要になるので、手軽なのは heroku + Fixie で試すのが良いと思います。

ハマりポイント

LINE developer 登録などに関しては特に問題はないと思います。先着で人数制限があるようなので試したい方は早めに登録をした方が良いでしょう。
コールバック実装において私がすんなりいかなかったポイントを本BLOGに記載しておきます。 コールバック以外の API 実装に関しては、とにかく LINE からのレスポンスを確認すること。これに尽きます。ステータスコードとエラー内容(レスポンスの BODY)を常にデバッグ出力して API コール時の何に不備があるか確認してください。だいたいは以下のようになるでしょう。
・セキュリティの設定が不正(CHANNEL関連のキーを正しく HTTP ヘッダに設定出来ていない)
API コール時のパラメータが不正(メッセージを送る際に宛先が配列だったのに string 単体で送っていたのでメッセージ送信は何度か失敗しました)
・IP アドレスのホワイトリストが正しくない

Callback URL

LINE develper の設定画面から Callback URL を設定するのですが、ここで指定する URL は https であることと :443 のポート番号指定をする必要があります。
例)

https://yourdomain.com:443/bot/callback

設定し保存時に Not secure URL or port number not sepcified. とエラーメッセージが出た場合はプロトコルとポート番号を確認しましょう。

設定したコールバックが呼ばれない

私は1日ほどして正常にコールバックが呼ばれるようになりましたが、作成当初は bot にLINE メッセージをしてもコールバックが呼ばれず、何が悪いのか検討もつかなかったです。 しかし翌日になると正常にコールバックが呼ばれるようになったので、LINE developer で Callback URL を設定しても即反映ではなさそうですので気をつけてください。

Server IP Whitelist

BOT がメッセージ送信する際に許可する IP アドレスを登録するのですが、これも反映まで時間がかかるようです。
BOT がメッセージを送信した際に、LINE サーバからこのIPアドレスは許可してないよというレスポンスが届くのですがこちらも Fixie の画面から得られる IP アドレスを LINE developer 設定画面から設定してしばらくするまでは正常に BOT が機能しませんでしたので気をつけてください。 しばらくはメッセージ送信時には以下のようなレスポンスが返ってきます。([X.X.X.X]は実際のIPアドレス)

{"statusCode":"427","statusMessage":"Your ip address [X.X.X.X] is not allowed to access this API."}
成功時

メッセージの送信が成功した場合は以下のような JSON がレスポンスとして返ってくるので、このレスポンスが返ってくるまで諦めずに頑張りましょう。

{"failed":[],"messageId":"1460222924676","timestamp":1460222924676,"version":1}

f:id:yone098:20160410031824p:plain:w300

LINE さんに要望

コールバックが呼ばれない間は、何が問題で呼ばれないのかさっぱり分からずここで断念する人が結構いるのでは?と思いました。
管理コンソールなどで、エラーログだけ見られるようにしてもらえると非常に良いと思いました。

2015年 振り返り

ほとんど blog を書かなくなったでお馴染みの yone098 です、こんにちは。
今年は、仕事でずっと Go を書いていました。前半は Java も書いていましたが、後半は Go のみ書いていたように思います。
ムーミンソーシャルゲームのサーバサイドを実装し、別の開発でも Go1.5 を採用したので1年以上書き続けてやっと Go の事が少し理解出来たと思います。

6月

ムーミンソーシャルゲームをリリースしました。
開発基盤に libGDX を採用し iOS, Android ともに Java で開発することによって(iOS用には RoboVM を併用)、基盤の資産やノウハウもかなり溜まりました。
日本国内だと一番 libGDX での実績があるのではないでしょうか。
一緒に開発してみたいという方は是非、連絡してください。

ムーミン 〜ようこそ! ムーミン谷へ〜 - Google Play の Android アプリ https://play.google.com/store/apps/details?id=com.poppingames.moo

Dockerエキスパート養成読本が発売されました。

Dockerエキスパート養成読本[活用の基礎と実践ノウハウ満載!] (Software Design plus)

Dockerエキスパート養成読本[活用の基礎と実践ノウハウ満載!] (Software Design plus)

9月

Seasar Conference 2015 で Javaプログラマ向けに Go のことを話してきました。
久しぶりに Seasar でのイベントで懐かしい人に出会えて楽しかったです。
Seasar 全盛期に活躍していた人たちは、まだまだ現役であり第一線で活躍されていて嬉しく思いました。DJ HIGAYSUWO には今後も注目していきたいなと思います。
seasar.connpass.com

メンバー

会社のメンバーが少しずつ増えてきて優秀な人材を今年も数名を採用することが出来たのでとても嬉しく思っています。
2人とも20台前半で、とても若いのにプログラミング能力が非常に高いのでワクワクしているところです。
これからも宜しくお願いします!

バスケ

後半は仕事が忙しくなって練習に行けなかった時もありましたが大きな怪我もなく楽しくバスケ出来ました。
観る方は、NBA が面白すぎて去年 WOWOW に加入したんですが全試合観たいので nba.com の LeaguePass を遂に購入しました。
Live での試合も見れますが、終わった試合でも観ることが可能なのでお勧めです。今年は GSW の試合は全て観ています。

Subscription - NBA

ingress

仕事とバスケ以外では ingress でたくさん歩きました。1億APまではもう少し頑張りたいです! f:id:yone098:20151225124302p:plain:w300

ハイタン

今年は突然食欲が無くなって死んじゃうんじゃないかと思う時があって初めて病院に連れて行きました。
f:id:yone098:20151225131927p:plain:w300
点滴打ったらすぐ元気になりました。

今年のベスト動画です💙

食べるのに夢中で顔から落ちるやつ😆

Masaaki Yonebayashiさん(@yone098)が投稿した動画 -

まとめ

仕事もバスケも遊びも全てが楽しい1年でした。
今年残り少しと来年も頑張ります!

アルゴリズム&デザインパターン 献本御礼

矢沢久雄セレクション アルゴリズム&デザインパターン が会社に届きました📕
ありがとうございます💙

2015年

気づいたら 2015年は blog を書いていなかったので近々2015年を振り返っておこうと思い🐭