POST موقّعًا بتنسيق JSON إلى عنوان URL.
يمكنك إدارة Webhooks في التطبيق تحت Settings → Webhooks (راجع إضافة Webhooks الصادرة وإدارتها) أو باستخدام Webhooks API. هذه الصفحة هي المرجع لما يرسله Flowella.
أنواع الأحداث
حدّد هذه الأحداث عند إضافة webhook، أو مرّرها فيevents عند إنشائه باستخدام API.
لا تُطلق أحداث جهات الاتصال إلا لاستدعاءات API هذه الخاصة بجهة اتصال واحدة. ولا تُطلق لـ
POST /v1/contacts/bulk-upsert، ولا لجهات الاتصال التي تنشئها الرسائل الواردة، ولا للتغييرات التي تُجرى في التطبيق أو تُزامن من HubSpot.
يرسل Flowella أيضًا webhook.test عندما تختار Send test event في التطبيق أو تستدعي POST /v1/webhooks/{id}/test. لا يمكنك الاشتراك فيه. وتكون قيمة data الخاصة به { "test": true, "sentAt": "<ISO 8601 time>" }.
يمكن أن تُنتج رسالة صادرة واحدة حدثَي
message.sent: أحدهما عندما يسلّمها Flowella إلى Meta، والآخر عندما تُبلغ Meta بأنها أُرسلت. لكل منهما قيمة id مختلفة في المستوى الأعلى. استخدم data.messageId لربطهما بالرسالة نفسها.تنسيق الطلب
يرسل Flowella كل حدث كطلب HTTPPOST مع هذه الرؤوس:
لا يرسل Flowella أي رؤوس مخصصة أخرى. نوع الحدث ومعرّفه موجودان في الجسم.
الجسم
لكل webhook إصدار حمولة، تُرجعه Webhooks API فيpayloadVersion. الإصدار 1 هو الافتراضي لكل webhook، ولا يوجد إعداد في التطبيق أو API لتغييره. يستخدم الإصداران هذين الغلافين:
لا يرسل Flowella حدثًا يتجاوز حجم
data فيه 256 KB.
التحقق من التواقيع
تحقق من التوقيع في كل طلب قبل أن تثق به. يحسب Flowella قيمةX-Flowella-Signature على النحو التالي:
- الخوارزمية: HMAC مع SHA-256.
- المفتاح: سر التوقيع كنص UTF-8، تمامًا كما حُفظ. يتضمن السر الذي تنشئه API البادئة
whsec_. - الرسالة: جسم الطلب الخام، بايتًا ببايت، كما أرسله Flowella. لا يُوقَّع أي شيء آخر: لا يوجد طابع زمني أو عنوان URL في التوقيع.
- المخرجات: نظام ست عشري بأحرف صغيرة، 64 حرفًا، دون البادئة
sha256=.
الاستجابات وإعادة المحاولات والمهل
يسلّم Flowella عدة أحداث في آن واحد، لذا قد تصل بترتيب غير متسلسل. استخدم
created_at أو occurred_at إذا كان الترتيب مهمًا. ردّ بحالة 2xx فور التحقق من صحة التوقيع، ثم عالج الحدث في الخلفية. لمعرفة كيف تظهر إعادة المحاولات في التطبيق، راجع المحاولات المتكررة والتراجع.
إزالة تكرار الأحداث
قد تستقبل نقطة النهاية الخاصة بك الحدث نفسه أكثر من مرة: إعادة محاولة بعد انتهاء مهلة نقطة النهاية مع أنها عالجت الطلب، أو إعادة تشغيل عبر API. أزل التكرار بناءً علىid في المستوى الأعلى:
- خزّن
idكل حدث تعالجه. - إذا كان
idالوارد مخزنًا بالفعل، فردّ بـ200ولا تفعل شيئًا آخر. - احتفظ بالمعرّفات المخزنة على الأقل طوال المدة التي قد تعيد فيها تشغيل عمليات التسليم.
data.messageId. فالأحداث المختلفة المتعلقة بالرسالة نفسها، مثل message.sent وmessage.delivered، تتشاركه.
موجز الأحداث
موجز الأحداث بديل قائم على السحب لـ Webhooks. تُرجعGET /v1/events الأحداث من آخر 7 أيام، بما في ذلك الأحداث التي لا يشترك فيها أي webhook. وتحتاج إلى النطاق events:read. صفِّ باستخدام type (نوع واحد أو قائمة مفصولة بفواصل) وoccurredAfter وoccurredBefore، وتنقّل بين الصفحات باستخدام limit وcursor.
يحتوي كل عنصر على id وtype وoccurredAt وversion وcorrelationId وdata. تطابق قيمة id قيمة id في جسم الـ webhook، لذا يمكنك استخدام الموجز لسد الفجوات بعد توقف نقطة النهاية الخاصة بك.
إدارة Webhooks باستخدام API
تحتاج كل نقاط نهاية Webhooks إلى مفتاح API أو رمز وصول OAuth يتضمن النطاقwebhooks:manage. والمفاتيح المنشأة في التطبيق تتضمنه. راجع مقدمة API للاطلاع على المصادقة.
تحتوي كائنات الـ webhook على
id وname وurl وevents وisActive وconsecutiveFailures وsigningSecretPrefix (أول 8 أحرف من السر الحالي) وpayloadVersion وlastTriggeredAt وdisabledAt وcreatedAt وupdatedAt.
تنطبق بعض القواعد على Webhooks المُدارة عبر API:
- لا يمكنك اختيار سر التوقيع عبر API. تنشئ
POST /v1/webhooksسرًا يبدأ بـwhsec_وتُرجعه مرة واحدة، فيsigningSecret. - لا تُحتسب عمليات إعادة التشغيل ضمن عدّاد الفشل ولا تعيد تعيينه. لا يسلّم Flowella إعادة التشغيل إلا إذا كان الـ webhook نشطًا ولا يزال مشتركًا في نوع الحدث ذلك.
- يجب أن يتبع عنوان URL قواعد عنوان URL نفسها المطبقة في التطبيق.
تدوير سر التوقيع
دوّر السر عندما تعتقد أنه تسرّب، أو وفق جدول منتظم. يعمل التدوير مع أي webhook له سر، بما في ذلك Webhooks التي كتبت سرها في التطبيق.1
اطلب سرًا جديدًا
استدعِ نقطة نهاية التدوير وخزّن
signingSecret من الاستجابة. لا يُرجعه Flowella إلا مرة واحدة.2
اقبل السرّين لمدة 24 ساعة
تُوقَّع عمليات التسليم الجديدة بالسر الجديد في
X-Flowella-Signature، وبالسر القديم في X-Flowella-Signature-Previous. يستمر المعالج الذي لا يزال يستخدم السر القديم في العمل إذا تحقق من الرأسين، كما في المثال في التحقق من التواقيع.3
انتقل إلى السر الجديد
حدّث المعالج لديك إلى السر الجديد خلال 24 ساعة. بعد ذلك، يتوقف Flowella عن إرسال
X-Flowella-Signature-Previous.الاختبار محليًا
لاستقبال Webhooks على جهاز الكمبيوتر الخاص بك، اعرض الخادم المحلي عبر نفق عام، مثل ngrok أو Cloudflare Tunnel. استخدم عنوان URL العام للنفق كنقطة النهاية. ثم استخدم Send test event لإرسال الطلبات متى احتجت إليها. يرفض Flowella العناوين المحلية والخاصة، لذا لا يعمل عنوان URL من نوعlocalhost.
ذات صلة
إدارة Webhooks في التطبيق
أضف نقاط النهاية، وأرسل أحداثًا تجريبية، واقرأ سجل التسليم.
مقدمة API
المصادقة والنطاقات وحدود المعدل والأخطاء.
مفاتيح API
أنشئ المفتاح الذي تحتاجه لـ Webhooks API.
Developer hub
طلبات API الأخيرة، وأدلة البدء السريع، وAPI sandbox.

