Manual do Atendimento WhatsApp
O sistema conecta o número oficial de WhatsApp da sua empresa ao seu sistema interno. O bot atende sozinho (2ª via de fatura, dúvidas, IA), passa a conversa para um atendente quando precisa e envia comunicados, tudo pela API oficial da Meta.
1. O que o sistema faz
| Recurso | O que faz | Onde fica |
|---|---|---|
| Bot de atendimento | Responde 24h seguindo um fluxo (menus, perguntas, consultas ao seu sistema). Já vem um modelo pronto de 2ª via de fatura. | Painel → Fluxos |
| IA | Responde perguntas livres usando as instruções e a base de conhecimento da empresa, e pode consultar o seu sistema. | Painel → Configurações e Conhecimento |
| Atendimento humano | Fila de conversas, assumir, responder, enviar arquivos, devolver ao bot e encerrar, em tempo real. | Inbox |
| Comunicados | Envio em massa para quem aceitou receber (avisos de fatura, manutenção, cobrança). | API (seção 7) |
| Templates | Modelos de mensagem aprovados pela Meta, obrigatórios para falar com o cliente depois de 24h sem resposta. | Painel → Templates |
| Integrações | Consultas ao seu sistema (cliente, faturas, segunda via), com credenciais guardadas criptografadas. | Painel → Integrações |
| Verificação de identidade | Só libera dados do cliente se ele falar do número cadastrado; de outro número, faz perguntas de segurança. | Automático (seção 7.3) |
| Governança | Bloqueia pedidos de senhas e dados internos, vazamento de dados de terceiros e links falsos. Registra tudo. | Painel → Governança |
| LGPD | Aviso de privacidade, opt-in/opt-out (cliente envia SAIR), retenção automática, exportação e exclusão de dados. | Painel → Configurações |
2. Como funciona
O cliente fala com o número da empresa; a Meta entrega a mensagem ao módulo; o módulo decide quem responde (bot, IA ou atendente) e, quando precisa de dados, consulta o seu sistema.
A integração tem dois sentidos: o seu sistema chama o módulo para enviar mensagens e comunicados (7.1), e o módulo chama o seu sistema para buscar dados durante o atendimento (7.2). Por isso, sim: a sua equipe de TI precisa criar alguns endpoints.
Cada empresa paga a Meta diretamente pelo próprio número (conversas iniciadas pela empresa são cobradas; respostas dentro de 24h, em geral, não).
3. Configuração inicial
3.1 Operador da plataforma (uma vez)
- Gere os segredos de produção com
npm run secretse preencha o que faltar (credenciais da Meta, chave da Anthropic, SMTP, e-mail de alertas, IPs da VPN). Detalhes no arquivoSECURITY.md. - Abra o Console em
/admin(só pela VPN). No primeiro acesso entre com aADMIN_API_KEYe o código do autenticador e cadastre os operadores: cada pessoa recebe login, senha provisória e QR Code do autenticador. A partir daí, a chave não abre mais o console. - Em Nova empresa, informe o nome da empresa e o administrador dela. O sistema mostra uma única vez a API key, o segredo dos avisos e a senha provisória: entregue por canais separados.
- Em Gerenciar → Gerar link de conexão do WhatsApp, envie o link à empresa.
3.2 Empresa
- Conectar o WhatsApp: abra o link recebido, entre com a conta do Facebook da empresa e escolha o número. O pagamento das mensagens fica na conta da própria empresa na Meta.
- Primeiro acesso ao painel (
/editor): entre com a senha provisória, defina uma nova senha e ative a verificação em duas etapas (Google ou Microsoft Authenticator). Guarde os 10 códigos de recuperação. - Configurações: horário de atendimento, aviso de privacidade (LGPD), IA ligada ou não, tempo de sessão.
- Integrações: peça à TI os endereços dos endpoints (seção 7.2) e cadastre-os, com a credencial de acesso se o sistema exigir token.
- Fluxos: clique em Usar modelo de faturas, informe o endereço base do seu sistema, teste no Simulador e clique em Ativar.
- Usuários: cadastre os atendentes. Cada um troca a senha e ativa o 2FA no primeiro acesso.
4. Usando o painel
| Aba | Para que serve |
|---|---|
| Fluxos | Monta o roteiro do bot: passos à esquerda, edição no meio e o mapa da conversa à direita (clique num passo do mapa para editar). Só um fluxo fica ativo por vez. |
| Simulador | Conversa com o bot sem enviar nada ao WhatsApp. Use antes de ativar qualquer mudança. Como o simulador usa um número fictício, ele sempre cai nas perguntas de segurança da verificação de identidade. |
| Conhecimento | Documentos (PDF, TXT, MD, CSV) que a IA consulta para responder. Veja a seção 6. |
| Templates | Cria e acompanha modelos de mensagem da Meta (aprovação leva de minutos a horas). Use variáveis {{1}}, {{2}} com exemplos. |
| Integrações | Endpoints do seu sistema (ações) e credenciais de acesso (token, usuário e senha, OAuth2). As credenciais nunca aparecem depois de salvas. |
| Usuários | Administradores (painel e inbox) e atendentes (só inbox). Redefinir senha, resetar 2FA, desbloquear e desativar. |
| Governança | Bloqueios de segurança da IA e o histórico de quem alterou o quê, quando e de onde. |
| Configurações | Bot e IA, verificação de identidade pelo número, horário, privacidade, chaves de integração (gerar nova API key) e dados de clientes (exportar e excluir, LGPD). |
| Minha conta | Trocar senha, 2FA e códigos de recuperação. |
5. Fluxos do bot
Um fluxo é uma sequência de passos. Os textos aceitam variáveis, por exemplo {{contact.firstName}} (nome do cliente no WhatsApp) e {{customer.nome}} (nome vindo do seu sistema).
| Passo | O que faz |
|---|---|
| Mensagem | Envia um texto e segue. |
| Botões / Lista | Mostra até 3 botões ou uma lista de até 10 opções; cada opção leva a um passo. |
| Pergunta | Pede um dado (CPF/CNPJ, e-mail, número, data) e valida antes de seguir. |
| Consulta (ação) | Chama um endpoint do seu sistema; tem caminho de sucesso e "se falhar". |
| Escolha | Monta uma lista com o que o seu sistema devolveu (ex.: faturas em aberto). |
| Condição | Decide o caminho (ex.: cliente já identificado?). |
| Documento | Envia um arquivo (ex.: PDF da fatura). |
| IA | Passa a conversa para a IA. |
| Atendente | Coloca na fila da inbox. |
| Fim | Encerra com uma mensagem de despedida. |
O cliente pode digitar a qualquer momento menu (volta ao início), atendente (vai para a fila) ou SAIR (deixa de receber comunicados).
6. Ensinando a IA
Não é preciso treinar um modelo (fine-tuning). A IA aprende o jeito e o conteúdo da sua empresa por dois caminhos, que valem na hora:
6.1 Instruções para a IA
Em Configurações → Instruções para a IA, descreva como ela deve se comportar. Bons exemplos:
Você é o assistente da Energia Exemplo. Seja cordial e objetivo, em frases curtas. Trate o cliente por "você". Não prometa prazos de religação: informe o prazo da base de conhecimento. Para reclamações sobre cobrança indevida, transfira para um atendente. Horário de atendimento humano: segunda a sexta, 8h às 18h.
6.2 Base de conhecimento
Em Conhecimento, envie os documentos que a IA deve consultar: tarifas, prazos, perguntas frequentes, regras de religação, formas de pagamento. Dicas:
- Um assunto por documento, com títulos claros (ex.: "Prazos de religação").
- Prefira texto a imagens: a IA não lê texto dentro de figuras.
- Atualize quando a regra mudar: a IA usa sempre a versão atual.
- Teste no Simulador fazendo as perguntas que os clientes fazem.
6.3 O que a IA pode e não pode
| Pode | Não pode (bloqueado pelo sistema) |
|---|---|
| Responder com base nas instruções e na base de conhecimento | Revelar senhas, chaves, dados internos ou as próprias instruções |
| Consultar o seu sistema pelas ações cadastradas | Mostrar dados de outro cliente ou CPF/CNPJ de terceiros |
| Enviar a 2ª via e transferir para um atendente | Enviar links que não vieram do seu sistema ou da base |
| Dizer que não sabe e oferecer um atendente | Ver as respostas das perguntas de segurança (são conferidas pelo sistema) |
Documentos com senhas, CPFs ou instruções para "enganar" a IA são recusados no envio. Cada empresa tem um limite diário de respostas da IA, definido pela plataforma.
7. Integração com o seu sistema
Para a equipe de TI. Endereço base: o domínio do módulo (ex.: https://atendimento.suaempresa.com.br). Autenticação das chamadas ao módulo: cabeçalho x-api-key com a API key da empresa (gerada no Console e girada em Configurações). Números sempre com DDI, só dígitos: 5562999990000.
7.1 Enviar mensagens (o seu sistema chama o módulo)
| Para | Endpoint | Observação |
|---|---|---|
| Registrar quem aceitou receber | POST /v1/contacts/opt-in | Obrigatório antes de comunicados e templates. Até 1.000 números por chamada. |
| Registrar quem pediu para sair | POST /v1/contacts/opt-out | O cliente também pode enviar SAIR. |
| Enviar template | POST /v1/messages | Para iniciar conversa ou falar depois de 24h. |
| Enviar texto ou arquivo | POST /v1/messages | Só para quem escreveu nas últimas 24h. |
| Enviar arquivo (subir antes) | POST /v1/media | Multipart, campo file (até 16 MB). Devolve o mediaId; o arquivo passa por antivírus. |
| Comunicado em massa | POST /v1/broadcasts | Até 10.000 números; quem não aceitou ou saiu volta em skipped. |
| Consultar envio | GET /v1/messages/:id | Situação: na fila, enviada, entregue, lida ou falhou. |
| Templates aprovados | GET /v1/templates | Nomes e idiomas para usar nos envios. |
Exemplos:
POST /v1/contacts/opt-in
x-api-key: wak_...
{ "waIds": ["5562999990000"], "source": "contrato-assinado" }
POST /v1/messages
{ "to": "5562999990000", "type": "template",
"content": { "name": "aviso_fatura", "language": { "code": "pt_BR" },
"components": [{ "type": "body", "parameters": [
{ "type": "text", "text": "Maria" }, { "type": "text", "text": "R$ 312,40" } ] }] } }
POST /v1/messages (cliente escreveu há menos de 24h)
{ "to": "5562999990000", "type": "text", "content": { "body": "Sua religação foi concluída." } }
POST /v1/broadcasts
{ "to": ["5562999990000", "5562988887777"], "type": "template",
"content": { "name": "manutencao_programada", "language": { "code": "pt_BR" } },
"reference": "manutencao-out-2026" }
Respostas de erro mais comuns: 403 contato sem opt-in ou que pediu para sair · 422 fora da janela de 24h (use template) · 429 limite de envio por minuto ou por dia atingido.
7.2 Endpoints que o seu sistema expõe (o módulo chama o seu sistema)
Durante o atendimento, o módulo faz POST nos endereços cadastrados em Integrações. O modelo de faturas usa três:
| Ação | Endereço sugerido | Recebe | Responde (200 + JSON) |
|---|---|---|---|
identificar_cliente | /identificar-cliente | input.documento (CPF/CNPJ) | { id, nome, telefones, verificacao } ou 404 se não existir |
listar_faturas | /faturas | customer.id | { items: [{ id, referencia, valor, vencimento, status }] } |
segunda_via | /segunda-via | input.faturaId | { pdfUrl, filename, pix?, linhaDigitavel? } |
Toda chamada tem este formato:
POST https://seu-sistema/whatsapp/segunda-via
Authorization: Bearer ... (se você cadastrou uma credencial)
x-timestamp: 1792268000
x-signature-v2: t=1792268000,sha256=<HMAC-SHA256 de "x-timestamp.corpo" com o segredo dos avisos>
{ "action": "segunda_via",
"input": { "faturaId": "f-2026-10" },
"contact": { "waId": "5562999990000", "name": "Maria" },
"customer": { "id": "c1", "nome": "Maria Silva" } }
- Valide a assinatura e recuse chamadas com
x-timestampde mais de 5 minutos. - Use o
customer.idpara buscar os dados, nunca um CPF vindo do texto: assim um cliente não acessa dados de outro. - O
pdfUrlprecisa ser HTTPS público, de preferência um link temporário (expira em minutos). - Responda em até 15 segundos (ajustável em cada ação, de 1 a 60). 404 = não encontrado (o fluxo segue por "se falhar"); outros erros = o bot avisa e chama um atendente.
- Endereços internos (rede local, localhost) são bloqueados por segurança: o endpoint precisa ser HTTPS acessível pela internet, protegido pelo token e pela assinatura.
Você pode criar outras ações (consumo, religação, protocolo) em Integrações: a IA as usa automaticamente, guiada pela descrição de cada uma. Marque "exige cliente identificado" em toda ação que devolve dados pessoais.
7.3 Verificação de identidade
Para não entregar dados a quem só sabe o CPF de outra pessoa, o módulo confere quem está falando, depois que o seu sistema encontra o CPF/CNPJ:
| Situação | O que acontece |
|---|---|
O WhatsApp é um dos telefones do titular | Identificado na hora. |
| É outro número | 2 perguntas de segurança (data de nascimento e mais uma sorteada). Acertou: segue. Errou 2 vezes: vai para um atendente e fica registrado. |
| O cadastro não tem telefone nem dados para perguntar | Vai para um atendente, que confirma a identidade. |
Para isso, o identificar_cliente deve devolver:
{ "id": "c1", "nome": "Maria Silva",
"telefones": ["5562999990000"],
"verificacao": { "dataNascimento": "1985-03-14", "nomeMae": "Ana Souza Silva",
"nomeCompleto": "Maria Aparecida Silva", "cep": "74000-000",
"email": "maria@exemplo.com" } }
Telefones em qualquer formato (com ou sem DDI, 9º dígito ou máscara). As respostas certas não ficam guardadas (só uma impressão digital delas), e as respostas do cliente não passam pela IA. Telefones e dados de verificação são descartados depois da conferência.
7.4 Avisos de eventos (opcional)
Se a empresa informar uma URL de avisos, o módulo envia POST a cada mensagem recebida e a cada mudança de situação de envio (message.received, message.sent, message.delivered, message.read, message.failed), com a mesma assinatura do item 7.2 e o cabeçalho x-event-id. Ignore eventos com id repetido: o módulo tenta de novo por até 8 vezes se o seu sistema estiver fora do ar.
8. Inbox dos atendentes
- Entre em
/inboxcom e-mail, senha e código do autenticador. - Na fila estão as conversas que pediram atendente. Clique numa e em Assumir.
- Responda pelo campo de mensagem; use o clipe para enviar arquivos (imagens, PDF, documentos).
- Ao terminar, Encerrar (a próxima mensagem do cliente abre uma nova conversa) ou Devolver ao bot.
Depois de 24h sem mensagem do cliente, o WhatsApp não permite texto livre: aparece um aviso, e só é possível enviar um template aprovado. Arquivos recebidos passam por antivírus antes de abrir.
9. Segurança e LGPD
| Já vem pronto | A empresa precisa |
|---|---|
| Senha forte, 2FA obrigatório, bloqueio após 5 erros, alertas por e-mail de novo acesso | Guardar os códigos de recuperação e desativar usuários que saem da empresa |
| Mensagens, tokens e credenciais criptografados; antivírus nos arquivos | Proteger os endpoints com token e validar a assinatura (7.2) |
| Verificação de identidade pelo número (7.3) | Enviar telefones e dados de verificação no identificar_cliente |
| Opt-in/opt-out, aviso de privacidade, retenção automática | Registrar o consentimento (/v1/contacts/opt-in) e preencher o aviso de privacidade |
| Exportação e exclusão de dados por cliente | Atender pedidos de titulares em Configurações → Dados de clientes |
| Auditoria de tudo que é alterado no painel | Revisar a aba Governança periodicamente |
Desligar a verificação pelo número exige administrador e avisa os demais por e-mail. Não é recomendado.
10. Problemas comuns
| Sintoma | Causa provável e solução |
|---|---|
| Aviso vermelho "conexão com o WhatsApp" | Token da Meta vencido ou conta restrita. Refaça a conexão pelo link (Console → Gerar link) ou veja o Gerenciador do WhatsApp na Meta. |
| Bot responde "Tive um problema para consultar seus dados" | O endpoint do seu sistema falhou ou recusou a credencial. Confira em Integrações e nos logs do seu sistema. |
| Cliente certo cai nas perguntas de segurança | O número dele não está nos telefones que o seu sistema devolve. Atualize o cadastro. |
Comunicado com muitos números em skipped | Contatos sem opt-in ou que enviaram SAIR. Registre o consentimento antes. |
| Erro 422 ao enviar texto | Passaram 24h desde a última mensagem do cliente. Envie um template. |
| Erro 429 | Limite de envios por minuto ou por dia. Aguarde, ou peça à plataforma para ampliar o limite. |
| Template "rejeitado" | A Meta recusou o conteúdo. Ajuste o texto (sem promessas enganosas, variáveis com exemplos) e envie de novo. |
| Esqueci a senha / perdi o celular | Use um código de recuperação. Sem códigos, peça a outro administrador "Resetar 2FA" em Usuários. |
| Conta bloqueada | 5 tentativas erradas: espere 15 minutos ou peça a um administrador para desbloquear. |
11. Integração com a Meta (operador da plataforma)
Feita uma vez, pela empresa que opera a plataforma. Depois disso, cada empresa cliente só clica no link de conexão (seção 3.2). Tempo total: de 1 a 4 semanas, quase tudo esperando aprovações da Meta.
A Meta muda nomes e posições de menu com frequência. Se uma tela estiver diferente, procure pelo termo em negrito na busca do painel da Meta ou na documentação oficial do WhatsApp.
| Etapa | Onde | Prazo típico |
|---|---|---|
| 1. Conta empresarial e verificação | business.facebook.com | 2 a 10 dias úteis |
| 2. Criar o app | developers.facebook.com | 15 minutos |
| 3. Publicar o sistema com HTTPS | Seu servidor | 1 dia |
| 4. Webhook | Painel do app | 15 minutos |
| 5. Testar com número de teste | Painel do app | 1 hora |
| 6. Embedded Signup | Painel do app | 30 minutos |
| 7. App Review e Tech Provider | Painel do app | 1 a 3 semanas |
| 8. Publicar o app (modo Live) | Painel do app | 5 minutos |
Etapa 1 — Conta empresarial (Meta Business) e verificação
- Acesse business.facebook.com com um perfil pessoal do Facebook de um responsável da empresa (use um perfil real e protegido com 2FA: ele será administrador de tudo).
- Crie o Portfólio empresarial com o nome jurídico da empresa, e-mail corporativo e site.
- Vá em Configurações → Central de segurança → Verificação da empresa e clique em Iniciar verificação.
- Informe razão social, CNPJ, endereço e telefone exatamente como no cartão CNPJ. Envie o documento pedido (cartão CNPJ ou contrato social) e confirme pelo método oferecido (e-mail do domínio, telefone ou documento).
- Ative a autenticação de dois fatores obrigatória para todos os administradores do portfólio.
Dica: o site e o e-mail precisam ser do mesmo domínio da empresa. Divergência de nome ou endereço é a causa mais comum de recusa.
Etapa 2 — Criar o app
- Acesse developers.facebook.com → Meus apps → Criar app.
- Escolha o caso de uso de WhatsApp (ou tipo Empresa/Business) e vincule ao portfólio da etapa 1.
- No app, adicione o produto WhatsApp (se não vier adicionado).
- Em Configurações do app → Básico, preencha: ícone, URL da Política de Privacidade, URL dos Termos de Serviço, categoria e e-mail de contato. Sem a política de privacidade publicada, o App Review é recusado.
- Copie o ID do app e a Chave secreta do app (botão Mostrar) para o
.env.production:META_APP_ID=123456789012345 META_APP_SECRET=a1b2c3... (guarde no cofre; nunca compartilhe)
Etapa 3 — Publicar o sistema com HTTPS
A Meta só envia mensagens para endereço público com HTTPS. Siga SECURITY.md e use o deploy/nginx.conf. Confira antes de continuar:
https://SEU-DOMINIO/health → {"status":"ok"}
Etapa 4 — Webhook (para receber as mensagens)
- No app: WhatsApp → Configuração (ou Configuration) → seção Webhook → Editar.
- URL de callback:
https://SEU-DOMINIO/webhooks/meta - Token de verificação: o valor de
META_WEBHOOK_VERIFY_TOKENdo.env.production(gerado pelonpm run secrets). - Clique em Verificar e salvar. Se falhar: o sistema não está acessível pela internet, o token está diferente ou o HTTPS é inválido.
- Em Campos do webhook, clique em Gerenciar e assine o campo messages.
O sistema recusa qualquer aviso que não venha assinado com a sua META_APP_SECRET. Se as mensagens chegam na Meta mas não no painel, confira se a chave secreta no .env.production é a do mesmo app.
11.1 Etapa 5 — Testar com o número de teste (antes de qualquer aprovação)
- No app: WhatsApp → Configuração da API (ou API Setup). A Meta já oferece um número de teste gratuito.
- Em Para, cadastre até 5 celulares que vão testar (cada um confirma por código no WhatsApp).
- Copie o Identificador do número de telefone (Phone number ID) e o Identificador da conta do WhatsApp Business (WABA ID).
- Gere um token permanente: no portfólio, Configurações → Usuários do sistema → Adicionar (função Administrador), atribua o app e a conta do WhatsApp, e em Gerar token marque
whatsapp_business_messagingewhatsapp_business_management, validade Nunca. O token temporário da tela de API expira em 24h: não use em produção. - No Console da plataforma (
/admin), crie uma empresa de teste e informe esses dados porPATCH /admin/tenants/<id>(ou peça à TI):{ "wabaId": "...", "phoneNumberId": "...", "accessToken": "EAAG..." } - Do celular cadastrado, mande "oi" para o número de teste. A conversa deve aparecer no bot e na inbox. Teste o fluxo de faturas, a IA e o atendimento humano.
Etapa 6 — Embedded Signup (para cada empresa conectar o próprio número)
- No app, adicione o produto Login do Facebook para Empresas (Facebook Login for Business).
- Em Login do Facebook para Empresas → Configurações, adicione o domínio em Domínios permitidos para o SDK JavaScript e URIs de redirecionamento OAuth válidos:
https://SEU-DOMINIO/. - Em Configurações → Criar configuração: tipo de login WhatsApp Embedded Signup, tipo de token Token de acesso do usuário do sistema, ativos Contas do WhatsApp Business, permissões
whatsapp_business_messagingewhatsapp_business_management. - Copie o ID da configuração para o
.env.production:META_ES_CONFIG_ID=... - Teste: no Console, Gerenciar → Gerar link de conexão do WhatsApp, abra o link e conecte um número. (Enquanto o app não for aprovado, só pessoas com função no app conseguem concluir.)
11.2 Etapa 7 — App Review e Tech Provider
Para que outras empresas conectem o número delas pelo seu app, a Meta precisa aprovar o acesso avançado às permissões e o cadastro como Tech Provider (provedor de tecnologia).
- No app: Revisão do app → Permissões e recursos. Solicite Acesso avançado a
whatsapp_business_messagingewhatsapp_business_management(ebusiness_management, se pedido). - Para cada permissão, descreva o uso (texto sugerido abaixo) e envie um vídeo.
- Conclua o cadastro de Tech Provider quando a Meta solicitar (aparece no painel do app ou na seção WhatsApp; exige a empresa verificada da etapa 1).
- Acompanhe em Revisão do app → Solicitações. Se recusarem, a Meta diz o motivo; ajuste e reenvie.
Texto sugerido para a descrição do uso:
Somos uma plataforma de atendimento pelo WhatsApp para empresas de energia e serviços. Cada empresa cliente conecta o próprio número pelo Embedded Signup e paga a Meta diretamente. whatsapp_business_management: usamos para listar e criar modelos de mensagem (templates) da conta do cliente e inscrever nosso app nos webhooks da conta conectada. whatsapp_business_messaging: usamos para enviar e receber mensagens em nome da empresa cliente: respostas do atendimento automático (2ª via de fatura), atendimento humano pela nossa inbox e comunicados para clientes que deram consentimento (opt-in), com opção de saída (SAIR). Os dados ficam criptografados, com controle de acesso por usuário e 2FA.
Roteiro do vídeo (gravação de tela, 3 a 5 minutos, sem cortes nos momentos-chave, áudio ou legendas em inglês ajudam):
| Tempo | O que mostrar | Permissão que comprova |
|---|---|---|
| 0:00–0:30 | Tela inicial do sistema e explicação em uma frase: plataforma de atendimento WhatsApp para empresas. | — |
| 0:30–1:30 | Console → Gerar link de conexão → abrir o link → login no Facebook → escolher a conta e o número → conexão concluída. | Embedded Signup / management |
| 1:30–2:15 | Painel → Templates: criar um template e mostrar a lista com a situação de aprovação. | management |
| 2:15–3:15 | Celular ao lado da tela: cliente manda "oi", o bot responde, pede 2ª via, recebe o PDF. | messaging (receber e enviar) |
| 3:15–4:00 | Cliente pede atendente; na inbox, o atendente assume e responde; a resposta chega no celular. | messaging |
| 4:00–4:30 | Cliente envia SAIR e recebe a confirmação; mostrar a política de privacidade. | consentimento |
Dicas: use dados fictícios (o ERP de teste do sistema serve), mostre a URL do navegador, não exiba tokens nem senhas na tela e use o número de teste da etapa 5.
Etapa 8 — Publicar o app
- Com o App Review aprovado, no topo do painel do app mude o Modo do app de Desenvolvimento para Ao vivo (Live).
- Teste o link de conexão com uma empresa cliente real.
- Pronto: a partir daqui, para cada nova empresa basta o Console (seção 3.1).
Erros comuns na Meta
| Mensagem ou sintoma | Solução |
|---|---|
| Verificação da empresa recusada | Nome, CNPJ e endereço precisam ser idênticos ao cartão CNPJ; site e e-mail do mesmo domínio. |
| "Não foi possível validar a URL de callback" | Sistema fora do ar, sem HTTPS válido, ou token de verificação diferente do .env.production. |
| Número já registrado no WhatsApp | O número está no app comum do celular: apague a conta do WhatsApp nele (ou migre do WhatsApp Business App) antes de conectar. |
| Mensagens não chegam no painel | Campo messages não assinado no webhook, ou a META_APP_SECRET não é a deste app. No número de teste (conectado à mão, sem o link), inscreva o app na conta: POST https://graph.facebook.com/v25.0/<WABA ID>/subscribed_apps com o token. Pelo link de conexão isso é automático. |
| Aviso vermelho "token inválido" no painel | Token temporário expirou ou foi revogado: gere o token permanente de usuário do sistema (etapa 5). |
| App Review recusado por falta de demonstração | O vídeo precisa mostrar cada permissão funcionando de ponta a ponta, com o celular recebendo a mensagem. |