> For the complete documentation index, see [llms.txt](https://digitalsac.gitbook.io/digicalls/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://digitalsac.gitbook.io/digicalls/webhook/webhook-meta-waba.md).

# Webhook Meta (WABA)

Webhook **entrante** da Meta para dispositivos **oficiais (WABA)**. Não confundir com webhook de integração para o seu CRM.

### Endpoints

| Método | URL                     | Função                           |
| ------ | ----------------------- | -------------------------------- |
| `GET`  | `/api/official/webhook` | Verificação (hub.challenge)      |
| `POST` | `/api/official/webhook` | Eventos de chamada (e mensagens) |

### Configuração no App Meta

1. [developers.facebook.com](https://developers.facebook.com) → seu App → WhatsApp → Configuration
2. **Callback URL:** `https://SEU_DOMINIO/api/official/webhook`
3. **Verify token:** o token da conexão no DigiCalls (painel → device oficial → Webhook)
4. Assinar campo **`calls`**
5. Para permissão de ligação via template, assine também **`messages`**

### Por conexão (multi-tenant)

Cada device oficial pode ter:

* **Verify Token** próprio (aceito no GET handshake)
* **App Secret** próprio (valida `X-Hub-Signature-256` no POST)

Se vazio, usa fallback global (`WACALLS_META_VERIFY_TOKEN`, `WACALLS_META_APP_SECRET`).

### App Secret

Obtido em: App Dashboard → **Configurações → Básico → Chave secreta do app**.

Cole no painel DigiCalls (campo App Secret). Armazenado criptografado.

### Fluxo inbound (resumo)

```
Meta POST webhook (connect + SDP offer)
  → DigiCalls valida assinatura
  → Roteia por phone_number_id
  → Operador vê chamada recebida (SSE)
  → Accept → pre_accept + accept na Graph API
  → Áudio WebRTC
```

### Fluxo outbound

```
Operador startCall
  → Graph API connect(SDP offer)
  → Meta POST webhook (SDP answer)
  → Mídia conectada
```

### Segurança

* POST inválido sem assinatura HMAC → **403**
* HTTPS obrigatório em produção
* Meta reenvia eventos — DigiCalls deduplica por call ID

### Troubleshooting

| Problema             | Causa                                        |
| -------------------- | -------------------------------------------- |
| Webhook não verifica | Verify token diferente                       |
| 403 no POST          | App Secret errado                            |
| Liga sem áudio       | Webhook não chega ao servidor (firewall/DNS) |
| Outbound falha       | Sem permissão de ligação (138006)            |

Veja WABA oficial.
