連携サービスAPI

ここでは、 連携サービスのAPIの使い方について説明します。

Incoming Webhook API

Incoming Webhook を利用することで、各モジュールにメッセージを送信することができます。 プロジェクトごとに、複数のIncoming Webhook APIを作成することができ、 そのプロジェクトに属するモジュールにメッセージを送信することができます。

Incoming Webhook APIを設定するごと Token が発行され、このTokenを用いて、APIにアクセスします。 各Tokenごとに、 Secret を設定することができ、APIを安全に利用することができます。

連携サービスの作成

コントロールパネルから連携サービスの追加を行い、 Incoming Webhook を追加します。 Secretとして、以下では、 _secret_ を入力したとします。 作成したIncoming Webhookの連携サービス画面からTokenが確認できます。 これを以下では _token_ とします。

データの準備

送信対象のモジュールと、モジュールに送信するデータを決めます。 データの送信には、モジュールのIDです。コントロールパネルまたは管理APIから確認することができます。

モジュールのIDを <module id> 、送信するデータは

  • チャンネル 0 に int32_t 型の 0という数値を送る
  • チャンネル 1 に int32_t 型の 0という数値を送る

とします。

これを data.json というファイルに書いたことにします。

data.json
 {
   "type": "channels",
   "module": "<module id>",
   "payload": {
     "channels": [
       {
         "channel": 0,
         "type": "i",
         "value": 0
       },
       {
         "channel": 1,
         "type": "i",
         "value": 0
       }
     ]
   }
 }

データ送信

最後に改行コードが入っているとうまく行かないので、ファイル末尾の改行コードを削除しておきます。

$ perl -pi -e 'chomp if eof' data.json
$ cat data.json # module id が module-name のモジュールに送る例
{"type":"channels","module":"module-name","payload":{"channels":[{"channel":0,"type":"i","value":10},{"channel":1,"type":"f","value":1.5}]}}%

リクエストボディをメッセージとして、 Secret をKeyとするHMAC-SHA1を計算します。

$ cat data.json | openssl dgst -sha1 -hmac "_secret_"
(stdin)= xxxxxx

上記の HMAC-SHA1 を X-Sakura-Signature ヘッダに入れて、POSTリクエストを送ります。

curl -X POST --header 'Accept: application/json' --header 'X-Sakura-Signature: xxxxxx' -d @data.json 'https://api.sakura.io/incoming/v1/_token_'
{"status":"ok"}

Arduino の sakura.io スケッチ例のStandard を使ってシリアルモニタ経由で見た例が以下です。 受信できていることが確認できます。

Queue に2つのデータが来ていることが確認できる

API リファレンス

sakura.io Incoming Webhook

DataStore v2 API

DataStore v2 を利用することで、sakura.ioモジュールからのメッセージを保存することができます。 外部システムやWebブラウザから、DataStore v2 APIのエンドポイントに対して、HTTPSリクエストを送信することで、DataStore V2に保存されたメッセージを参照することができます。

使い方については、 APIの基本的な使い方 をご覧ください。

APIリファレンス

sakura.io DataStore v2 API