LINE Messaging API の LINE Beacon を使って Slack に「俺、参上」を投げてみる


やりたいこと、会社に来たら、「俺、参上」メッセージをSlackに送って見る。細かい準備とか「[LINEBeaconについて](https://devdocs.line.me/ja/#line-beacon)」に書いてあるのでしっかり見ておいた方が良いかなと思う。


# Developer Trialアカウント登録
Developer Trialでしか今の所使えないので、Developer Trialアカウント作成する。
登録はこちらから → https://business.line.me/ja/services/bot

<img src="https://qiita-image-store.s3.amazonaws.com/0/18766/3e1ff2e5-a487-77ec-7434-f9e987e841f1.png" width="420px">


幾つか入力して、、、

<img src="https://qiita-image-store.s3.amazonaws.com/0/18766/09d1b5fd-1751-1e65-8c6f-ac73afc6411f.png" width="420px">

# LINE@ManagerでBotの設定

## 「Enbale API」をクリックして、Botを有効にする。

<img src="https://qiita-image-store.s3.amazonaws.com/0/18766/b242cf12-50a7-c627-62ac-9eeb155fce68.png" width="420px">

##「Use webhooks」を有効にする
<img src="https://qiita-image-store.s3.amazonaws.com/0/18766/511ec6d4-6884-83d2-49df-47da9b72e757.jpeg" width="420px">

# アカウントとBeaconの連携

## 箱に張られたURLに接続

<img src="https://qiita-image-store.s3.amazonaws.com/0/18766/1358e0f2-7d7c-d852-f7d9-a0a9eb3cc199.jpeg" width="420px">

## デバイスの電池を外す

箱に張られたURLに接続をすると、連携画面が出てくる。
連携するボタンを押した先の画面で　**HWID** と **CODE** 入力し連携を完了させる。
<img src="https://qiita-image-store.s3.amazonaws.com/0/18766/b65a1805-b6ea-047a-0ddd-d3ce971c1ba1.jpeg" width="420px">

## 連携完了

<img src="https://qiita-image-store.s3.amazonaws.com/0/18766/333f912a-7aec-8e86-296c-860f2e4a1107.png" width="420px">

設定はこれだけです。とても、簡単ですね。

# Webhookを準備して

## LINE BUSINESS CENTERのアカウントからLINE Developersへ移動する

<img src="https://qiita-image-store.s3.amazonaws.com/0/18766/ae7a25bf-6443-a041-791e-1808f88500d0.png" width="420px">

## アカウントChannelの設定

<img src="https://qiita-image-store.s3.amazonaws.com/0/18766/354f6a31-a1bd-e6af-bfe5-f832b8294c6e.png" width="420px">

Editをクリックして、"Webhook URL"に https で始まるURLを設定したのち、 **VERIFY** を押して、Webhookを有効にする。
あと、 **Channel Access Token** を **ISSUE** を押して発行する。 

## 電池を入れて準備

LEDが30秒点滅してREADYになるらしい。
<img src="https://qiita-image-store.s3.amazonaws.com/0/18766/9215d682-ccf9-f3a6-b5db-d30228233e09.jpeg" width="420px">

LINEBeaconていうのが宙を舞っているのを確認。

# 試してみる

しばらくすると、、、以下の様な、JSONがwebhookのendpointに飛んできた。
slackにJSONを投げてみた。
<img src="https://qiita-image-store.s3.amazonaws.com/0/18766/7c60ce59-7cd8-8f5d-a6be-ea95cf587ef2.png" width="420px">

```
{"events":[{"type":"beacon","replyToken":"****","source":{"userId":"*****","type":"user"},"timestamp":1475222852862,"beacon":{"hwid":"*****","type":"enter"}}]}
```

こんな感じで飛んできた。Beacon Type が Enter なので、一度、エリアに入った時に、反応する感じになっているみたい。
まぁ、そうだよね。

![Screen Shot 2016-09-30 at 7.16.20 PM.png](https://qiita-image-store.s3.amazonaws.com/0/18766/d1230931-21a8-4e13-37b1-063cb0ef4fb4.png "Screen Shot 2016-09-30 at 7.16.20 PM.png")

一回、Enter 来たから、、、しばらくして、「俺、参上」が通知きた！
俺って誰だよって突っ込みたくなるが、ご勘弁を！

あと、LINEの担当に伺ったところ、、、
> サンプルビーコンの場合は5〜30ｍほど電波が飛んでいますが、電波を拾いつづけている限り連続でイベントが発生するわけではありません。一度エリア外になったあとしばらく時間を置いて再度エリア内になるとイベントが再度送られてくると思います。正確な所はOSが検知するタイミングやcacheなども影響するので、確実にn秒以内にイベントが発生する
とは保証出来ません。

とのこと。上記も踏まえて、webhook側で受け取ったデータを保持し、何かよしなにする感じで利用できるのかなと思った。この辺りの微妙な調整もサービスを作る時に影響しそうな気もするが、まずは、挙動を理解しwebhook側での制御を実装すると良いのかなと思った。

# 感想

LINEで友達に追加してもらえたら使えるのでとても気楽で良いなと思った。今となっては、アプリインストールより難易度が低いし、友達に追加がアプリインストールみたいなイメージかな。なので、Messaging APIを使って、アプリ見たいなBotを作るってありな気がした。あと、他は簡単過ぎて、書くことがあまりない。