BoltzEngine HTTP API ゲートウェイ

BoltzEngine の RPC インターフェイスを HTTP からアクセスできるようにするゲートウェイサービスです。

これは BoltzEngine 本体とは別のサービスとなっており、HTTP と RPC インターフェイスとの仲立ちを行います。

概要

BoltzEngine HTTP API ゲートウェイは BoltzEngine v1.1 以降で boltz-http-proxy コマンドとして同梱されます。

リクエストとして JSON でリクエストオブジェクトで指定されている JSON を送信すると処理が行われ、以下の形式の JSON がレスポンスが戻ります。error 要素には BoltzEngine 上で言語レベル、TCP レベルでのエラーが発生した際にエラーメッセージ文字列がセットされます。

1
2
3
4
{
  "result": (レスポンスオブジェクト),
  "error": null
}

また、APNS, FCM 共に認証情報については HTTP API ゲートウェイの起動パラメータとして渡されているため、渡す必要はありません。

特殊処理

JSON-RPC インターフェイスで BASE64 を渡すことになっているなっている以下のデータはエンコードが行われます。

  • iOS のデバイストークン: 16進数表記の文字列と相互変換されます。
  • iOS の通知ペイロード: 文字列と相互変換されます。(JSON を文字列で指定します)

メソッド一覧

POST /boltz/apns/request

APNs へメッセージを送信します。RPC の BoltzEngine.BroadcastMessagesToAPNs に対応します。

  • 導入バージョン:BoltzEngine v1.1

  • リクエストオブジェクト:apns.Request (Addr, Credential は指定しません)

  • レスポンスオブジェクト:apns.Response

  • Request (application/json)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
{
  "Messages": [
    {
      "ID": 0,
      "Expir": 1432798652,
      "Token": "960d1918d38f9bb8f5f676154ca23da366aed2d1",
      "Payload": "{\"aps\":{\"alert\":\"hello\"}}",
      "Priority": 10
    },
    {
      "ID": 0,
      "Expir": 1432798652,
      "Token": "bb8f5f6960d1918d38f976154ca23da366aed2d1",
      "Payload": "{\"aps\":{\"alert\":\"hello\"}}",
      "Priority": 10
    }
  ]
}
  • Response (application/json)
1
2
3
4
5
6
{
  "result": {
    "FailedMessages": null
  },
  "error": null
}

GET /boltz/apns/feedback

APNs のフィードバックサービスへアクセスし、無効になったトークンの一覧を取得します。RPC の BoltzEngine.ReceiveFeedbackFromAPNs に対応します。

  • 導入バージョン:BoltzEngine v1.1

  • レスポンスオブジェクト:apns.FBResponse

  • Response (application/json)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{
  "result": {
    "Body": [
      {
        "Timestamp": 1432798652,
        "Token": "bb8f5f6960d1918d38f976154ca23da366aed2d1"
      },
      {
        "Timestamp": 1432798652,
        "Token": "bb8f5f6960d1918d38f976154ca23da366aed2d1"
      }
    ]
  },
  "error": null
}

POST /boltz/gcm/request

FCM へメッセージを送信します。RPC の BoltzEngine.BroadcastMessagesToGCM に対応します。

  • 導入バージョン:BoltzEngine v1.1
  • リクエストオブジェクト:gcm.Request (URL, Credential は指定しません)
  • レスポンスオブジェクト:gcm.Response

boltz-http-proxy の設定で、FCM のリクエスト URL をどう指定したかによって、以下のメッセージ形式が変化します。

URL が http:// または https:// で開始する場合

  • Request (application/json)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
{
  "Messages": [
    {
      "registration_ids": [
        "<<REGISTRATION_ID>>",
        "<<REGISTRATION_ID>>"
      ],
      "data": {
        "alert": "........................",
        "mid": "55",
        "sound": "default"
      },
      "collapse_key": "37",
      "time_to_live": 300
    }
  ]
}

URL が http:// または https:// 以外の場合

  • Request (application/json)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
  "Messages": [
    {
      "message_id": "<<MESSAGE ID>>",
      "to": "<<REGISTRATION_ID>>",
      "data": {
        "alert": "........................",
        "mid": "55",
        "sound": "default"
      },
      "collapse_key": "37",
      "time_to_live": 300
    },
    {
      "message_id": "<<MESSAGE ID>>",
      "to": "<<REGISTRATION_ID>>",
      "data": {
        "alert": "........................",
        "mid": "55",
        "sound": "default"
      },
      "collapse_key": "37",
      "time_to_live": 300
    }
  ]
}
  • Response (application/json)
1
2
3
4
5
6
{
  "result": {
    "FailedMessages": null
  },
  "error": null
}

POST /boltz/adm/request

BoltzEngine HTTP API Gateway では、ADM への通知はサポートしていません。

POST /boltz/webpush/request

WebPush へメッセージを送信します。RPC の BoltzEngine.BroadcastMessagesToWebPush に対応します。

  • 導入バージョン:BoltzEngine v2.2

  • リクエストオブジェクト:webpush.Request (Credential は指定しません)

  • レスポンスオブジェクト:webpush.Response

  • Request (application/json)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
{
  "Messages": [
    {
      "Token": "{\"v\":1,\"endpoint\":\"https://example.com/token1\",\"p256dh\":\"xxxx\",\"auth\":\"xxxx\"}",
      "Payload": "{\"alert\":\"hello\"}",
      "TimeToLive": 60,
      "Urgency": "high"
    },
    {
      "Token": "{\"v\":1,\"endpoint\":\"https://example.com/token2\",\"p256dh\":\"xxxx\",\"auth\":\"xxxx\"}",
      "Payload": "{\"alert\":\"hello\"}",
      "TimeToLive": 60,
      "Urgency": "high"
    }
  ]
}
  • Response (application/json)
1
2
3
4
5
6
{
  "result": {
    "FailedMessages": null
  },
  "error": null
}

GET /boltz/activities

BoltzEngine の性能情報を取得します。RPC の BoltzEngine.QueryActivities に対応します。

  • 導入バージョン:BoltzEngine v1.1

  • レスポンスオブジェクト:boltz.MasterActivity

  • Response (application/json)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
{
  "result": {
    "PendingCount": 0,
    "SlaveActivities": {
      ":13007": {
        "MaxAgents": 30,
        "RequestCount": 0,
        "DeliveringCount": 0,
        "DeliveredCount": 0,
        "TotalExecutionTime": 0,
        "LatestExecutionTime": 0,
        "LastUpdate": "2015-05-29T16:27:46.538940751+09:00"
      }
    }
  },
  "error": null
} 

ご不明な点はありませんか?

機能の詳細、導入のご検討、お見積もり依頼などは、お気軽にお問い合わせください。
担当者から追ってご連絡いたします。

お問い合わせはこちら