Open in
Wykonuj połączenia wychodzące (API)
Uruchamiaj wychodzące połączenia realizowane przez AI z własnego kodu — ankiety, działania następcze lub procesy potwierdzania.
Połączenia wychodzące pozwalają przekazać ThunderPhone numer docelowy i konfigurację agenta, aby AI wykonała połączenie w Twoim imieniu. Typowe zastosowania:
- Potwierdzanie wizyt
- Oddzwanianie w sprawie ankiet
- Kontakty „drugiej próby” po nieodebranym połączeniu
- Powiadomienia w stylu dyspozytorskim
Wymagania wstępne
- Wybierz numer z obsługą połączeń wychodzących
Użyj numeru, którego jesteś właścicielem, przez połączenie VoIP albo poproś o zgodę na używanie swoich numerów ThunderPhone do połączeń wychodzących na stronie Numery telefonów. Numery ThunderPhone początkowo obsługują tylko połączenia przychodzące. ThunderPhone ręcznie weryfikuje każde zgłoszenie; po zatwierdzeniu numery te mogą wykonywać połączenia do zatwierdzonego dziennego limitu (resetowanego o 00:00 UTC) i uruchamiać kampanie, a Ty możesz poprosić o wyższy limit. Numery VoIP klienta nie mają dziennego limitu, dlatego zalecamy je do połączeń wychodzących. Zobacz Użyj własnych numerów.
- Utwórz agenta
Prompt ukierunkowany na połączenia wychodzące zwykle zaczyna się od przedstawienia się przez agenta i określenia celu — „Dzień dobry, dzwoni Acme, aby potwierdzić wizytę na jutro na 15:00…” Ustaw
outbound_speak_ordernaagent_first(domyślne ustawienie). - Utrzymuj dodatnie saldo
Połączenia wychodzące zwracają
402 Payment Required, jeśli saldo wynosi ≤$0.00. Doładuj konto lub włącz automatyczne doładowanie w sekcji Organizacja → Ustawienia rozliczeń w panelu. Twój kluczsk_live_może sprawdzać saldo za pomocąGET /v1/billing, ale nie może doładowywać konta ani zmieniać automatycznego doładowania.
Wykonaj połączenie z zapisanym agentem
Najprostsza metoda — odwołaj się do agenta według identyfikatora:
curl -X POST https://api.thunderphone.com/v1/call \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from_number": "+15551234567",
"to_number": "+14155552671",
"agent_id": 12
}'Odpowiedź:
{ "call_id": 987654321, "status": "initiated" }Wykonaj połączenie z konfiguracją wbudowaną
Jeśli potrzebujesz jednorazowego promptu, którego nie warto zapisywać jako agenta,
przekaż zamiast tego config. Struktura odpowiada schematowi odpowiedzi
webhooka call.incoming:
curl -X POST https://api.thunderphone.com/v1/call \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from_number": "+15551234567",
"to_number": "+14155552671",
"config": {
"prompt": "You are confirming Jane Doe appointment for 3pm tomorrow…",
"voice": "john",
"product": "spark"
}
}'Śledź połączenie
Równolegle zasubskrybuj
webhook telephony.complete —
to najszybszy sposób, aby dowiedzieć się, że połączenie się zakończyło. Jeśli nie możesz odbierać przychodzących
webhooków, odpytywać GET /v1/calls/{call_id} co kilka sekund; rekord zawiera
end_reason, duration_seconds oraz adres URL nagrania
po zakończeniu połączenia.
Jeśli Twój agent jest skonfigurowany do wyodrębniania danych strukturalnych po połączeniu, dane te są dostarczane osobno po zakończeniu finalizacji.
Przekazywanie zmiennych dla połączenia do zapisanego agenta
Zapisani agenci mogą używać symboli zastępczych, takich jak {{name}} lub {{name|there}}, w
tekście promptu. Gdy wykonujesz połączenie wychodzące z użyciem agent_id, przekaż
variables z wartościami dla tego połączenia:
{
"from_number": "+[REDACTED_PHONE]",
"to_number": "+[REDACTED_PHONE]",
"agent_id": 12,
"variables": {
"name": "Jordan"
}
}Używaj wartości tekstowych z kluczami odpowiadającymi nazwom symboli zastępczych. Te zmienne dotyczą
zapisanych agentów; przykład wbudowanego config w tym przewodniku ich nie używa.
Obsługiwane tryby awarii
| Błąd | Rozwiązanie |
|---|---|
402 Payment Required | Doładuj saldo lub włącz automatyczne doładowanie |
400 z code: destination_not_allowed | ThunderPhone nie dzwoni na ten numer: nieprawidłowe numery, numery alarmowe, numery o podwyższonej opłacie, krótkie kody lub kraje objęte sankcjami. Z numerów ThunderPhone można dzwonić tylko na zwykłe numery w USA i Kanadzie (bez numerów o podwyższonej opłacie). reason wskazuje który przypadek; zobacz zablokowane numery docelowe |
409 z retryable: false dla numeru ThunderPhone | Postępuj zgodnie z code: poproś o możliwość wykonywania połączeń wychodzących na stronie Numery telefonów, poczekaj na trwającą weryfikację lub użyj innego kwalifikującego się numeru |
429 z code: platform_outbound_daily_limit_reached | Organizacja wykorzystała dzisiejszy limit połączeń wychodzących z numerów ThunderPhone. Poczekaj na resets_at (00:00 UTC), poproś o wyższy limit na stronie Numery telefonów lub dzwoń z numeru we własnym połączeniu VoIP |
429 z code: concurrent_call_limit_reached | Organizacja ma tyle połączeń w toku, ile wynosi jej limit równoczesnych połączeń (domyślnie 20, z uwzględnieniem połączeń przychodzących, wychodzących, internetowych i testowych). Spróbuj ponownie po liczbie sekund wskazanej w nagłówku Retry-After lub po zakończeniu połączenia; wyślij e-mail na support@thunderphone.com, aby zwiększyć limit |
429 z code: same_number_too_soon | Dzwoniono na ten sam to_number mniej niż 10 sekund temu. Spróbuj ponownie po liczbie sekund wskazanej w nagłówku Retry-After |
409 z retryable: false dla numeru VoIP klienta | Skoryguj stan wskazany przez code; w przypadku niepowodzenia weryfikacji uruchom POST /v1/phone-numbers/{id}/verify-voip |
konflikt idempotencji 409 | Użyj ponownie klucza tylko z oryginalnym znormalizowanym żądaniem lub wyślij nowy klucz |
404 from_number is not registered to this organization | Potwierdź, że from_number odpowiada aktywnemu numerowi telefonu w organizacji. Ten sam komunikat jest zwracany także dla numeru, który jest już w trakcie aktywacji, którego aktywacja się nie powiodła, który jest zwalniany lub został zwolniony |
500 zawierający tylko pole detail | Nie skonfigurowano żadnego trunku wychodzącego. Skontaktuj się z pomocą techniczną; nie jest to problem ze stanem numeru, który możesz naprawić |
502 Bad Gateway | Przejściowy błąd SIP / LiveKit; można bezpiecznie spróbować ponownie |
Zobacz dokumentację połączeń wychodzących,
aby poznać pełną stabilną listę kodów kwalifikowalności i oba formaty odpowiedzi 409.
Jeśli aktywny numer przestanie kwalifikować się po zaakceptowaniu żądania, ale przed
wykonaniem połączenia, końcowa kontrola zwróci ładunek 409, którego nie można ponowić.
Kontrolowanie czasu oczekiwania
Połączenia wychodzące, które trwają długo, ponieważ odbiorca połączenia wolno odpowiada
(drzzewa IVR, kolejki), można ograniczyć za pomocą max_hold_seconds:
{
"from_number": "+15551234567",
"to_number": "+14155552671",
"agent_id": 12,
"max_hold_seconds": 120
}Agent rozłącza się, jeśli w ciągu ostatnich N sekund nie odebrano dźwięku ludzkiego głosu. Wartość domyślna to 900 sekund (15 minut).
Dalsze kroki
Każde pole żądania i kod błędu.
Przesyłaj zakończone połączenia wychodzące do swojego systemu.
Automatyczne doładowanie, aby połączenia wychodzące nigdy nie kończyły się niepowodzeniem z powodu salda.
Przeprowadź próbne uruchomienie agenta wychodzącego przed wdrożeniem produkcyjnym.