LINE BOTを使ってみよう。(ラインビーコンでメッセージ送信)

2020/06/09PHPLINE,ビーコン,API,enter,leave

記事内に広告が含まれています。

ラインビーコンでメッセージ送信

今回は、ビーコンを使って実際にロジックをつくってみます。
仕様としては、以下の通り

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

システムトラストでは一緒に働いていただける仲間を募集中です。
株式会社システムトラスト

システムトラストでは、システムエンジニア、プログラマーなどを随時募集中です。気軽にご相談ください。

お問合せ