WhatsApp Templates NooviChat custom

Gerencie templates do WhatsApp Business (Marketing, Utility, Authentication) diretamente pela API do NooviChat — sem entrar no Facebook Business Manager.

Feature exclusiva NooviChat. O Chatwoot upstream fornece apenas sincronizacao read-only de templates; a NooviChat adiciona CRUD completo + UI dedicada em Settings, funcionando como proxy autenticado para a Meta Graph API v21.0.

Visao Geral

Pre-requisitos

  • Inbox do tipo Channel::Whatsapp com provider = "whatsapp_cloud"
  • Credenciais Meta na inbox (provider_config.api_key + business_account_id)
  • Agent API token valido (header api_access_token)
  • Operacoes de escrita (create/update/delete/sync) exigem role administrator

Endpoint Base

text
https://<sua-instancia>/api/v1/accounts/:account_id/whatsapp_templates

Autenticacao

http
api_access_token: <seu-agent-token>
Content-Type: application/json

Listar Templates

GET/api/v1/accounts/:account_id/whatsapp_templates

Lista todos os templates do inbox (permitido para qualquer membro autenticado da conta)

Query params

NomeTipoObrigatorioDescricao
inbox_id(query)integerSimID do inbox WhatsApp Cloud
status(query)stringNaoAPPROVED | PENDING | REJECTED | IN_APPEAL
category(query)stringNaoMARKETING | UTILITY | AUTHENTICATION
search(query)stringNaoBusca fulltext
limit(query)integerNaoMax 100 (default)

Exemplo

bash
curl -s "https://<instancia>/api/v1/accounts/4/whatsapp_templates?inbox_id=3&status=APPROVED" \
  -H "api_access_token: $NOOVICHAT_AGENT_TOKEN"
200Lista de templates (passthrough Meta Graph API)
json
{
  "data": [
    {
      "id": "1234567890",
      "name": "welcome_marketing",
      "language": "pt_BR",
      "status": "APPROVED",
      "category": "MARKETING",
      "components": [
        { "type": "HEADER", "format": "TEXT", "text": "Ola, {{1}}!" },
        { "type": "BODY", "text": "Bem-vindo a nossa loja." },
        { "type": "FOOTER", "text": "Noovi" }
      ]
    }
  ],
  "paging": { "cursors": { "before": "...", "after": "..." } }
}

Obter Template

GET/api/v1/accounts/:account_id/whatsapp_templates/:id

Retorna um template pelo ID Meta (nao pelo nome). Requer inbox_id na query.

Criar Template

POST/api/v1/accounts/:account_id/whatsapp_templates

Submete novo template para aprovacao Meta. Admin-only.

Validacao server-side (antes de bater na Meta): name lowercase alfanumerico + underscores (max 512), language BCP-47 (pt_BR, en_US), category MARKETING|UTILITY|AUTHENTICATION, components max 10 (BODY text max 1024, HEADER/FOOTER max 60).

bash
curl -s -X POST "https://<instancia>/api/v1/accounts/4/whatsapp_templates" \
  -H "api_access_token: $NOOVICHAT_AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "inbox_id": 3,
    "template": {
      "name": "order_shipped",
      "language": "pt_BR",
      "category": "UTILITY",
      "components": [
        { "type": "BODY", "text": "Seu pedido {{1}} foi enviado!" }
      ]
    }
  }'
201Template submetido (fica PENDING ate Meta aprovar)
json
{
  "id": "999888777",
  "status": "PENDING",
  "category": "UTILITY"
}

Atualizar Template

PUT/api/v1/accounts/:account_id/whatsapp_templates/:id

Meta permite alterar apenas category e components de templates aprovados. Admin-only.

Deletar Template

DELETE/api/v1/accounts/:account_id/whatsapp_templates/:id

Remocao por nome (limitacao Meta). Passe template_name na query. :id pode ser 0. Admin-only.

Sincronizar com Meta

POST/api/v1/accounts/:account_id/whatsapp_templates/sync

Forca refresh imediato do cache local com estado atual na Meta. Admin-only.

bash
curl -s -X POST "https://<instancia>/api/v1/accounts/4/whatsapp_templates/sync" \
  -H "api_access_token: $NOOVICHAT_AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"inbox_id": 3}'

Rate Limits

Throttled por account_id para evitar abuse que comprometa a quota Meta da sua conta WhatsApp Business:

NomeTipoObrigatorioDescricao
create (POST)10 / horaNaoCriacao de templates novos
update (PUT)30 / horaNaoEdicao de category/components
delete (DELETE)30 / horaNaoRemocao
sync (POST /sync)5 / 5 minNaoRefresh de cache
list + get (GET)ilimitadoNaoLeitura (cache Meta)

Erros comuns

NomeTipoObrigatorioDescricao
401UnauthorizedNaoToken invalido ou ausente
403ForbiddenNaoNao e admin OU inbox nao e WhatsApp Cloud
404Not FoundNaoInbox fora da conta (multi-tenant) OU id invalido na Meta
422UnprocessableNaoValidacao de payload falhou (category/language/name/components)
429Too Many RequestsNaoRate limit atingido
502Bad GatewayNaoFalha de comunicacao com Meta Graph API
Integracao n8n: o node @nooviai/n8n-nodes-noovichat v0.6.0+ expoe o recurso whatsappTemplate com as 6 operacoes (list, get, create, update, delete, sync) para uso direto em workflows.