技術資料

LINE Messaging APIを活用―テキスト以外のメッセージを送信する方法

2023.06.07

error この記事は最終更新日から1年以上が経過しています。

PHPでLINEにテキスト以外のメッセージオブジェクトを送ってみる。

参考: メッセージオブジェクト (Messaging APIリファレンス)

画像メッセージ

$messages = array();
$messages[0] = array(
    'type' => 'image',
    // オリジナルの画像URL
    'originalContentUrl' => 'https://www.abe-tatsuya.com/image/original.png',
    // プレビュー用画像URL
    'previewImageUrl' => 'https://www.abe-tatsuya.com/image/preview.png',
);
$data = array(
    'to' => 'my_user_id', //送信先のLINEユーザーID
    'messages' => $messages,
);
$json_data = json_encode($data);

$url = 'https://api.line.me/v2/bot/message/push';
$api_key = 'LINE_ACCESS_TOKEN'; // LINE API のACCESS TOKEN
$headers = array(
    'Content-Type: application/json',
    "Authorization: Bearer {$api_key}"
);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$apiresult = json_decode($response);

var_dump($apiresult);

これで単純に画像を送れる。

位置情報メッセージ

$messages = array();
$messages[0] = array(
    'type' => 'location',
    'title' => '橿原神宮前駅',
    'address' => '〒634-0063 奈良県橿原市久米町618',
    'latitude' => '34.4834076',
    'longitude' => '135.7938065',
);
$data = array(
    'to' => 'my_user_id', //送信先のLINEユーザーID
    'messages' => $messages,
);
$json_data = json_encode($data);

$url = 'https://api.line.me/v2/bot/message/push';
$api_key = 'LINE_ACCESS_TOKEN'; // LINE API のACCESS TOKEN
$headers = array(
    'Content-Type: application/json',
    "Authorization: Bearer {$api_key}"
);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$apiresult = json_decode($response);

var_dump($apiresult);

位置情報とGoogle Mapsへのリンクを送る。

ボタンテンプレート

$messages = array();
$messages[0] = array(
    'type' => 'template',
    'altText' => 'メニューリスト',
    'template' => array(
        'type' => 'buttons',
        'thumbnailImageUrl' => 'https://www.abe-tatsuya.com/img/thumbnail.png',
        'imageAspectRatio' => 'square',
        'title' => 'メニューリスト',
        'text' => 'ご注文を以下の2つから選んでください。',
        'actions' => array(
            0 => array(
                'type' => 'postback',
                'label' => 'フライドポテト',
                'data' => 'select_0',
                'displayText' => 'フライドポテトを注文する。',
            ),
            1 => array(
                'type' => 'postback',
                'label' => 'フライドオニオン',
                'data' => 'select_1',
                'displayText' => 'フライドオニオンを注文する。',
            ),
            2 => array(
                'type' => 'uri',
                'label' => 'ググる',
                'uri' => 'https://google.com/',
                'displayText' => 'Googleで検索する。',
            ),
        ),
    ),
);
$data = array(
    'to' => 'my_user_id', //送信先のLINEユーザーID
    'messages' => $messages,
);
$json_data = json_encode($data);

$url = 'https://api.line.me/v2/bot/message/push';
$api_key = 'LINE_ACCESS_TOKEN'; // LINE API のACCESS TOKEN
$headers = array(
    'Content-Type: application/json',
    "Authorization: Bearer {$api_key}"
);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$apiresult = json_decode($response);

var_dump($apiresult);

複数のボタンつきのテンプレート。サムネもつけれる。ボタンは最大4つ。

確認テンプレート

$messages = array();
$messages[0] = array(
    'type' => 'template',
    'altText' => '注文をキャンセルしますか?',
    'template' => array(
        'type' => 'confirm',
        'text' => '注文をキャンセルしてもよろしいですか?',
        'actions' => array(
            0 => array(
                'type' => 'postback',
                'label' => 'はい',
                'data' => 'select_0',
                'displayText' => 'はい',
            ),
            1 => array(
                'type' => 'postback',
                'label' => 'いいえ',
                'data' => 'select_1',
                'displayText' => 'いいえ',
            ),
        ),
    ),
);
$data = array(
    'to' => 'my_user_id', //送信先のLINEユーザーID
    'messages' => $messages,
);
$json_data = json_encode($data);

$url = 'https://api.line.me/v2/bot/message/push';
$api_key = 'LINE_ACCESS_TOKEN'; // LINE API のACCESS TOKEN
$headers = array(
    'Content-Type: application/json',
    "Authorization: Bearer {$api_key}"
);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$apiresult = json_decode($response);

var_dump($apiresult);

二択の確認ボタンを表示するテンプレート。

カルーセルテンプレート

$messages = array();
$messages[0] = array(
    'type' => 'template',
    'altText' => 'どのメニューを注文しますか?',
    'template' => array(
        'type' => 'carousel',
        'columns' => array(
            0 => array(
                'thumbnailImageUrl' => 'https://www.abe-tatsuya.com/img/thumbnail_0.png',
                'imageAspectRatio' => 'square',
                'title' => 'フライドポテト',
                'text' => 'じゃがいもを揚げた美味しいやつです。',
                'actions' => array(
                    0 => array(
                        'type' => 'postback',
                        'label' => 'フライドポテトを注文する',
                        'data' => 'select_0',
                        'displayText' => 'フライドポテトを注文する',
                    ),
                    1 => array(
                        'type' => 'uri',
                        'label' => 'フライドポテトについて調べる',
                        'uri' => 'https://google.com/',
                        'displayText' => 'フライドポテトについて調べる',
                    ),
                ),
            ),
            1 => array(
                'thumbnailImageUrl' => 'https://www.abe-tatsuya.com/img/thumbnail_1.png',
                'imageAspectRatio' => 'square',
                'title' => 'フライドオニオン',
                'text' => 'たまねぎを揚げた美味しいやつです。',
                'actions' => array(
                    0 => array(
                        'type' => 'postback',
                        'label' => 'フライドオニオンを注文する',
                        'data' => 'select_1',
                        'displayText' => 'フライドオニオンを注文する',
                    ),
                    1 => array(
                        'type' => 'uri',
                        'label' => 'フライドオニオンについて調べる',
                        'uri' => 'https://google.com/',
                        'displayText' => 'フライドオニオンについて調べる',
                    ),
                ),
            ),
        ),
    ),
);
$data = array(
    'to' => 'my_user_id', //送信先のLINEユーザーID
    'messages' => $messages,
);
$json_data = json_encode($data);

$url = 'https://api.line.me/v2/bot/message/push';
$api_key = 'LINE_ACCESS_TOKEN'; // LINE API のACCESS TOKEN
$headers = array(
    'Content-Type: application/json',
    "Authorization: Bearer {$api_key}"
);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$apiresult = json_decode($response);

var_dump($apiresult);

ボタンテンプレートをカルーセル表示できる処理。

LINEメッセージをWebhook経由で取得するシンプルなPHPコード

2023.11.20

LINE Messaging APIを使って、Webhookで送信されたメッセージを取得するPHPスクリプトの基本テンプレートをご紹介します。

LINE Messaging API PHP

LINE Messaging APIでPHPを使ったメッセージ送信入門

2023.06.06

LINE Messaging APIを使い、PHPでテキストメッセージを送信する手順を解説します。

LINE Messaging API PHP

OGP画像作成を効率化:PHPを使った自動生成方法を解説

2024.11.21

SNSシェアに欠かせないOGP画像、毎回手作業で作成するのは手間がかかりますよね。本記事では、PHPを使って記事タイトルを含むOGP画像を自動生成する方法を解説します。テンプレート画像を活用した簡単な手順をぜひお試しください。

PHP

PHPによるCSRF対策入門:トークン生成から認証までの流れを解説

2024.11.19

フォーム送信時のセキュリティを高めるためには、CSRF対策が欠かせません。本記事では、PHPでのトークン生成から認証チェックまで、実装手順を具体的に解説します。

PHP

阿部辰也へのお仕事の依頼・お問い合わせ

お名前 *必須
会社名
メールアドレス *必須
電話番号
URL
お問い合わせのきっかけ
お問い合わせの内容 *必須
個人情報の取り扱いについて *必須 プライバシーポリシーをご確認いただき、同意いただける場合は「同意する」にチェックをしてください。

keyboard_double_arrow_up
TOP