Modelo webhook canal
📡 Webhooks - Dados Enviados pelo WHAZING
O WHAZING enviará requisições POST
automaticamente toda vez que uma nova mensagem for recebida ou enviada.
Cada tipo de evento enviará uma estrutura JSON específica. Se desejar sugerir o envio de novas informações, abra uma issue no repositório!
🆕 Evento: Novo Ticket Criado pelo Usuário
Enviado quando um usuário cria um novo ticket.
const dataToSend = {
Type: "NewTicketUserCreate",
messageBody: "",
ticket: {
id: ticket.id,
status: ticket.status,
protocol: ticket.protocol,
queueId: ticket.queueId,
userId: ticket.userId,
apiConfig: ticket.apiConfig,
},
contact: ticket.contact ? {
id: ticket.contact.id,
name: ticket.contact.name,
phoneNumber: ticket.contact.number,
profilePicUrl: ticket.contact.profilePicUrl,
email: ticket.contact.email,
isGroup: ticket.contact.isGroup,
pushname: ticket.contact.pushname,
lid: contact.lid,
kanbanId: contact.kanbanId,
followupId: contact.followupId
} : null,
whatsapp: {
id: whatsapp.id,
name: whatsapp.name,
},
};
🆕 Evento: Novo Ticket
Enviado quando um novo ticket é aberto.
const dataToSend = {
Type: "NewTicket",
messageBody: mensagem,
ticket: {
id: ticket.id,
status: ticket.status,
protocol: ticket.protocol,
queueId: ticket.queueId,
userId: ticket.userId,
apiConfig: ticket.apiConfig,
},
contact: contact ? {
id: contact.id,
name: contact.name,
phoneNumber: contact.number,
profilePicUrl: contact.profilePicUrl,
email: contact.email,
isGroup: contact.isGroup,
pushname: contact.pushname,
lid: contact.lid,
kanbanId: contact.kanbanId,
followupId: contact.followupId
} : null,
whatsapp: {
id: whatsapp.id,
name: whatsapp.name,
},
};
🔀 Evento: Ticket Transferido
Enviado quando um ticket é transferido para outro setor ou usuário.
const dataToSend = {
Type: "TransferTicket",
messageBody: mensagem,
ticket: {
id: ticket.id,
status: ticket.status,
protocol: ticket.protocol,
queueId: ticket.queueId,
userId: ticket.userId,
apiConfig: ticket.apiConfig,
},
contact: contact ? {
id: contact.id,
name: contact.name,
phoneNumber: contact.number,
profilePicUrl: contact.profilePicUrl,
email: contact.email,
isGroup: contact.isGroup,
pushname: contact.pushname,
lid: contact.lid,
kanbanId: contact.kanbanId,
followupId: contact.followupId
} : null,
whatsapp: {
id: whatsapp.id,
name: whatsapp.name,
},
};
✅ Evento: Ticket Fechado
Enviado quando um ticket é finalizado/encerrado.
const dataToSend = {
Type: "ClosedTicket",
messageBody: mensagem,
ticket: {
id: ticket.id,
status: ticket.status,
protocol: ticket.protocol,
queueId: ticket.queueId,
userId: ticket.userId,
apiConfig: ticket.apiConfig,
closingReasonId: ticket.closingReasonId
},
contact: contact ? {
id: contact.id,
name: contact.name,
phoneNumber: contact.number,
profilePicUrl: contact.profilePicUrl,
email: contact.email,
isGroup: contact.isGroup,
pushname: contact.pushname,
lid: contact.lid,
kanbanId: contact.kanbanId,
followupId: contact.followupId
} : null,
whatsapp: {
id: whatsapp.id,
name: whatsapp.name,
},
};
💬 Evento: Mensagem Recebida ou Enviada
Enviado a cada nova mensagem (enviada ou recebida).
const dataToSend = {
messageId: message.messageId,
messageBody: message.body,
timestamp: message.timestamp,
status: message.status,
fromMe: message.fromMe,
mediaType: message.mediaType,
mediaUrl: message.mediaUrl,
isDeleted: message.isDeleted,
sendType: message.sendType,
edited: message.edited,
reactions: message.reactions,
ticket: {
id: ticket.id,
status: ticket.status,
protocol: ticket.protocol,
queueId: ticket.queueId,
apiConfig: ticket.apiConfig,
},
contact: contact ? {
id: contact.id,
name: contact.name,
phoneNumber: contact.number,
profilePicUrl: contact.profilePicUrl,
email: contact.email,
isGroup: contact.isGroup,
pushname: contact.pushname,
lid: contact.lid,
kanbanId: contact.kanbanId,
followupId: contact.followupId
} : null,
user: user ? {
id: user.id,
name: user.name,
email: user.email,
} : null,
whatsapp: {
id: whatsapp.id,
name: whatsapp.name,
},
};
🔑 Sobre o Campo apiConfig
apiConfig
O campo
apiConfig
é preenchido quando você configura a opçãoexternalKey
no ticket.Ele permite associar uma ID única do seu sistema para facilitar a automação via Webhooks.
Exemplo:
{
"externalKey": "ID_UNICA_DO_SISTEMA_CLIENTE_PARA_EXECUTAR_UMA_ACAO_COM_WEBHOOK"
}
🛠️ Observações
Todos os dados são enviados no formato
application/json
.Recomendamos que o seu sistema esteja preparado para tratar os diferentes tipos de
Type
que serão recebidos.Novos tipos de eventos podem ser adicionados no futuro. Acompanhe o repositório para atualizações!
Feito para tornar seu sistema ainda mais integrado com o WHAZING! 🚀
Atualizado