Skip to main content
Para o catálogo completo derivado do esquema, consulte todos os exemplos.

O que é

Manipule tipos de mensagens recebidas do WhatsApp com exemplos de payload anotados.

Antes de começar

  • Crie um endpoint HTTPS público na sua aplicação.
  • Configure um endpoint de webhook da YCloud para os tipos de eventos necessários.
  • Armazene o segredo de assinatura do endpoint com segurança.
  • Torne o processamento de eventos idempotente.

Como funciona

A YCloud envia uma requisição HTTP POST quando o evento ocorre. Valide a assinatura, registre o evento de forma durável, retorne uma resposta 2xx e processe tarefas lentas de forma assíncrona.

Requisição

Os cenários abaixo mostram requisiçõ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 configuração do endpoint, validação de assinatura e comportamento de novas tentativas, consulte Configurar webhooks.

Mensagem recebida não suportada

Neste caso, seu endpoint de webhook recebeu uma mensagem recebida não suportada:
  • type está definido como unsupported.
  • errors explica por que a mensagem não é suportada ou está indisponível.
  • unsupported.type identifica a categoria da mensagem, como poll_creation, poll_update, edit ou pin.

Requisição

Resposta

Confirme a entrega após aceitar o evento de forma durável.

Explicação

  • O erro 131051 com Message type unknown significa que a API Cloud do WhatsApp não suporta o tipo de mensagem.
  • O erro 131060 com This message is currently unavailable. significa que o WhatsApp não conseguiu fornecer o conteúdo da mensagem.
  • unsupported.type identifica a categoria geral. Ele não contém o conteúdo original da mensagem.
  • Consulte Mensagens não suportadas na Inbox para obter uma lista legível dos tipos de mensagens. Consulte a referência de webhook de mensagens não suportadas da Meta para ver o contrato de payload atual.

Mensagem de texto recebida

Neste caso, seu endpoint de webhook recebeu uma mensagem de texto recebida:
  • Contém texto simples enviado pelo usuário.
  • Contém as informações da mensagem mencionada em context.

Requisição

Resposta

Confirme a entrega após aceitar o evento de forma durável.

Explicação

  • Mensagens recebidas são aquelas enviadas de clientes para os números de telefone da sua empresa.
  • O campo context (opcional) contém as informações da mensagem mencionada, normalmente utilizado para responder a uma mensagem anterior enviada pelo usuário ou pela sua empresa.
    • context.from é o ID do WhatsApp (número de telefone sem o prefixo ’+’) do usuário que enviou a mensagem mencionada.
    • context.id é o ID original da mensagem mencionada na plataforma do WhatsApp, começando com wamid..

Mensagem de texto recebida acionada por clique em Anúncios do WhatsApp

Neste caso, seu endpoint de webhook recebeu uma mensagem de texto recebida acionada por clique em Anúncios do WhatsApp:
  • Contém texto simples.
  • Contém informações sobre o anúncio.

Requisição

Resposta

Confirme a entrega após aceitar o evento de forma durável.

Explicação

Mensagem de imagem recebida

Neste caso, seu endpoint de webhook recebeu uma mensagem de imagem recebida:
  • Contém uma URL de imagem.
  • Contém legenda para descrever esta imagem.

Requisição

Resposta

Confirme a entrega após aceitar o evento de forma durável.

Explicação

  • A image.link pode ser acessada diretamente em poucos minutos para conveniência do consumidor, mas você deve sempre incluir um cabeçalho X-API-Key para baixar este arquivo dentro de 30 dias.

Mensagem de vídeo recebida

Neste caso, seu endpoint de webhook recebeu uma mensagem de vídeo recebida:
  • Contém uma URL de vídeo.
  • Contém legenda para descrever este vídeo.

Requisição

Resposta

Confirme a entrega após aceitar o evento de forma durável.

Explicação

  • A video.link pode ser acessada diretamente em poucos minutos para conveniência do consumidor, mas você deve sempre incluir um cabeçalho X-API-Key para baixar este arquivo dentro de 30 dias.

Mensagem de áudio recebida

Neste caso, seu endpoint de webhook recebeu uma mensagem de áudio recebida:
  • Contém uma URL de áudio.

Requisição

Resposta

Confirme a entrega após aceitar o evento de forma durável.

Explicação

  • A audio.link pode ser acessada diretamente em poucos minutos para conveniência do consumidor, mas você deve sempre incluir um cabeçalho X-API-Key para baixar este arquivo dentro de 30 dias.

Mensagem de documento recebida

Neste caso, seu endpoint de webhook recebeu uma mensagem de documento recebida:
  • Contém uma URL de documento.
  • Contém legenda para descrever este documento.

Requisição

Resposta

Confirme a entrega após aceitar o evento de forma durável.

Explicação

  • A document.link pode ser acessada diretamente em poucos minutos para conveniência do consumidor, mas você deve sempre incluir um cabeçalho X-API-Key para baixar este arquivo dentro de 30 dias.

Mensagem de figurinha recebida

Neste caso, seu endpoint de webhook recebeu uma mensagem de figurinha recebida:
  • Contém uma URL de figurinha.

Requisição

Resposta

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

Explicação

  • O sticker.link pode ser acessado diretamente em alguns minutos para conveniência do consumidor, mas você deve sempre incluir um cabeçalho X-API-Key para baixar esse arquivo em até 30 dias.

Mensagem de localização recebida

Neste caso, seu endpoint de webhook recebeu uma mensagem de localização recebida:
  • Contém latitude e longitude do local.
  • Contém nome, endereço e URL do local.

Requisição

Resposta

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

Explicação

Roteie o evento por type, deduplique-o por id e mova tarefas lentas ou propensas a falhas para um processador assíncrono.

Mensagem de contatos recebida

Neste caso, seu endpoint de webhook recebeu uma mensagem de contatos recebida:
  • Contém um contato com endereços, data de nascimento, e-mails, nome, telefones e outros campos de contato.
  • Contém origin: contact_request quando o usuário compartilhou o contato em resposta a uma mensagem de solicitação de informações de contato.

Requisição

Resposta

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

Explicação

Roteie o evento por type, deduplique-o por id e mova tarefas lentas ou propensas a falhas para um processador assíncrono.

Mensagem de reação recebida

Neste caso, seu endpoint de webhook recebeu uma mensagem de reação recebida:
  • Contém o ID da mensagem à qual o usuário reagiu.
  • Contém o emoji.

Requisição

Resposta

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

Explicação

  • O emoji está presente quando o usuário reage a uma mensagem com um emoji. Se não estiver, indica que o usuário removeu o emoji de uma mensagem.

Mensagem de botão de modelo recebida

Neste caso, seu endpoint de webhook recebeu uma mensagem de botão de modelo recebida:
  • Contém o botão text do modelo que você usou ao enviar uma mensagem de modelo.
  • Contém o botão payload fornecido por você ao enviar uma mensagem de modelo.
  • Contém o wamid (context.wamid) da mensagem de modelo que você enviou.

Requisição

Resposta

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

Explicação

Roteie o evento por type, deduplique-o por id e mova tarefas lentas ou propensas a falhas para um processador assíncrono.

Mensagem interativa de resposta de lista recebida

Neste caso, seu endpoint de webhook recebeu uma mensagem interativa de resposta de lista recebida:
  • O campo interactive contém a resposta da lista na qual o usuário clicou em uma mensagem interativa que você enviou anteriormente.
  • O campo context contém informações sobre a mensagem interativa enviada anteriormente ao usuário.
Clique no botão para selecionar um item. O destinatário responde à sua mensagem selecionando um dos itens na mensagem interativa enviada anteriormente.

Requisição

Resposta

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

Explicação

  • O context contém informações sobre a mensagem interativa que você enviou anteriormente.
    • context.from é o WhatsApp ID (número de telefone sem o prefixo ’+’) de quem enviou a mensagem interativa.
    • context.id é o ID original da mensagem na plataforma do WhatsApp, começando com wamid..

Mensagem interativa de resposta de botão recebida

Neste caso, seu endpoint de webhook recebeu uma mensagem interativa de resposta de botão recebida:
  • O campo interactive contém a resposta de botão na qual o usuário clicou em uma mensagem interativa que você enviou anteriormente.
  • O campo context contém informações sobre a mensagem interativa enviada anteriormente ao usuário.
example-inboundmessage-buttonreply.png

Requisição

Resposta

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

Explicação

  • O context contém informações sobre a mensagem interativa que você enviou anteriormente.
    • context.from é o WhatsApp ID (número de telefone sem o prefixo ’+’) de quem enviou a mensagem interativa.
    • context.id é o ID original da mensagem na plataforma do WhatsApp, começando com wamid..

Mensagem interativa de resposta de fluxo recebida

Após a conclusão do fluxo, uma mensagem de resposta será enviada para a conversa do WhatsApp. Você a receberá da mesma forma que recebe todas as outras mensagens do usuário — via webhook de mensagem. O campo response_json conterá dados específicos do fluxo.

Requisição

Resposta

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

Explicação

  • interactive.type é sempre nfm_reply. interactive.name é sempre flow. interactive.body é sempre Sent.
  • interactive.response_json são dados específicos do fluxo. A estrutura é definida no JSON do fluxo (consulte Complete action) ou, se o fluxo estiver usando um endpoint, controlada pelo endpoint (consulte Final Response Payload em Data Exchange Request). Analise a string JSON interactive.response_json para um objeto JSON, onde o tipo de dados dos seus valores pode variar. Normalmente, os valores são texto simples, exceto:
    • Quando originado de um componente CheckboxGroup, o valor é uma lista de strings.
    • Quando se origina de um componente OptIn, o valor é um booleano, ou seja, true ou false. Atualmente, se presente, o valor deve ser true, já que nenhuma chave desse tipo será incluída no response_json se o usuário não tiver optado por participar.
    • Quando se origina de um componente DatePicker, o valor é uma string que representa o timestamp Unix em milissegundos, como "1725936737548" (ou seja, 2024-09-10T02:52:17.548Z). A partir da versão 5.0 do Flow JSON, as datas serão definidas no formato “yyyy-MM-dd”, o que torna os valores independentes de fusos horários.
  • Para enviar uma mensagem com um Flow, consulte Mensagem de modelo de Flow e Mensagem interativa de Flow.

Mensagem de sistema recebida

Neste caso, seu endpoint de webhook recebeu uma mensagem de sistema recebida:
  • O type está definido como system, e o system.type está definido como user_changed_number.
  • Um usuário altera seu número de telefone no WhatsApp, e wa_id é o novo WhatsApp ID (número de telefone sem o prefixo +).
  • user_id é o novo BSUID. parent_user_id só é incluído quando os BSUIDs pai estão habilitados.

Requisição

Resposta

Confirme a entrega após aceitar o evento de forma durável.

Explicação

Roteie o evento por type, deduplique-o por id e transfira trabalhos lentos ou propensos a falhas para um processador assíncrono.

Mensagem de pedido recebida

Neste caso, seu endpoint de webhook recebeu uma mensagem de pedido recebida quando um cliente adiciona um ou mais produtos ao carrinho e envia um pedido:
  • Contém informações sobre o produto solicitado.

Requisição

Resposta

Confirme a entrega após aceitar o evento de forma durável.

Explicação

Roteie o evento por type, deduplique-o por id e transfira trabalhos lentos ou propensos a falhas para um processador assíncrono.

Mensagem de consulta de produto recebida

Neste caso, seu endpoint de webhook recebeu uma mensagem de texto recebida quando um cliente consulta um produto:
  • Contém informações sobre o produto.

Requisição

Resposta

Confirme a entrega após aceitar o evento de forma durável.

Explicação

  • Uma mensagem de consulta de produto é recebida quando um usuário solicita mais informações sobre um produto específico. Elas podem ser recebidas em dois cenários:
    • Quando um cliente responde a Mensagens de produto único ou de múltiplos produtos.
    • Quando um cliente acessa o catálogo de uma empresa por outro ponto de entrada, navega até uma página de detalhes do produto e clica em Enviar mensagem à empresa sobre este produto.

Mensagem de solicitação de boas-vindas recebida

Você pode ser notificado por webhook sempre que um usuário do WhatsApp abrir uma conversa com você pela primeira vez. Isso pode ser útil se você quiser responder a esses usuários com uma mensagem de boas-vindas especial personalizada por você. Se você ativar esse recurso e um usuário abrir uma conversa, normalmente quando o usuário toca em um link universal (links wa.me ou api.whatsapp.com ), o cliente do WhatsApp verifica se há um histórico de mensagens existente entre o usuário e o número de telefone da sua empresa. Se não houver, o cliente aciona um webhook request_welcome. Você pode então responder ao usuário com sua própria mensagem de boas-vindas. example-inboundmessage-welcomemessage

Requisição

Resposta

Confirme a entrega após aceitar o evento de forma durável.

Explicação

  • Para ativar este recurso para um número de telefone, navegue até Meta Gerenciador do WhatsApp > Números de telefone > Configurações > Automações.
  • Para testar a mensagem request_welcome, caso já tenha uma conversa em andamento com o número de telefone da empresa, você deve primeiro excluir a conversa.
  • Este recurso aciona apenas uma mensagem recebida request_welcome e não responde a nenhuma mensagem automaticamente. Cabe a você decidir se deseja responder com uma mensagem de boas-vindas.