# 自動通信の準備をする
自動通信を利用するためには、あらかじめシナリオの集合(シナリオセット)をLINEプラットフォームに登録します。
自動通信を利用するための流れは、以下のとおりです。
自動通信向けシナリオ管理APIを使って、シナリオセットをLINEプラットフォームに登録します。
エンドユーザーがLINEとデバイスを連携したときに、LINEプラットフォームに登録されたシナリオセットがLINEに登録されます。
LINEに自動通信のシナリオセットが登録されると、連携済みのデバイスが常にスキャンされます。
LINEがデバイスを見つけると自動的に接続し、シナリオセットの内容に基づいて通信が実行されます。
シナリオごとに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
- アクション:以下の手順を順番に実行する
- GATT_READ:指定したGATT Characteristicからデータを取得する
- 5秒の SLEEP
- 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=="
}
]
}
]
}