ThunderPhone 2.0 באוויר.בשירות עצמי, החל מ-2¢/דקה.קראו את הודעת ההשקה

Getting Started

ThunderPhone CLI

התחברו, נהלו סוכנים קוליים ושיחות, הגדירו לקוחות MCP, וצרו שלדי פרויקטים מהמסוף.

ממשק שורת הפקודה דורש Node.js 18.18 או גרסה מאוחרת יותר. הפעילו אותו באמצעות npx, או התקינו אותו באופן גלובלי:

npm install -g thunderphone
thunderphone --help

התחברות

npx thunderphone login
thunderphone whoami --json

ההתחברות מדפיסה קוד אימות, פותחת את הדפדפן וממתינה לאישור. השתמשו ב---no-browser במחשב ללא ממשק גרפי ופתחו את כתובת ה-URL המודפסת במקום אחר. התחברות ממכשיר דורשת שה-API יתמוך בזרימת OAuth למכשירים. מפתח API של ארגון ב-THUNDERPHONE_API_KEY יכול גם לאמת פקודות ומקבל קדימות על פני פרטי התחברות שמורים.

פרטי ההתחברות נשמרים לפי פרופיל ב-~/.config/thunderphone/credentials.json עם הרשאות קובץ 0600. המשתנים XDG_CONFIG_HOME ו-THUNDERPHONE_CONFIG_DIR מחליפים את הספרייה. אסימוני גישה מתרעננים אוטומטית ואסימוני רענון מתחלפים נשמרים באופן אטומי. אסימונים לעולם אינם מודפסים במהלך ההתחברות.

thunderphone login --profile work
thunderphone agents list --profile work --json
thunderphone logout --profile work

THUNDERPHONE_PROFILE מגדיר את פרופיל ברירת המחדל. התנתקות מסירה פרטי התחברות מקומיים; היא אינה מבטלת את ההרשאה בשרת. ה-API המוגדר כברירת מחדל הוא https://api.thunderphone.com. השתמשו ב---api-base-url או ב-THUNDERPHONE_API_BASE_URL עבור API אחר. אסימון של פרופיל אינו יכול להישלח לכתובת API מוגדרת אחרת; התחברו לכתובת זו באמצעות פרופיל נפרד.

פקודות

כל פקודה מקבלת --json. נתונים שהתקבלו בהצלחה נשלחים אל stdout; שגיאות נשלחות אל stderr עם קוד יציאה שאינו אפס. ללא --json, הפלט הוא טבלה קומפקטית או רשימת שדות. JSON שומר על מבנה תגובת ה-API, כאשר שדות פרטי גישה מושחרים. הגשת MCP שומרת את stdout עבור פרוטוקול MCP.

פקודהמטרה
login [--no-browser] [--scope "scopes"]אישור באמצעות קוד מכשיר
logout, whoamiהסרת פרטי גישה מקומיים; הצגת ארגונים נגישים
agents list, agents get IDקריאת סוכנים
agents create --file agent.jsonיצירת סוכן
agents update ID --file agent.jsonשמירת טיוטת סוכן
agents deploy ID, agents delete IDפריסת הטיוטה; מחיקת סוכן
numbers listקריאת מספרי טלפון
numbers provision --country US --area-code 415הקצאת מספר נכנס בארה״ב
numbers assign NUMBER_ID --agent IDהקצאת סוכן נכנס
sms send TO --from FROM --body TEXT --idempotency-key KEYשליחת SMS דרך מספר ספק מחובר של לקוח עם הפעלה חוזרת בטוחה
sms list [--limit N], sms get UUIDהצגת רשומות SMS או בדיקתן
call TO --agent ID --from FROM [--wait]ביצוע שיחה יוצאת; המתנה אופציונלית לתמליל שלה
calls list [--limit N] [--agent ID]הצגת שיחות (מגבלה 1–200)
calls get ID, calls transcript IDקריאת שיחה אחת או התמליל שלה
test run AGENT_ID [--scenario ID] --consent-to-chargeהפעלת תרחישים שמורים בתשלום באמצעות ערוץ האינטרנט
test status RUN_ID [--agent ID]בדיקת אצווה, עם פרטי תרחיש כאשר מסופק סוכן
import VENDOR export.jsonהכנת ייבוא JSON של ספק לבדיקה
imports get UUID, imports commit UUIDבדיקת ייבוא; אישור סוכנים שנבחרו לאחר בדיקה
mcp setup, mcp serveהגדרת לקוח; הפעלת גשר stdio
init [directory]יצירת שלד לפרויקט

שיחות יוצאות דורשות מספר שמאפשר שיחות יוצאות. THUNDERPHONE_FROM_NUMBER יכול לספק את --from. מספרי VoIP של לקוחות ממשיכים לתמוך בשיחות יוצאות. מספרים שהוקצו על ידי ThunderPhone מתחילים כמספרים נכנסים בלבד; מנהל ארגון יכול לבקש הפעלת שיחות יוצאות מדף מספרי הטלפון, שבו כל בקשה נבדקת ידנית. ברירת המחדל של --wait היא זמן קצוב של שעה אחת; הגדירו --timeout SECONDS כדי לשנות זאת. זמן קצוב מפסיק את ההמתנה בלי לנתק את השיחה.

SMS דורש גם מספר בעל יכולת SMS בחשבון Twilio או Telnyx המחובר שלכם. הוא לעולם אינו שולח ממספר בבעלות ThunderPhone. השתמשו מחדש במפתח idempotency רק בעת ניסיון חוזר עם אותו שולח, נמען ותוכן בדיוק.

ייבואים תומכים ב-vapi, retell, elevenlabs ו-bland. הארגומנט השני הוא נתיב לייצוא JSON של ספק, ולא מזהה ספק מרוחק. ה-API מכין מיפוי באופן אסינכרוני; בדקו אותו באמצעות imports get UUID ואשרו רק לאחר שהוא מוכן ולאחר שבדקתם את השדות הממופים ואת האזהרות. ראו ייבוא סוכנים.

הגדרת 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 user

לקוחות נתמכים: claude-code, codex, cursor, vscode, gemini, claude-desktop ו- windsurf. היקף הפרויקט הוא ברירת המחדל. Desktop ו-Windsurf דורשים היקף משתמש. השמיטו את --client כדי לזהות לקוח יחיד מהפרויקט; זיהוי דו-משמעי מציג בקשה אינטראקטיבית או נכשל עם הוראות בהפעלה לא אינטראקטיבית. ההגדרה מדפיסה את הקובץ שנכתב ושומרת על שרתים שאינם קשורים. JSON קיים חייב להיות JSON תקני ומחמיר; ערכי TOML של Codex נשמרים, אך ייתכן שהערות יעוצבו מחדש.

ההגדרה מעדיפה HTTP מרוחק ישיר. עם --api-key-env, היא כותבת הפניה למשתנה, ולעולם לא את המפתח. ללא אפשרות זו, HTTP ישיר מסתמך על תמיכת OAuth של הלקוח; הוא אינו משתמש בקובץ האישורים של ה-CLI. כדי לעשות שימוש חוזר באישורי thunderphone login בכל לקוח שתומך ב-stdio, השתמשו ב:

{
  "mcpServers": {
    "thunderphone": {
      "command": "npx",
      "args": ["-y", "@thunderphone/mcp"]
    }
  }
}

העטיפה בודקת את THUNDERPHONE_API_KEY, לאחר מכן את פרופיל ה-CLI הנוכחי (ומרעננת בעת הצורך), ואז מאצילה OAuth אל mcp-remote. ‏THUNDERPHONE_MCP_URL מחליף את נקודת הקצה. היא אינה שולחת טלמטריה. הגדרה עצמאית זמינה גם באמצעות npx -y @thunderphone/mcp setup --client cursor או thunderphone-mcp setup לאחר התקנה גלובלית של @thunderphone/mcp.

יצירת פרויקט

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 receptionist

התבניות הן node ו-python; סוגי הסוכנים הם receptionist, outbound ו-custom. סוכן ברירת המחדל הוא פקידת קבלה במרפאת שיניים באנגלית ובספרדית, עם עובדות הדגמה מפורשות. הפרויקטים כוללים את agent.json, סקריפטים לפריסה, תצורות MCP עבור Claude Code, Cursor ו-VS Code, הוראות לסוכן, .env.example וקובץ README. יצירת השלד מתבצעת במצב לא מקוון ומסרבת לדרוס ספרייה שאינה ריקה.

ערכו את עובדות העסק לפני הפריסה. ייצאו את מפתח ה-API, מספר המתקשר המחובר ונמען הבדיקה שלכם כפי שמתועד ב-README שנוצר. npm run deploy או python deploy.py יוצרים או מעדכנים את הסוכן, פורסים את הטיוטה שלו ומבצעים שיחת בדיקה בתשלום. הסקריפטים משתמשים באימות באמצעות מפתח API; ה-CLI ועטיפת MCP של stdio תומכים גם בהתחברות ממכשיר. סקריפטי Python דורשים Python 3.9 או גרסה מאוחרת יותר.