Soracom

Users

ドキュメント

UDP → HTTP/HTTPS エントリポイント

デバイスから送信された UDP の 1 パケット (厳密には 1UDP データグラム) を 1 つの HTTP リクエストとして転送先に送信します。

UDP で受信したデータを、JSON 形式に変換して 1 つのリクエストとして HTTP または HTTPS に POST します。受け取ったデータはバイナリである可能性もあるため、base64 エンコードされて下記のような形式となり、POST されます。

{
  "payload": "BASE64エンコードされたデータ"
}

設定項目

SORACOM ユーザーコンソールの場合

  • 設定名: 本設定の名前
  • 転送先
    • プロトコル: 転送先への送信プロトコル。HTTP もしくは HTTPS から選択。
    • ホスト名: 転送先の FQDN。
    • ポート番号: 転送先のポート番号。
    • パス: 転送先へのリクエストパス。
  • ヘッダ操作
    • IMSI ヘッダ付与: 転送先へのリクエストに x-soracom-imsi: ${IMSI} を追加します。
    • IMEI ヘッダ付与: 転送先へのリクエストに x-soracom-imei: ${IMEI} を追加します。
    • MSISDN ヘッダ付与: 転送先へのリクエストに x-soracom-msisdn: ${MSISDN} を追加します。
    • SIM ID ヘッダ付与: 転送先へのリクエストに x-soracom-sim-id: ${SIM_ID} を追加します。
    • 署名ヘッダ付与: 転送先へのリクエストに x-soracom-signature: ${signature} を追加します。
    • 事前共有鍵: 署名に利用する共通鍵を設定します。詳細は、署名ヘッダと事前共有鍵を使って送信元を検証する を参照してください。
  • カスタムヘッダ: 転送先へのリクエストに任意の HTTP ヘッダを付与できます。

SORACOM CLI / SORACOM API の場合

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

{namespace} は、SoracomBeam です。

ボディで指定するプロパティについては、以下の keyvalue のペアを配列で指定します。

"udp://beam.soracom.io:23080": { // 固定
  "name": "string", // 任意
  "destination": "tcps://secure.example.com:1234", // 通信先のホスト名&ポートを指定
  "enabled": true | false, // UDP → HTTP/HTTPS エントリポイントの有効・無効
  "addSubscriberHeader": true | false, // 通信開始時に Subscriber の情報を送るか否か
  "addSignature": true | false, // 検証用のシグネチャを付与するか否か
  "psk": "string", // 検証用シグネチャを計算する際の事前共有パスフレーズ
  "customHeaders": { // 独自HTTPヘッダ
    "X-HEADER-NAME": { // 独自ヘッダの名前
      "action": "append" // 追記のみ可能
      "headerKey": "X-HEADER-NAME",
      "headerValue": "VALUE" // ヘッダに設定する内容
    }
  }
}

設定例

[
  {
    "key": "udp://beam.soracom.io:23080",
    "value": {
      "name": "udp2https",
      "destination": "https://beamtest.soracom.io/",
      "enabled": true,
      "addSubscriberHeader": true,
      "addSignature": true,
      "psk": "topsecret",
      "customHeaders": {
        "X-GROUP-NAME": {
          "action": "append",
          "headerKey": "X-GROUP-NAME",
          "headerValue": "TEST"
        }
      }
    }
  }
]

エントリポイント

beam.soracom.io:23080

リクエスト

Beam は送信されたメッセージを Base64 エンコードしたうえで以下のような JSON にし、HTTP POST リクエストのボディに設定します。

{"payload":"Base64エンコードされたメッセージ"}

1 メッセージあたりの最大送信データサイズは 1 つの UDP データグラムで送信できるペイロード長と等しくなります。

レスポンス

UDP には HTTP のようなリクエスト&レスポンスの概念はありませんので、以下のコードやメッセージをペイロードとして含んだ UDP パケットが UDP → HTTP/HTTPS エントリポイントから送信されます。フォーマットは以下のようになります。レスポンス送信のタイミングは、転送先サーバーからのレスポンスに基づきます。

${HTTP_STATUS_CODE} ${転送先から返されたHTTPレスポンスのボディ}

実際の利用例

ボディのないレスポンス例

$ echo "test message" | nc -v -u beam.soracom.io 23080
found 0 associations
found 1 connections:
     1:	flags=82<CONNECTED,PREFERRED>
	outif (null)
	src 192.168.43.232 port 61852
	dst 100.127.127.100 port 23080
	rank info not available

Connection to beam.soracom.io port 23080 [udp/*] succeeded!

200

ボディのあるレスポンス例

$ echo "bad message" | nc -v -u beam.soracom.io 23080
found 0 associations
found 1 connections:
     1:	flags=82<CONNECTED,PREFERRED>
	outif (null)
	src 192.168.43.232 port 61852
	dst 100.127.127.100 port 23080
	rank info not available

Connection to beam.soracom.io port 23080 [udp/*] succeeded!

400 Message from server

UDP → HTTP/HTTPS エントリポイントを利用する設定については、以下のページも参照してください。