Webhooks וחיבור n8n
אירוע יכול לפתוח ליד או להפעיל המשך, אבל רק אחרי אימות חתימה.
מה webhook עושה
לאחר אירוע שיחה TTMA שולח POST לכתובת שהגדרתם. האירוע מאפשר לעדכן CRM, לשלוח התראה או להפעיל המשך בלי polling.
- call started
- call completed
- outcome available
- recording ready לפי הגדרה
הגדרת endpoint
ה-endpoint חייב להיות HTTPS ציבורי, להחזיר 2xx במהירות ולשמור את ה-body הגולמי לצורך אימות חתימה.
- TLS תקין
- timeout קצר
- ללא redirect
- secret נפרד לסביבה
- תגובה לפני עבודה ארוכה
חיבור n8n שלב אחר שלב
- צרו Webhook node במצב POST
- רשמו את Production URL ב-TTMA
- הוסיפו Code node לאימות HMAC
- עצרו את ה-flow אם האימות נכשל
- העבירו payload ל-nodes העסקיים
payload ושדות מרכזיים
השתמשו ב-eventId ל-idempotency, ב-callId לקישור נתונים, ב-type לניתוב וב-createdAt לבדיקת freshness. metadata מכיל רק מזהים שהמערכת שלכם שלחה.
{
"eventId": "evt_...",
"type": "call.completed",
"callId": "call_...",
"createdAt": "2026-08-10T12:00:00Z"
}אימות HMAC
חשבו HMAC על bytes של ה-body המקורי והשוו ב-constant time. בדקו timestamp והחזיקו cache קצר של event IDs כדי למנוע replay.
- לא לפרסר לפני החתימה
- לא לבצע השוואת string רגילה
- לא לקבל timestamp ישן
- לא לעבד event פעמיים
מתכונים שימושיים
- שורה ב-Google Sheets עם call ID ותוצאה
- הודעת Slack ללא מידע אישי רגיש
- upsert ב-CRM לפי מזהה
- שליחת follow-up רק לאחר outcome מאושר
פתרון תקלות
- לא מתקבל אירוע: בדקו Production URL והפעלה
- חתימה לא תואמת: בדקו raw body ו-encoding
- אירוע כפול: הוסיפו idempotency
- מסירה מאוחרת: בדקו אם האירוע מחכה להקלטה
- retry: החזירו 2xx רק לאחר קבלה בטוחה
בדיקת בטיחות
אל תפעילו workflow לפני האימות ואל תעלו secrets ל-Git.