Sign inGet started

Mensagens de texto simples WhatsApp

Texto simples é o tipo de conteúdo livre mais básico: um corpo sem anexo e uma pré-visualização opcional para o primeiro link dentro dele.

Enviar uma mensagem de texto

Defina text.body:
const msg = await bird.whatsapp.send({
  to: "+16505551234",
  from: "+13124495648",
  text: { body: "Your driver is 2 minutes away." },
});
console.log(msg.id, msg.status);
A estrutura completa adiciona preview_url mais os campos que qualquer envio de conteúdo livre pode conter:
Exemplo de código
{
  "to": "+16505551234",
  "from": "+13124495648",
  "text": {
    "body": "Your order shipped: https://example.com/track/A1B2C3",
    "preview_url": true
  },
  "in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
  "tags": [{ "name": "category", "value": "shipping" }],
  "metadata": { "order_id": "A1B2C3" }
}
from é obrigatório em toda mensagem de serviço: um número que seu espaço de trabalho possui, não um gerenciado pelo Bird. in_reply_to_message_id cita uma mensagem anterior na mesma conversa; consulte Citando uma mensagem para saber contra o que ele resolve e o que pode faltar.

Limites

CampoLimiteAplicado por
body1 a 4.096 caracteresBird, no aceite (422)
preview_urlbooleano, padrão falseN/A, informativo
Um body contendo apenas espaços em branco passa na validação do próprio schema minLength: 1, mas Bird ainda o captura: body que está vazio após o trim é recusado com 422 E15015 WhatsAppContentRequired. Um corpo acima de 4.096 caracteres é recusado com um 422 simples e sem código de catálogo dedicado.

Lendo uma mensagem de texto recebida

Uma mensagem de texto recebida contém o mesmo campo text.body, e nada mais nesse tipo. Consulte Recebendo mensagens de texto WhatsApp para a leitura completa de entrada, o payload whatsapp.received e o que observar.

Limites e casos especiais

  • A janela de atendimento ao cliente precisa estar aberta. Texto simples é uma mensagem de serviço, entregável apenas dentro de uma janela aberta; consulte a janela de atendimento ao cliente do hub.
  • preview_url afeta apenas o primeiro link, e apenas o que o cliente do destinatário renderiza. O padrão é false. Defina-o para pré-visualizar a primeira URL em body; uma URL posterior no mesmo corpo nunca recebe pré-visualização. Se o cliente do destinatário não conseguir buscar uma pré-visualização para esse link, ele volta silenciosamente a um link clicável simples. Nada na leitura informa se a pré-visualização foi de fato renderizada.
  • O markdown WhatsApp é a renderização do cliente do destinatário de body, não parte do contrato API. Bird repassa body sem alterações; não valida, remove nem codifica *bold*, _italic_, ~strikethrough~ ou monoespaçado com três crases. Se esses marcadores são renderizados depende inteiramente do cliente que abre a mensagem.
  • Uma mensagem recebida body não tem garantia de ser não vazia, apesar do que o schema de leitura diz. A Meta pode relatar uma mensagem recebida como "text": {} ou com um body vazio, e Bird armazena-a literalmente em vez de sintetizar um placeholder. Essa é uma lacuna conhecida e em aberto: não escreva um consumidor que confie no required: body do schema aqui.

Próximos passos