Webhooks
Webhooks יוצאים מאפשרים לכם לקבל התראות HTTP POST בזמן אמת כשמתרחשים אירועים בפרויקט שלכם. Pro
סקירה
ה-webhooks מוסרים מטען JSON לכל נקודת קצה מסוג HTTPS שתגדירו, בכל פעם שמתרחש אירוע מסוים בפרויקט שלכם. כל webhook יכול להירשם לאירוע אחד או יותר מהרשימה הבאה:
| אירוע | תיאור |
|---|---|
post.created | נשלח פוסט משוב חדש |
post.updated | פוסט משוב נערך |
post.deleted | פוסט משוב נמחק |
comment.created | נוספה תגובה חדשה לפוסט |
comment.updated | תגובה נערכה |
comment.deleted | תגובה נמחקה |
post.status_changed | הסטטוס של פוסט השתנה (ממתין לטיפול, פתוח, מתוכנן, בביצוע, הושלם) |
message.created | נשלחה הודעה פרטית חדשה |
message.updated | הודעה פרטית נערכה |
message.deleted | הודעה פרטית נמחקה |
beta_feedback.created | בודק בטא שלח משוב על תוכנית בטא |
beta_feedback.deleted | פריט משוב בטא נמחק |
waitlist_signup.created | מבקר הצטרף לרשימת ההמתנה |
waitlist_signup.invited | רשומה ברשימת ההמתנה הוזמנה מהרשימה |
waitlist_signup.joined | רשומה שהוזמנה אישרה והצטרפה |
csat_survey.completed | סקר שביעות רצון הושלם עם דירוג |
ה-webhooks מוגבלים לפרויקטים בודדים. לכל פרויקט יש קבוצה משלו של נקודות קצה עם תצורות וסודות חתימה עצמאיים.
הגדרת webhook
- עברו לעמוד אינטגרציות של הפרויקט
- גללו אל מקטע Webhooks יוצאים
- לחצו על הוספת webhook
- הזינו את כתובת נקודת הקצה שלכם (חייבת להיות HTTPS בסביבת ייצור)
- בחרו לאילו אירועים להירשם
- לחצו על שמירה
לאחר השמירה, מוצג סוד חתימה פעם אחת. העתיקו אותו מיד — לא ניתן לאחזר אותו מאוחר יותר. תוכלו להפיק אותו מחדש בכל עת מתפריט הפעולות של ה-webhook.
אימות חתימות webhook
כל מסירת webhook כוללת כותרת X-SupDesk-Signature שמכילה חתימת HMAC-SHA256 של גוף
הבקשה. כדי לאמת webhook:
- חשבו
HMAC-SHA256(your_signing_secret, raw_request_body) - השוו את התוצאה לערך ההקסדצימלי בכותרת
X-SupDesk-Signature(אחרי הקידומתsha256=) - השתמשו בהשוואה בזמן קבוע כדי למנוע התקפות תזמון
Node.js
import { createHmac, timingSafeEqual } from "crypto";
function verifyWebhook(secret, body, signature) {
const expected = createHmac("sha256", secret)
.update(body)
.digest("hex");
const sig = signature.replace("sha256=", "");
return timingSafeEqual(Buffer.from(expected), Buffer.from(sig));
}Python
import hmac
import hashlib
def verify_webhook(secret: str, body: bytes, signature: str) -> bool:
expected = hmac.new(
secret.encode(), body, hashlib.sha256
).hexdigest()
sig = signature.removeprefix("sha256=")
return hmac.compare_digest(expected, sig)Ruby
require "openssl"
def verify_webhook(secret, body, signature)
expected = OpenSSL::HMAC.hexdigest("SHA256", secret, body)
sig = signature.sub("sha256=", "")
Rack::Utils.secure_compare(expected, sig)
endבדיקת webhook
לחצו על כפתור בדיקה לצד webhook כדי לשלוח מטען לדוגמה לנקודת הקצה שלו. במטען הבדיקה
יש "event": "test" ושדה data.message. השתמשו בכלי כמו
webhook.site כדי לבחון את הבקשה שנמסרה.
יומן מסירות
יומן המסירות מציג את 50 ניסיונות המסירה האחרונים לכל webhook, כולל:
- אירוע — איזה אירוע נמסר
- סטטוס —
successאוfailed - קוד תגובה — קוד סטטוס HTTP מנקודת הקצה
- ניסיונות — מספר ניסיונות המסירה (כולל חזרות)
- זמן — מתי בוצע ניסיון המסירה
התנהגות בחזרה על ניסיונות
כשמסירת webhook נכשלת (תגובת 5xx או פסק זמן ברשת), SupDesk חוזרת עד 3 פעמים עם השהיה מעריכית:
| ניסיון | השהיה |
|---|---|
| 1 | מיידי |
| 2 | שנייה אחת |
| 3 | 2 שניות |
שגיאות לקוח (4xx) אינן מנוסות שוב — הן מעידות על בעיה קבועה בתצורת נקודת הקצה.
דרישות תוכנית
Webhooks יוצאים זמינים בתוכניות Pro ו-Team.
Pro