LINE BOTを使ってみよう。(ラインビーコンでメッセージ送信)
ラインビーコンでメッセージ送信
今回は、ビーコンを使って実際にロジックをつくってみます。
仕様としては、以下の通り
1.お友達登録した方がビーコン圏内に入る。
2.圏内に入ったユーザがいたら、管理者にメッセージを送信
と、単純なもの。
まずは、ライン情報を取得します。
01 02 03 | //ユーザーからのメッセージ取得 $json_string = file_get_contents ( 'php://input' ); $json_object = json_decode( $json_string ); |
受信したTypeを調べます。
01 | $type = $json_object ->{ "events" }[0]->{ "type" }; |
このtype が 「beacon」であるかの確認をして、ビーコンである場合は
管理者にメール送信をする処理を記載します。
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | switch ( $type ) { $timestamp = $json_object ->{ "events" }[0]->{ "timestamp" }; $hwid = $json_object ->{ "events" }[0]->{ "beacon" }->{ "hwid" }; $ev_type = $json_object ->{ "events" }[0]->{ "beacon" }->{ "type" }; // イベントがLeaveのときは処理しない if ( $ev_type == 'leave' ) { return ; } // $message = '圏内に入った!' ; // 管理者 $user_id = 'U*************' ; // ユーザ情報を取得 $userInfo = array (); $userInfo = $lLine ->GetUserInfo( $user_id ); $name = $userInfo [ "displayName" ]; // メッセージ投函 $rtc = $lLine ->PushMessage( $user_id , $message ); if ( $rtc == "" ){ $utlFunc ->LogPut( $name . " さんへの送信結果: 成功" ); } else { $utlFunc ->LogPut( $name . " さんへの送信結果: " . $rtc ); } } |
※ $lLine はLine送信用のclassです。
ひとまず、これで圏内に入ったときはメッセージ送信が行えますが
圏外にでて、再度圏内に入ったときの処理はどうするのか?
leaveが使用できない、今となってはロジックを検討する必要があります。
単純に考えて、次の「enter」を受信したときでいいのでは?と考えがちですが。
実際に、このロジックを使用して実機で確認したところ、圏外に出ていないのにも
関わらず、enterが再度受信してしまう現象が起きてしまいました。
単純に、2回目のenterでというわけにはいかなそうです。
[前の記事]LINE BOTを使ってみよう。(ラインビーコンの仕組み)
0