---
title: "Połącz przez SIP (bez numeru telefonu)"
description: "Kieruj połączenia do agenta ThunderPhone bezpośrednio z centrali PBX, sieci operatora lub aplikacji SIP, używając jednorazowego identyfikatora URI SIP dla każdego połączenia albo stałego adresu SIP."
---

Jeśli Twój własny system już obsługuje numery telefonów (PBX, platforma contact center lub konto u operatora, na którym rotujesz numery), możesz kierować połączenia do agenta ThunderPhone przez zwykły SIP. Nie importujesz ani nie kupujesz numeru w ThunderPhone. Twój system wybiera adres SIP, a agent odbiera.

Istnieją dwa rodzaje adresów SIP:

| | **SIP URI dla pojedynczego połączenia** | **Punkt końcowy SIP** |
|---|---|---|
| Wygląda jak | `sip:c-<token>@sip.thunderphone.com` | `sip:agent-<id>-<letters>@sip.thunderphone.com` |
| Tworzony za pomocą | `POST /v1/calls/register-sip`, raz dla każdego połączenia | `POST /v1/sip-endpoints`, jednorazowo |
| Uwierzytelnianie | Jednorazowy token w adresie | Nazwa użytkownika i hasło SIP digest (oraz opcjonalnie lista dozwolonych źródłowych adresów IP) |
| Dobre rozwiązanie dla | Aplikacji, które już wywołują API przed przekazaniem połączenia; zmiennych dla pojedynczego połączenia | Central PBX i operatorów, którzy powinni po prostu „skierować trunk” do ThunderPhone |
| Ważny przez | 5 minut, jedno połączenie | Do czasu usunięcia |

Oba rodzaje kierują do jednego agenta w Twojej organizacji i oba pojawiają się w historii połączeń jak każde inne połączenie przychodzące.

## SIP URI dla pojedynczego połączenia

### 1. Zarejestruj połączenie

```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` (opcjonalnie) to numer, który rozmówca wybrał po Twojej stronie. Jest
  przechowywany jako numer docelowy połączenia w historii połączeń, a agent widzi go jako
  własny numer.
- `variables` (opcjonalnie) wypełniają `{{placeholders}}` w prompcie agenta,
  tak samo jak w przypadku [połączeń wychodzących](/pl/guides/call-variables).
- `call_id` to identyfikator, który połączenie będzie miało w historii połączeń
  (`GET /v1/calls/{call_id}`) po nawiązaniu połączenia.

### 2. Wybierz URI

Wyślij połączenie do `sip_uri` w ciągu 5 minut. URI działa tylko dla jednego połączenia:
gdy połączenie go użyje, zostaje wykorzystany, nawet jeśli to połączenie szybko się zakończy.

Na przykład w Twilio zwróć ten TwiML dla połączenia, które chcesz przekazać:

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

Z centrali PBX wybierz URI jako docelowy adres SIP. Nie jest potrzebna nazwa użytkownika ani hasło;
token jest poświadczeniem, więc traktuj URI jak hasło, dopóki nie zostanie
użyty.

## Punkt końcowy SIP (stały adres)

### 1. Utwórz punkt końcowy

```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>
  `password` jest zwracane tylko raz, podczas tworzenia punktu końcowego. Od razu zapisz je
  w konfiguracji centrali PBX lub operatora. Jeśli je utracisz, zmień je za pomocą
  `POST /v1/sip-endpoints/{id}/rotate-password`.
</Warning>

### 2. Skieruj do niego swój system

Skonfiguruj trunk SIP lub miejsce docelowe z następującymi ustawieniami:

| Ustawienie | Wartość |
|---|---|
| URI SIP | `sip_uri` punktu końcowego |
| Nazwa użytkownika / hasło | `username` / `password` (uwierzytelnianie digest; ThunderPhone uwierzytelnia każde połączenie) |
| Transport | TCP na porcie 5060 lub TLS na porcie 5061 (zalecane), albo UDP na porcie 5060 |
| Kodeki | G.711 (PCMU/PCMA) lub G.722 |

<Note>
  Preferuj TCP lub TLS. UDP działa z adresów publicznych i z większości NAT-ów, ale
  za „symetrycznym” NAT-em (który używa nowego portu dla każdego miejsca docelowego)
  rozłączenia i przekierowania wykonywane przez agenta mogą nie docierać do Twojego systemu. Lista
  dozwolonych źródłowych adresów IP (poniżej) również wymaga TCP lub TLS. W przypadku TLS sygnalizacja SIP pozostaje
  zaszyfrowana także po przejściu przez `sip.thunderphone.com`, aż do serwerów
  obsługujących połączenie.
</Note>

Te ustawienia transportu i kodeków dotyczą również URI dla poszczególnych połączeń. Dwa szczegóły sieciowe
są istotne dla obu rodzajów adresów:

- **Przestrzegaj Record-Route.** Po pierwszym INVITE pozostała część
  sygnalizacji połączenia (ACK, rozłączenie, przekierowania) trafia do konkretnego serwera ThunderPhone,
  który odpowiedział i jest wskazany w nagłówku `Record-Route`
  (`sip-1.thunderphone.com` lub `sip-2.thunderphone.com` albo jego adres IP).
  Jeśli ograniczasz wychodzący SIP, zezwól na te hosty oraz
  `sip.thunderphone.com`: `172.170.39.202` (`sip`), `13.86.104.121`
  (`sip-1`) i `20.80.98.90` (`sip-2`).
- **Audio jest przesyłane gdzie indziej.** `sip.thunderphone.com` obsługuje wyłącznie sygnalizację.
  Zezwól na media (RTP) do adresów i portów wskazanych w odpowiedzi SDP.

Każde połączenie na ten adres trafia do agenta punktu końcowego, niezależnie od numeru wybranego przez
rozmówcę po Twojej stronie. Nigdy nie importujesz numerów, więc ich rotacja po Twojej stronie nie wymaga
żadnych zmian w ThunderPhone.

### Przekaż wybrany numer (opcjonalnie)

Aby rejestrować, który z Twoich numerów wybrał rozmówca, wyślij go w INVITE w
nagłówku `X-Original-To` (na przykład `X-Original-To: +14155550142`) albo w
standardowym nagłówku `Diversion`. ThunderPhone zapisuje go jako miejsce docelowe połączenia.

Miejsce docelowe jest wybierane w następującej kolejności: `to_number` podany podczas rejestracji URI
dla poszczególnego połączenia, następnie numer w `X-Original-To`, a potem numer w `Diversion`.
Jeśli żadne z nich nie zawiera numeru, dla punktu końcowego wyświetlane jest
`sip:agent-12-jhxmginwjx` (adres punktu końcowego), a dla URI dla poszczególnego połączenia — `sip:call`.

W Twilio możesz dodać nagłówek do URI SIP:
`sip:agent-12-jhxmginwjx@sip.thunderphone.com;transport=tcp?X-Original-To=%2B14155550142`.

### Ogranicz źródłowe adresy IP (opcjonalnie)

Ustaw `allowed_source_cidrs`, aby poza nazwą użytkownika i hasłem akceptować połączenia
wyłącznie z własnych adresów sygnalizacyjnych:

```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"]}'
```

Połączenia z każdego innego adresu są odrzucane, zanim dotrą do agenta. Użyj
adresów, z których Twój system wysyła sygnalizację SIP (w przypadku operatora takiego jak Twilio —
opublikowanych przez niego zakresów adresów IP sygnalizacji), a nie adresów mediów.

<Warning>
  Lista dozwolonych adresów jest sprawdzana tylko dla połączeń przez TCP lub TLS. Źródłowy adres UDP
  można sfałszować, dlatego punkt końcowy z listą dozwolonych adresów odrzuca każde połączenie
  przychodzące przez UDP. Wysyłaj do niego połączenia przez `;transport=tcp` (port 5060) lub
  TLS (port 5061).
</Warning>

## Co widzą rozmówcy i Twój system

- **Identyfikator rozmówcy:** część użytkownika nagłówka `From` jest zapisywana jako rozmówca.
  Numer telefonu (cyfry, opcjonalnie z `+`, spacjami, myślnikami, kropkami lub
  nawiasami) jest normalizowany do formatu E.164; wszystko inne, na przykład nazwa użytkownika SIP, jest
  zachowywane w wysłanej postaci. Zachowywane są maksymalnie 32 znaki, a brakujący rozmówca jest zapisywany
  jako `anonymous`.
- **Odrzucone połączenia:** nieznany lub wygasły URI dla pojedynczego połączenia otrzymuje SIP
  `404 Not Found`. URI dla pojedynczego połączenia, które zostało już użyte, wyłączony punkt końcowy lub
  źródło spoza listy dozwolonych (w tym każde połączenie UDP z punktem końcowym z
  listą dozwolonych) zostaje rozłączone przed uruchomieniem agenta: Twój system może zobaczyć
  nieudane połączenie albo połączenie, które zostaje nawiązane i natychmiast zakończone. Takie odrzucenia nie
  tworzą wpisu w Historii połączeń. Jeśli Twoja organizacja nie ma środków lub
  osiągnęła limit wydatków, połączenie zostanie odrzucone i pojawi się w Historii połączeń jako
  nieudane połączenie bez opłaty. Aby ponowić próbę dla pojedynczego połączenia, zarejestruj nowy URI.
- **Transfery:** transfery bez konsultacji agenta działają (ThunderPhone wysyła SIP
  `REFER`, który Twój system musi zaakceptować). Transfery z konsultacją nie są dostępne dla połączeń na adres SIP,
  ponieważ nie ma numeru ThunderPhone do wyświetlenia jako identyfikator rozmówcy dla
  drugiej części połączenia. W przypadku Twilio powyższy TwiML łączy agenta, ale
  nie obsługuje transferów: dodaj `referUrl="https://YOUR_SERVER/sip-transfer"`
  do elementu `<Dial>` i skonfiguruj ten webhook tak, aby odczytywał `ReferTransferTarget` i zwracał
  TwiML wybierający numer docelowy transferu (zobacz przewodnik Twilio
  [SIP REFER](https://www.twilio.com/docs/voice/api/refer-to-twilio)).
- **Wiadomości tekstowe:** adres SIP i wybrany numer nie mogą wysyłać wiadomości tekstowych.
  Agent może wysyłać wiadomości tekstowe podczas połączenia na adres SIP tylko wtedy, gdy ma skonfigurowany oddzielny
  numer obsługujący SMS-y; w przeciwnym razie jego narzędzie SMS jest
  niedostępne.
- **Rejestracja:** ThunderPhone nie akceptuje SIP `REGISTER`. Wysyłaj połączenia na
  adres; nie rejestruj się na nim.

## Ceny

Połączenia na adres SIP są rozliczane według standardowej stawki minutowej agenta. Nie ma
opłaty za numer telefonu, ponieważ żaden numer ThunderPhone nie obsługuje połączenia. Twój
własny operator rozlicza swoją część połączenia jak zwykle. Zobacz
[Ceny](/pl/guides/pricing).

## Przetestuj

1. Utwórz URI dla pojedynczego połączenia lub punkt końcowy zgodnie z powyższym opisem.
2. Wybierz go ze swojego systemu lub z dowolnego softphone'a SIP (w przypadku punktu końcowego wprowadź
   nazwę użytkownika i hasło).
3. Po rozłączeniu otwórz połączenie w sekcji **Połączenia** w panelu lub pobierz je
   za pomocą `GET /v1/calls/{call_id}`. Zobaczysz rozmówcę, miejsce docelowe
   (zobacz kolejność w sekcji „Przekaż wybrany numer”) oraz transkrypcję.

Szczegóły API: [dokumentacja API adresów SIP](/api-reference/sip-addresses).
