Skip to main content
Este guia mostra o padrão de recibo Opção B: a mensagem de WhatsApp inclui um cabeçalho de documento PDF e variáveis no corpo descrevendo o recibo. Use esse padrão quando o cliente deve receber o documento do recibo diretamente no WhatsApp, em vez de abrir uma página de recibo.

Antes de começar

Você precisa de:
  • Um canal de WhatsApp conectado no Switchbord.
  • Um template Utility aprovado com um cabeçalho DOCUMENT, por exemplo payment_receipt_document.
  • Uma URL pública de PDF em HTTPS. A Meta precisa conseguir buscá-la.
  • Um id de evento de origem estável para idempotência.
A URL do documento precisa ser HTTPS e acessível pela Meta. Não use URLs somente internas, localhost, URLs com expiração antes do despacho, ou URLs contendo segredos reutilizáveis.

Estrutura do template

Um template típico de recibo em documento tem um cabeçalho de documento e um corpo como:
O cabeçalho do documento recebe:

Envio direto via API

Resposta esperada:

Construtor de webhook de entrada

Para mapear um evento externo de pagamento para este template:
  1. Abra Settings → Integrations → Webhooks & API.
  2. Crie um novo webhook de entrada.
  3. Selecione o template Utility aprovado payment_receipt_document.
  4. Mapeie os campos:
  1. Cole um payload de exemplo e execute o preview de dry-run.
  2. Crie o webhook. Novas configs permanecem desabilitadas e em dry-run por padrão até que a promoção real seja suportada.
Payload de exemplo:

Variáveis de corpo nomeadas

O mapeador de webhooks de entrada do Switchbord e o compilador transacional interno suportam parâmetros de corpo nomeados da Meta e os compilam em entradas parameter_name. A rota pública POST /api/v1/template-sends atualmente aceita apenas variáveis de corpo posicionais, então quem chama a API diretamente deve usar chaves numéricas de corpo ou um array.

Validação

O Switchbord valida o cabeçalho de documento antes de colocar na fila:
  • link precisa ser uma URL HTTPS válida.
  • filename, quando fornecido, precisa ser não vazio.
  • As variáveis de corpo obrigatórias precisam resolver para strings não vazias.
  • O template selecionado precisa ser Utility aprovado.
  • A chave de idempotência precisa ser estável para novas tentativas.

Solução de problemas

Referência relacionada