Push API v4
- 単一デバイスまたはデバイスリストに通知またはメッセージをプッシュします。
- プッシュコンテンツはJSON形式の単一プッシュオブジェクトのみです。
- ラベル/エイリアス関連の機能については、AppPushAPIを参照してください。
これは最新バージョンのPush APIです。v4バージョンの改良点は以下のとおりです:
- HTTP Basic Authenticationを使用してアクセスを認可します。これにより、curlやブラウザプラグインなどの一般的なHTTPツールを使用してAPIリクエスト全体を完了できます。
- プッシュコンテンツはJSON形式です。
Request Rate Limits
サービスの安定性と公平性を確保するため、APIには呼び出し頻度の制限が設けられています。各AppKeyのQPS(Queries Per Second)制限は以下のとおりです:
- Standard Limit:1秒あたり最大500リクエスト。
- Advanced Limit:有料プランのサブスクライバーで、有料AppKeyに更高のQPS制限が必要な場合は、営業チームにお問い合わせください:Sales@engagelab.com。
Call Validation
詳細については、Authentication methodを参照してください。
Call Address
POST v4/push
Sample Requests
Request header
> POST /v4/push HTTP/1.1
> Authorization: Basic N2Q0MzFlNDJkZmE2YTZkNjkzYWMyZDA0OjVlOTg3YWM2ZDJlMDRkOTVhOWQ4ZjBkMQ==
Request body
{
"from": "push",
"to": "all",
"body": {
"platform": "web",
"notification": {
"alert": "Hi,MTPush !",//optional
"web": {
"alert": "web_push",
"title": "web_push",
"url": "http://www.google.com",
"extras": {
"web-key1": "web-value1"
}
}
}
},
"request_id": "12345678",
"custom_args": "business info"
}
Request Parameters
プッシュのパラメータ構造は、以下の表に詳細を示します。
Keyword | Type | Option | Description |
---|---|---|---|
from | String | Optional | 現在の業務送信元 |
to | String または JSON Object | Required | 送信対象 |
body | JSON Object | Required | 送信リクエスト本体 |
platform | String または JSON Array | Required | プッシュプラットフォーム |
notification | JSON Object | Optional | |
message | JSON Object | Optional | |
options | JSON Object | Optional | プッシュオプション |
request_id | String | Optional | 顧客がリクエストを識別するためのカスタムオプションフィールドで、レスポンス時に返されます。 |
custom_args | JSON Object | Optional | 顧客がカスタマイズしたオプションフィールドで、コールバック時に顧客に返されます。 |
from
現在の業務の送信元です。値はString型で、オプションです。
Sample Requests
{
"from":"push"
}
to
プッシュ対象のデバイスオブジェクトで、プッシュを送信できるデバイスのリストを示します。MTPushは、Registration IDとブロードキャストの2つの方法を提供しています。
Push target
Keyword | Type | Meaning | Description | Note |
---|---|---|---|---|
all | String | ブロードキャスト | すべてのデバイスにプッシュ | 過去30日間にアクティブだった対象デバイスにプッシュされます。 |
registration_id | JSON Array | 登録ID | 配列。複数の登録ID間の関係はOR(和集合)です。 | デバイスID。一度に最大1,000件のメッセージをプッシュできます。 |
tag | JSON Array | タグ | 配列。複数のタグ間の関係はOR(和集合)です。 | タグを使用して大規模なデバイス属性、ユーザー属性のサブグループにプッシュできます。 |
tag_and | JSON Array | タグAND | 配列。複数のタグ間の関係はAND(積集合)です。 | tagとの区別に注意してください。一度に最大20個までです。 |
tag_not | JSON Array | タグNOT | 配列。複数のラベル間では、まず複数のラベルの結合集合を取り、その結果に対して補集合を取ります。 | 一度に最大20個までプッシュ可能です。 |
alias | JSON Array | エイリアス | 配列。複数のエイリアス間の関係はOR(和集合)です。 | エイリアスでユーザーを識別できます。 |
配列内の複数の値間の暗黙的な関係はOR(和集合)です。ただし、tag_andは異なり、配列内の複数の値間の関係はAND(積集合)です。
tag_notは単独で使用できません。他の5種類のうち少なくとも1つが必要です。値の配列の長さが0の場合、その型は存在しません。
これらの型は共存できます。共存時の複数の項目間の暗黙的な関係はAND(積集合)です。例:
"to" : {"tag" : [ "tag1", "tag2"], "tag_and" : ["tag3", "tag4"], "tag_not" : ["tag5", "tag6"] }
まず"tag"フィールドの結果を計算***tag1 or tag2 = A
***;
次に"tag_and"フィールドの結果を計算***tag3 and tag4 = B
***;
次に"tag_not"フィールドの結果を計算*** not (tag5 or tag6) = C
***;
"to"の最終結果は***A and B and C
*** です。
Sample Requests
- 全員にプッシュ(ブロードキャスト):
{
"to": "all",
}
- 複数の登録IDにプッシュ:
{
"to": {
"registration_id": [
"4312kjklfds2",
"8914afd2",
"45fdsa31"
]
}
}
body
リクエストの本体です。サポートされているフィールドは以下のとおりです:
Keyword | Type | Option | Description |
---|---|---|---|
platform | String または JSON Array | Required | プッシュプラットフォーム |
notification | JSON Object | Optional | |
message | JSON Object | Optional | |
options | JSON Object | Optional | プッシュオプション |
platform
MTPushは現在、Webプラットフォームのプッシュのみをサポートしているため、platformで指定するキーワードは"web"です。
{ "platform" : "web" }
notification
notificationオブジェクトは、プッシュされるエンティティコンテンツオブジェクトの1つ(もう1つはmessage)で、通知としてwebにプッシュされます。
Keyword | Type | Option | Meaning | Description |
---|---|---|---|---|
web | JSON Object | Required | プラットフォームプロパティ | プラットフォームのプッシュパラメータ。webを参照してください。 |
web
Webプラットフォームの通知です。
Keyword | Type | Option | Meaning | Description |
---|---|---|---|---|
alert | String または JSON Object | Required | 内容 | メッセージ内容自体で、ここで指定すると、上位で指定されたalert情報を上書きします。 |
url | String | Required | webプッシュURL | 通知クリック時のジャンプ先アドレス |
title | String | Optional | タイトル | メッセージのタイトル |
Extras | JSON Object | Optional | 拡張フィールド | ここでは、業務用途のためにJSON形式のKey/Value情報をカスタマイズできます。 |
icon | String | optional | 通知アイコン | 推奨サイズ192*192px(必須の制限なし)。サイズ上限1M、形式はJPG、PNG、GIFに限定。Chrome、Firefoxをサポート(SafariとEdgeシステムはデフォルトでカスタマイズ不可)。 |
image | String | Optional | 通知の大きな画像 | 推奨サイズ360*180px(必須の制限なし)。サイズ上限1M、形式はJPG、PNG、GIFに限定。Chrome、Edgeをサポート(FirefoxとSafariはサポートしない)。 |
{
"notification": {
"web": {
"alert": "hello, Push!",
"title": "Push Test",
"url":"http://www.google.com",
"icon":"",
"image":"",
"extras": {
"news_id": 134,
"my_key": "a value"
}
}
}
}
message
インアプリメッセージまたはカスタムメッセージです。この部分の内容はブラウザに表示されません。SDKがメッセージを受信后、Webに伝送し、Web側で業務ロジックを処理します。
メッセージには以下のフィールドが含まれます:
Keyword | Type | Option | Description |
---|---|---|---|
msg_content | String または JSON Object | Required | メッセージ内容 |
title | String | Optional | メッセージのタイトル |
content_type | String | Optional | メッセージのコンテンツタイプ |
Extras | JSON Object | Optional | JSON形式のオプションパラメータ |
例:
{
"message": {
"msg_content": "Hi,Push",
"content_type": "text",
"title": "msg",
"extras": {
"key": "value"
}
}
}
options
プッシュオプションです。以下のオプションが利用可能です:
Keyword | Type | Option | Meaning | Description |
---|---|---|---|---|
time_to_live | Int または String | Optional | オフラインメッセージ保持期間(秒) | |
override_msg_id | Long | Optional | 上書きするメッセージのID | 現在のプッシュが以前のプッシュを上書きする場合、以前のプッシュのmsg_idにより上書き効果が発生します。すなわち: |
big_push_duration | Int | Optional | 定速プッシュ期間(分) | |
multi_language | json object | Optional | 多言語プッシュ設定 | プッシュコンテンツの多言語対応設定。詳細はmulti_languageを参照してください。 |
third_party_channel | JSON Object | Optional | Webシステムチャネルの設定情報 | システムチャネルを設定したユーザーのみ有効なパラメータ。third_party_channelを参照してください。 |
plan_id | String | Optional | プッシュ計画識別子 | 事前に計画識別値を作成する必要があります。コンソールまたはAPIで作成できます。 |
cid | String | Optional | プッシュリクエスト識別子(重複プッシュ防止用) | 文字、数字、アンダースコア、マイナス記号のみを許可し、長さは64文字を超えません。同じAppKeyの下でこのフィールドは一意である必要があることに注意してください。 |
multi_language
このフィールドはEngageLabプッシュサービスの多言語プッシュ機能です。異なる言語のユーザーにカスタマイズされた通知コンテンツをプッシュできます。プッシュリクエストで複数の言語とそれに対応するメッセージ内容、タイトルを指定することで、ユーザーの言語設定に応じて適切なプッシュ通知を送信できます。
Request Parameters
Keyword | Type | Option | Meaning | Description |
---|---|---|---|---|
en | string | Optional | 多言語キー | ユーザーの言語に対応します。キーコードは付録を参照してください。 |
content | string | Optional | メッセージ内容 | ユーザーの言語に基づいて、notification.web.alert、message.msg_contentのデータを置き換えます。 |
title | string | Optional | メッセージタイトル | ユーザーの言語に基づいて、notification.web.title、message.titleのデータを置き換えます。 |
Request Example
HTTP request method: Post
Request URL: /v4/push
POST data format: json
POST data example:
{
"options": {
"multi_language": {
"en": {
"content": "",
"title": "",
}
}
}
}
Response Example
成功時:
{
}
失敗時:
{
"code":400,
"data":"",
"message":"エラー情報"
}
third_party_channel
このフィールドはWebシステムチャネルの個別情報を入力するためのものです。キー名はw3pushで、値はJsonオブジェクトです。このオブジェクトには、String型のdistributionフィールド(オプション)のみが含まれます。
Keyword | Type | Option | Meaning | Description |
---|---|---|---|---|
distribution | Required | String | Engagelabとシステムチャネルが共存する場合の配信優先度設定。 | 値は空文字列にできません。 |
Example:
{
"third_party_channel":{
"w3push":{
"distribution":"mtpush"
}
}
}
request_id
リクエストのIDです。顧客がリクエストを識別し、レスポンスを返します。
Sample Requests
{
"request_id":"12345678"
}
custom_args
ユーザー定義のオプションフィールドです。レスポンス時には返されませんが、コールバック時に返されます。
{
"custom_args":"business info"
}
Response parameters
Success Response
field | type | option | description |
---|---|---|---|
request_id | String | Optional | リクエスト時に送信されたカスタムIDで、レスポンス時にそのまま返されます。 |
message_id | String | Required | メッセージを一意に識別するメッセージID。 |
< HTTP/1.1 200 OK
< Content-Type: application/json
{"request_id": "18", "msg_id": "1828256757"}
Failure response
HTTPステータスコードは4xxまたは5xxで、レスポンスボディには以下のフィールドが含まれます。
Field | Type | Option | Description |
---|---|---|---|
code | int | required | エラーコード。詳細はreturn-code の説明を参照してください。 |
message | String | required | エラー詳細 |
{
"code": 3002,
"message": "Push.template field must be set correctly when type is template"
}
Response
HTTP status code
Return code
Code | Description | Detailed explanation | HTTP status code |
---|---|---|---|
20101 | プッシュパラメータが無効です。 | registration_idが無効であるか、現在のappkeyに属していません。 | 400 |
21001 | HTTP Postメソッドのみをサポートしています。 | Getメソッドはサポートしていません。 | 405 |
21002 | 必須パラメータが不足しています。 | 修正が必要です。 | 400 |
21003 | パラメータ値が無効です。 | 修正が必要です。 | 400 |
21004 | 認証に失敗しました。 | 修正が必要です。詳細は呼び出し認証を参照してください。 | 401 |
21005 | メッセージ本体が大きすぎます。 | 修正が必要です。Notificationの長さは2048バイトに制限されています。 | 400 |
21008 | app_keyパラメータが無効です。 | 修正が必要です。渡したappkeyがアプリケーション情報のものと一致するか、余分なスペースがないかを慎重に確認してください。 | 400 |
21009 | 内部システムエラー | 修正が必要です。 | 400 |
21011 | 条件に一致するプッシュ対象がありません。 | 確認してください。 | 400 |
21015 | リクエストパラメータの検証に失敗しました。 | 予期しないパラメータが存在します。 | 400 |
21016 | リクエストパラメータの検証に失敗しました。 | パラメータの型が正しくないか、パラメータの長さが制限を超えています。 | 400 |
21030 | 内部サービスタイムアウト | 後で再試行してください。 | 503 |
23006 | パラメータエラー | big_push_durationの最大値は1440です。 | 400 |
23008 | インターフェース速度制限 | 単一アプリケーションのプッシュインターフェースのQPSが上限(500 QPS)に達しています。 | 400 |
27000 | システムメモリエラー | 再試行してください。 | 500 |
27001 | パラメータエラー | 認証情報が空です。 | 401 |
27008 | パラメータエラー | third_party_channelのdistributionが空ではないのに、notificationのalert内容が空です。 | 401 |
27009 | パラメータエラー | third_party_channelのdistributionの形式が無効または空です。 | 401 |
Push Restrictions
Channel | Subject length | Content length | Other instructions |
---|---|---|---|
Engagelab | 制限なし(メッセージ本体の総サイズに制限あり) | 制限なし(メッセージ本体の総サイズに制限あり) | Notification MTPushの長さは4000バイトに制限されています。 |
システムチャネル | <20文字(英字40文字) | なし |
Multi-language code
Language | Language Code |
---|---|
English | en |
Arabic | ar |
Chinese (Simplified) | zh-Hans |
Chinese (Traditional) | zh-Hant |
Czech | cs |
Danish | da |
Dutch | nl |
French | fr |
German | de |
Hindi | hi |
Italian | it |
Japanese | ja |
Korean | ko |
Malay | ms |
Russian | ru |
Spanish | es |
Thai | th |
Vietnamese | vi |
Indonesian | id |
Norwegian | no |
Swedish | sv |
Polish | pl |
Turkish | tr |
Hebrew | he |
Portuguese | pt |
Romanian | ro |
Hungarian | hu |
Finnish | fi |
Greek | el |