目的
LINE BEACONを使用して、LINEのトークルーム上に通知を飛ばしたい。
最終ゴール
LINE BEACONに近づくと、「到着!」と通知される。
目的達成までのプロセス
- LINE BOTを作成する
- LINE BOTとLINE Beaconの連携
- ビーコンイベントをハンドリングするプログラムの実装
手順
1. LINE BOTを作成する
-
LINE Business アカウントの作成。「LINE BUSINESS CENTER」から画面の手順に従って、新規登録を行います。
https://business.line.me/ja/services/bot -
Messaging API の申込み
アカウントリストの「Messaging API」のリンクから画面の手順に従って、利用申込みを行います。
- 「LINE@MANAGER」でBOT作成します。
管理画面の「BOT設定」から Webhook送信を「利用する」に変更します。
- 「LINE Developers」にログインする
「アカウント名 > Channel名・Channel基本設定」から WebhookURLの設定をする
2. LINE BOTとLINE Beaconの連携
- LINE@MANAGER にログインする
- 対象のアカウントを選択して、LINE beaconをクリック
- 「ビーコン端末とBOTの連携」をクリック
- LINE beaconのHWIDとパスワードを入力する
注意: ひとつのボットに複数のビーコンと連携することができます。しかし、ひとつのビーコンに複数のボットと連携することはできません。
3. ビーコンイベントをハンドリングするプログラムの実装
- LINE BEACONからWebhookURLに送られてくるJSONのフォーマット
BEACON経由のイベント
{
"events": [
{
"type": "beacon",
"replyToken": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"source": {
"userId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"type": "user"
},
"timestamp": 1506685872663,
"beacon": {
"hwid": "XXXXXXXXXX",
"type": "enter"
}
}
]
}
- JSONの詳細説明
Field | Type | Description |
---|---|---|
type | String | beacon |
replyToken | String | このイベントへの返信に使用するトークン |
beacon.hwid | String | 発見したビーコンデバイスのハードウェアID |
beacon.type | String | ビーコンイベントの種別 |
beacon.dm | String | (OPTIONAL) |
- beacon.typeとは
beacon.type | Description |
---|---|
enter | ビーコンデバイスの受信圏内に入った |
leave | ビーコンデバイスの受信圏内から出た |
banner | ビーコンバナーをタップした |
- ビーコンバナーとは
サンプルプログラム
callback.php
<?php
$accessToken = 'アクセストークン';
$jsonString = file_get_contents('php://input');
error_log($jsonString);
$jsonObj = json_decode($jsonString);
$message = $jsonObj->{"events"}[0]->{"message"};
$replyToken = $jsonObj->{"events"}[0]->{"replyToken"};
$beacon = $jsonObj->{"events"}[0]->{"beacon"};
if (strpos($beacon->{"hwid"},'XXXXXXXXXX') !== false) {
$messageData = [
'type' => 'text',
'text' => '到着!'
];
} else {
$messageData = [
'type' => 'text',
'text' => $message->{"text"}
];
}
$response = [
'replyToken' => $replyToken,
'messages' => [$messageData]
];
error_log(json_encode($response));
$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);
結果
LINE BEACONに近づくと、「到着!」と通知される!