Chat App Message Service envía los reportes de estado de recepción de mensajes a una URL HTTP que usted especifique. Implemente un endpoint en esta URL para recibir los reportes y devolver una respuesta en menos de 3 segundos.
Protocolo
|
Elemento |
Descripción |
|
Protocolo |
HTTP + JSON |
|
Codificación |
UTF-8 |
Requisitos previos
Debe contar con una cuenta de Alibaba Cloud y un par de AccessKey. Para obtener más información, consulte Create an AccessKey.
Revise la overview and configuration of message receipts y comprenda sus modos, tipos y proceso de configuración. Después, configure las confirmaciones de recepción de mensajes según corresponda.
Para conocer el procedimiento de configuración de mensajes MO, consulte Message receipts and configuration.
Formato de solicitud
Un solo envío puede contener varios reportes de estado.
Ejemplo de solicitud cuando MsgFrameType es 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"
}
]
Ejemplo de solicitud cuando MsgFrameType es 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"
}
]
A continuación se describen los campos.
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
MessageId |
String |
Sí |
Identificador único del mensaje. |
|
From |
String |
Sí |
Número de teléfono del remitente. |
|
To |
String |
Sí |
Número de teléfono del destinatario. |
|
FromUserId |
String |
No |
BSUID |
|
FromParentUserId |
String |
No |
BSUID principal (si existe) |
|
FromUserName |
String |
No |
Cuenta de usuario (si existe) |
|
Timestamp |
Long |
Sí |
Marca de tiempo Unix en milisegundos que indica cuándo se envió el mensaje. |
|
Status |
String |
Sí |
Estado de entrega del mensaje. Valores válidos:
|
|
StatusDescription |
String |
Sí |
Descripción del estado. |
|
ErrorCode |
String |
No |
Código de error por fallo de entrega. |
|
ErrorDescription |
String |
No |
Descripción del código de error. Para más detalles, consulte API error codes. |
|
ConversationType |
String |
No |
Tipo de conversación. Valores válidos:
|
|
ConversationId |
String |
No |
Identificador único de la conversación. |
|
ConversationExpirationTime (obsoleto) |
Long |
No |
Hora de expiración de la conversación. Nota
Obsoleto. No tiene efecto bajo el modelo de facturación por mensaje. |
|
MsgFrameType |
String |
Sí |
Tipo de mensaje. Valores válidos:
|
|
Type |
String |
No |
Tipo de medio del contenido del mensaje. Valores válidos:
|
|
TaskId |
String |
No |
ID de tarea personalizado. Nota
Toma el valor predeterminado de |
|
OriginPhoneNumber |
String |
No |
Número de teléfono original del remitente. |
|
TemplateCode |
String |
No |
Código de la plantilla de mensaje. Nota
Disponible únicamente cuando |
Formato de respuesta
Una vez que reciba un reporte de estado, su endpoint debe cumplir con los siguientes requisitos:
Responda en un máximo de 3 segundos.
Devuelva el código de estado HTTP 200.
Devuelva el cuerpo de la respuesta con el formato que se muestra a continuación.
Si la respuesta no cumple estos requisitos, el envío falla y el servicio lo reintenta. Para más detalles, consulte Retry policy.
Ejemplo de respuesta
{
"code": 0,
"msg": "Success"
}
Descripción de los campos
|
Nombre |
Tipo |
Obligatorio |
Descripción |
|
code |
Number |
Sí |
Código de respuesta. |
|
msg |
String |
No |
Descripción. |
Política de reintentos
El envío falla si su endpoint no responde en 3 segundos, no devuelve el código de estado HTTP 200 o no regresa el cuerpo de la respuesta en el formato requerido. El servicio vuelve a enviar el reporte de estado después de 1 minuto y luego tras 5 minutos. En total, el servicio hace hasta tres intentos de envío: el inicial y dos reintentos. Si los tres fallan, el servicio deja de reintentar.