LINE Simple Beaconを触ってみて、自分なりの疑問点をまとめた

Posted by kwmt27 on Thu, Mar 26, 2020

基本的にこちらの記事を参考にすれば、すぐ分かる人は分かるかと思いますが、僕自身が少しハマったことや疑問点があったので、それを忘れないうちにまとめておこうかと思います。

HWID(端末ID)はLINE@ MANAGERページの方にある

ブログ記事の通り進めていくと、LINE@ MANAGERとLINE Developerのページの2つのページで確認したり設定することになります。

HWIDはこちらから発行できるのですが、LINE@ Managerで使用しているbotアカウントを選択して、左メニューのLINE Beacon -> アカウント連携 にある端末IDHWIDを示していますので、そちらでも確認できます。

HWIDとは?

スマートフォンがRaspberry Piの受信圏内に出入りしたときに、Beacon EventのWebhookを投げれる状態にするもの。 ブログ記事にあるとおりにラズパイ側で設定するだけでいい。ただ、これだけでは投げる先がわかならないので、投げる先の登録は LINE Developersページで登録する必要があります。

LINE Developersページに行くには?

LINE@ Managerから設定したいBotアカウントを選択して、左メニューのアカウント設定->Bot設定とたどります。 すると、下図のようなリンクがあるので、そこをクリックするといけます。

Go to LINE Developers page.png
Go to LINE Developers page.png

(LINE Dvelopersページに行くのに、毎回迷子になってました(汗))

WebhookのURLは何を指定したらいいの?

サーバーを準備する必要があり、そのURLを指定します。 私はHeroku+Goを使用しました。Getting Started on Heroku with Goなどを参考にWebhookでBeaconEventを受け取れるようにサーバーを準備します。

ただ単に受けるだけなら、下記のような感じでいいです。

http.HandleFunc("/callback", func(w http.ResponseWriter, req *http.Request) {
    log.Println(req)
})
http.ListenAndServe("", nil)

ただ、これだけだとEventが来たときスルーさせるだけなので、Eventが来たことを知る必要があるのと、Eventが来たらどうするのか、たとえばLINEのメッセージに送るとかをしたいと思いますので、それに必要なのがこちらのline-bot-sdkです。

Channel SecretとChannel Access Tokenを指定する必要がありますが、これはLINE Developersページに記載されていますので、確認してみてください。

設定したりパースしたりする部分は省略しますが、Beacon Eventが来たことを判定にするには、下記のように書きます。

for _, event := range events {
    if event.Type == linebot.EventTypeBeacon {
        // Beacon Eventが来た。ここでLINEメッセージを送ったりする。
    }
}

LINEメッセージを送るには、eventの中にあるreplyTokenを使用して、下記のように書くと、ここでははろーというメッセージが届くようになります。

bot.ReplyMessage(event.ReplyToken, linebot.NewTextMessage("はろー")).Do()

Beacon Eventが来ないんだけど・・・

Webhook送信を利用するにチェックを入れるとか、全部設定はした!設定の確認もした!なのにwebhook送信が来ない場合、Beacon EventLINE Beaconの仕様をよく見ると、

イベント送信元のユーザがLINE Beaconデバイスの受信圏内に出入りしたことなどを表すイベントです。

や、

LINE Beacon は、「連携しているLINEユーザがビーコンデバイスの受信圏内に出入りしたことなどをwebhookで即座にbotが知ることができる」サービスです。

などと書かれていますので、端末を受信圏内に出入りしてみるとよいかもしれません。 bluetoothの通信距離はだいたい10mなので圏内に出入りすぐできそうですが、それより簡単なのは、端末のbluetooth設定をオン/オフしてみてください。

僕はこれに少しハマりました。。

一連の流れ

手書きで汚くて申し訳ないですが・・・こんなイメージです。

Image uploaded from iOS (2).jpg
Image uploaded from iOS (2).jpg

LINE BeaconはMessaging APIのReplyAPIを使うので、0円で運用できる

plan.png
plan.png

お金、心配ですよね。LINE BeaconはMessaging APIを使うということは書かれてる記事は多いのですが、Messging APIもReply API とPush APIの2種類あって、結局どっちなの?とおもって調べていたら、

こちらのドキュメントに、Reply APIは「Webhookで通知されたイベントの中で、返信可能なイベントにはreplyTokenが付与されています。」と書かれてあり、Beacon EventのドキュメントreplyTokenが含まれいるので、Reply APIを使用することになります。

まぁ、よくよくReply APIの定義を見ると

Reply APIとは、ユーザーからのメッセージに対して応答メッセージを送信するAPIです。

と書かれてるので、ユーザーの動きに反応して応答するのはReply APIになりますね。

参考



comments powered by Disqus