9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LINE Beaconを試してみた

Posted at

目的

LINE BEACONを使用して、LINEのトークルーム上に通知を飛ばしたい。

最終ゴール

LINE BEACONに近づくと、「到着!」と通知される。

Image uploaded from iOS(5).jpg

目的達成までのプロセス

  1. LINE BOTを作成する
  2. LINE BOTとLINE Beaconの連携
  3. ビーコンイベントをハンドリングするプログラムの実装

手順

1. LINE BOTを作成する

  • LINE Business アカウントの作成。「LINE BUSINESS CENTER」から画面の手順に従って、新規登録を行います。
    https://business.line.me/ja/services/bot

  • Messaging API の申込み
    アカウントリストの「Messaging API」のリンクから画面の手順に従って、利用申込みを行います。

スクリーンショット 2017-10-02 午後2.38.25.png
  • 「LINE@MANAGER」でBOT作成します。
    管理画面の「BOT設定」から Webhook送信を「利用する」に変更します。
スクリーンショット 2017-10-02 午後2.40.35.png
  • 「LINE Developers」にログインする
スクリーンショット 2017-10-02 午後2.50.05.png

「アカウント名 > Channel名・Channel基本設定」から WebhookURLの設定をする

スクリーンショット 2017-09-29 午後9.30.48.png

2. LINE BOTとLINE Beaconの連携

  • LINE@MANAGER にログインする
スクリーンショット 2017-09-29 午後8.56.23.png
  • 対象のアカウントを選択して、LINE beaconをクリック
スクリーンショット 2017-09-29 午後8.55.30.png
  • 「ビーコン端末とBOTの連携」をクリック
スクリーンショット 2017-09-29 午後8.55.46.png
  • 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 ビーコンバナーをタップした
  • ビーコンバナーとは
スクリーンショット 2017-10-02 午後4.07.24.png

サンプルプログラム

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に近づくと、「到着!」と通知される!

Image uploaded from iOS(5).jpg
9
5
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
9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?