BOT API Trial Account が提供されていると聞いて試してみました。
既に1週間経っているため、皆様の記事を参考にさせていただきました。
特にHello World的な作業ではなく、何箇所かハマったのでそれを書きます。
開発環境
Heroku + FIXIE
PHP
FIXIEはHerokuのアドオンとなっているため、無料ですがクレジットカードの登録が必要です。
LINE BOT → Heroku へのコールバック
コールバックURL
BOTアカウントを作成したら、
LINE DevelopersのページにコールバックURLを設定します。
Herokuで動かす場合のコールバックURLですが、
色々調べていると多数の設定方法がありました。
・
https://xxxxx.herokuapp.com
・https://xxxxx.herokuapp.com:443/linebot/callback
・https://xxxxx.herokuapp.com:443/callback
などなど、色々な設定が記載されていましたが、
私は 「 https://xxxxx.herokuapp.com:443/callback
」 に落ち着きました。
設定から反映までに時間がかかる
コールバックURLを設定後、
heroku logs -t
でログを見ながらBOTに話かけてみましたが、
うんともすんとも反応せず。
HerokuアプリのURLをブラウザで直接叩いてみるとログが出力されるので動いてはいる。
が、BOTからは叩かれていない模様。
私も すぐには反映しないかもしれない の情報通り、時間が解決してくれました。
(追記)
私の場合は、だいたい20分〜30分は放置していました。
※その間離れてしまっていたので、詳しい反映時間は不明です。
Heroku → LINE BOT API → LINE
Herokuを使ってる人はFIXIEで指定されたIPをホワイトリストに登録していると思います。
私も登録しました。
しかし、どうもPOSTに失敗している模様。
curl_exec()
の戻り値をログにちゃんと出力して確認すれば問題なく解決できるはず。
CURLOPT_RETURNTRANSFER
の設定もお忘れなく。
私の場合は以下の通り、
ホワイトリストに登録されていないIPアドレス で叩いていました。
{"statusCode":"427","statusMessage":"Your ip address [xxx.xxx.xxx.xxx] is not allowed to access this API."}
原因は、FIXIEのproxyURLの設定をせずにリクエストしてしまったため、
IPがproxy経由のアウトバウンドIPではなく、herokuアプリのIPになってしまっていたようです。
CURLOPT_HTTPPROXYTUNNEL
, CURLOPT_PROXY
, CURLOPT_PROXYPORT
の辺りを設定してあげることで解決しました。
終わり
ということで、
ここまでで、LINE BOTが動くようになりました。
ソースコード
参考サイト
最後に参考にさせて頂いた記事です。
皆様ありがとうございました。