Chat App Message Service は、お客様が指定した HTTP URL にメッセージ受信ステータスレポートをプッシュします。この URL にエンドポイントを実装してレポートを受信し、3 秒以内にレスポンスを返す必要があります。
プロトコル
項目 | 説明 |
プロトコル | HTTP + JSON |
エンコーディング | UTF-8 |
前提条件
AccessKey ペアを持つ Alibaba Cloud アカウント。 詳細については、「AccessKey ペアの作成」をご参照ください。
メッセージ受信の概要と構成を確認し、そのモード、タイプ、および構成プロセスを理解してください。
モバイル着信メッセージのステータスレポートを構成する方法については、「ステータスレポートとモバイル発信メッセージの構成」をご参照ください。
リクエストフォーマット
1 回のプッシュに複数のステータスレポートが含まれる場合があります。
MsgFrameType が template の場合のリクエスト例:
[
{
"Status":"Failed",
"ErrorDescription":"131026:Receiver is incapable of receiving this message(Message Undeliverable.)",
"MsgFrameType":"template",
"TaskId":"202307030171*******9",
"From":"86131*******8",
"Timestamp":1691043638000,
"OriginPhoneNumber":"86130*******8",
"TemplateCode":"820561547132813184",
"Type":"TEMPLATE",
"Language":"id",
"TemplateName":"wa_otp_v_0_0_3",
"To":"86138*******8",
"ErrorCode":"131026",
"MessageId":"2023078469463703*******3"
},
{
"Status":"Failed",
"ErrorDescription":"131026:Receiver is incapable of receiving this message(Message Undeliverable.)",
"MsgFrameType":"template",
"TaskId":"202307030171*******9",
"From":"86131*******8",
"Timestamp":1691043638000,
"OriginPhoneNumber":"86130*******8",
"TemplateCode":"820561547132813184",
"Type":"TEMPLATE",
"Language":"id",
"TemplateName":"wa_otp_v_0_0_3",
"To":"86137*******8",
"ErrorCode":"131026",
"MessageId":"2023078469463703*******3"
}
]MsgFrameType が message の場合のリクエスト例:
[
{
"Status":"Read",
"MsgFrameType":"message",
"Type":"INTERACTIVE",
"TaskId":"2023068473353098*******8",
"From":"86131*******8",
"To":"86138*******8",
"Timestamp":1691132091000,
"OriginPhoneNumber":"86131*******8",
"MessageId":"2023038470553398*******8",
"ConversationId":"72222201111****",
"ConversationType": "service"
},
{
"Status":"Read",
"MsgFrameType":"message",
"Type":"INTERACTIVE",
"TaskId":"2023068473353098*******8",
"From":"86131*******8",
"To":"86138*******1",
"Timestamp":1691132091000,
"OriginPhoneNumber":"86131*******8",
"MessageId":"2023038470553398*******8",
"ConversationId":"72222201111****",
"ConversationType": "service"
}
]フィールドの説明
名前 | タイプ | 必須 | 説明 |
MessageId | String | はい | メッセージ ID。 |
From | String | はい | 送信者番号。 |
To | String | はい | 受信者番号。 |
UserId | String | いいえ | BSUID |
ParentUserId | String | いいえ | 親 BSUID (存在する場合)。 |
UserName | String | いいえ | ユーザーアカウント (存在する場合)。 |
Timestamp | Long | はい | UNIX タイムスタンプ (ミリ秒単位)。 |
Status | String | はい | メッセージの送信ステータス。 有効値:
|
StatusDescription | String | はい | 状態コードの説明。 |
ErrorCode | String | いいえ | エラーコード。 |
ErrorDescription | String | いいえ | エラーコードの説明。 詳細については、「API エラーコード」をご参照ください。 |
ConversationType | String | いいえ | 会話タイプ。 有効値:
|
ConversationId | String | いいえ | 会話の ID。 |
ConversionExpirationTime (Deprecated) | Long | いいえ | 会話の有効期限が切れる時間。 説明 このパラメーターは、新しいメッセージごとの課金ルールでは無効です。 |
MsgFrameType | String | はい | メッセージタイプ。 有効値:
|
Type | String | いいえ | メッセージ本文のメディアリソースタイプ。 有効値:
|
TaskId | String | いいえ | 顧客タスクの ID。 デフォルト値は MessageId です。 説明 TaskId が指定されていない場合、デフォルトで MessageId の値が使用されます。 |
OriginPhoneNumber | String | いいえ | 送信者の実際の電話番号。 |
TemplateCode | String | いいえ | メッセージテンプレートのコード。 説明 このパラメーターは、MsgFrameType が template に設定されている場合にのみ使用できます。 |
レスポンスフォーマット
ステータスレポートを受信した後、エンドポイントは次の要件を満たす必要があります:
3 秒 以内に応答すること。
HTTP ステータスコード 200 を返すこと。
次のフォーマットでレスポンスボディを返すこと。
レスポンスがこれらの要件を満たさない場合、プッシュは失敗し、サービスは再試行します。詳細については、「再試行ポリシー」をご参照ください。
レスポンス例
{
"code": 0,
"msg": "Success"
}フィールドの説明
名前 | タイプ | 必須 | 説明 |
code | Number | はい | レスポンスコード。 |
msg | String | いいえ | 説明。 |
再試行ポリシー
エンドポイントが 3 秒以内に応答しない場合、HTTP ステータスコード 200 を返さない場合、または必要なフォーマットでレスポンスボディを返さない場合、プッシュは失敗します。サービスは 1 分後、さらに 5 分後にステータスレポートを再度プッシュします。合計で、サービスは最大 3 回のプッシュ試行 (最初のプッシュと 2 回の再試行) を行います。3 回すべての試行が失敗した場合、サービスは再試行を停止します。