Tickets

Webhook de Mensagens de Ticket

Configuração: POST /whatsapp/config/ com o campo url_tickets_webhook

Este webhook entrega, em tempo real, cada mensagem trocada em um ticket de atendimento via WhatsApp — tanto as recebidas do cliente quanto as enviadas pela empresa (atendente ou bot). É disparado a cada nova mensagem.

Payload

CampoTipoDescrição
event_idstring (uuid)Identificador único do evento de webhook (UUID v4). Use para rastreamento e deduplicação.
typestringTipo do evento. Sempre message.
messageobjectDados da mensagem. Veja Objeto message.
ticketobjectDados do ticket. Veja Objeto ticket.
whatsappobjectLinha de WhatsApp da empresa. Veja Objeto whatsapp.
contactobjectDados do contato (cliente). Veja Objeto contact.
contextobjectDados de contexto adicionais. Pode vir vazio ({}).
datetimestring (date-time)Data e hora do evento (ISO 8601 UTC-3).

Objeto message

CampoTipoDescrição
idstringId único da mensagem (ex.: wamid do WhatsApp).
fromstringNúmero de origem da mensagem.
tostringNúmero de destino da mensagem.
from_mebooleanSe a mensagem foi enviada pela empresa (atendente ou bot).
from_botbooleanSe a mensagem foi enviada por um BOT.
user_idinteger | nullId do atendente que enviou a mensagem. Nulo se foi do cliente ou bot.
typestringTipo da mensagem: text, audio, image, video, file.
textstring | nullConteúdo ou legenda da mensagem.
filestring | nullURL do arquivo de mídia. Nulo em mensagens de texto.
postback_textstring | nullTexto do postback em interações de botão.
datetimestring (date-time)Data e hora da mensagem (ISO 8601 UTC-3).

Objeto ticket

CampoTipoDescrição
idintegerId do ticket.
uuidstring (uuid)UUID do ticket.
company_idintegerId da empresa.
tracking_idinteger | nullId de rastreamento do atendimento.
campaign_idinteger | nullId da campanha. Nulo em atendimentos receptivos.
request_idstring | nullId da requisição original. Nulo em atendimentos receptivos.
cost_center_idinteger | nullId do centro de custo.
statusstringStatus do ticket: pending, open, closed, paused.
user_idinteger | nullId do atendente atribuído ao ticket.
contact_idintegerId do contato.
queue_idinteger | nullId da fila.
transfer_queue_idinteger | nullId da fila de transferência.
whatsapp_idintegerId da linha de WhatsApp.
integration_idinteger | nullId da integração.
from_mebooleanIndica se o ticket foi iniciado pela empresa (ativo) ou pelo cliente (receptivo).

Objeto whatsapp

CampoTipoDescrição
idintegerId da linha de WhatsApp.
namestringNome da linha de WhatsApp.
numberstringNúmero de WhatsApp da empresa.

Objeto contact

CampoTipoDescrição
idintegerId do contato.
namestring | nullNome do contato.
numberstringNúmero de telefone do contato.
documentstring | nullDocumento (CPF/CNPJ) do contato.
contractstring | nullContrato do contato.
emailstring | nullE-mail do contato.
is_groupbooleanSe o contato é um grupo.
created_atstring (date-time) | nullData de criação do contato (ISO 8601 UTC-3).
updated_atstring (date-time) | nullData de atualização do contato (ISO 8601 UTC-3).
extra_infoarrayCampos personalizados. Veja Objeto contact.extra_info.

Objeto contact.extra_info

CampoTipoDescrição
idintegerId do campo personalizado.
namestringNome do campo.
valuestring | nullValor do campo.

Exemplo - Mensagem recebida do cliente

{
  "event_id": "e00eed00-nb7k-b0m3-j605-dd5544dd9999",
  "type": "message",
  "message": {
    "id": "wamid.HBgMNTU3NDk5MTMwNzY2",
    "from": "5511988888888",
    "to": "5511977777777",
    "from_me": false,
    "from_bot": false,
    "user_id": null,
    "type": "text",
    "text": "Olá, preciso de ajuda",
    "file": null,
    "postback_text": null,
    "datetime": "2024-12-06T17:49:55.610-03:00"
  },
  "ticket": {
    "id": 99,
    "uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "company_id": 1,
    "tracking_id": 11,
    "campaign_id": null,
    "request_id": null,
    "cost_center_id": null,
    "status": "open",
    "user_id": 42,
    "contact_id": 1,
    "queue_id": 5,
    "transfer_queue_id": null,
    "whatsapp_id": 1,
    "integration_id": null,
    "from_me": false
  },
  "whatsapp": {
    "id": 1,
    "name": "Atendimento Nexus",
    "number": "5511977777777"
  },
  "contact": {
    "id": 1,
    "name": "João",
    "number": "5511988888888",
    "document": "12345678900",
    "contract": null,
    "email": "[email protected]",
    "is_group": false,
    "created_at": "2024-12-01T09:00:00.000-03:00",
    "updated_at": "2024-12-06T17:49:55.610-03:00",
    "extra_info": [
      {
        "id": 1,
        "name": "plano",
        "value": "premium"
      }
    ]
  },
  "context": {},
  "datetime": "2024-12-06T17:49:55.610-03:00"
}

Exemplo - Mensagem enviada pelo atendente

{
  "event_id": "f10efe00-oc8l-c1n4-k716-ee6655ee0000",
  "type": "message",
  "message": {
    "id": "wamid.HBgMNTU3NDk5MTMwNzbb",
    "from": "5511977777777",
    "to": "5511988888888",
    "from_me": true,
    "from_bot": false,
    "user_id": 42,
    "type": "text",
    "text": "Olá! Como posso ajudar?",
    "file": null,
    "postback_text": null,
    "datetime": "2024-12-06T17:50:10.000-03:00"
  },
  "ticket": {
    "id": 99,
    "uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "company_id": 1,
    "tracking_id": 11,
    "campaign_id": null,
    "request_id": null,
    "cost_center_id": null,
    "status": "open",
    "user_id": 42,
    "contact_id": 1,
    "queue_id": 5,
    "transfer_queue_id": null,
    "whatsapp_id": 1,
    "integration_id": null,
    "from_me": false
  },
  "whatsapp": {
    "id": 1,
    "name": "Atendimento Nexus",
    "number": "5511977777777"
  },
  "contact": {
    "id": 1,
    "name": "João",
    "number": "5511988888888",
    "document": "12345678900",
    "contract": null,
    "email": "[email protected]",
    "is_group": false,
    "created_at": "2024-12-01T09:00:00.000-03:00",
    "updated_at": "2024-12-06T17:50:10.000-03:00",
    "extra_info": []
  },
  "context": {},
  "datetime": "2024-12-06T17:50:10.000-03:00"
}