> 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/digicalls-sdk/chamadas/chamadas-recebidas.md).

# Chamadas recebidas

Quando alguém liga para o WhatsApp pareado, o backend publica evento SSE `incoming` e o SDK emite `onOffer`.

### Fluxo

```typescript
dc.onOffer(async (offer) => {
  console.log("Recebida de", offer.peer.phone);

  const call = await offer.accept();
  call.onEnd(({ reason }) => console.log("Fim:", reason));
});
```

### Classe `Offer`

| Propriedade  | Descrição                |
| ------------ | ------------------------ |
| `sessionId`  | Sessão DigiCalls         |
| `callId`     | ID da chamada            |
| `peer.phone` | Número do chamador       |
| `token`      | Device token que recebeu |

#### `accept()`

Atende a chamada: `POST /accept`, captura microfone, negocia WebRTC. Retorna `Call`.

#### `reject()`

Recusa: `POST /reject`.

### Eventos SSE relacionados

| Evento             | Quando                   |
| ------------------ | ------------------------ |
| `incoming`         | Nova oferta              |
| `incoming-claimed` | Outro operador assumiu   |
| `call-status`      | `connected` após atender |
| `call-ended`       | Encerrada                |
| `call-peer`        | Nome/foto resolvidos     |

### Múltiplos operadores

O DigiCalls usa **claim** por `clientId` (header `X-Client-Id` ou query no SSE). Apenas um operador atende cada chamada; os demais recebem `incoming-claimed`.

### SIP

Se o device tem **SIP habilitado** e registrado, chamadas recebidas podem tocar no softphone/PABX em paralelo — veja SIP.

### Exemplo com UI

```typescript
dc.onOffer((offer) => {
  showModal({
    phone: offer.peer.phone,
    onAccept: () => offer.accept().then(handleActiveCall),
    onReject: () => offer.reject(),
  });
});
```

Próximo: Chamada ativa.
