LINE Beaconをゲットしたので、line-bot-sdk-java使ってBeaconの通知を受けるまでの流れを書きたいと思います。手順的にはびっくりするぐらい簡単です(多分10分程度でいけます)。
LINE Beacon取得に関する経緯が特殊だったので先に触れたいと思います。技術的な部分だけ興味ある方は読み飛ばしてください~。
ちなみにLINE Beaconは以下より購入可能です。
https://beacon.theshop.jp/items/4699062
また、先日Raspberry PiなどでLINE Beaconが作れるというニュースもありました。
ラズベリーパイでLINE Beaconが作成可能に!「LINE Simple Beacon」仕様を公開しました
https://engineering.linecorp.com/ja/blog/detail/117
LINE Beacon取得の経緯
先日、Developers Summit 2017で「【締め切り直前】30分でLINE Messaging APIを使ったチャットボットを作って優勝賞金1000万円のLINE Bot Awardsにチャレンジしよう!」のランチセッションに参加しました。
内容的にはLINE Botの紹介とプラットフォームの概要、そしてライブコーディングによるBot作成だったのですが、セッションの中でLINEの砂金さんより**「本日LINE Beaconをお持ちしています。紳士協定ですが、LINE Botを作成してBeaconについても情報発信をしてくれる方に差し上げます!」**とのこと!!
私もLINE Botは趣味で作っていて、少し前に以下の記事を書いたりしてました。
LINEで乃木坂46の若月さんと話せる「若様Bot」を開発してみた
http://qiita.com/kikutaro/items/525b54a6a466b5369f9e
Beacon欲しい!とセッション後のAsk the speakerに並んだのですが、既に列ができていて(汗)自分の順番が来る少し前で**「すみませんー、Beacon品切れになりました」**とのこと orz
諦めて帰ろうと思ったのですが**「どうしても…という方は送り先を教えてください」**とのこと!!なんて太っ腹な!!
厚かましいの重々承知で名刺をお渡しさせていただきました。
で、早速今日届いた!!!はやい!!!

ということで早速試してみました。
Beaconのセットアップ
Beaconはこんな感じです。思ってたより全然小さかった(幅7cmくらい?)



Beaconに付属の紙にある登録サイトのURLを入力してBeaconの設定画面へ進みます。
アカウントの一覧が表示されるので、ビーコンを利用するアカウントを選択します。
アカウント連携の画面にきたら、Beaconに記載されている「端末ID(HWID)」と「パスコード(CODE)」を入力します。場所がわからない方は上に載せたBeacon端末の写真の1つ目を確認してみてください。(電池入れちゃった人は電池取ればわかるかと)
「連携する」ボタンを押すと「アカウント連携が完了しました。」と出ます。ビーコンは電源OFF状態で大丈夫でした。
これで設定は完了です。「LINE BeaconのEvent Web hookを受信する方法」という部分にしたがってLINEの設定をします。
LINEアプリのセットアップ
LINEアプリを起動して、(その他タブの)右上のギアマークを選択します。
これでアプリの設定は完了です。
line-bot-sdk-javaのコード
あとはコードを書くのみ!line-bot-sdk-javaを使うとSpring Bootで簡単にLINEのサーバを立てることができます。
ローカル環境でもngrok使えばLINE Botの動作確認ができます。この辺りについては以前に以下ブログでまとめたので参考になれば幸いです。
Spring BootとLINE Messaging APIで作ったLINE BOTをHerokuで動かす
http://kikutaro777.hatenablog.com/entry/2017/01/16/230122
line-bot-sdk-javaのGitHubページには以下のようなエコーサンプル(botに話かけた内容をそのまま返すサンプル)があります。
@SpringBootApplication
@LineMessageHandler
public class EchoApplication {
public static void main(String[] args) {
SpringApplication.run(EchoApplication.class, args);
}
@EventMapping
public TextMessage handleTextMessageEvent(MessageEvent<TextMessageContent> event) {
System.out.println("event: " + event);
return new TextMessage(event.getMessage().getText());
}
@EventMapping
public void handleDefaultMessageEvent(Event event) {
System.out.println("event: " + event);
}
}
で、Beaconの通知を受けるのは以下メソッドを追加するだけ。
@EventMapping
public Message handleBeaconMessageEvent(BeaconEvent event) {
System.out.println(event.getBeacon().getHwid()); //HWIDを標準出力
return new TextMessage("LINE Beanconから通知だよ!砂金さん、ありがとうございました!");
}
Botを友達登録して、Beaconの電源を入れて近づけば…

キター!!

なんか楽しいー!色々と幅が広がりますね!
お忙しい方なのに、デブサミ後、速攻で手配してくださった砂金さん、本当にありがとうございました!