Pular para o conteúdo principal
Envie mensagens por um Número conectado com messaging.messages. As mensagens que você recebe chegam como webhooks.

Envie uma mensagem de texto

conversation escolhe o destinatário com um destes campos:
  • phoneNumber: um número de telefone no formato E.164.
  • id: o ID de conversa da Polymorfa de uma mensagem ou webhook anterior.
  • bsuid: um ID de usuário com escopo da empresa (business-scoped user ID).
Se você passar mais de um, todos precisam apontar para a mesma conversa. Um nome de usuário sozinho não é um destino. send cria uma chave de idempotência para você, então as novas tentativas automáticas dele nunca enviam duas vezes. Passe sua própria idempotencyKey para continuar seguro entre reinícios do processo. Veja Tente novamente uma escrita com segurança.

Envie uma imagem ou um arquivo

Cada tipo de mídia (image, video, file, voice) recebe url ou base64, nunca os dois. Defina voice.ptt como true para enviar uma mensagem de voz.

Envie um modelo

O modelo precisa estar aprovado nesse idioma; caso contrário, o envio falha com template_not_approved. Em um Número da API oficial, uma mensagem livre enviada mais de 24 horas depois da última mensagem do cliente falha com conversation_window_closed; envie um modelo nesse caso. Veja Modelos.

Outros tipos de mensagem

content contém exatamente um tipo de mensagem. Além de texto, mídia e modelos, os tipos do SDK abrangem poll, location, contact, buttons, list, product, productList, order, requestPhoneNumber, addressMessage, flow e callPermissionRequest. Seu editor lista os campos de cada tipo a partir do tipo SendMessageRequest.

Responda a uma mensagem

Defina isForwarded: true para marcar uma mensagem como encaminhada.

Reaja, marque como lida e mostre que está digitando

Números da API oficial precisam do id de uma mensagem recebida para usar setTyping. Eles marcam a mensagem como lida e mostram que estão digitando por até 25 segundos ou até você responder. Eles aceitam apenas o estado typing. Números com dispositivos vinculados também aceitam recording e paused.

Edite ou exclua uma mensagem enviada

IDs de mensagem

Toda mensagem tem um id da Polymorfa. Use-o para respostas, reações, edições e exclusões. Mantenha-o como string, mesmo quando ele tiver apenas dígitos. whatsapp_ids contém as referências do WhatsApp que a Polymorfa observou, em linked_devices, official_api ou ambos. Elas não são intercambiáveis com o id da Polymorfa. O campo antigo whatsapp_id está obsoleto; leia whatsapp_ids no lugar dele. Veja Identificadores de mensagem.

Receba mensagens

As mensagens recebidas chegam como webhooks message.received. Verifique a assinatura e depois restrinja o tipo do evento:
Veja Webhooks para criar o endpoint e verificar as solicitações. Para ler eventos sem um endpoint público, veja Eventos.

Baixe mídia

Faça o streaming de um arquivo de mídia pelo ID de mídia da Polymorfa:
No Node.js, grave-o direto em um arquivo:
O helper grava em um arquivo temporário e só o move para o lugar final depois que o download termina. Trate filename como nome de exibição, não como caminho. Quando um projeto não armazena mídia, os webhooks de mídia recebida trazem um descritor media criptografado no lugar. messaging.media.downloadFromWhatsApp(event.payload) baixa e descriptografa o arquivo do WhatsApp sem chamar a API da Polymorfa. O descritor contém uma chave de descriptografia, então nunca registre em log os corpos de webhook armazenados.

Leia o histórico de mensagens armazenado

O histórico de mensagens está em beta. Ele funciona apenas para Números com o armazenamento hospedado de mensagens ativado, em equipes inscritas no beta. Veja Leia o histórico de mensagens.
chats.list lista as conversas armazenadas. chats.downloadMessageMediaStream baixa a cópia armazenada da mídia de uma mensagem e também precisa de media:read.