はじめに
PHP で Messaging API を動かすサンプルを紹介したいと思います。
※ LINE@MANAGER の設定については、あとで追記します!
Messaging API の説明
ユーザー、グループ、またはトークルームからのイベントに対して応答メッセージを送信する API です!
イベントが発生すると webhook を使って通知され、応答できるイベントには応答トークンが発行されるそうです。
注意点
- 応答トークンは一定の期間が経過すると無効になるため、メッセージを受信したらすぐに応答を返す必要があります。
- 応答トークンは 1 回のみ使用できます。
メッセージオブジェクト
以下は、送信するメッセージの内容を表す JSON オブジェクトです。
- テキスト
- 画像
- 動画
- 音声
- 位置情報
- スタンプ
- イメージマップ
- テンプレート
この中で「テンプレートメッセージ」を見てみましょう!
テンプレートメッセージ
テンプレートメッセージは、あらかじめレイアウトが定義されたテンプレートをカスタマイズして構築するメッセージです。
事前定義されたレイアウトが用意されており、よりリッチなユーザー体験の提供に役立ちます。
らしいです。また、以下のタイプのテンプレートを利用できます。
- ボタン
- 確認
- カルーセル
- 画像カルーセル
さっそく触ってみましょう!
画像カルーセルテンプレート
複数の画像を表示するテンプレートです。画像は横にスクロールして順番に表示できます。
以下のような感じです!
サンプルコード
sample.php
<?php
$replyToken = <Webhookで受信する応答トークン>
$accessToken = <アクセストークン>
$messageData = [
    "type" => "template",
    "altText" => "this is a image carousel template",
    "template" => [
        "type" => "image_carousel",
        "columns" => [
            [
                "imageUrl" => "https://example.com/bot/images/item1.jpg",
                "action" => [
                    "type" => "postback",
                    "label" => "Buy",
                    "data" => "action=buy&itemid=111"
                ]
            ],
            [
                "imageUrl" => "https://example.com/bot/images/item2.jpg",
                "action" => [
                    "type" => "message",
                    "label" => "Yes",
                    "text" => "yes"
                ]
            ],
            [
                "imageUrl" => "https://example.com/bot/images/item3.jpg",
                "action" => [
                  "type" => "uri",
                  "label" => "View detail",
                  "uri" => "http://example.com/page/222"
                ]
            ]
        ]
    ]
];
$response = [
    'replyToken' => $replyToken,
    'messages' => [$messageData]
];
error_log(print_r($response, true));
$ch = curl_init('https://api.line.me/v2/bot/message/reply');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($response));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json; charser=UTF-8',
    'Authorization: Bearer ' . $accessToken
));
$result = curl_exec($ch);
error_log($result);
curl_close($ch);上のサンプルコードを実行すると、以下のような感じでメッセージ届く!!
以上!

 
  