Usando o WhatsApp Oficial
O Canal WhatsApp Oficial conecta sua aplicação à WhatsApp Business Platform da Meta. Ele difere do canal não oficial (whatsapp-web) por usar a infraestrutura oficial com WABA (WhatsApp Business Account), templates aprovados pela Meta, cobrança por conversa e as garantias oficiais da plataforma.
Diferente do canal não oficial, o canal oficial não é um container: é um registro lógico dentro da MessageFy que aponta para um número de telefone registrado em uma WABA na Meta. A relação continua sendo um canal = um número — múltiplos números exigem múltiplos canais.
Arquitetura provisionada automaticamente
O Router e o
http-receiver são criados uma única vez por Account e reaproveitados para os
demais números que você conectar.Pré-requisitos
Todas as chamadas usam o headerX-API-KEY (veja Autenticação). O fluxo assume que você já tem uma Account criada (Contas) — o accountId é usado em praticamente todos os passos.
Passo 1 — Criar o Responsável Financeiro
O canal oficial é pré-pago e exige um Responsável Financeiro comisDefault: true na Account antes da criação do canal. Sem ele, a criação falha com METAGURU_FINANCIAL_MANAGER_REQUIRED.
O Responsável Financeiro é usado para as cobranças da MessageFy (não da Meta): é contra ele
que as faturas de crédito da carteira são emitidas.
Passo 2 — Criar o canal de Webhook (http-sender)
É nesse canal que a MessageFy entrega tudo: mensagens recebidas, eventos de status, respostas de comandos e notificações de template. Ele precisa existir antes do canal oficial (será ofeedbackChannelId).
channelId retornado.
Passo 3 — Criar o canal oficial
Nos bastidores: a MessageFy valida o responsável financeiro, cria o Router e o
http-receiver da Account (se ainda não existirem), registra o business na Meta e guarda as credenciais. Quando o Router fica pronto, o canal muda de Created para Running.
Acompanhe pelo GET /api/v1/Admin/Channel/{channelId}:
Passo 4 — Gerar o link de conexão do número
Todos os comandos usamPOST /api/v1/message/SendCommand, sempre com o envelope Package (channelId do canal oficial + content):
{ "packageId": "..." }); o link chega no webhook:
connectionLink ao dono do número. Ele abre o fluxo de Embedded Signup da Meta: (1) login com a conta Facebook/Meta Business; (2) seleção ou criação da WABA; (3) informação e verificação do número; (4) aceite das permissões.
Quando o onboarding termina, o webhook recebe o CONNECTED:
STATUS funciona como no canal não oficial.
Passo 5 — Créditos (Carteira)
O envio é pré-pago: a MessageFy cobra por conversa e o consumo sai da carteira da conta. Sem saldo, os envios falham. Uma carteira é criada automaticamente para cada conta — liste-a comWALLET/LIST, consulte saldo com BALANCE, e gere o link de pagamento com ADD_FUND.
Passo 6 — Templates
No canal oficial, conversas só podem ser iniciadas com um template aprovado pela Meta. Fora da janela de 24 horas (contada da última mensagem do cliente), mensagens livres são recusadas. Crie e liste templates pelos comandosTEMPLATES; envie mensagens a partir de um template aprovado com o tipo TEMPLATE:
TEXT, IMAGE, etc.).
No canal oficial o
to aceita number (só dígitos, com DDI) ou jid — diferente do canal
whatsapp-web, que usa exclusivamente jid.Passo 7 — Receber mensagens e acompanhar envios
Tudo chega na URL dohttp-sender, no envelope Package padrão (veja Recebendo Eventos). Eventos de status do envio:
Exemplo de falha (o detalhe do erro vem em
providerMetadata):
correlationId (definido por você) ou pelo originPackageId (o packageId retornado no 200 OK do envio).
Recursos não suportados no canal oficial
Enviar estes comandos retornasuccess: false com mensagem explicativa (ou é ignorado):
Erros comuns
Checklist de implantação
- Account criada e API Key gerada
- Responsável financeiro criado com
isDefault: true - Canal
http-senderapontando para sua URL e respondendo 2xx - Canal
whatsapp-apicriado e com statusRunning - Link de conexão gerado e número conectado (
CONNECTEDrecebido) - Carteira com saldo
- Ao menos um template com status
APPROVED - Webhook tratando
TEXT,MESSAGE_SENT,MESSAGE_DELIVERED,MESSAGE_READ,SEND_MESSAGE_RESPONSEeTEMPLATE_STATUS