Open in
ThunderPhone CLI
Zaloguj się, zarządzaj agentami głosowymi i połączeniami, konfiguruj klientów MCP oraz twórz szkielety projektów z terminala.
CLI wymaga Node.js 18.18 lub nowszego. Uruchom je za pomocą npx albo zainstaluj globalnie:
npm install -g thunderphone
thunderphone --helpZaloguj się
npx thunderphone login
thunderphone whoami --jsonLogowanie wyświetla kod weryfikacyjny, otwiera przeglądarkę i czeka na autoryzację.
Na komputerze bez interfejsu graficznego użyj --no-browser i otwórz wyświetlony adres URL w innym miejscu.
Logowanie urządzenia wymaga wdrożenia przepływu OAuth dla urządzeń przez API. Klucz API organizacji
w THUNDERPHONE_API_KEY może również uwierzytelniać polecenia i ma pierwszeństwo
przed zapisanymi poświadczeniami logowania.
Poświadczenia są przechowywane według profilu w ~/.config/thunderphone/credentials.json
z trybem pliku 0600. XDG_CONFIG_HOME i THUNDERPHONE_CONFIG_DIR zastępują
katalog. Tokeny dostępu są odświeżane automatycznie, a rotacyjne tokeny odświeżania są
zapisywane atomowo. Tokeny nigdy nie są wyświetlane podczas logowania.
thunderphone login --profile work
thunderphone agents list --profile work --json
thunderphone logout --profile workTHUNDERPHONE_PROFILE ustawia domyślny profil. Wylogowanie usuwa lokalne poświadczenia;
nie unieważnia uprawnienia na serwerze. Domyślne API to https://api.thunderphone.com.
Użyj --api-base-url lub THUNDERPHONE_API_BASE_URL dla innego API. Token profilu
nie może zostać wysłany do innego skonfigurowanego adresu URL API; zaloguj się do tego adresu URL przy użyciu osobnego profilu.
Polecenia
Każde polecenie obsługuje --json. Pomyślne dane trafiają do stdout; błędy trafiają do stderr
z niezerowym kodem zakończenia. Bez --json dane wyjściowe mają postać zwięzłej tabeli lub listy pól.
JSON zachowuje strukturę odpowiedzi API, z zamaskowanymi polami poświadczeń. Obsługa MCP
rezerwuje stdout dla protokołu MCP.
| Polecenie | Cel |
|---|---|
login [--no-browser] [--scope "scopes"] | Autoryzuj za pomocą kodu urządzenia |
logout, whoami | Usuń lokalne poświadczenia; wyświetl dostępne organizacje |
agents list, agents get ID | Odczytaj agentów |
agents create --file agent.json | Utwórz agenta |
agents update ID --file agent.json | Zapisz wersję roboczą agenta |
agents deploy ID, agents delete ID | Wdróż wersję roboczą; usuń agenta |
numbers list | Odczytaj numery telefonów |
numbers provision --country US --area-code 415 | Udostępnij amerykański numer przychodzący |
numbers assign NUMBER_ID --agent ID | Przypisz agenta do połączeń przychodzących |
sms send TO --from FROM --body TEXT --idempotency-key KEY | Wyślij SMS przez numer operatora podłączony przez klienta z bezpiecznym ponowieniem |
sms list [--limit N], sms get UUID | Wyświetl lub sprawdź rekordy SMS |
call TO --agent ID --from FROM [--wait] | Wykonaj połączenie wychodzące; opcjonalnie czekaj na jego transkrypcję |
calls list [--limit N] [--agent ID] | Wyświetl połączenia (limit 1–200) |
calls get ID, calls transcript ID | Odczytaj jedno połączenie lub jego transkrypcję |
test run AGENT_ID [--scenario ID] --consent-to-charge | Uruchom płatne zapisane scenariusze za pomocą kanału internetowego |
test status RUN_ID [--agent ID] | Sprawdź partię wraz ze szczegółami scenariusza, gdy podano agenta |
import VENDOR export.json | Przygotuj import JSON dostawcy do sprawdzenia |
imports get UUID, imports commit UUID | Sprawdź import; zatwierdź wybranych agentów po sprawdzeniu |
mcp setup, mcp serve | Skonfiguruj klienta; uruchom most stdio |
init [directory] | Utwórz szkielet projektu |
Połączenia wychodzące wymagają numeru z włączonymi połączeniami wychodzącymi. THUNDERPHONE_FROM_NUMBER może
dostarczyć wartość dla --from. Numery VoIP klientów nadal obsługują połączenia wychodzące.
Numery udostępnione przez ThunderPhone początkowo obsługują tylko połączenia przychodzące; administrator organizacji może
poprosić o połączenia wychodzące na stronie Numery telefonów, gdzie każdy wniosek jest
sprawdzany ręcznie. Domyślny limit czasu dla --wait wynosi godzinę; ustaw
--timeout SECONDS, aby go zmienić. Przekroczenie limitu czasu przestaje czekać bez kończenia połączenia.
SMS wymaga również numeru obsługującego SMS na połączonym koncie Twilio lub Telnyx. Nigdy nie jest wysyłany z numeru należącego do ThunderPhone. Używaj ponownie klucza idempotencji wyłącznie podczas ponawiania dokładnie tego samego nadawcy, odbiorcy i treści.
Importy obsługują vapi, retell, elevenlabs i bland. Drugi argument to
ścieżka do eksportu JSON dostawcy, a nie zdalny identyfikator dostawcy. API przygotowuje mapowanie
asynchronicznie; sprawdź je za pomocą imports get UUID i zatwierdź dopiero, gdy będzie gotowe
oraz po sprawdzeniu zmapowanych pól i ostrzeżeń. Zobacz importy agentów.
Konfiguracja MCP
thunderphone mcp setup --client cursor --api-key-env THUNDERPHONE_API_KEY
thunderphone mcp setup --client codex --scope user --api-key-env THUNDERPHONE_API_KEY
thunderphone mcp setup --client claude-desktop --scope userKlienci: claude-code, codex, cursor, vscode, gemini, claude-desktop i
windsurf. Zakres projektu jest domyślny. Desktop i Windsurf wymagają zakresu użytkownika.
Pomiń --client, aby wykryć pojedynczego klienta w projekcie; niejednoznaczne wykrycie
wyświetla interaktywny monit lub kończy się niepowodzeniem z instrukcjami w sesji nieinteraktywnej.
Konfiguracja wyświetla zapisany plik i zachowuje niepowiązane serwery. Istniejący JSON
musi być prawidłowym ścisłym JSON-em; wartości TOML dla Codex są zachowywane, ale komentarze mogą zostać przeformatowane.
Konfiguracja preferuje bezpośrednie zdalne HTTP. Przy użyciu --api-key-env zapisuje
odwołanie do zmiennej, nigdy klucz. Bez tej opcji bezpośrednie HTTP korzysta z obsługi
OAuth klienta; nie używa pliku poświadczeń CLI. Aby ponownie wykorzystać poświadczenia
thunderphone login w dowolnym kliencie obsługującym stdio, użyj:
{
"mcpServers": {
"thunderphone": {
"command": "npx",
"args": ["-y", "@thunderphone/mcp"]
}
}
}Wrapper sprawdza THUNDERPHONE_API_KEY, następnie bieżący profil CLI (odświeżając go
w razie potrzeby), a następnie przekazuje OAuth do mcp-remote. THUNDERPHONE_MCP_URL zastępuje
punkt końcowy. Nie wysyła telemetrii. Samodzielna konfiguracja jest również dostępna przez
npx -y @thunderphone/mcp setup --client cursor lub thunderphone-mcp setup po
globalnej instalacji @thunderphone/mcp.
Utwórz projekt
npx create-thunderphone-agent my-receptionist
npx create-thunderphone-agent my-outbound --template python --agent-type outbound
# Equivalent:
thunderphone init my-receptionist --template node --agent-type receptionistSzablony to node i python; typy agentów to receptionist, outbound i
custom. Domyślny agent to angielsko-hiszpańska recepcjonistka stomatologiczna z wyraźnie
określonymi faktami demonstracyjnymi. Projekty zawierają agent.json, skrypty wdrażania,
konfiguracje MCP dla Claude Code, Cursor i VS Code, instrukcje agenta, .env.example oraz README.
Tworzenie szkieletu działa offline i nie pozwala nadpisać niepustego katalogu.
Przed wdrożeniem edytuj informacje o firmie. Wyeksportuj klucz API, podłączony numer
rozmówcy i odbiorcę połączenia testowego zgodnie z dokumentacją w wygenerowanym README. npm run deploy
lub python deploy.py tworzy lub aktualizuje agenta, wdraża jego wersję roboczą i wykonuje
rozliczane połączenie testowe. Skrypty używają uwierzytelniania kluczem API; CLI i wrapper MCP
stdio obsługują również logowanie urządzenia. Skrypty Python wymagają Python 3.9 lub nowszego.