Especifique una URL HTTP para recibir mensajes Mobile Originated (MO).
Especificación del protocolo
|
Parámetro |
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 overview and configuration of message receipts y comprenda sus modos, tipos y proceso de configuración. A continuación, configure los acuses de recibo de mensajes según corresponda.
Para conocer el procedimiento de configuración de mensajes MO, consulte Message receipts and configuration.
Formato de solicitud
Una sola solicitud puede contener varios mensajes MO.
Ejemplo de solicitud cuando Type es TEXT
[
{
"MessageId": "1000000000000001",
"From": "861388888****",
"To": "86137888****",
"DisplayName": "Mr Liu",
"Type": "TEXT",
"Message": "hello,it's me",
"Timestamp": 1662104191973,
"Name": "jack"
},
{
"MessageId": "1000000000000002",
"From": "861388888****",
"To": "86139123****",
"DisplayName": "Mr Wang",
"Type": "TEXT",
"Message": "hello,it's me",
"Timestamp": 1662104191973,
"Name": "Jones"
}
]
Ejemplo de solicitud cuando Type es AUDIO
[
{
"MessageId": "1000000000000003",
"CustSpaceId": "cams-83m8j9xxxxadc",
"From": "+861388888****",
"DisplayName": "Mr Liu",
"NoticeType": "inbound",
"To": "+861378886****",
"Type": "AUDIO",
"Message":
"{
\"filename\":\"File.ogg\",
\"animated\":false,
\"id\":\"3214520xxxx75431\",
\"mimeType\":\"audio/ogg\",
\"url\":\"https://whatsapp-prod-oss-bucket.oss-ap-southeast-1.aliyuncs.com/1161931534xxxx19904.ogg\"
}",
"Timestamp ": 1662104191973,
"Name": "jack",
"WabaId": "95271863xxxx233",
},
{
"MessageId": "1000000000000004",
"CustSpaceId": "cams-83m8j9xxxxadc",
"From": "+861388888****",
"DisplayName": "Mr Wang",
"NoticeType": "inbound",
"To": "+861378886****",
"Type": "AUDIO",
"Message":
"{
\"filename\":\"File.ogg\",
\"animated\":false,
\"id\":\"3214520xxxx75431\",
\"mimeType\":\"audio/ogg\",
\"url\":\"https://whatsapp-prod-oss-bucket.oss-ap-southeast-1.aliyuncs.com/1161931534xxxx19904.ogg\"
}",
"Timestamp ": 1662104191973,
"Name": "John",
"WabaId": "95271863xxxx233",
}
]
Ejemplo de solicitud cuando Type es DOCUMENT
[
{
"MessageId": "1000000000000005",
"From": "+861388888****",
"DisplayName": "Mr Liu",
"NoticeType": "inbound",
"To": "+861378889****",
"Type": "DOCUMENT",
"Message":
"{
\"filename\":\"eventlog_20251211_155722_GMT.jsonl\",
\"animated\":false,
\"id\":\"275171383xxxx878\",
\"mimeType\":\"application/octet-stream\",
\"url\":\"https://bucket-chatapp-file-internal.oss-ap-southeast-1.aliyuncs.com/1161931xxxxx8375296.jsonl\"
}",
"Timestamp ": 1662104191973,
"Name": "jack",
"WabaId": "212506738xxxx650",
"CustSpaceId": "cams-85sglhxxxxkw"
},
{
"MessageId": "1000000000000006",
"From": "+861388888****",
"DisplayName": "Mr Liu",
"NoticeType": "inbound",
"To": "+861378882****",
"Type": "DOCUMENT",
"Message":
"{
\"filename\":\"eventlog_20251211_155722_GMT.jsonl\",
\"animated\":false,
\"id\":\"275171383xxxx878\",
\"mimeType\":\"application/octet-stream\",
\"url\":\"https://bucket-chatapp-file-internal.oss-ap-southeast-1.aliyuncs.com/1161931xxxxx8375296.jsonl\"
}",
"Timestamp ": 1662104191973,
"Name": "Jone",
"WabaId": "212506738xxxx650",
"CustSpaceId": "cams-85sglhxxxxkw"
}
]
Ejemplo de solicitud cuando Type es REPLY
[
{
"MessageId": "1000000000000007",
"From": "861388888****",
"DisplayName": "Mr Liu",
"To": "861378886****",
"Type": "REPLY",
"Message": "{ \"text\": \"click me\",\"payload\": \"1000000\" }" ,
"Timestamp ": 1662104191973
},
{
"MessageId": "1000000000000008",
"From": "861388888****",
"DisplayName": "Mr Wang",
"To": "861378883****",
"Type": "REPLY",
"Message": "{ \"text\": \"click me\",\"payload\": \"1000000\" }" ,
"Timestamp ": 1662104191973
}
]
Ejemplo de solicitud cuando Type es LOCATION
[
{
"MessageId": "1000000000000009",
"From": "861388888****",
"DisplayName":"Mr Liu",
"To": "861378868****",
"Type": "LOCATION",
"Message":
"{
\"address \": \"changsha yuelu street \",
\"latitude \": \"39.999137107913\",
\"longitude \": \"116.48074005043\",
\"name \": \"this is firest location message\"
}",
"Timestamp ": 1662104191973,
"Name": "jack"
},
{
"MessageId": "1000000000000010",
"From": "861388888****",
"DisplayName":"Mr Wang",
"To": "861378168****",
"Type": "LOCATION",
"Message":
"{
\"address \": \"changsha yuelu street \",
\"latitude \": \"39.999137107913\",
\"longitude \": \"116.48074005043\",
\"name \": \"this is firest location message\"
}",
"Timestamp ": 1662104191973,
"Name": "Jone"
}
]
Descripción de campos
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
MessageId |
String |
Sí |
Identificador único del mensaje. |
|
CustSpaceId |
String |
Sí |
ID del canal. |
|
WabaId |
String |
Sí |
ID de la cuenta de WhatsApp Business (WABA). |
|
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 del mensaje, en milisegundos. |
|
DisplayName |
String |
Sí |
Nombre para mostrar del remitente. |
|
Type |
String |
Sí |
Tipo de mensaje. Valores válidos:
|
|
Message |
Object |
Sí |
Contenido del mensaje.
|
|
Name |
String |
Sí |
Nombre de usuario. |
Objeto LOCATION
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
address |
String |
Sí |
Información de la dirección. |
|
latitude |
String |
Sí |
Latitud. |
|
longitude |
String |
Sí |
Longitud. |
|
name |
String |
Sí |
Descripción de la ubicación. |
Objeto VIDEO
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
name |
String |
Sí |
Descripción del archivo de video. |
|
id |
String |
Sí |
ID del archivo de video. |
|
mimeType |
String |
Sí |
Valor fijo: Nota
Este parámetro se puede ignorar si |
|
url |
String |
Sí |
URL del archivo de video. Nota
La URL tiene una validez de 7 días. |
Objeto IMAGE
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
caption |
String |
No |
Descripción de la imagen. |
|
id |
String |
Sí |
ID de la imagen. |
|
mimeType |
String |
Sí |
Tipo MIME de la imagen. |
|
url |
String |
Sí |
URL de la imagen. Nota
La URL tiene una validez de 7 días. |
Objeto AUDIO
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
name |
String |
Sí |
Descripción del archivo de audio. |
|
id |
String |
Sí |
ID del archivo de audio. |
|
mimeType |
String |
Sí |
Valor fijo: Nota
Este parámetro se puede ignorar si |
|
url |
String |
Sí |
URL del archivo de audio. Nota
La URL tiene una validez de 7 días. |
Objeto DOCUMENT
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
name |
String |
Sí |
Descripción del documento. |
|
id |
String |
Sí |
ID del documento. |
|
filename |
String |
Sí |
Nombre del archivo de documento. |
|
mimeType |
String |
Sí |
Valor fijo: |
|
url |
String |
Sí |
URL del documento. Nota
La URL tiene una validez de 7 días. |
Objeto REPLY
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
text |
String |
Sí |
Etiqueta de texto del botón en el que se hizo clic. |
|
payload |
String |
Sí |
Carga útil devuelta cuando el usuario hace clic en el botón. Coincide con la carga útil definida en el mensaje enviado. |
Objeto SYSTEM
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
body |
String |
Sí |
Cambio en la identidad o número de teléfono del usuario. |
|
wa_id |
String |
Sí |
Nuevo ID de WhatsApp del usuario tras un cambio de número telefónico. |
|
type |
String |
Sí |
Tipo de actualización del sistema. Valores válidos:
|
Respuesta
Para confirmar la recepción, su endpoint debe devolver HTTP 200 en un plazo de 3 segundos. El cuerpo de la respuesta debe ser un objeto JSON con el siguiente formato. De lo contrario, la plataforma reintentará la solicitud.
Ejemplo de respuesta
{
"code": 0,
"msg": "Success"
}
Descripción de campos
|
Campo |
Tipo |
Obligatorio |
Descripción |
|
code |
Number |
Sí |
Código de respuesta. |
|
msg |
String |
No |
Mensaje descriptivo. |
Directiva de reintentos
Si un intento de envío falla (respuesta distinta a 200 o tiempo de espera agotado), el servicio reintenta después de 1 minuto y nuevamente después de 5 minutos. Tras tres intentos fallidos, se detienen los reintentos.