Saltar para o conteúdo principal
Para o catálogo completo derivado do esquema, consulte todos os exemplos.

O que é

Gerencie eventos contact.attributes_changed e contact.note.updated.

Antes de começar

  • Crie um endpoint HTTPS público em sua aplicação.
  • Configure um endpoint de webhook da YCloud para os tipos de evento que você precisa.
  • Armazene o segredo de assinatura do endpoint com segurança.
  • Torne o processamento de eventos idempotente.

Como funciona

A YCloud envia uma solicitação HTTP POST quando o evento ocorre. Verifique a assinatura, registre o evento de forma duradoura, retorne uma resposta 2xx e processe tarefas lentas de forma assíncrona.

Solicitação

Os cenários abaixo mostram solicitações entregues à sua URL de webhook. Trate o id do evento como o identificador de entrega e use type para rotear o payload.

Resposta

Retorne um status 2xx após aceitar o evento.
Para obter detalhes sobre a configuração do endpoint, validação de assinatura e comportamento de repetição, consulte Configurar webhooks.
Ocorre quando os atributos de um contato são modificados. O payload do webhook contém informações sobre quais atributos foram alterados, incluindo seus valores antigos e novos.

Exemplo de alteração de tags (adicionar tags)

Solicitação

Resposta

Confirme o recebimento da entrega após aceitar o evento de forma duradoura.

Explicação

Roteie o evento por type, desduplique-o por id e transfira tarefas lentas ou sujeitas a falhas para um processador assíncrono.

Exemplo de alteração de tags (remover tags)

Solicitação

Resposta

Confirme o recebimento da entrega após aceitar o evento de forma duradoura.

Explicação

Roteie o evento por type, desduplique-o por id e transfira tarefas lentas ou sujeitas a falhas para um processador assíncrono.

Exemplo de alteração

Solicitação

Resposta

Confirme o recebimento da entrega após aceitar o evento de forma duradoura.

Explicação

  • Estrutura correta: o objeto contactAttributesChanged contém três campos obrigatórios: id, updateTime e changedAttributes.
  • Atributos alterados: o campo changedAttributes é um objeto em que cada chave é o nome do atributo e o valor é um objeto ContactAttributeChange.
  • Configuração de propriedades do evento: ao habilitar eventos contact.attributes_changed, você deve configurar o campo eventProperties no seu endpoint de webhook para especificar quais atributos devem ser incluídos no payload do webhook.
  • Tipos de atributos: os campos oldValue e newValue podem conter diferentes tipos de dados:
    • String: valores de texto
    • Number: valores numéricos (inteiro ou decimal)
    • Boolean: valores verdadeiro/falso
    • Array: matrizes de strings
    • Object: objetos complexos com propriedades aninhadas
    • Null: quando um atributo é removido ou não definido
  • Alterações de tags: para atributos de tags, o campo extra fornece informações detalhadas sobre quais tags foram adicionadas ou removidas, incluindo seus IDs e valores.
  • Valores nulos: quando um atributo é removido ou definido como nulo, o newValue será null. Quando um atributo é adicionado recentemente, o oldValue pode ser null.
  • Atributos personalizados: atributos personalizados são incluídos no objeto changedAttributes da mesma forma que os atributos padrão, com suas chaves personalizadas como os nomes dos atributos.
  • Detecção de alterações: somente os atributos que foram efetivamente alterados são incluídos no objeto changedAttributes.
  • Campo extra: o campo extra é opcional e é usado principalmente para alterações relacionadas a tags a fim de fornecer contexto adicional sobre as ações específicas realizadas.

Anotação de contato atualizada

Use contact.note.updated quando uma anotação de contato for atualizada.

Solicitação

Resposta

Confirme o recebimento da entrega após aceitar o evento de forma duradoura.

Explicação

Use contactNote.id para identificar a anotação e contactId para identificar o contato proprietário. username e phoneNumber descrevem o contato e podem ser nulos. O payload contém o snapshot da anotação visível para o cliente, incluindo content, sem identificadores internos do operador.