初めてLINE BOT API でボットを作ってみた記事を昨日書いたのですが、正常に動作するまで結構ハマった箇所があったので、そのポイントをまとめておこうと思います。
コールバックURLにはプロトコル、ポート番号を指定する
LINE developers 管理画面で設定する Callback URL には、プロトコル「https」とポート番号「443」を付けた URL を指定する必要があります。
指定した URL は実際にブラウザ等で実行してみて呼び出せるか確認しておくといいですね。
使えるSSL証明書
コールバックで呼び出される URL は https であれば何でも OK というわけではなく、SSL 証明書によって使える使えないがあるようです。
自分の場合も、Let’s Encrypt → Comodo PositiveSSL → グローバルサインのテスト用証明書 の順に試して、ようやく動くようになりました。
LINE BOTのSSL証明書問題は、
・Let's Encrypt→NG
・Comodo PositiveSSL→NG
・グローバルサインのテスト用証明書→OK
という経緯でようやくコールバック成功。設定反映にかなり時間がかかるようなのでNGの中にも本当は大丈夫なのがあるかも。— Ko Takagi (@ko31) 2016年4月11日
なお、コールバック URL を設定したり、SSL 証明書をインストールしてから実際にコールバックが有効になるまで環境によって結構時間がかかるようです。自分の場合は、設定後半日くらい経ってからようやく動作が確認できました。
Server IP Whitelist
LINE developers 管理画面の Server IP Whitelist に、メッセージ送信元のIPアドレスを設定しておく必要があります。
固定IPを持っているサーバであればそのIPアドレスを単に入力すれば良いです。
最後のビットマスク部は自分の場合、未入力でもOKでした。IPアドレスの範囲を指定しないといけない環境であれば、適宜指定してください。
あとがき
ネットで色々なページを見ていても、何で動かないのか分からない!動くまで苦労した!という記事を多く見かけます。原因がプログラム側のエラーだったら動かしてみてすぐ気付くんですが、設定や環境周りだとそれが見えにくいんですよね。
とりあえず、LINE developer のページで API のエラーログが見られるようになるだけで沢山の人が幸せになれると思うので、Trial が取れる頃にはぜひ改善されていて欲しいですね。