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を使ってみよう。(ラインビーコンの仕組み)







