O Chat App Message Service envia relatórios de status de recebimento de mensagens para uma URL HTTP especificada. Implemente um endpoint nessa URL para receber os relatórios e retornar uma resposta em até 3 segundos.
Protocolo
|
Item |
Descrição |
|
Protocolo |
HTTP + JSON |
|
Codificação |
UTF-8 |
Pré-requisitos
Tenha uma conta Alibaba Cloud e um par de AccessKey. Para mais informações, consulte Crie um AccessKey.
Revise a overview and configuration of message receipts e compreenda seus modos, tipos e processo de configuração. Em seguida, configure os recibos de mensagem adequadamente.
Para o procedimento de configuração de mensagens MO, consulte Message receipts and configuration.
Formato da solicitação
Um único envio pode conter vários relatórios de status.
Exemplo de solicitação quando 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"
}
]
Exemplo de solicitação quando 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"
}
]
Descrição dos campos
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
MessageId |
String |
Sim |
Identificador exclusivo da mensagem. |
|
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 de envio da mensagem, em milissegundos. |
|
Status |
String |
Sim |
Status de entrega da mensagem. Valores válidos:
|
|
StatusDescription |
String |
Sim |
Descrição do status. |
|
ErrorCode |
String |
Não |
Código de erro para falha na entrega. |
|
ErrorDescription |
String |
Não |
Descrição do código de erro. Para obter detalhes, consulte API error codes. |
|
ConversationType |
String |
Não |
Tipo de conversa. Valores válidos:
|
|
ConversationId |
String |
Não |
Identificador exclusivo da conversa. |
|
ConversationExpirationTime (obsoleto) |
Long |
Não |
Tempo de expiração da conversa. Nota
Obsoleto. Não tem efeito no modelo de faturamento por mensagem. |
|
MsgFrameType |
String |
Sim |
Tipo de mensagem. Valores válidos:
|
|
Type |
String |
Não |
Tipo de mídia do conteúdo da mensagem. Valores válidos:
|
|
TaskId |
String |
Não |
ID de tarefa personalizado. Nota
O padrão é |
|
OriginPhoneNumber |
String |
Não |
Número de telefone original do remetente. |
|
TemplateCode |
String |
Não |
Código do modelo de mensagem. Nota
Disponível apenas quando |
Formato da resposta
Ao receber um relatório de status, seu endpoint deve atender aos seguintes requisitos:
Responder em até 3 segundos.
Retornar o código de status HTTP 200.
Retornar o corpo da resposta no seguinte formato.
Se a resposta não atender a esses requisitos, o envio falhará e o service tentará novamente. Para obter detalhes, consulte Retry policy.
Exemplo de resposta
{
"code": 0,
"msg": "Success"
}
Descrição dos campos
|
Nome |
Tipo |
Obrigatório |
Descrição |
|
code |
Number |
Sim |
Código da resposta. |
|
msg |
String |
Não |
Descrição. |
Política de nova tentativa
Se o endpoint não responder em 3 segundos, não retornar o código de status HTTP 200 ou não devolver o corpo da resposta no formato exigido, o envio falhará. O service reenviará o relatório de status após 1 minuto e, posteriormente, após 5 minutos. No total, o service realiza até três tentativas de envio: a inicial e duas novas tentativas. Se todas as três tentativas falharem, o service interromperá as novas tentativas.