Integre a Mais Chat com sistemas externos via webhook de protocolos.
Um webhook é uma forma de integração entre sistemas que permite que eventos ocorridos em um aplicativo acionem a execução de código em outro sistema. Na Mais Chat, o webhook é utilizado para o envio de dados de protocolos após o encerramento do mesmo. Este documento visa explicar o funcionamento desse processo de integração.
O webhook da Mais Chat é utilizado para enviar dados de protocolos para uma ferramenta de destino definida na configuração. Ele opera transmitindo essas informações no formato JSON para uma URL fornecida pelo usuário.
Seu principal objetivo é integrar a Mais Chat com outras plataformas que possuam uma URL de entrada capaz de receber e processar dados no formato JSON.
Para utilizar o webhook na Mais Chat, é necessário possuir:
A seguir, são apresentados os possíveis campos que podem estar presentes no corpo de uma requisição enviada pelo webhook da Mais Chat. Esses campos contêm informações detalhadas sobre o protocolo.
| Nome | Tipo | Descrição |
| event | {{String}} | Evento acionador do gatilho,podendo ser de um dos tipos abaixo: • newProtocol - Acionado na criação de um protocolo • queueProtocol - Acionado no momento em que o protocolo é enviado para a fila • closedProtocol - Acionado no momento em que o protocolo é encerrado |
| entry | {{Object}} | Objeto que armazena os dados do protocolo |
| timestamp | {{Number}} | Data e hora de criação de protocolo em formato numérico |
| Nome | Tipo | Descrição |
| _id | {{String}} | Identificador único do protocolo |
| channel | {{String}} | Tipo de canal, podendo ser wppCloudAPI, gupshup, messenger, instagram ou web |
| channelNumber | {{String}} | Número do canal de saída ou identificador único do canal. Para Messenger, Instagram ou WebChat, este campo representa o identificador único do canal. |
| chatId | {{String}} | Identificador do chat. No WhatsApp, é o número do contato. No Messenger ou Instagram, é o identificador único do usuário. |
| protocol_number | {{String}} | Número do protocolo. |
| attendant | {{Object}} | Dados do atendente do protocolo. • _id (String) - Identificador único do atendente • name (String) - Nome do atendente |
| contact | {{Object}} | Dados do contato. • _id (String) - Identificador único do contato • name (String) - Nome do contato • whatsappId (String) - Número de celular do contato |
| human | {{Boolean}} | Indica se o atendimento foi humano ou não |
| receptive | {{Boolean}} | Indica se o atendimento foi receptivo, ou seja, iniciado pelo contato |
| tags | {{Array}} | Array de objetos de tag. • _id (String) - Identificador único da tag • tag (String) - Nome da TAG |
| queue | {{Object}} | Objeto que representa a fila de atendimento. • _id (String) - Identificador único da fila • name (String) - Nome da fila • description (String) - Descrição da fila |
| state_protocol | {{String}} | Status do protocolo. "closed" para protocolos fechados e "open" para protocolos abertos |
| countMessages | {{Number}} | Quantidade de mensagens (Obs.: Apresentado somente se o evento for |
{
"event": "protocol",
"entry": {
"_id": "6629233244d614065443aebc",
"channel": "wppCloudAPI",
"channelNumber": "5548999999999",
"chatId": "5511988887777",
"protocol_number": "17139720182617250",
"attendant": {
"_id": "6491f71f73073f4015c144fd",
"name": "Usuário Exemplo"
},
"contact": {
"_id": "64c26be43739e760c08655d6",
"name": "Contato Exemplo",
"whatsappId": "5511988887777"
},
"human": true,
"receptive": true,
"tags": [],
"queue": {
"_id": "606316dcdbcf5f23780f69e3",
"name": "Fila Suporte",
"description": "Fila do setor de suporte técnico"
},
"state_protocol": "closed",
"countMessages": 11,
"messages": [
{
"id": "6629233444d614065443aec6",
"ack": null,
"ackLog": [],
"hasQuotedMsg": false,
"human": false,
"template": false,
"wppId": "wamid.HBgNNTUxMTk1MzU1MzIwNxUCABIYIDk1Nzg2NTNEODZBQjY0ODhGRDVFRkU1Qjk5NkYyNTMyAA==",
"direction": "incoming",
"message_type": "text",
"createdAt": "2024-04-24T15:20:20.235Z",
"message": "Oi"
},
{
"id": "66292338f6cbb506530a20df",
"ack": "3",
"ackLog": [
{
"ack": "0",
"createdAt": "2024-04-24T15:20:25.220Z"
},
{
"ack": "1",
"createdAt": "2024-04-24T15:20:27.363Z"
},
{
"ack": "2",
"createdAt": "2024-04-24T15:20:28.681Z"
},
{
"ack": "3",
"createdAt": "2024-04-24T15:20:29.198Z"
}
],
"hasQuotedMsg": false,
"human": false,
"template": false,
"wppId": "wamid.HBgNNTUxMTk1MzU1MzIwNxUCABEYEjY3RDkxOTA0RkY5QUMyQUU1QwA=",
"direction": "outgoing",
"message_type": "text",
"createdAt": "2024-04-24T15:20:24.192Z",
"message": "Escolha uma opção\n1 - Fila \n2 - Suporte\n3 - Teste\n"
},
{
"id": "6629233e44d614065443aed0",
"ack": null,
"ackLog": [],
"hasQuotedMsg": false,
"human": false,
"template": false,
"wppId": "wamid.HBgNNTUxMTk1MzU1MzIwNxUCABIYIDIyM0FGMUZBQTE4NzhCRDE0NEJFRUY0RjE3MEIwOEI3AA==",
"direction": "incoming",
"message_type": "text",
"createdAt": "2024-04-24T15:20:30.988Z",
"message": "2"
},
{
"id": "662923dbd937c44714d14a6e",
"ack": "0",
"ackLog": [],
"hasQuotedMsg": false,
"human": true,
"template": false,
"wppId": null,
"direction": "outgoing",
"message_type": "note",
"createdAt": "2024-04-24T15:23:07.571Z",
"message": "Protocolo assumido pelo agente Usuário Padrão."
},
{
"id": "662923dc44d614065443aed3",
"ack": "3",
"ackLog": [
{
"ack": "0",
"createdAt": "2024-04-24T15:23:09.057Z"
},
{
"ack": "1",
"createdAt": "2024-04-24T15:23:10.195Z"
},
{
"ack": "2",
"createdAt": "2024-04-24T15:23:11.362Z"
},
{
"ack": "2",
"createdAt": "2024-04-24T15:23:11.742Z"
},
{
"ack": "3",
"createdAt": "2024-04-24T15:24:16.178Z"
}
],
"hasQuotedMsg": false,
"human": true,
"template": false,
"wppId": "wamid.HBgNNTUxMTk1MzU1MzIwNxUCABEYEkQ0MENENzVGNzczNUMzNDhEMAA=",
"direction": "outgoing",
"message_type": "text",
"createdAt": "2024-04-24T15:23:08.503Z",
"message": "Boa tarde, seja bem vindo! Seu protocolo de atendimento é 17139720182617249. O meu nome é Usuário, em que posso ajudá-lo?"
},
{
"id": "6629241ef6cbb506530a20ea",
"ack": "3",
"ackLog": [
{
"ack": "0",
"createdAt": "2024-04-24T15:24:15.160Z"
},
{
"ack": "1",
"createdAt": "2024-04-24T15:24:17.351Z"
},
{
"ack": "2",
"createdAt": "2024-04-24T15:24:17.373Z"
},
{
"ack": "3",
"createdAt": "2024-04-24T15:24:18.387Z"
}
],
"hasQuotedMsg": false,
"human": true,
"template": false,
"wppId": "wamid.HBgNNTUxMTk1MzU1MzIwNxUCABEYEjg4MDRGRTE4RDIyNjhBNDk2OAA=",
"direction": "outgoing",
"message_type": "file",
"createdAt": "2024-04-24T15:24:14.361Z",
"message": "placa_atencao_com_novo_nome.png",
"fileData": "Arquivo disponível somente pelo painel Mais Chat"
},
{
"id": "6629242a44d614065443aee6",
"ack": null,
"ackLog": [],
"hasQuotedMsg": false,
"human": true,
"template": false,
"wppId": "wamid.HBgNNTUxMTk1MzU1MzIwNxUCABIYIDE0QkY5N0VDMjc1MEJBMDZEMzA3RjhBMUI2MEQxNDFEAA==",
"direction": "incoming",
"message_type": "file",
"createdAt": "2024-04-24T15:24:26.235Z",
"message": "",
"fileData": "Arquivo disponível somente pelo painel Mais Chat"
},
{
"id": "6629243044d614065443aeea",
"ack": null,
"ackLog": [],
"hasQuotedMsg": false,
"human": true,
"template": false,
"wppId": "wamid.HBgNNTUxMTk1MzU1MzIwNxUCABIYIEEzNjBFQTlBQkMxQThDQkVEMDY2N0YzQTE2NUY3MUJDAA==",
"direction": "incoming",
"message_type": "file",
"createdAt": "2024-04-24T15:24:32.799Z",
"message": "U2FsdGVkX1/OUoT18NVGFFYLN68QgCh67Zz6h2wB3DkifSv0fbsTyBQg2jR//8I+L16V7H+k0sfEos3ElkSDLt0HAYoocWXrjnGhnelH6pS5QQFo6txqlP5ZuJfnwBnTxG/WnWtlZod2S6hScsG0embi5dAZnA9+p/sY40EvCoY=",
"fileData": "Arquivo disponível somente pelo painel Mais Chat"
},
{
"id": "6629243f44d614065443aeec",
"ack": "-2",
"ackLog": [],
"hasQuotedMsg": false,
"human": true,
"template": false,
"wppId": null,
"direction": "outgoing",
"message_type": "note",
"createdAt": "2024-04-24T15:24:47.044Z",
"message": "Nota:
Nota de teste"
},
{
"id": "662924511d89144707f5d6bf",
"ack": "0",
"ackLog": [],
"hasQuotedMsg": false,
"human": true,
"template": false,
"wppId": null,
"direction": "outgoing",
"message_type": "note",
"createdAt": "2024-04-24T15:25:05.507Z",
"message": "Protocolo encerrado pelo agente Usuário Padrão."
},
{
"id": "66292452f6cbb506530a20ef",
"ack": "0",
"ackLog": [
{
"ack": "0",
"createdAt": "2024-04-24T15:25:07.128Z"
}
],
"hasQuotedMsg": false,
"human": true,
"template": false,
"wppId": "wamid.HBgNNTUxMTk1MzU1MzIwNxUCABEYEjdGNjk0Qjk1RjQ4QTc5MDE0QQA=",
"direction": "outgoing",
"message_type": "text",
"createdAt": "2024-04-24T15:25:06.434Z",
"message": "Obrigado por ter entrado em contato conosco! \nEstamos encerrando esta conversa, mas se precisar de algo mais estaremos sempre à disposição.\nAté breve!"
}
],
"createdAt": "2024-04-24T15:20:18.529Z",
"humanDate": "2024-04-24T15:20:34.746Z",
"attendanceDate": "2024-04-24T15:23:06.457Z"
},
"timestamp": 1713972307685
}Procurando outra coisa?
Voltar para o início"closedProtocol"| messages | {{Array}} | Array de objetos de mensagem. (Obs.: Apresentado somente se o evento for "closedProtocol")
• id (String) - Identificador único da mensagem
• ack (String) - Status da mensagem
• ackLog (Array) - Histórico de ACKs
• hasQuotedMsg (Boolean) - Se a mensagem é resposta a outra
• human (Boolean) - Se foi enviada por atendente
• template (Boolean) - Se foi um template enviado
• wppId (String) - ID gerado pela META
• direction (String) - Direção da mensagem ("outgoing" ou "incoming")
• message_type (String) - Tipo ("TEXT", "AUDIO", "FILE" (Vídeo, Imagem, Documento), "NOTE" (Notas internas))
• message (String) - Conteúdo da mensagem |
| createdAt | {{String}} | Data e hora de criação do protocolo |
| humanDate | {{String}} | Data e hora de entrada na fila |
| attendanceDate | {{String}} | Data e hora em que o protocolo foi assumido |