ThunderPhone 2.0 jest już dostępny.Uruchom samodzielnie, od 2¢/min.Przeczytaj komunikat

Developer cookbook

Połącz przez SIP (bez numeru telefonu)

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łączeniaPunkt końcowy SIP
Wygląda jaksip:c-<token>@sip.thunderphone.comsip:agent-<id>-<letters>@sip.thunderphone.com
Tworzony za pomocąPOST /v1/calls/register-sip, raz dla każdego połączeniaPOST /v1/sip-endpoints, jednorazowo
UwierzytelnianieJednorazowy token w adresieNazwa użytkownika i hasło SIP digest (oraz opcjonalnie lista dozwolonych źródłowych adresów IP)
Dobre rozwiązanie dlaAplikacji, które już wywołują API przed przekazaniem połączenia; zmiennych dla pojedynczego połączeniaCentral PBX i operatorów, którzy powinni po prostu „skierować trunk” do ThunderPhone
Ważny przez5 minut, jedno połączenieDo 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

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"}
  }'
{
  "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.
  • 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ć:

<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

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"}'
{
  "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"
}

2. Skieruj do niego swój system

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

UstawienieWartość
URI SIPsip_uri punktu końcowego
Nazwa użytkownika / hasłousername / password (uwierzytelnianie digest; ThunderPhone uwierzytelnia każde połączenie)
TransportTCP na porcie 5060 lub TLS na porcie 5061 (zalecane), albo UDP na porcie 5060
KodekiG.711 (PCMU/PCMA) lub G.722

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:

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.

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).
  • 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.

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.