Soracom

Users

ドキュメント
Home ドキュメント Unified Endpoint 使用方法

レスポンスの形式を設定する

Unified Endpoint のレスポンスのフォーマットは、グループ設定の [Unified Endoint 設定] で変更できます。

[レスポンス][フォーマット]説明
Auto (デフォルト)

有効な転送設定が 1 つの場合は、そのサービスのフォーマットのレスポンスが返されます。同じグループ設定に、以下の 2 つ以上の設定で有効な転送先が設定されている場合は Unified 形式 でレスポンスが返されます。

  • [SORACOM Beam 設定]
  • [SORACOM Funk 設定]
  • [SORACOM Funnel 設定]
  • [SORACOM Harvest Data 設定]
UnifiedUnified 形式 でレスポンスが返されます。
SORACOM BeamBeam のレスポンスのみが返されます。他の転送設定がある場合、データは転送しますがその結果は返されません。
SORACOM FunkFunk のレスポンスのみが返されます。他の転送設定がある場合、データは転送しますがその結果は返されません。
SORACOM FunnelFunnel のレスポンスのみが返されます。他の転送設定がある場合、データは転送しますがその結果は返されません。
SORACOM Harvest DataHarvest Data のレスポンスのみが返されます。他の転送設定がある場合、データは転送しますがその結果は返されません。
カスタムあらかじめ設定したレスポンスが常に返されます。成功時、エラー時のレスポンスをそれぞれ設定できます。

Unified 形式

Unified 形式のレスポンスのフォーマットは以下のとおりです。

ステータスコード

すべての転送先へのリクエストが成功した場合は 200 が、ひとつでも失敗した場合は 207 が返されます。

プロパティ

プロパティ説明
result
  • ok: すべての転送先へのリクエストが成功しました。

  • ng: 1 つ以上の転送先でエラーが発生しました。

    転送先に接続できなかった場合や SORACOM でエラーが発生した場合は、エラー内容に応じたステータスコードが返却されます。1 つ以上の転送先から、HTTP ステータスコードで 400 以上の値が返された場合にエラーが発生したと判断されます。

detail

各転送先のレスポンスがオブジェクト形式で含まれます。

TCP や UDP で Unified Endpoint に送信した場合も、転送のために HTTP が利用されるため、HTTP 形式で返却されます。

detail.${サービス名} (*1)

サービスごとのレスポンスが以下のフォーマットで返されます。

プロパティ説明
statusCode転送先から返された HTTP ステータスコード。
body転送先から返されたレスポンスの本文。Funk の場合は、常に Base64 形式にエンコードされます。
headers転送先から返されたレスポンスのヘッダー。
encodingレスポンスが Base64 形式でエンコードされている場合は、base64。Base64 形式でエンコードされていない場合は、このプロパティは省略されます。
  • (*1) ${サービス名} は、以下のいずれかです。

    • SoracomBeam
    • SoracomFunk
    • SoracomFunnel
    • SoracomHarvest

転送先が設定されていない、またはすべて無効化されている場合は、[フォーマット] の設定にかかわらず 400 Subscriber configuration is not found という文字列が返されます。

レスポンスが返されるタイミングについて
  • すべての転送先からのレスポンスが返されてから、Unified Endpoint からデバイスにレスポンスが返されます。
  • Funnel は転送先へのリクエストを非同期に処理します。そのため、転送先にリクエストが転送されるタイミングと、デバイスにレスポンスが返されるタイミングには、差があります。

レスポンスの例

すべての転送先で正常に送信できた場合の例

  • ステータスコード: 200

  • ボディ:

    {
      "result": "ok",
      "detail": {
        "SoracomBeam": {
          "statusCode": 200,
          "contentType": "text/html;charset=utf-8",
          "body": "Success: {\"temperature\"=>12.3, \"humidity\"=>45.6, \"time\"=>\"2024-09-02T12:34:56.789Z\"}",
          "headers": {
            "content-type": "text/html;charset=utf-8",
            "content-length": "84",
            "x-xss-protection": "1; mode=block",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "connection": "close",
            "server": "thin"
          }
        },
        "SoracomHarvest": {
          "statusCode": 201
        }
      }
    }
    

1 つ以上の転送先からエラーが返却された場合

  • ステータスコード: 207

  • ボディ:

    {
      "result": "ng",
      "detail": {
        "SoracomBeam": {
          "statusCode": 200,
          "contentType": "text/html;charset=utf-8",
          "body": "Success: {\"temperature\"=>12.3, \"humidity\"=>45.6, \"time\"=>\"2024-09-02T12:34:56.789Z\"}",
          "headers": {
            "content-type": "text/html;charset=utf-8",
            "content-length": "84",
            "x-xss-protection": "1; mode=block",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "connection": "close",
            "server": "thin"
          }
        },
        "SoracomHarvest": {
          "statusCode": 400,
          "body": "Invalid custom timestamp value in request"
        }
      }
    }
    

カスタムレスポンス機能

レスポンスのフォーマットで「カスタム」を選択した場合、成功時のレスポンスと失敗時のレスポンスを指定できます。

unified_endpoint_overview unified_endpoint_overview

すべての転送先に対して正常に送信できた場合は「成功時のレスポンス」が返却されます。いずれかの転送先でエラーが返却された場合は「失敗時のレスポンス」が返却されます。

設定説明
HTTP ステータスコード成功時および失敗時のステータスコードを指定します
Content-Type ヘッダーの値レスポンスの Content-Type ヘッダーの値を指定してください。たとえば application/json を指定します。
Bodyレスポンス Body の値を指定します。
ステータスコードを省略当設定は TCP/UDP 送信時のレスポンスが対象となります。送信後のレスポンスにステータスコードを含みません。(Body のみが送信されます。)