🇮🇱 עברית

הטמעה — טלפוניה בתוך המוצר שלכם

אותו מנוע שמריץ את המרכזייה שלנו רץ גם בתוך המערכת שלכם. ההבדל היחיד בין שלוש האפשרויות למטה הוא כמה מהממשק אתם רוצים לכתוב בעצמכם — יכולות הטלפוניה זהות בכולן.

רמה 1

וידג׳ט מוכן

10 דקות

שתי שורות סקריפט ויש חייגן עובד בתוך המסך שלכם. ה-UI שלנו, השיחות שלכם.

מתאים כשרוצים טלפון בתוך CRM קיים ולא רוצים לתחזק ממשק.

למדריך הווידג׳ט
רמה 2

Headless — ה-GUI שלכם

יום עבודה

אותו מנוע בדיוק, בלי שום UI משלנו. אתם מציירים כל פיקסל וקוראים ל-pbx.dial() / pbx.answer().

מתאים כשיש לכם עיצוב מחייב, או שהחייגן צריך להיראות חלק מהמוצר שלכם.

למדריך Headless
רמה 3

חייגן משלכם מאפס

כמה ימים

אנחנו נותנים פרטי SIP וכתובת WSS, ואתם מתחברים ישירות עם SIP.js או כל ספריית WebRTC.

מתאים ל-React Native, אלקטרון, או כשצריכים שליטה מלאה במדיה.

לבניית חייגן CUSTOM

זרימת החיבור — משותפת לכל שלוש הרמות

שני שלבים. הראשון קורה בשרת שלכם עם מפתח ה-API, השני בדפדפן עם טוקן חד-פעמי. ההפרדה הזו היא כל מודל האבטחה: מפתח ה-API לא נוגע בדפדפן, אף פעם.

# 1 ─ YOUR SERVER: mint a single-use token (never expose pbx_live_ to a browser)
curl -X POST https://aicalls.txi.co.il/api/v1/embed/token \
  -H "Authorization: Bearer pbx_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "crmUserId": "agent-42", "layout": "headless" }'

# → { "exchangeToken": "et_...",   # single use, 5 minutes
#     "embedUrl":      "https://aicalls.txi.co.il/embed?...",
#     "embedJs":       "https://aicalls.txi.co.il/embed.js",
#     "snippet":       "<script src=...>",
#     "commands": [...], "events": [...] }

# 2 ─ BROWSER: burn it for SIP credentials + a 1-hour session
curl -X POST https://aicalls.txi.co.il/api/embed/exchange \
  -H "Content-Type: application/json" \
  -H "Origin: https://your-crm.com" \
  -d '{ "token": "et_..." }'

# → { "sessionJwt": "...", "expiresIn": 3600,
#     "extension": { "sipUsername": "1101", "sipPassword": "...",
#                    "sipDomain": "aicalls.txi.co.il" },
#     "realtime":  { "wssUrl": "wss://aicalls.txi.co.il:7443",
#                    "sipDomain": "...", "iceServers": [...] } }

חד-פעמי

טוקן שנוצל מוחזר 401. גניבה של טוקן משומש לא שווה כלום.

5 דקות

חלון החשיפה. הנפיקו בטעינת הדף, לא מראש.

Origin נאכף

רק דומיינים ברשימת allowedOrigins יכולים לפדות טוקן.

מה חובה לעשות נכון

מפתח API רק בשרת

מפתח pbx_live_ בקוד צד-לקוח נותן לכל אחד שפותח DevTools לחייג על חשבונכם, לקרוא הקלטות ולמחוק שלוחות.

הגדירו allowedOrigins

בקונסול ← הגדרות ← הטמעה. בלי זה, כל אתר שמשיג טוקן יכול לפדות אותו.

טוקן לכל טעינת דף

אל תשמרו exchangeToken ב-localStorage. הוא נועד להישרף מיד.

מיפוי משתמשים

crmUserId ממפה משתמש שלכם לשלוחה אצלנו — כך שיחות נרשמות לנציג הנכון בדוחות.

כשהחייגן מראה "מנותק"

הטבלה הזו נכתבה מתקלות אמת שקרו במערכת, לא מתרחישים תיאורטיים. הסדר הוא סדר הבדיקה: מלמעלה למטה, הראשון שמתאים הוא בדרך כלל הסיבה.

מה רואים בקונסולמה זה אומרמה עושים
WebSocket closed ... (code: 1006)החיבור נסגר לא תקין — כמעט תמיד תעודת TLS על 7443, או חומת אש.בדקו את התאריך בתעודה. אם פגה — זו התקלה, והיא משביתה את כל הלקוחות בו-זמנית.
הדף נטען אבל שום דבר לא קורהקבצי JS ישנים שהדפדפן מבקש ולא קיימים יותר אחרי פריסה.Ctrl+Shift+R. אם זה פותר — זו הייתה הסיבה.
401 Token already usedהטוקן נוצל, בדרך כלל רענון דף עם טוקן שמור.הנפיקו טוקן חדש בכל טעינה. אל תשמרו אותו.
403 Origin ... not allowedהדומיין לא ברשימת allowedOrigins.הוסיפו אותו בקונסול ← הגדרות ← הטמעה.
רשום, אבל אין אודיוהמדיה לא עוברת — הרשאת מיקרופון או ICE.ודאו HTTPS (מיקרופון חסום ב-HTTP) ושה-iceServers מהתשובה באמת מועברים ל-RTCPeerConnection.
sip:1101@undefinedשדה הדומיין נקרא בשם אחר בקוד שלכם.התשובה מחזירה domain, sipDomain ו-realtime.sipDomain — כולם זהים. השתמשו באחד.

שאלות שחוזרות

האם צריך לפתוח פורטים אצל הלקוח?

לא. כל התעבורה יוצאת מהדפדפן ב-WSS על פורט 7443 ו-WebRTC על UDP. אין שום דבר להאזין לו בצד שלכם.

איפה שומרים את מפתח ה-API?

רק בשרת שלכם. מפתח pbx_live_ בדפדפן שווה לתת לכל מבקר את המרכזייה. הטוקן שמגיע לדפדפן הוא חד-פעמי ותקף 5 דקות.

מה קורה כשהמשתמש מרענן את הדף?

הטוקן כבר נשרף. השרת שלכם מנפיק אחד חדש בכל טעינת דף. זה זול, וזה מה שהופך גניבת טוקן לחסרת ערך.

אפשר לחייג מהמערכת שלנו בלי דפדפן בכלל?

כן — POST /api/v1/calls מחייג משלוחה קיימת ללא WebRTC. ההטמעה נחוצה רק כשהאודיו עצמו צריך לעבור דרך הדפדפן.