概要
LINEのMessaging APIを使ってみる。
Railsでサーバー立ち上げて、実際にWebhookでどんな値が連携されるのか見ていきます。
(公式にあるのかもだけど見当たらなかったので)
ただ、Messaging APIの動きを見たいだけなので環境とかは適当に作ります。
誰かの役に立てば嬉しいです。
公式ではここに書いてあります。
RailsのDockerイメージを作る
以下をまるまる真似してDockerでRailsが動くところまでやった。
と、言いたいところだったけど、postgressのイメージバージョンの影響で動かないところがあった。
以下の対応でとりあえず回避した。
GrapeでAPIを作る
Grapeで最低限リクエスト受け取って動く形にする。
Grapeの導入はREADME見てもらえればわかるかと思います。
実装は以下のようにした。
module Line
class API < Grape::API
version 'v1', using: :header, vendor: 'line'
format :json
prefix :api
resource :messaging do
desc "user test"
post do
User.all
end
end
end
end
Postman使ってローカルのAPI叩けるか確認した。
herokuにデプロイする
Messaging APIのリクエストを受け取るためにはデプロイしないといけないので、herokuでデプロイする。
herokuのGetting Startedを参考にすればデプロイまでは簡単にできる。
welcomeページいらないけど、必要みたいなのでとりあえず追加。
Messaging APIのWebhoom URLを設定する
herokuでデプロイしたサーバーのAPIのURLを LINE Developersで設定する。
herokuのURLを入れるとverifyが正常に動く。
Messaging APIのWebhookで渡ってくるパラメータ
今回の目的は、Messaging APIのWebhookがどういうパラメータを連携するか知りたいので、grape_loggingを入れてパラメータを確認した。
以下、友だち追加、メッセージ送信、ブロックのときのパラメータ。
Messaging APIのQRを自分のLINEで読み込んでそれぞれの動作を確認。
params => {
"destination" => "",
"events" => [{
"type" => "message",
"message" => {
"type" => "text", "id" => "", "text" => "てすと"
},
"timestamp" =>,
"source" => {
"type" => "user", "userId" => ""
},
"replyToken" => "[FILTERED]",
"mode" => "active"
}]
}
params => {
"destination" => "",
"events" => [{
"type" => "message",
"message" => {
"type" => "text", "id" => "", "text" => "てすと"
},
"timestamp" =>,
"source" => {
"type" => "user", "userId" => ""
},
"replyToken" => "[FILTERED]",
"mode" => "active"
}]
}
params => {
"destination" => "",
"events" => [{
"type" => "unfollow",
"timestamp" =>,
"source" => {
"type" => "user", "userId" => ""
},
"mode" => "active"
}]
}
さいごに
パラメータの構造がイメージできなかったけど、これでテスト書いて実装できそう。
公式とかでわかりやすい記述があったら教えていただけるとたいへん喜びます。