מדריך מלא לשיגור, ניהול ומעקב אחר קמפיינים קוליים דרך ה-API
Access denied.
ה-API לקמפיינים מאפשר שיגור ושליטה מלאה בקמפיינים קוליים יוצאים — החל מהפעלת קמפיין עם רשימת טלפונים, דרך השהייה, המשך ועצירה, ועד לשליפת היסטוריה.
application/x-www-form-urlencoded.multipart/form-data,
בדיוק כמו שליחת קובץ דרך טופס HTML.
apiKey
apiKey) נדרש בכל בקשה ומשמש לאימות זהות הלקוח.campaignRun| מפתח | הסבר | חובה | ברירת מחדל | ערך / כללים |
|---|---|---|---|---|
| action | פעולת API | חובה | — | campaignRun |
| apiKey | מפתח ה-API של המערכת | חובה | — | מחרוזת |
| phones | רשימת טלפונים ליצירת קשר | חובה | — |
אפשרות א': מערך מספרים ב-JSON אפשרות ב': קובץ טקסט מצורף ( multipart/form-data) עם מספרים מופרדים בפסיק — כמו שמעלים קובץ בטופס
|
| audioFile | קובץ שמע להשמעה | חובה* | — |
נדרש כאשר messagesType=audioFile (ברירת מחדל).קובץ שמע מצורף ( multipart/form-data) — כמו שמעלים קובץ בטופס.בחרו אחד בלבד: audioFile או audioText
|
| audioText | טקסט להקראה (TTS) | חובה* | — |
נדרש כאשר messagesType=audioFile (ברירת מחדל) ואין audioFile.המערכת תמיר את הטקסט לדיבור אוטומטית. בחרו אחד בלבד: audioText או audioFile
|
| callId | מזהה שיחה — חייב להיות מאושר מראש | אופציונלי | מספר המערכת | — |
| callLength | אורך החיוג בשניות | אופציונלי | 25 | מינ' 12 / מקס' 30 |
| dialRetries | מספר ניסיונות חיוג חוזרים | אופציונלי | 1 | מקס' 5 |
| betweenRetries | זמן המתנה בין ניסיונות חוזרים (דקות) | חובה | 20 | מינ' 5 / מקס' 120 |
| reasonableHours | עצירה אוטומטית בין 23:00–08:00 | אופציונלי | no |
no / yes |
| DNCTest | סינון ממאגר "אל תתקשר אלי" (כרגע לא פעיל) | אופציונלי | no |
no / yes |
| sendTime | שעת שליחה מתוזמנת | אופציונלי | עכשיו | פורמט: yy-mm-dd hh:ii:ss |
| messagesType | סוג ההשמעה | אופציונלי | audioFile |
audioFile — קובץ שמעextensionActivation — הפעלת שלוחה במרכזיהapiUrl — הפעלת מודל API (כתובת URL חיצונית). ראה מודל API |
| extensionActivation | ID שלוחה להפעלה | אופציונלי | — | נדרש כש-messagesType=extensionActivation |
| apiUrl | כתובת URL להפעלת מודל API | אופציונלי | — | נדרש כש-messagesType=apiUrl. חייב http(s)://, עד 500 תווים. ראה מודל API |
| title | כותרת הקמפיין לתצוגה | אופציונלי | — | מחרוזת חופשית |
| maxRing | הגבלת שיחות יוצאות בו-זמנית | אופציונלי | ללא הגבלה | מספר שלם |
| demo | מצב הדגמה — מידע מקדים ללא הפעלה בפועל | אופציונלי | no |
no / yes |
| runType | סוג הפעלת הקמפיין | אופציונלי | — | hold — יוצר קמפיין במצב "מושהה" |
| externalID | מזהה חיצוני לקמפיין | אופציונלי | — | עד 50 תווים, לשימוש חופשי |
| externalDescription | תיאור חיצוני לקמפיין | אופציונלי | — | עד 100 תווים |
| keysAction-X | פעולת מקש — ה-X הוא מספר המקש | אופציונלי | — | מקשים 1–8 (מקש 9 שמור להסרה). ראה טבלת פעולות מקשים |
audioFile — קובץ שמע מצורף כ-multipart/form-data (כמו העלאת קובץ בטופס)audioText — טקסט חופשי; המערכת תהפוך אותו לדיבור אוטומטית (TTS)extensionActivation — הפעלת שלוחה במרכזיה (דורש messagesType=extensionActivation)apiUrl — הפעלת מודל API: העברת השיחה שנענתה לכתובת URL חיצונית שלכם (דורש messagesType=apiUrl). ראה מודל APImessagesType=apiUrlבמקום להשמיע הקלטה או להעביר לשלוחה — אפשר להעביר את כל השיחה שנענתה לכתובת URL מאובטחת בשליטתכם ("מודל API"). מרגע שהנמען עונה, המערכת פונה לכתובת שלכם עם נתוני השיחה, והשרת שלכם קובע מה הנמען שומע ועושה. מתאים כשתסריט השיחה דינמי (מותאם אישית לכל נמען, נקבע בזמן אמת אצלכם) ולא הקלטה קבועה.
campaignRun שני שדות —
messagesType: "apiUrl" ו-apiUrl עם כתובת נקודת-הקצה שלכם.
apiUrl חייב להיות כתובת http(s):// תקינה, עד 500 תווים (מומלץ HTTPS).audioFile / audioText — הם סותרים את apiUrl.callLength ממשיך לחול כתקרת אורך החיוג; fileLong (אופציונלי, שניות) קובע אורך לחיוב, ברירת מחדל 60.errorCode 27.| פרמטר | משמעות |
|---|---|
campaignId | מזהה הקמפיין |
campaignCallId | מזהה ייחודי של השיחה הספציפית |
phone | הנמען שענה |
callId | מזהה השיחה היוצא (DID) שבשימוש |
callLength | תקרת אורך החיוג (שניות) |
event | שלב השיחה (answered, ואז dtmf / hangup) |
מומלץ לאבטח את נקודת-הקצה (למשל אימות טוקן משותף) ולהתייחס לבקשה כמגיעה מהחייגן.
JSON של פעולות לביצוע, לפי הסדר:
say — המרת טקסט לדיבור (TTS).playUrl — השמעת קובץ שמע מכתובת URL.gather — איסוף הקשות DTMF ושליחתן ל-submitTo (אותו חוזה, בלולאה).dial — גישור השיחה ליעד טלפון/SIP.hangup — סיום השיחה.campaignRun עם מודל APIdemo=yes, מוחזרים אותם שדות + "campaignId": "demo",
ללא הפעלה בפועל. שימושי לבדיקת תקינות הנתונים מראש.
| errorCode | סיבה | הסבר |
|---|---|---|
-99 | Access denied | כתובת ה-IP אינה מאושרת |
-88 | Missing essential connection information | חסר מידע חיוני לחיבור |
1 | מזהה שיחה לא מאושר | ה-callId שהוזן אינו מורשה לחשבון זה |
2 | אורך חיוג לא תקין | callLength חייב להיות בין 6 ל-30 שניות |
3 | מקסימום ניסיונות חיוג חורג | dialRetries עולה על המקסימום המותר לחשבון (עד 5) |
4 | זמן המתנה לא תקין | betweenRetries חייב להיות בין 5 ל-120 דקות |
5 | קובץ שמע קצר מדי | אורך קובץ השמע מינימום 5 שניות |
6 | אין מספרים תקינים | לא נמצאו מספרי טלפון תקינים/מאושרים ברשימה שהוזנה |
7 | יתרה לא מספקת | יתרת היחידות אינה מספיקה לקמפיין. התגובה כוללת גם accountSum (יתרה נוכחית) ו-billing (עלות משוערת) |
9 | תזמון רחוק מדי | לא ניתן לתזמן קמפיין ליותר מ-21 יום קדימה |
13 | מספר ניתוב לא תקין | מספר הטלפון שהוגדר בפעולת מקש (keysAction) לא תקין או חסר |
18 | קובץ שמע לא תקין | הקובץ שהועלה אינו קובץ שמע תקין |
19 | קובץ שמע גדול מדי | הקובץ ארוך מ-300 שניות, או שגיאה בהעלאה |
27 | כתובת URL לא תקינה | כש-messagesType=apiUrl: יש לשלוח כתובת http(s):// תקינה, עד 500 תווים. ראה מודל API |
campaignsHistory| מפתח | הסבר | חובה | ברירת מחדל | ערך / כללים |
|---|---|---|---|---|
| action | פעולת API | חובה | — | campaignsHistory |
| apiKey | מפתח ה-API של המערכת | חובה | — | מחרוזת |
| fromDate | מתאריך | אופציונלי | תאריך נוכחי | פורמט: yyyy-mm-dd |
| toDate | עד תאריך | אופציונלי | 30 יום אחורה | פורמט: yyyy-mm-dd |
answerd_calls, total_sent, dialing_calls ו-retries_list
מוחזרים כ-"ממתין למידע..." כאשר הקמפיין רק נוצר ועדיין לא התחיל לחייג.
campaignReport
מחזיר את כל נתוני הדוח של קמפיין יחיד — אותם נתונים שמופיעים בדוח ה-CSV / טבלת ה-HTML
(פרטי הקמפיין + שורת לכל נמען). הנתונים מוחזרים מפורמטים ומעובדים (לא row גולמי מ-DB):
טלפון מפורמט, שם הלקוח מהצלבה עם clientes, אורך שיחה כ-mm:ss,
תרגום Q850 Text לעברית, שעת חיוג קריאה.
| מפתח | הסבר | חובה | ברירת מחדל | ערך / כללים |
|---|---|---|---|---|
| action | פעולת API | חובה | — | campaignReport |
| apiKey | מפתח ה-API של המערכת | חובה | — | מחרוזת |
| campaignId | מזהה הקמפיין שאת הדוח שלו רוצים לקבל | חובה | — | מספר. ניתן לקבל מ-campaignsHistory בשדה id |
Q850 Text מתורגם, אורך שיחה כ-mm:ss וכו'.
campaigns_calls לקמפיין פעיל,
או campaignsEnd_YYMM לקמפיין שהסתיים (לפי end_time).
השליפה אוטומטית.
sipCode + q850Text
sipCode הוא קוד התגובה הסופי של פרוטוקול SIP שהוחזר מהיעד,
ו-q850Text הוא סיבת הניתוק לפי תקן ITU Q.850 — מתורגמת לעברית
ע"י המערכת לפני ההחזרה. הטבלה למטה מסכמת את כל הערכים שעלולים להופיע, מקובצים לפי קטגוריה.
| קטגוריה | SIP | q850Text שיוחזר (עברית) | פירוש מבצעי |
|---|---|---|---|
| תקין | 200 |
ניתוק תקין (BYE) |
השיחה נענתה והסתיימה רגיל (אחד הצדדים ניתק) |
| — | סיום רגיל (לא צוין) |
סיום רגיל ללא סיבה מפורטת | |
| בעיית מספר / חיוג | 404 |
מספר לא מוקצה (404) |
המספר לא קיים אצל ספק היעד — לא להמשיך לחייג |
484 |
מספר שגוי / כתובת חלקית (484) |
המספר נשלח חלקי / לא בפורמט תקין | |
488 |
יעד לא תואם (488) |
הצד השני לא תומך בקודק / סוג השיחה — בעיית תאימות | |
| נמען לא זמין | 486 |
משתמש תפוס (486) |
הקו תפוס בשיחה אחרת — שווה ניסיון חוזר |
408 |
אין תגובת משתמש (408) |
הצד השני לא ענה לבקשת ה-SIP בזמן (timeout) | |
480 |
אין מענה (480) |
המכשיר זמין אך אין מי שיענה (כבוי / לא בקליטה / dnd) | |
603 |
השיחה נדחתה (603) |
הנמען דחה אקטיבית — בדרך כלל "Reject" או חסימה | |
| תשתית / רשת | 502 |
יעד לא פעיל (502) |
Gateway של היעד לא מגיב או החזיר שגיאה |
503 |
אין ערוץ זמין (503) |
לא נותרו ערוצים פנויים אצל הספק | |
503 |
תקלה ברשת (503) |
תקלה כללית ברשת ה-SIP של היעד | |
503 |
כשל זמני (503) |
שגיאה זמנית — שווה ניסיון חוזר | |
503 |
עומס בציוד מיתוג (503) |
הציוד עמוס מדי לקבל שיחות נוספות כעת | |
503 |
משאב לא זמין (503) |
משאב שנדרש לשיחה (קודק, trunk וכו') לא זמין | |
| Timeout פנימי | 504 |
התאוששות עקב פג זמן (504) |
פג זמן פנימי במערכת — השיחה הופסקה אוטומטית |
| אחר | — | שירות מבוקש לא מנוי |
השירות שביקשת (תוסף, יעד, שיחה בינ"ל וכו') לא קיים בחשבון |
| — | שגיאת פרוטוקול |
שגיאה ברמת פרוטוקול ה-SIP — הודעה לא תקינה / חוסר תאימות | |
| — | בין-רשתי |
בעיה במעבר בין רשתות (Interworking) — בדרך כלל בין SIP ל-PSTN | |
| — | לא ידוע |
סיבה לא מסווגת — בדוק את sipCode + sipText לפרטים |
q850Text שאינו ברשימה — זוהי המחרוזת המקורית באנגלית
כפי שהוחזרה מה-Gateway (אין תרגום אוטומטי). שווה לבדוק את sipText
לפרטים נוספים על השגיאה.
had180 ו-had183
שני שדות בוליאניים ("yes" / "no"; מחרוזת ריקה כאשר ה-Gateway לא סיפק אינדיקציה)
המאפשרים להבדיל בין כשלי חיוג שונים גם כאשר sipCode זהה — לדוגמה, האם הטלפון של היעד באמת צלצל,
או שהמרכזייה השמיעה הודעה מוקלטת לפני שהשיחה נדחתה.
| שדה | משמעות | שימוש מבצעי |
|---|---|---|
had180 |
התקבל SIP 180 Ringing במהלך החיוג — כלומר הטלפון של היעד צלצל בפועל. |
"yes" עם סטטוס לא-נענה מצביע על נמען שהיה זמין אך לא ענה (off / DND / לא שמע) —
מצדיק נסיון חוזר. "no" מצביע שהמרכזייה דחתה עוד לפני שהטלפון התחיל לצלצל
(תפוס במרכזייה, נתב חוסם, מספר לא מוקצה וכו').
|
had183 |
התקבל SIP 183 Session Progress — early media מהמרכזייה (טון חיוג / הודעה מוקלטת המושמעת לפני שהשיחה נענתה). |
"yes" עם סטטוס לא-נענה לרוב מצביע על הודעה מוקלטת של המרכזייה
("מנוי זמנית לא זמין", "המספר אינו מחובר" וכד') — לא בהכרח שווה לנסות שוב מיד.
|
"".
max_ringSetמאפשר לערוך בזמן אמת את מספר השיחות היוצאות המקבילות לקמפיין פעיל.
| מפתח | הסבר | חובה | ברירת מחדל | ערך / כללים |
|---|---|---|---|---|
| action | פעולת API | חובה | — | max_ringSet |
| apiKey | מפתח ה-API של המערכת | חובה | — | מחרוזת |
| campaignId | מזהה הקמפיין | חובה | — | מספר שלם |
| max_ringSet | מספר השיחות המקבילות לחיוג | חובה | — | מספר שלם |
campaignHoldמשהה את הקמפיין הפעיל — ניתן להמשיך אותו מאוחר יותר מנקודת העצירה.
| מפתח | הסבר | חובה | ברירת מחדל | ערך / כללים |
|---|---|---|---|---|
| action | פעולת API | חובה | — | campaignHold |
| apiKey | מפתח ה-API של המערכת | חובה | — | מחרוזת |
| campaignId | מזהה הקמפיין | חובה | — | מספר שלם |
campaignResumptionממשיך קמפיין שנמצא במצב "מושהה" מהנקודה בה הופסק.
| מפתח | הסבר | חובה | ברירת מחדל | ערך / כללים |
|---|---|---|---|---|
| action | פעולת API | חובה | — | campaignResumption |
| apiKey | מפתח ה-API של המערכת | חובה | — | מחרוזת |
| campaignId | מזהה הקמפיין | חובה | — | מספר שלם |
campaignStopעוצר את הקמפיין לחלוטין וסוגר אותו. פעולה זו אינה הפיכה — לא ניתן להמשיך קמפיין לאחר עצירה.
| מפתח | הסבר | חובה | ברירת מחדל | ערך / כללים |
|---|---|---|---|---|
| action | פעולת API | חובה | — | campaignStop |
| apiKey | מפתח ה-API של המערכת | חובה | — | מחרוזת |
| campaignId | מזהה הקמפיין | חובה | — | מספר שלם |
campaignHold.addDidרישום מספר טלפון חדש כ-"מספר מזהה" (Caller-ID / DID) בחשבון — המספר שיופיע בצד הנמען בעת חיוג בקמפיינים. בעלות על המספר מאומתת באמצעות שיחה שקטה לצג: המערכת מחייגת למספר, וקוד האימות הוא 6 הספרות האחרונות של המספר המחייג כפי שמופיע על הצג.
PhoneVerificationSend=1
PhoneVerification=CODE
| מפתח | הסבר | חובה | ברירת מחדל | ערך / כללים |
|---|---|---|---|---|
| action | פעולת API | חובה | — | addDid |
| apiKey | מפתח ה-API של המערכת | חובה | — | מחרוזת |
| phone | מספר הטלפון לרישום | חובה | — | פורמט ישראלי, למשל 0501234567 |
| PhoneVerificationSend | דגל ששולחים בשלב 1 כדי להפעיל את ענף שליחת השיחה | חובה | — | כל ערך אמיתי (truthy), בדרך כלל 1 |
| תרחיש | תגובה |
|---|---|
| המספר כבר רשום בחשבון | {"Status":"Error","note":"המספר כבר קיים"} |
| המספר אינו תקין (קצר/לא ספרות) | {"Status":"Error","ErrorCode":"1","note":"המספר אינו תקין"} |
| חריגה ממגבלת תדירות — מעל 5 שיחות אימות לאותו מספר ב-24 שעות | {"Status":"Error","ErrorCode":"1","note":"המערכת זיהתה מספר נסיונות מרובים בשעה האחרונה למספר שנבחר, נסה שנית מאוחר יותר"} |
| מפתח | הסבר | חובה | ברירת מחדל | ערך / כללים |
|---|---|---|---|---|
| action | פעולת API | חובה | — | addDid |
| apiKey | מפתח ה-API של המערכת | חובה | — | מחרוזת |
| phone | אותו מספר שנשלח בשלב 1 | חובה | — | פורמט ישראלי |
| PhoneVerification | 6 הספרות האחרונות של המספר המחייג שהוצגו על מסך הטלפון של הנמען | חובה | — | 6 ספרות. תווים שאינם ספרה מוסרים אוטומטית |
callId בקריאות campaignRun.(phone, code) אינו תואם לאף רשומה במערכת.
יש לחזור על שלב 1 כדי לקבל קוד חדש.
addDid שונה משאר ה-API: Status ב-S גדולה (לא status) ו-ErrorCode כמחרוזת.keysAction-X
ניתן להגדיר פעולה לכל מקש שהמשתמש יקיש בזמן שמיעת ההודעה.
הפרמטר הוא keysAction-X כאשר X הוא מספר המקש (1–8).
מקש 9 שמור תמיד להסרה מהמאגר.
"keysAction-1": "routing-0521111111"| ערך פעולה | תיאור | דוגמה |
|---|---|---|
replay |
השמעה חוזרת של ההודעה | "keysAction-3": "replay" |
digits |
קבלת הקשה מהמשתמש | "keysAction-2": "digits" |
routing-XXXX |
ניתוב למספר טלפון ישראלי — החליפו XXXX במספר הטלפון | "keysAction-1": "routing-0521234567" |
pbxRouting-X |
ניתוב לשלוחת תור במרכזיה — X הוא קוד השלוחה | "keysAction-1": "pbxRouting-200" |
sipRouting-XXXX |
ניתוב ל-SIP — החליפו XXXX בכתובת ה-SIP | "keysAction-1": "[email protected]" |
nedarimDonations-X1-X2-X3-X4-X5 |
תרומות דרך נדרים פלוס X1 = מספר מסוף | X2 = סכום קבוע | X3 = yes אם הסכום קבוע ולא ניתן לשינוי |
X4 = חובת הקשת CVV |
X5 = שם הקטגוריה
|
"keysAction-1": "nedarimDonations-12345-100-no-no-כללי" |
| פעולה | action | שדות חובה נוספים | תיאור |
|---|---|---|---|
| הפעלת קמפיין | campaignRun |
phones, audioFile / audioText / apiUrl, betweenRetries |
יצירה והפעלה של קמפיין חדש |
| היסטוריה | campaignsHistory |
— | שליפת רשימת קמפיינים לפי טווח תאריכים |
| דוח קמפיין מלא | campaignReport |
campaignId |
כל פרטי הדוח של קמפיין יחיד + שורה לכל נמען (מפורמט) |
| הגבלת שיחות | max_ringSet |
campaignId, max_ringSet |
עריכת כמות שיחות מקבילות בקמפיין פעיל |
| השהייה | campaignHold |
campaignId |
הפסקה זמנית — ניתן להמשיך מאוחר יותר |
| המשך | campaignResumption |
campaignId |
המשך קמפיין שהיה במצב מושהה |
| עצירה סופית | campaignStop |
campaignId |
סיום מוחלט — לא ניתן להמשיך לאחר מכן |
| הוספת מספר מזהה (DID) | addDid |
phone + PhoneVerificationSend / PhoneVerification |
רישום caller-ID חדש באימות שקט — 6 ספרות אחרונות של המחייג שמופיע על הצג |
https://app.ipsales.co.il/campaignApi.php
ועם שדה apiKey בכל בקשה.