※サンプルを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