השיחות שלך. גם ב־CRM שלך.
בהגדרות המספר בחר מספר, טען את החיבור, הדבק כתובת HTTPS ציבורית, הפעל ושמור. אירוע בדיקה מכיל נתוני דוגמה בלבד.
מה נשלח?
בקשות POST עם JSON: תחילת שיחה (call.started), עדכון (call.updated), סיום (call.ended) והקלטה זמינה (recording.ready). העדכונים תלויים במידע שהתקבל עבור הקו. סנכרון ידני יכול לשלוח גם עדכונים לשיחות היסטוריות.
{
"id": "unique-event-id",
"type": "call.ended",
"version": "2026-10-17",
"created_at": "2026-10-17T14:00:00Z",
"data": {
"call_id": "stable-call-id",
"number_id": "your-number-id",
"business_number": "+97230000000",
"line_label": "הקו הראשי",
"direction": "inbound",
"caller": "+972500000000",
"destination": "+972520000000",
"status": "completed",
"duration_seconds": 120,
"started_at": "2026-10-17T13:58:00Z",
"recording": {
"available": true,
"url": "https://telqio.co.il/api/recordings?...",
"expires_in_seconds": 604800
}
}
}אימות ושמירה
מפתח אימות הודעות ה־Webhook מוצג בהגדרות המספר. קישורי ההקלטה נחתמים במפתח שרת נפרד שאינו נמסר ל־CRM. הכותרת X-DeskCall-Signature מכילה sha256= ואחריו HMAC-SHA256 של חותמת הזמן, נקודה וגוף הבקשה המקורי ללא שינוי. חותמת הזמן נמצאת בכותרת X-DeskCall-Timestamp.
import { createHmac, timingSafeEqual } from 'node:crypto';
const timestamp = req.headers['x-deskcall-timestamp'];
if (!/^\d+$/.test(timestamp || '') ||
Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) {
throw new Error('expired request');
}
const expected = 'sha256=' + createHmac('sha256', signingSecret)
.update(timestamp + '.' + rawRequestBody).digest('hex');
const supplied = req.headers['x-deskcall-signature'] || '';
if (supplied.length !== expected.length ||
!timingSafeEqual(Buffer.from(supplied), Buffer.from(expected))) {
throw new Error('invalid signature');
}
// Save the event atomically using its unique id, then return HTTP 200.יש לשמור את מזהה האירוע כדי למנוע טיפול כפול. סדר ההגעה אינו מובטח, ואין להחליף סטטוס סופי בסטטוס מוקדם. יש להחזיר תשובת 2xx בתוך 10 שניות. במקרה של כשל יבוצעו עד שמונה ניסיונות עם מרווחים הולכים וגדלים. מצב המשלוחים מוצג בהגדרות.
הקלטות
קישור ההקלטה תקף לשבעה ימים מרגע המשלוח. יש להוריד ולשמור את הקובץ במערכת שלך אם נדרש לשמור אותו לאורך זמן. ערך null בשדה available אומר שהזמינות טרם אושרה; קישור יכול להחזיר 404 עד שההקלטה מוכנה. נבדקת זמינות במשך כ־20 דקות לאחר שיחה מתאימה, ובסנכרון שיחות נוסף. לא לכל שיחה קיימת הקלטה.
כיבוי החיבור או שינוי כתובתו מבטלים משלוחים ממתינים וקישורי הקלטה קודמים. בקשה שכבר יצאה לדרך עשויה להשלים את השליחה. שינוי הכתובת או החלפת מפתח דורשים עדכון של מפתח אימות ההודעות ב־CRM. המערכת אינה עוקבת אחרי הפניות HTTP, ואינה מאפשרת יעדים ברשת פנימית. היעד חייב לתמוך ב־IPv4 ציבורי.