> 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/sip.md).

# SIP

## SIP

O DigiCalls expõe um **registrar SIP** por device WhatsApp. Softphones, PABX (FreePBX) e **sip.js** no navegador podem registrar e originar/receber chamadas via tronco SIP.

### Arquitetura

```
PABX / softphone  ←SIP/RTP→  DigiCalls  ←WhatsApp→  Contato
sip.js (WSS)      ←WebRTC→   DigiCalls  ←WhatsApp→  Contato
```

### Modos

| Cliente             | Transporte                   | Mídia           |
| ------------------- | ---------------------------- | --------------- |
| Softphone / FreePBX | UDP SIP (porta configurável) | G.711 PCMU/PCMA |
| sip.js (browser)    | WebSocket `wss://host/sipws` | WebRTC (Opus)   |

### Habilitar no device

1. Painel DigiCalls → device → **Tronco SIP**
2. Ative SIP, defina **username** e **password** únicos
3. Registre no PABX ou softphone

API:

```
GET  /api/sessions/{sid}/sip-config
PUT  /api/sessions/{sid}/sip-config
```

Resposta inclui `sipServer`, `wsServer`, `registered`.

### Variáveis de ambiente (servidor)

| Variável                    | Função                    |
| --------------------------- | ------------------------- |
| `WACALLS_SIP_ENABLE`        | `1` liga o gateway        |
| `WACALLS_SIP_PORT`          | Porta UDP SIP (ex.: 8045) |
| `WACALLS_SIP_PUBLIC_IP`     | IP anunciado no SDP       |
| `WACALLS_SIP_WS_PUBLIC_URL` | URL WSS para sip.js       |

### Chamadas recebidas

WhatsApp → DigiCalls → **INVITE** para cliente SIP registrado (se habilitado).

### Chamadas originadas

Cliente SIP **INVITE** → DigiCalls disca no WhatsApp do device autenticado.

### Canais simultâneos

A conta SIP funciona como um **tronco com N canais**: aceita **várias chamadas ao mesmo tempo** (entrada e saída), cada uma como um diálogo/chamada independente.

* **N = "Ligações simultâneas"** do usuário dono do device, definido pelo admin na tela de **Usuários** e limitado ao teto da licença (campo `ligacoes`; padrão 8).
* Até **N** chamadas simultâneas passam. A **N+1** é recusada com **`486 Busy Here`** — o PABX/softphone trata como "sem canais disponíveis".
* Vale para os dois sentidos: originadas (INVITE do PABX) e recebidas (WhatsApp → INVITE para o cliente registrado).

{% hint style="info" %}
**Nota:** o DigiCalls permite N canais no seu lado; completar várias chamadas **simultâneas na mesma linha WhatsApp** depende da plataforma do WhatsApp. Canais para **números diferentes** têm maior chance de completar em paralelo.
{% endhint %}

Próximo: Autenticação.
