LINE BOTを使ってみよう。(ラインビーコンでメッセージ送信)
ラインビーコンでメッセージ送信
今回は、ビーコンを使って実際にロジックをつくってみます。
仕様としては、以下の通り
1.お友達登録した方がビーコン圏内に入る。
2.圏内に入ったユーザがいたら、管理者にメッセージを送信
と、単純なもの。
まずは、ライン情報を取得します。
//ユーザーからのメッセージ取得 $json_string = file_get_contents('php://input'); $json_object = json_decode($json_string);
受信したTypeを調べます。
$type = $json_object->{"events"}[0]->{"type"};
このtype が 「beacon」であるかの確認をして、ビーコンである場合は
管理者にメール送信をする処理を記載します。
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を使ってみよう。(ラインビーコンの仕組み)