0
0

More than 1 year has passed since last update.

LINE Messaging APIを使ってみる

Last updated at Posted at 2021-08-29

概要

LINEのMessaging APIを使ってみる。
Railsでサーバー立ち上げて、実際にWebhookでどんな値が連携されるのか見ていきます。
(公式にあるのかもだけど見当たらなかったので)
ただ、Messaging APIの動きを見たいだけなので環境とかは適当に作ります。
誰かの役に立てば嬉しいです。

公式ではここに書いてあります。
- https://developers.line.biz/ja/reference/messaging-api/#message-objects

RailsのDockerイメージを作る

以下をまるまる真似してDockerでRailsが動くところまでやった。
- DockerでRuby on Railsの環境構築を行うためのステップ【Rails 6対応】

と、言いたいところだったけど、postgressのイメージバージョンの影響で動かないところがあった。
以下の対応でとりあえず回避した。
- PostgresのDockerImageに変更があって起動ができなくなった話

GrapeでAPIを作る

Grapeで最低限リクエスト受け取って動く形にする。
Grapeの導入はREADME見てもらえればわかるかと思います。
実装は以下のようにした。

app/api/line/line.rb
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で設定する。

スクリーンショット 2021-08-29 14.49.50.png

herokuのURLを入れるとverifyが正常に動く。

Messaging APIのWebhookで渡ってくるパラメータ

今回の目的は、Messaging APIのWebhookがどういうパラメータを連携するか知りたいので、grape_loggingを入れてパラメータを確認した。

以下、友だち追加、メッセージ送信、ブロックのときのパラメータ。
Messaging APIのQRを自分のLINEで読み込んでそれぞれの動作を確認。

follow
params => {
  "destination" => "",
  "events" => [{
    "type" => "message",
    "message" => {
      "type" => "text", "id" => "", "text" => "てすと"
    },
    "timestamp" =>,
    "source" => {
      "type" => "user", "userId" => ""
    },
    "replyToken" => "[FILTERED]",
    "mode" => "active"
  }]
}
text
params => {
  "destination" => "",
  "events" => [{
    "type" => "message",
    "message" => {
      "type" => "text", "id" => "", "text" => "てすと"
    },
    "timestamp" =>,
    "source" => {
      "type" => "user", "userId" => ""
    },
    "replyToken" => "[FILTERED]",
    "mode" => "active"
  }]
}
unfollow
params => {
  "destination" => "",
  "events" => [{
    "type" => "unfollow",
    "timestamp" =>,
    "source" => {
      "type" => "user", "userId" => ""
    },
    "mode" => "active"
  }]
}

さいごに

パラメータの構造がイメージできなかったけど、これでテスト書いて実装できそう。
公式とかでわかりやすい記述があったら教えていただけるとたいへん喜びます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0