Webhooks são callbacks HTTP configurados para cada conta, disparados quando ações como criação de mensagens ocorrem no Chatwoot. É possível configurar múltiplos webhooks para uma única conta.
Como adicionar um webhook?
Passo 1: Vá para Configurações → Integrações → Webhooks e clique no botão "Configurar".
Passo 2: Clique no botão "Adicionar novo webhook". Uma janela modal será aberta, onde você deve inserir a URL para a qual a requisição POST será enviada. Depois, selecione os eventos que deseja assinar, para que apenas eventos relevantes no Chatwoot sejam notificados.
O Chatwoot enviará uma requisição POST com o seguinte payload para as URLs configuradas, quando ocorrerem atualizações em sua conta.
Exemplo de payload de webhook:
{
"event": "message_created", // Nome do evento
"id": "1", // ID da mensagem
"content": "Oi", // Conteúdo da mensagem
"created_at": "2020-03-03 13:05:57 UTC", // Data e hora em que a mensagem foi enviada
"message_type": "incoming", // Pode ser incoming (entrada), outgoing (saída) ou template
"content_type": "enum", // Pode ser input_select, cards, form ou texto. O valor padrão é texto
"content_attributes": {}, // Atributos do conteúdo, podem variar
"source_id": "", // ID externo se for uma integração com Twitter ou Facebook
"sender": { // Detalhes do agente que enviou a mensagem
"id": "1",
"name": "Agente",
"email": "[email protected]"
},
"contact": { // Detalhes do usuário que enviou a mensagem
"id": "1",
"name": "nome-do-contato"
},
"conversation": { // Detalhes da conversa
"display_id": "1", // ID da conversa visível no painel
"additional_attributes": {
"browser": {
"device_name": "Macbook",
"browser_name": "Chrome",
"platform_name": "Macintosh",
"browser_version": "80.0.3987.122",
"platform_version": "10.15.2"
},
"referer": "<http://www.chatwoot.com>",
"initiated_at": "Tue Mar 03 2020 18:37:38 GMT-0700 (Mountain Standard Time)"
}
},
"account": { // Detalhes da conta
"id": "1",
"name": "Chatwoot"
}
}
Eventos de webhook suportados no Chatwoot
O Chatwoot publica vários eventos para os endpoints de webhooks configurados. Cada evento tem sua estrutura de payload baseada no tipo de modelo a que se refere. A seguir, estão descritos os principais objetos usados no Chatwoot e seus atributos.
Objetos
Um payload de evento pode incluir os seguintes objetos. Os vários tipos de objetos suportados pelo Chatwoot estão listados abaixo.
-
Conta (Account):
{ "id": "integer", "name": "string" }
-
Caixa de Entrada (Inbox):
{ "id": "integer", "name": "string" }
-
Contato (Contact):
{ "id": "integer", "name": "string", "avatar": "string", "type": "contact", "account": { // <...Account Object> } }
-
Usuário (User):
{ "id": "integer", "name": "string", "email": "string", "type": "user" }
-
Conversa (Conversation):
{ "additional_attributes": { "browser": { "device_name": "string", "browser_name": "string", "platform_name": "string", "browser_version": "string", "platform_version": "string" }, "referer": "string", "initiated_at": { "timestamp": "iso-datetime" } }, "can_reply": "boolean", "channel": "string", "id": "integer", "inbox_id": "integer", "contact_inbox": { "id": "integer", "contact_id": "integer", "inbox_id": "integer", "source_id": "string", "created_at": "datetime", "updated_at": "datetime", "hmac_verified": "boolean" }, "messages": ["Array of message objects"], "meta": { "sender": { // Contact Object }, "assignee": { // User Object } }, "status": "string", "unread_count": "integer", "agent_last_seen_at": "unix-timestamp", "contact_last_seen_at": "unix-timestamp", "timestamp": "unix-timestamp", "account_id": "integer" }
-
Mensagem (Message):
{ "id": "integer", "content": "string", "message_type": "integer", "created_at": "unix-timestamp", "private": "boolean", "source_id": "string / null", "content_type": "string", "content_attributes": "object", "sender": { "type": "string - contact/user" // User or Contact Object }, "account": { // Account Object }, "conversation": { // Conversation Object }, "inbox": { // Inbox Object } }
-
Uma carga útil de webhook de amostra:
{ "event": "event_name" // Attributes related to the event }
Eventos Webhook
Chatwoot suporta os seguintes eventos webhook. Você pode assiná-los ao configurar um webhook no painel ou usando a API.
conversation_criado: Disparado quando uma nova conversa é criada.
Este evento será acionado quando uma nova conversa for criada na conta. A carga útil para o evento é a seguinte.
{
"event": "conversation_created"
// <...Conversation Attributes>
}
conversação_atualizado
Este evento será acionado quando houver uma alteração em qualquer um dos atributos na conversa.
{
"event": "conversation_updated",
"changed_attributes": [
{
"<attribute_name>": {
"current_value": "",
"previous_value": ""
}
}
]
// <...Conversation Attributes>
}
conversation_status_alterado
Este evento será acionado quando o status da conversa for alterado.
Observação: Se você estiver usando APIs de bot de agente em vez de webhooks, esse evento ainda não é suportado.
{
"event": "conversation_status_changed"
// <...Conversation Attributes>
}
message_criado
Esse evento será acionado quando uma mensagem for criada em uma conversa. A carga útil para o evento é a seguinte.
{
"event": "message_created"
// <...Message Attributes>
}
mensagem_atualizado
Este evento será acionado quando uma mensagem for atualizada em uma conversa. A carga útil para o evento é a seguinte.
{
"event": "message_updated"
// <...Message Attributes>
}
webwidget_triggered
Este evento será acionado quando o usuário final abrir o widget de bate-papo ao vivo.
{
"id": ,
"contact": {
// <...Contact Object>
},
"inbox": {
// <...Inbox Object>
},
"account": {
// <...Account Object>
},
"current_conversation": {
// <...Conversation Object>
},
"source_id": "string",
"event": "webwidget_triggered",
"event_info": {
"initiated_at": {
"timestamp": "date-string"
},
"referer": "string",
"widget_language": "string",
"browser_language": "string",
"browser": {
"browser_name": "string",
"browser_version": "string",
"device_name": "string",
"platform_name": "string",
"platform_version": "string"
}
}
}