---
title: "Verbinden via SIP (geen telefoonnummer)"
description: "Stuur oproepen rechtstreeks vanuit je PBX, provider of SIP-applicatie naar een ThunderPhone-spraakagent, met een eenmalige SIP-URI per oproep of een permanent SIP-adres."
---

Als je eigen systeem al telefoonnummers verwerkt (een PBX, een contactcenterplatform of een carrieraccount waarin je nummers roteert), kun je oproepen via gewone SIP naar een ThunderPhone-spraakagent sturen. Je importeert of koopt geen nummer op ThunderPhone. Je systeem belt een SIP-adres en de agent neemt op.

Er zijn twee soorten SIP-adressen:

| | **SIP-URI per oproep** | **SIP-endpoint** |
|---|---|---|
| Ziet eruit als | `sip:c-<token>@sip.thunderphone.com` | `sip:agent-<id>-<letters>@sip.thunderphone.com` |
| Gemaakt met | `POST /v1/calls/register-sip`, één keer per oproep | `POST /v1/sip-endpoints`, één keer |
| Authenticatie | Het eenmalige token in het adres | SIP-digestgebruikersnaam + wachtwoord (en optioneel een toestaanlijst voor bron-IP's) |
| Geschikt voor | Apps die al een API aanroepen voordat ze een oproep doorverbinden; variabelen per oproep | PBX'en en carriers die gewoon een trunk naar ThunderPhone moeten wijzen |
| Geldig voor | 5 minuten, één oproep | Tot je het verwijdert |

Beide typen routeren naar één agent in je organisatie en worden in de Oproepgeschiedenis weergegeven zoals elke andere inkomende oproep.

## SIP-URI per oproep

### 1. Registreer de oproep

```bash
curl -X POST https://api.thunderphone.com/v1/calls/register-sip \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": 12,
    "to_number": "+14155550142",
    "variables": {"customer_name": "Ada"}
  }'
```

```json
{
  "call_id": 862197007562,
  "sip_uri": "sip:c-1790372992.Qm3xT8vLk2PzR7nYw4HbJa.uF6sD1gK9eW2cX5vB8nM0q@sip.thunderphone.com",
  "expires_at": "2026-09-25T21:49:52Z",
  "agent_id": 12,
  "to_number": "+14155550142"
}
```

- `to_number` (optioneel) is het nummer dat de beller aan jouw kant heeft gebeld. Het wordt opgeslagen als bestemming van de oproep in de Oproepgeschiedenis, en de agent ziet het als zijn eigen nummer.
- `variables` (optioneel) vullen `{{placeholders}}` in de prompt van de agent, op dezelfde manier als bij [uitgaande oproepen](/nl/guides/call-variables).
- `call_id` is de id die de oproep in de Oproepgeschiedenis krijgt (`GET /v1/calls/{call_id}`) zodra deze verbinding maakt.

### 2. Bel de URI

Stuur de oproep binnen 5 minuten naar `sip_uri`. De URI werkt slechts voor één oproep: zodra een oproep deze heeft gebruikt, is deze verbruikt, zelfs als die oproep snel eindigt.

Met Twilio retourneer je bijvoorbeeld deze TwiML voor de oproep die je wilt doorverbinden:

```xml
<Response>
  <Dial>
    <Sip>sip:c-1790372992.Qm3xT8vLk2PzR7nYw4HbJa.uF6sD1gK9eW2cX5vB8nM0q@sip.thunderphone.com;transport=tcp</Sip>
  </Dial>
</Response>
```

Bel de URI vanuit een PBX als SIP-bestemming. Er zijn geen gebruikersnaam of wachtwoord nodig; het token is de inloggegevens, dus behandel de URI als een wachtwoord totdat deze is gebruikt.

## SIP-eindpunt (permanent adres)

### 1. Maak het eindpunt

```bash
curl -X POST https://api.thunderphone.com/v1/sip-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"agent_id": 12, "name": "Main PBX"}'
```

```json
{
  "id": 7,
  "name": "Main PBX",
  "agent_id": 12,
  "sip_uri": "sip:agent-12-jhxmginwjx@sip.thunderphone.com",
  "username": "tp409667538f83",
  "password": "8mJ0…",
  "allowed_source_cidrs": [],
  "status": "active",
  "created_at": "2026-09-25T21:46:18Z"
}
```

<Warning>
  Het `password` wordt slechts één keer geretourneerd, wanneer het eindpunt wordt aangemaakt. Sla het
  direct op in je PBX- of carrierconfiguratie. Als je het kwijtraakt, roteer je het
  met `POST /v1/sip-endpoints/{id}/rotate-password`.
</Warning>

### 2. Koppel je systeem eraan

Configureer een SIP-trunk of bestemming met:

| Instelling | Waarde |
|---|---|
| SIP-URI | de `sip_uri` van het eindpunt |
| Gebruikersnaam / wachtwoord | `username` / `password` (digest-authenticatie; ThunderPhone daagt elke oproep uit) |
| Transport | TCP op poort 5060 of TLS op poort 5061 (aanbevolen), of UDP op poort 5060 |
| Codecs | G.711 (PCMU/PCMA) of G.722 |

<Note>
  Geef de voorkeur aan TCP of TLS. UDP werkt vanaf openbare adressen en vanuit de meeste NATs, maar
  achter een "symmetrische" NAT (die voor elke bestemming een nieuwe poort gebruikt) kunnen
  beëindigingen en doorverbindingen van de agent je systeem mogelijk niet bereiken. Een
  toelatingslijst voor bron-IP's (hieronder) vereist ook TCP of TLS. Via TLS blijft SIP-signalering
  ook na `sip.thunderphone.com` versleuteld, helemaal tot aan de servers die
  de oproep afhandelen.
</Note>

Deze transport- en codecinstellingen gelden ook voor URI's per oproep. Twee netwerkdetails
zijn belangrijk voor beide soorten adressen:

- **Volg Record-Route.** Na de eerste INVITE gaat de rest van de signalering van de
  oproep (ACK, beëindiging, doorverbindingen) naar de specifieke ThunderPhone-server
  die antwoordde, die wordt vermeld in de `Record-Route`-header
  (`sip-1.thunderphone.com` of `sip-2.thunderphone.com`, of het IP-adres daarvan).
  Als je uitgaande SIP beperkt, sta deze hosts dan ook toe naast
  `sip.thunderphone.com`: `172.170.39.202` (`sip`), `13.86.104.121`
  (`sip-1`) en `20.80.98.90` (`sip-2`).
- **Audio gaat elders naartoe.** `sip.thunderphone.com` verwerkt alleen signalering.
  Sta media (RTP) toe naar de adressen en poorten in het SDP-antwoord.

Elke oproep naar het adres bereikt de agent van het eindpunt, ongeacht welk nummer je
beller aan jouw kant heeft gebeld. Je importeert nooit nummers, dus het roteren ervan aan jouw
kant vereist geen wijziging in ThunderPhone.

### Geef het gebelde nummer door (optioneel)

Om vast te leggen welk van je nummers de beller heeft gebeld, stuur je het in de INVITE mee in een
`X-Original-To`-header (bijvoorbeeld `X-Original-To: +14155550142`) of in een
standaard `Diversion`-header. ThunderPhone slaat het op als bestemming van de oproep.

De bestemming wordt in deze volgorde gekozen: de `to_number` die is opgegeven toen een URI
per oproep werd geregistreerd, daarna een nummer in `X-Original-To`, vervolgens een nummer in
`Diversion`. Als geen hiervan een nummer oplevert, wordt voor een eindpunt
`sip:agent-12-jhxmginwjx` (het adres van het eindpunt) weergegeven, of `sip:call` voor een URI per oproep.

Met Twilio kun je de header aan de SIP-URI toevoegen:
`sip:agent-12-jhxmginwjx@sip.thunderphone.com;transport=tcp?X-Original-To=%2B14155550142`.

### Beperk bron-IP's (optioneel)

Stel `allowed_source_cidrs` in om naast de gebruikersnaam en het wachtwoord alleen oproepen
vanaf je eigen signaleringsadressen te accepteren:

```bash
curl -X PATCH https://api.thunderphone.com/v1/sip-endpoints/7 \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"allowed_source_cidrs": ["203.0.113.0/28"]}'
```

Oproepen vanaf elk ander adres worden geweigerd voordat ze de agent bereiken. Gebruik de
adressen vanwaar je systeem SIP-signalering verstuurt (voor een carrier zoals Twilio:
de gepubliceerde IP-bereiken voor signalering), niet je media-adressen.

<Warning>
  De toelatingslijst wordt alleen gecontroleerd voor oproepen via TCP of TLS. Een UDP-bronadres
  kan worden vervalst, dus een eindpunt met een toelatingslijst weigert elke oproep die
  via UDP binnenkomt. Stuur oproepen ernaartoe met `;transport=tcp` (poort 5060) of via
  TLS (poort 5061).
</Warning>

## Wat bellers en je systeem zien

- **Beller-ID:** het gebruikersgedeelte van de `From`-header wordt opgeslagen als de beller.
  Een telefoonnummer (cijfers, optioneel met `+`, spaties, streepjes, punten of
  haakjes) wordt genormaliseerd naar E.164; al het andere, zoals een SIP-gebruikersnaam,
  blijft zoals verzonden. Er worden maximaal 32 tekens bewaard en een ontbrekende beller wordt opgeslagen
  als `anonymous`.
- **Geweigerde oproepen:** een onbekende of verlopen URI per oproep krijgt SIP
  `404 Not Found`. Een al gebruikte URI per oproep, een uitgeschakeld eindpunt of een
  bron buiten de allowlist (inclusief elke UDP-oproep naar een eindpunt met een
  allowlist) wordt verbroken voordat de agent start: je systeem kan zien dat de
  oproep mislukt, of dat deze verbinding maakt en direct weer eindigt. Deze weigeringen maken
  geen item in de oproepgeschiedenis aan. Als je organisatie onvoldoende tegoed heeft of
  de bestedingslimiet heeft bereikt, wordt de oproep geweigerd en verschijnt deze in de oproepgeschiedenis als
  een mislukte oproep zonder kosten. Registreer een nieuwe URI om een poging per oproep opnieuw te proberen.
- **Doorverbindingen:** koude doorverbindingen van de agent werken (ThunderPhone stuurt een SIP
  `REFER`, die je systeem moet accepteren). Warme doorverbindingen zijn niet beschikbaar voor oproepen naar SIP-adressen,
  omdat er geen ThunderPhone-nummer is dat als beller-ID voor het tweede
  gesprek kan worden weergegeven. Met Twilio verbindt de bovenstaande TwiML de agent, maar
  verwerkt deze geen doorverbindingen: voeg `referUrl="https://YOUR_SERVER/sip-transfer"`
  toe aan de `<Dial>`, en laat die webhook `ReferTransferTarget` lezen en
  TwiML retourneren die het doorverbindingsdoel belt (zie Twilio's
  [SIP REFER-handleiding](https://www.twilio.com/docs/voice/api/refer-to-twilio)).
- **Sms-berichten:** het SIP-adres en het gekozen nummer kunnen geen sms-berichten versturen.
  De agent kan tijdens een oproep naar een SIP-adres alleen sms'en als deze een afzonderlijk
  sms-geschikt nummer heeft dat is ingesteld voor sms'en; anders is de sms-tool
  niet beschikbaar.
- **Registratie:** ThunderPhone accepteert geen SIP `REGISTER`. Stuur oproepen naar
  het adres; registreer je er niet op.

## Prijzen

Oproepen naar SIP-adressen worden gefactureerd tegen het normale tarief per minuut van de agent. Er zijn
geen kosten voor een telefoonnummer, omdat geen ThunderPhone-nummer de oproep afhandelt. Je
eigen provider factureert zijn deel van de oproep zoals gebruikelijk. Zie
[Prijzen](/nl/guides/pricing).

## Testen

1. Maak een URI per oproep of een eindpunt zoals hierboven.
2. Bel dit vanuit je systeem, of vanaf een SIP-softphone (voer voor een eindpunt
   de gebruikersnaam en het wachtwoord in).
3. Open na het ophangen de oproep onder **Oproepen** in het dashboard, of haal deze op
   met `GET /v1/calls/{call_id}`. Je ziet de beller, de bestemming
   (zie de volgorde onder "Geef het gekozen nummer door") en het transcript.

API-details: [API-referentie voor SIP-adressen](/api-reference/sip-addresses).
