【PHP】LINE BOT のWebhook URLに渡されるデータの中身

公開日:
更新日:
カテゴリー: LINE BOT

「Messaging API」を利用したLINE BOTでは「Webhook URL」を指定し、そのURL(ページ)を介してLINEサーバーとLINE BOTを動かしているサーバーでデータのやりとりを行います。

さて、LINE BOTに友達登録したユーザーが何かしらのアクションを行ったとき、「Webhook URL」にLINE サーバーからどのようなデータがどのような形で渡されるのか気になったので調べてみました。

JSONエンコードされたデータを受け取る

LINE BOTの作り方は【PHP】LINE BOTの作り方 on Messaging APIを参考にしてください。

LINEユーザーが

  • 友達登録
  • ブロック
  • テキストメッセージ送信
  • スタンプ送信
  • 画像送信
  • 動画送信

を行ったとき、LINEサーバーからはJSONエンコードされたデータが「Webhook URL」に渡されます。

JSONデコードする

そのため、

//データ取得
$json_string = file_get_contents('php://input');
$json_object = json_decode($json_string);

のようにして、JSONデコードして「$json_object」にデータを渡します。

このあとに「$json_object」をごにょごにょしてLINE BOTを開発するわけですが、どのようなデータがどのような形で渡されるのか、オブジェクトから必要な情報を素早く取り出し、LINE BOTの開発がスムーズにできるように一通りまとめておきたいと思います。

なお、API ReferenceにLINE BOTの開発に必要な情報はまとめられています。

「Webhook URL」に渡されるデータ一覧

では、実際にLINEユーザーがアクションを起こしたとき、「Webhook URL」にどんなデータが渡されるのかまとめたいと思います。

友達登録

stdClass Object
(
    [events] => Array
        (
            [0] => stdClass Object
                (
                    [type] => follow
                    [replyToken] => 876bb0ce1f414031b9436e467b464890
                     => stdClass Object
                        (
                            [userId] => *********************************
                            [type] => user
                        )

                    [timestamp] => 1492000391659
                )

        )

)

ブロック

stdClass Object
(
    [events] => Array
        (
            [0] => stdClass Object
                (
                    [type] => unfollow
                     => stdClass Object
                        (
                            [userId] => *********************************
                            [type] => user
                        )

                    [timestamp] => 1492000263962
                )

        )

)

テキストメッセージ送信

stdClass Object
(
    [events] => Array
        (
            [0] => stdClass Object
                (
                    [type] => message
                    [replyToken] => 1f030a36959e4c93b13eaf87acb27e3d
                     => stdClass Object
                        (
                            [userId] => *********************************
                            [type] => user
                        )

                    [timestamp] => 1491998504854
                    [message] => stdClass Object
                        (
                            [type] => text
                            [id] => 5927210901035
                             => ほげほげ~
                        )

                )

        )

)

スタンプ送信

stdClass Object
(
    [events] => Array
        (
            [0] => stdClass Object
                (
                    [type] => message
                    [replyToken] => 7529a147ee444c6da531ed6a21689599
                     => stdClass Object
                        (
                            [userId] => *********************************
                            [type] => user
                        )

                    [timestamp] => 1491998511426
                    [message] => stdClass Object
                        (
                            [type] => sticker
                            [id] => 5927211520872
                            [stickerId] => 113
                            [packageId] => 1
                        )

                )

        )

)

画像送信

stdClass Object
(
    [events] => Array
        (
            [0] => stdClass Object
                (
                    [type] => message
                    [replyToken] => 9ba945d0ac994f2a8a082608db4033bf
                     => stdClass Object
                        (
                            [userId] => *********************************
                            [type] => user
                        )

                    [timestamp] => 1491998522545
                    [message] => stdClass Object
                        (
                            [type] => image
                            [id] => 5927212566126
                        )

                )

        )

)

動画送信

stdClass Object
(
    [events] => Array
        (
            [0] => stdClass Object
                (
                    [type] => message
                    [replyToken] => d2c842bcf6124b428c8982c2c23bc3a7
                     => stdClass Object
                        (
                            [userId] => *********************************
                            [type] => user
                        )

                    [timestamp] => 1491998534503
                    [message] => stdClass Object
                        (
                            [type] => video
                            [id] => 5927213695582
                        )

                )

        )

)

 

頑張って書いたのでちょろっと読んでほしい!

 

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント