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

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

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

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

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

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
システムトラストでは一緒に働いていただける仲間を募集中です。
株式会社システムトラスト

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

お問合せ