Especifique uma URL HTTP para receber mensagens Mobile Originated (MO).
Especificação do protocolo
|
Parâmetro |
Descrição |
|
Protocolo |
HTTP + JSON |
|
Codificação |
UTF-8 |
Pré-requisitos
Você possui uma conta Alibaba Cloud e um par de AccessKey. Para mais informações, consulte Create an AccessKey.
Você leu a overview and configuration of message receipts e compreende seus modos, tipos e o processo de configuração. Em seguida, configure as confirmações de recebimento de mensagens adequadamente.
Para configurar mensagens MO, consulte Message receipts and configuration.
Formato da requisição
Uma única requisição pode conter várias mensagens MO.
Exemplo de requisição quando Type é 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"
}
]
Exemplo de requisição com Type definido como 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",
}
]
Exemplo de requisição em que Type é 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"
}
]
Exemplo de requisição para Type igual a 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
}
]
Exemplo de requisição quando Type assume o valor 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"
}
]
Descrição dos campos
Parâmetro | Tipo | Obrigatório | Descrição |
MessageId | String | Sim | Identificador exclusivo da mensagem. |
CustSpaceId | String | Sim | ID do canal. |
WabaId | String | Sim | ID da WhatsApp Business Account (WABA). |
From | String | Sim | Número de telefone do remetente. |
To | String | Sim | Número de telefone do destinatário. |
FromUserId | String | Não | BSUID |
FromParentUserId | String | Não | BSUID pai (se houver) |
FromUserName | String | Não | Conta de usuário (se houver) |
Timestamp | Long | Sim | Timestamp Unix da mensagem, em milissegundos. |
DisplayName | String | Sim | Nome de exibição do remetente. |
Type | String | Sim | Tipo de mensagem. Valores válidos:
|
Message | String | Sim | Conteúdo da mensagem.
|
Name | String | Sim | Nome do usuário. |
Objeto LOCATION
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
address |
String |
Sim |
Informações do endereço. |
|
latitude |
String |
Sim |
Latitude. |
|
longitude |
String |
Sim |
Longitude. |
|
name |
String |
Sim |
Descrição da localização. |
Objeto VIDEO
Parâmetro | Tipo | Obrigatório | Descrição |
name | String | Sim | Descrição do arquivo de vídeo. |
id | String | Sim | ID do arquivo de vídeo. |
mimeType | String | Sim | Valor fixo: Nota Ignore este parâmetro se |
url | String | Sim | URL do arquivo de vídeo. Nota A URL é válida por 7 dias. |
Objeto IMAGE
Parâmetro | Tipo | Obrigatório | Descrição |
caption | String | Não | Descrição da imagem. |
id | String | Sim | ID da imagem. |
mimeType | String | Sim | Tipo MIME da imagem. |
url | String | Sim | URL da imagem. Nota A URL é válida por 7 dias. |
Objeto AUDIO
Parâmetro | Tipo | Obrigatório | Descrição |
name | String | Sim | Descrição do arquivo de áudio. |
id | String | Sim | ID do arquivo de áudio. |
mimeType | String | Sim | Valor fixo: Nota Ignore este parâmetro se |
url | String | Sim | URL do arquivo de áudio. Nota A URL é válida por 7 dias. |
Objeto DOCUMENT
Parâmetro | Tipo | Obrigatório | Descrição |
name | String | Sim | Descrição do documento. |
id | String | Sim | ID do documento. |
filename | String | Sim | Nome do arquivo do documento. |
mimeType | String | Sim | Valor fixo: |
url | String | Sim | URL do documento. Nota A URL é válida por 7 dias. |
Objeto REPLY
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
text |
String |
Sim |
Rótulo de texto do botão clicado. |
|
payload |
String |
Sim |
Payload retornado ao clicar no botão. Corresponde ao payload definido na mensagem enviada. |
Objeto SYSTEM
Parâmetro | Tipo | Obrigatório | Descrição |
body | String | Sim | Alteração na identidade ou no número de telefone do usuário. |
wa_id | String | Sim | Novo ID do WhatsApp do usuário após a alteração do número de telefone. |
type | String | Sim | Tipo de atualização do sistema. Valores válidos:
|
Objeto STICKER
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
filename |
String |
Sim |
Nome da mídia. |
|
animated |
String |
Sim |
Indica se o sticker é animado (true para animado, false para não animado). |
|
id |
String |
Sim |
ID da mídia. |
|
mimeType |
String |
Sim |
Tipo MIME da mídia. |
|
url |
String |
Sim |
URL da mídia. |
Objeto REVOKE
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
revokeMessageId |
String |
Sim |
ID da mensagem enviada anteriormente a ser revogada ou excluída. |
Resposta
Para confirmar o recebimento, seu endpoint deve retornar HTTP 200 em até 3 segundos. O corpo da resposta deve ser um objeto JSON no formato a seguir. Caso contrário, a plataforma repetirá a requisição.
Exemplo de resposta
{
"code": 0,
"msg": "Success"
}
Descrição dos campos
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
code |
Number |
Sim |
Código de resposta. |
|
msg |
String |
Não |
Mensagem descritiva. |
Política de novas tentativas
Se uma tentativa de push falhar (resposta diferente de 200 ou timeout), o service fará uma nova tentativa após 1 minuto e, em seguida, após 5 minutos. Após três falhas, as tentativas são interrompidas.