Soracom

Users

ドキュメント

Unified Endpoint を利用して Funnel と Harvest にデータを送信する

当ガイドでは、IoT SIM から Unified Endpoint にデータを送信して SORACOM Funnel (Funnel) および SORACOM Harvest (Harvest) の両方にデータを転送します。

Unified Endpoint に有効/無効の設定はありません

Unified Endpoint のエントリポイント にデータを送信すると、対応サービス (Beam、Funnel、Funk、Harvest Data) のうち有効になっているサービスに転送されます。

たとえば、Funnel と Harvest Data が有効になっている場合、デバイスから Unified Endpoint に送信されたデータは Funnel と Harvest の両方にデータが転送されます。

ステップ 1: 対応サービスを有効化する

ここでは Funnel と Harvest Data を有効化します。

  1. Funnel を有効化します。

    転送先のサービスによって手順が異なります。詳しくは、以下を参照してください。

  2. Harvest Data を有効化します。

    Unified Endpoint Unified Endpoint

ステップ 2: レスポンスのフォーマットを選択する

Unified Endpoint の設定はグループに対して行います

ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。

  1. SIM グループ画面で [Unified Endpoint] をクリックします。

    SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。

  2. レスポンスのフォーマットを選択します。

    Unified Endpoint Unified Endpoint

    レスポンスのフォーマットについては 使用方法: レスポンスの形式を設定する をご確認ください。

  3. [保存] をクリックします。

  4. IoT SIM が所属するグループを切り替えます。

    IoT SIM の Unified Endpoint のレスポンスのフォーマットが選択されます。

SORACOM CLI / SORACOM API の場合

SORACOM CLI または SORACOM API を利用しても、レスポンスのフォーマットの設定を変更できます。

レスポンスのフォーマットを選択する

soracom groups put-config (Group:putConfigurationParameters API) を使用します。

$ soracom groups put-config --group-id {group_id} --namespace UnifiedEndpoint \
--body '[
  {
    "key": "response",
    "value": {
      "format": "Custom",
      "success": {
        "statusCode": "200",
        "contentType": "application/json",
        "body": "{\"result\":\"ok\"}"
      },
      "failure": {
        "statusCode": "500",
        "contentType": "application/json",
        "body": "{\"result\":\"ng\"}"
      }
    }
  }
]'

レスポンスのフォーマットを選択する

Group:putConfigurationParameters API を使用します。

$ curl -v -X PUT https://api.soracom.io/v1/groups/{group_id}/configuration/UnifiedEndpoint \
-H "X-Soracom-API-Key: $X_SORACOM_API_KEY" \
-H "X-Soracom-Token: $X_SORACOM_TOKEN" \
-H "Content-Type: application/json" \
-d '[
  {
    "key": "response",
    "value": {
      "format": "Custom",
      "success": {
        "statusCode": "200",
        "contentType": "application/json",
        "body": "{\"result\":\"ok\"}"
      },
      "failure": {
        "statusCode": "500",
        "contentType": "application/json",
        "body": "{\"result\":\"ng\"}"
      }
    }
  }
]'

ボディで指定するプロパティについて

以下の keyvalue のペアを配列で指定します。

keyvalue の型value
responseObject

レスポンスの設定を JSON で指定します。

  • format: レスポンスのフォーマットを選択します。デフォルトは Auto です。以下のいずれかを指定してください。
    • Auto
    • Unified
    • SoracomBeam
    • SoracomFunnel
    • SoracomHarvest
    • Custom
  • success: カスタムフォーマットの場合の成功時のレスポンスを指定します。
  • success.statusCode: ステータスコードを指定します。
  • success.contentType: Content-Type ヘッダーの値を指定します。
  • success.body: ボディを指定します。
  • failure: カスタムフォーマットの場合の失敗時のレスポンスを指定します。
  • failure.statusCode: ステータスコードを指定します。
  • failure.contentType: Content-Type ヘッダーの値を指定します。
  • failure.body: ボディを指定します。

想定していない値を指定した場合の動作は、定義されていません。SORACOM CLI / SORACOM API で設定を変更したあとで、SORACOM ユーザーコンソールで意図通りに設定されていることを確認してください。

ステップ 3: デバイスからデータを送信する

グループ設定が完了したらデータを送信します。ご利用の IoT SIM がグループに所属していることを確認し、以下のコマンドを送信します。

サンプルコマンドは以下のとおりです。

$ curl -vX POST http://uni.soracom.io -d "{\"message\":\"Hello SORACOM Funnel and Harvest via UnifiedEndpoint!!\"}" -H "Content-Type:application/json"
* About to connect() to uni.soracom.io port 80 (#0)
*   Trying 100.127.69.42...
* connected
* Connected to uni.soracom.io (100.127.69.42) port 80 (#0)
> POST / HTTP/1.1
> User-Agent: curl/7.26.0
> Host: uni.soracom.io
> Accept: */*
> Content-Type:application/json
> Content-Length: 56
>
* upload completely sent off: 56 out of 56 bytes
* additional stuff not fine transfer.c:1042: 0 0
* HTTP 1.1 or later with persistent connection, pipelining supported
< HTTP/1.1 200 OK
< content-type: application/json
< Date: Thu, 07 Feb 2019 05:22:16 GMT
< Connection: close
< Content-Length: 97
<
* Closing connection #0
{"result":"ok","detail":{"SoracomFunnel":{"statusCode":204},"SoracomHarvest":{"statusCode":201}}}

各サービスにデータが転送されていることをご確認ください。

ステップ 4: レスポンスを確認する

上記の実行結果では、レスポンスは以下のように返されています。

{
    "result":"ok",
    "detail":{
        "SoracomFunnel":{"statusCode":204},
        "SoracomHarvest":{"statusCode":201}
    }
}

これは、レスポンスのフォーマットで「Auto」を選択しています。Funnel、Harvest の複数のサービスに転送しているため、「Unified」のフォーマットとなっています。 これ以外に、Funnel のみのレスポンス、Harvest のみのレスポンス、カスタムレスポンスを返却するこができます。

レスポンスのフォーマットについては 使用方法: レスポンスの形式を設定する をご確認ください。