自動通信の準備をする

自動通信を利用するためには、あらかじめシナリオの集合(シナリオセット)をLINEプラットフォームに登録します。

自動通信の概要

自動通信を利用するための流れは、以下のとおりです。

  1. 自動通信向けシナリオ管理APIを使って、シナリオセットをLINEプラットフォームに登録します。

  2. エンドユーザーがLINEとデバイスを連携したときに、LINEプラットフォームに登録されたシナリオセットがLINEに登録されます。

    LINEに自動通信のシナリオセットが登録されると、連携済みのデバイスが常にスキャンされます。

  3. LINEがデバイスを見つけると自動的に接続し、シナリオセットの内容に基づいて通信が実行されます。

  4. シナリオごとに1つの実行結果が、Messaging APIのチャネルのWebhook URLに送信されます。

    詳しくは、「LINE Thingsシナリオ実行イベントを受け取る」を参照してください。

ここでは、LINEプラットフォームに登録するシナリオとシナリオセットについて説明します。

シナリオ (Scenario)

シナリオは、「デバイスとLINEとの通信手順」を定義したデータです。以下の2つのデータから構成されています。

  • トリガー(Trigger):実行の起点
  • アクション(Action):実行内容

トリガー (Trigger)

トリガーには、以下の条件からいずれか1つを設定します。このトリガーを実行の起点とし、アクションが開始されます。

  • IMMEDIATE:デバイスとLINEが接続されると、すぐにアクションを実行する
  • BLE_NOTIFICATION:指定したGATT Characteristicの通知を受けたときに、アクションを実行する

    通知のペイロードは、アクション実行結果とあわせてLINEに送信されます。

アクション (Action)

アクションには、以下のいずれかを順番に複数実行する手順を登録します。

  • GATT_READ:指定したGATT Characteristicからデータを取得する

    読み取ったデータは、シナリオ実行結果と共に送信されます

  • GATT_WRITE:指定したGATT Characteristicにデータを書き込む

  • SLEEP:一定時間待つ

シナリオの例

トリガーとアクションを組み合わせたものが、1つのシナリオです。例えば、以下のようなシナリオを作成できます。

  • 接続後すぐに、GATT Characteristicからデータを取得し、データを書き込む

    • トリガー:IMMEDIATE
    • アクション:GATT_READ、GATT_WRITE
  • 指定したGATT Characteristicの通知を受けたときに、GATT Characteristicからデータを取得し、データを書き込む

    • トリガー:BLE_NOTIFICATION
    • アクション:GATT_READ、GATT_WRITE

シナリオセット

シナリオセットは、複数のシナリオを組み合わせたデータです。複雑な通信を実行する手順を実現できます。

シナリオセットは、プロダクト情報ごとに1つ設定できます。シナリオセットを登録するには、自動通信向けシナリオ管理APIを使います。詳しくは、「自動通信向けシナリオ管理API」を参照してください。

注:ユーザーごとやデバイスごとに、シナリオセットや通信の内容を変更することはできません。

シナリオセットの設定と更新

エンドユーザーが、LINEとデバイスを連携する前に、シナリオセットをプロダクト情報に登録します。

プロダクト情報に登録されたシナリオセットは、エンドユーザーが、LINEとデバイスを連携したときに、LINEに登録されます。

LINEに自動通信のシナリオセットが登録されると、連携済みのデバイスが常にスキャンされます。デバイスが見つかったら自動的に接続され、シナリオセットの内容に基づいて通信が実行されます。

エンドユーザーがLINEとデバイスを連携したあとに、開発者がシナリオセットを更新した場合は、以下の条件に従ってシナリオセットが更新されます。

  • エンドユーザーがLINEの[連携可能なデバイス]を表示した
  • シナリオセットが最後にLINEに登録されてから24時間以上経過している

デバイスとの接続の切断と再接続(autoClose、suppressionInterval)

シナリオセットには、デバイスとの接続の切断と再接続に関する2つのパラメーターを指定できます。

  • autoClose:trueを指定すると、シナリオセット内のすべての実行中シナリオを実行後に、デバイスとの接続を切断する。falseの場合、デバイスとの接続を維持する(常時接続)
  • suppressionInterval:autoClose = trueの場合、接続を切断したあと再接続を抑制する時間を指定する

これらのパラメーターの扱いには注意があります。詳しくは、「自動通信を利用する際の注意点について」を参照してください。

シナリオセットの例

シナリオセットの例を紹介します。自動通信向けシナリオ管理APIについて詳しくは、『LINE Things APIリファレンス』の「自動通信向けシナリオ管理API」を参照してください。

例1

GATT Characteristicからの通知を待ち受けます。

  • パラメーター:シナリオセット実行後も接続を維持する(常時接続)
  • シナリオ1
    • トリガー:BLE_NOTIFICATION
    • アクション:なし。通知されたペイロードだけを利用する
{
  "autoClose": false,
  "suppressionInterval": 0,
  "scenarios": [
    {
      "trigger": {
        "type": "BLE_NOTIFICATION",
        "serviceUuid": "91E4E176-D0B9-464D-9FE4-52EE3E9F1552",
        "characteristicUuid": "62FBD229-6EDD-4D1A-B554-5C4E1BB29169"
      },
      "actions": [
      ]
    }
  ]
}

例2

接続後すぐにアクションを実行し、接続を切断します。

  • パラメーター:シナリオセット実行後、自動的に接続を切断する。切断後1時間は再接続を抑制する
  • シナリオ1
    • トリガー:IMMEDIATE
    • アクション:以下の手順を順番に実行する
      1. GATT_READ:指定したGATT Characteristicからデータを取得する
      2. 5秒の SLEEP
      3. GATT_WRITE:指定したGATT Characteristicに"6AMAAA=="([0xe8, 0x03, 0x00, 0x00]、32bit Integerで1000)を書き込む
{
  "autoClose": true, 
  "suppressionInterval": 3600000,  
  "scenarios": [
    {
      "trigger": {
        "type": "IMMEDIATE"        
      },                                                      
      "actions": [                                                  
        {
          "type": "GATT_READ",
          "serviceUuid": "7B3D6B30-8F8C-4549-A4F5-66B1F435FA8F",
          "characteristicUuid": "90EC53BA-1DBE-4AE2-B762-7C1FEA00F380"
        },
        {
          "type": "SLEEP",
          "sleepMillis": 5000
        },
        {
          "type": "GATT_WRITE",
          "serviceUuid": "7B3D6B30-8F8C-4549-A4F5-66B1F435FA8F",
          "characteristicUuid": "5486C1A0-0EC2-4073-9C38-755D21EFE090",
          "data": "6AMAAA=="
        }
      ]
    }
  ]
}

{{ $t("form.question.helpful") }}

{{ $t("form.question.detail") }}

{{ $t("form.question.improve") }}

{{ $t("form.info.start") }}{{ $t("form.info.link") }}{{ $t("form.info.end") }}


{{ $t("form.result.success") }}
{{ $t("form.result.error") }}
{{ $t("form.result.errorLink") }}