Atendimentos


Webhook de Atendimentos WhatsApp

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

Este webhook traz as mensagens trocadas no atendimento via Whatsapp, incluindo informações sobre campanhas, centros de custo, documentos e o histórico de mensagens.

Payload

CampoTipoDescrição
event_idstring (uuid)Identificador único do evento de webhook (UUID v4). Use para rastreamento e deduplicação.
idintegerId único do atendimento. Representa a conversa desde o HSM enviado (ativo) ou a mensagem recebida (receptivo).
ticket_idintegerId do ticket no sistema de atendimento.
ticket_uuidstring (uuid)UUID do ticket no sistema de atendimento.
campaign_idinteger | nullId da campanha. Será nulo em atendimentos receptivos.
request_idstring | nullID da requisição original. Será nulo em atendimentos receptivos.
cost_center_idinteger | nullId do centro de custo. Será nulo em atendimentos receptivos.
from_mebooleanIndica se o atendimento foi iniciado por uma campanha (ativo) ou pelo cliente (receptivo).
numberstringNúmero de telefone do contato.
dataobject | nullDados adicionais incluídos no envio da mensagem.
documentstring | nullDocumento CPF ou CNPJ do destinatário.
occurrenceobject | nullOcorrência do atendimento (id, name).
userobject | nullUsuário que atendeu o cliente (id, name).
datetimestring (date-time)Data e hora do encerramento (ISO 8601 UTC-3).
messagesarrayLista de mensagens trocadas.
surveyobject | nullPesquisa de satisfação associada ao atendimento. Veja Objeto survey.

Objeto messages

CampoTipoDescrição
fromstringNúmero de origem da mensagem.
tostringNúmero de destino da mensagem.
from_mebooleanSe a mensagem foi enviada pelo atendente.
from_botbooleanSe a mensagem foi enviada por um BOT.
userinteger | nullId do usuário que enviou a mensagem.
typestringTipo da mensagem: text, audio, image, video, file.
textstringConteúdo da mensagem.
filestring | nullURL do arquivo enviado.
datetimestring (date-time)Data e hora do envio.

Objeto survey

CampoTipoDescrição
idintegerId da pesquisa.
namestringNome da pesquisa.
statusstringStatus da pesquisa (veja Status da pesquisa).
started_atstring (date-time)Data e hora de início da pesquisa (ISO 8601 UTC-3).
completed_atstring (date-time) | nullData e hora de conclusão da pesquisa (ISO 8601 UTC-3).
expired_atstring (date-time) | nullData e hora de expiração da pesquisa (ISO 8601 UTC-3).
answersarrayLista de respostas da pesquisa.

Status da pesquisa

StatusDescrição
completedSurvey respondida com sucesso.
declinedCliente recusou participar (respondeu "não" no opt-in).
failedAtingiu o máximo de respostas erradas.
expiredSessão expirou por inatividade.
cancelledCancelada manualmente.

Objeto survey.answers

CampoTipoDescrição
questionstringTexto da pergunta.
question_typestringTipo da pergunta: scale ou text.
answerstringResposta fornecida.
answered_atstring (date-time)Data e hora da resposta (ISO 8601 UTC-3).

Exemplo - Atendimento Ativo

{
  "event_id": "e00eed00-nb7k-b0m3-j605-dd5544dd9999",
  "id": 56789,
  "ticket_id": 34567,
  "ticket_uuid": "123e4567-e89b-12d3-a456-426614174000",
  "campaign_id": 54321,
  "request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "cost_center_id": 12345,
  "from_me": true,
  "number": "5511988888888",
  "data": {
    "key1": "value1",
    "key2": "value2"
  },
  "document": "00000000000",
  "occurrence": {
    "id": 1,
    "name": "Ocorrência 01"
  },
  "user": {
    "id": 1,
    "name": "Usuário 01"
  },
  "datetime": "2024-12-06T17:49:55.610-03:00",
  "messages": [
    {
      "from": "5511977777777",
      "to": "5511988888888",
      "from_me": true,
      "from_bot": false,
      "user": null,
      "type": "text",
      "text": "Mensagem HSM",
      "file": null,
      "datetime": "2024-12-06T17:49:55.610-03:00"
    },
    {
      "from": "5511988888888",
      "to": "5511977777777",
      "from_me": false,
      "from_bot": false,
      "user": null,
      "type": "text",
      "text": "Resposta do cliente",
      "file": null,
      "datetime": "2024-12-06T17:49:55.610-03:00"
    },
    {
      "from": "5511977777777",
      "to": "5511988888888",
      "from_me": true,
      "from_bot": true,
      "user": null,
      "type": "text",
      "text": "Resposta do bot",
      "file": null,
      "datetime": "2024-12-06T17:49:55.610-03:00"
    },
    {
      "from": "5511977777777",
      "to": "5511988888888",
      "from_me": true,
      "from_bot": false,
      "user": 1,
      "type": "text",
      "text": "Resposta do atendente",
      "file": null,
      "datetime": "2024-12-06T17:49:55.610-03:00"
    }
  ],
  "survey": {
    "id": 1,
    "name": "Pesquisa de Satisfação",
    "status": "completed",
    "started_at": "2024-12-06T17:50:00.000-03:00",
    "completed_at": "2024-12-06T17:51:30.000-03:00",
    "expired_at": null,
    "answers": [
      {
        "question": "Como você avalia o atendimento?",
        "question_type": "scale",
        "answer": "5",
        "answered_at": "2024-12-06T17:51:00.000-03:00"
      },
      {
        "question": "Deixe um comentário",
        "question_type": "text",
        "answer": "Ótimo atendimento!",
        "answered_at": "2024-12-06T17:51:30.000-03:00"
      }
    ]
  }
}

Exemplo - Atendimento Receptivo

{
  "event_id": "f10efe00-oc8l-c1n4-k716-ee6655ee0000",
  "id": 56789,
  "ticket_id": 34567,
  "ticket_uuid": "123e4567-e89b-12d3-a456-426614174000",
  "campaign_id": null,
  "request_id": null,
  "cost_center_id": null,
  "from_me": false,
  "number": "5511988888888",
  "data": null,
  "document": "12345678900",
  "occurrence": {
    "id": 1,
    "name": "Ocorrência 01"
  },
  "user": {
    "id": 1,
    "name": "Usuário 01"
  },
  "datetime": "2024-12-06T17:49:55.610-03:00",
  "messages": [
    {
      "from": "5511988888888",
      "to": "5511977777777",
      "from_me": false,
      "from_bot": false,
      "user": null,
      "type": "text",
      "text": "Mensagem do cliente",
      "file": null,
      "datetime": "2024-12-06T17:49:55.610-03:00"
    },
    {
      "from": "5511977777777",
      "to": "5511988888888",
      "from_me": true,
      "from_bot": false,
      "user": 1,
      "type": "text",
      "text": "Resposta do atendente",
      "file": null,
      "datetime": "2024-12-06T17:49:55.610-03:00"
    }
  ],
  "survey": {
    "id": 1,
    "name": "Pesquisa de Satisfação",
    "status": "completed",
    "started_at": "2024-12-06T17:50:00.000-03:00",
    "completed_at": "2024-12-06T17:51:30.000-03:00",
    "expired_at": null,
    "answers": [
      {
        "question": "Como você avalia o atendimento?",
        "question_type": "scale",
        "answer": "5",
        "answered_at": "2024-12-06T17:51:00.000-03:00"
      },
      {
        "question": "Deixe um comentário",
        "question_type": "text",
        "answer": "Ótimo atendimento!",
        "answered_at": "2024-12-06T17:51:30.000-03:00"
      }
    ]
  }
}