إرسال الإجابات إلى نقطة نهايتك عبر الويب هوك
أرسل كل إجابة تتلقاها حملة، موقّعة، إلى عنوان HTTPS خاص بك، أو أي حمولة من خطوة في سير عمل. وتعرّف على الفرق بين موصل Webhooks والويب هوك في الإعدادات ← واجهة البرمجة.
في هذه الصفحة
يرسل الموصل Webhooks كل إجابة تتلقاها حملة إلى عنوان على خادمك الخاص، في طلب POST موقّع، بعد لحظات من تقديمها. ويمكن لسير العمل استخدامه أيضًا لإرسال كل ما يعرفه التشغيل. في نهاية هذا الدليل سيكون لديك نقطة نهاية تستقبل الإجابات، ووسيلة للتحقق من أن كل طلب يأتي فعلًا من Polzy.
يتوفر موصل Webhooks في خطة أعمال. لا يستطيع ربطه واختيار وجهة إجابات الحملة إلا المسؤول.
أي ويب هوك تحتاج؟
يمكن لـ Polzy استدعاء خادمك بثلاث طرق:
| موصل Webhooks (هذه المقالة) | الإعدادات ← واجهة البرمجة ← الويب هوك | خطوة ويب هوك صادر | |
|---|---|---|---|
| ما يُرسل | كل إجابة لحملة، أو حمولة خطوة في سير عمل | أحداث مساحة العمل: إنشاء إجابة، انتهاء حملة، إنشاء إجراء أو إكماله | ما تحدده خطوة سير العمل |
| مكان الإعداد | التكاملات، ثم علامة التبويب التكاملات في الحملة أو خطوة في سير العمل | الإعدادات ← واجهة البرمجة ← الويب هوك | سير عمل |
| الخطة | أعمال | فريق | فريق |
| التوقيع | X-Polzy-Signature، على المتن | X-Polzy-Signature، على الطابع الزمني والمتن | لا |
| عند فشل التسليم | ثلاث محاولات إجمالًا | ست محاولات خلال نحو نصف ساعة، مع سجل لكل محاولة | تقرر قاعدة الخطأ في الخطوة |
للأحداث على مستوى مساحة العمل كلها، راجع إرسال الويب هوك واستقباله.
قبل أن تبدأ
تحتاج إلى:
- مساحة عمل على خطة أعمال، ودور مسؤول فيها.
- تفعيل التكاملات لمساحة العمل، من الإعدادات ← عام ← ما تقوم به مساحة العمل هذه.
- نقطة نهاية على الإنترنت، عبر HTTPS، تقبل
POSTبمتن JSON وترد بحالة 2xx خلال 10 ثوانٍ. يرفض Polzy عناوينhttp://والعناوين داخل شبكة خاصة.
ربط موصل Webhooks
عند الربط يُحفظ ما تشترك فيه كل الطلبات: سر التوقيع وأي ترويسات.
- في الشريط الجانبي، ضمن الأتمتة، افتح التكاملات واختر علامة التبويب متاحة.
- ابحث عن Webhooks واختر ربط.
- في سر التوقيع، أدخل قيمة عشوائية طويلة واحتفظ بنسخة منها لخادمك.
- ضمن ترويسات HTTP، أضِف أي ترويسات تريد إرسالها، مثل
Authorization. تُحفظ قيمها مشفّرة. راجع معلومات مفيدة لمعرفة وجهتها. - اختر ربط. يرد الاختبار بـ Connected. Each survey and step names the endpoint it posts to.
إذا تُرك سر التوقيع فارغًا، يُنشأ سر لك — لكنه لا يُعرض أبدًا، فلن تستطيع التحقق من التوقيعات به. أدخل سرّك الخاص. ولتغييره لاحقًا، اختر تهيئة واكتب السر الجديد فوق القيمة المحفوظة.
إعطاء الحملة نقطة نهايتها
- افتح الحملات، ثم الحملة وعلامة التبويب التكاملات الخاصة بها.
- ضمن إضافة اتصال، ابحث عن Webhooks واختر اتصال. إذا ظهر على الزر إعداد، فهذا يعني أن الموصل لم يُربط بمساحة العمل بعد.
- في الوجهة، أدخل العنوان الذي تُرسل إليه إجابات هذه الحملة.
- اختر حفظ التغييرات.
يظهر Webhooks بعد ذلك ضمن متصل بهذه الحملة، مع يرسل إلى والعنوان، ومفتاحه، وتعديل الإعداد، وقطع الاتصال، وعدد الإجابات المرسلة والفاشلة. ويمكن لكل حملة الإرسال إلى نقطة نهايتها الخاصة.
ما تستقبله نقطة نهايتك
كل إجابة طلب POST بهذه الترويسات:
| الترويسة | ما تحتويه |
|---|---|
Content-Type | application/json |
X-Polzy-Event | response.submitted لإجابة الحملة؛ ومن سير العمل، اسم الحدث الخاص بالخطوة. |
X-Polzy-Signature | HMAC-SHA256 لمتن الطلب الخام، محسوبة بسر التوقيع ومكتوبة بالنظام الست عشري. |
X-Polzy-Timestamp | قيمة timestamp من المتن. |
Idempotency-Key | من خطوة في سير العمل فقط: تبقى نفسها عند تكرار الخطوة ذاتها، لكي تتجاهل التكرار. |
وهذا المتن بصيغة JSON:
| الحقل | ما يحتويه |
|---|---|
event | response.submitted. |
timestamp | وقت إرسال الطلب. وفي الإجابة المجهولة، اليوم الذي قُدّمت فيه. |
survey.id, survey.title | معرّف الاستبيان وعنوانه. |
response.id | معرّف الإجابة في Polzy. فارغ في الإجابة المجهولة. |
response.submittedAt | وقت إكمال الإجابة. وفي الإجابة المجهولة، اليوم فقط. |
response.answers | عنصر لكل سؤال أُجيب عنه، يحتوي كل منها على questionId وquestionText وvalue. |
response.score | الدرجة الإجمالية، إذا كانت قد حُسبت وقت إرسال الطلب. |
تحمل الإجابة المجهولة ما قالته ودرجتها ويومها، ولا شيء يمكن أن يكشف صاحبها أو يحدد وقتها. وينتظر Polzy فحص السلامة لكل إجابة، لمدة تصل إلى 10 دقائق، قبل إرسالها؛ والإجابة المحجوبة لمراجعة السلامة تصل نصًا بديلًا. لا يحجب الحد الأدنى لحجم المجموعة الإجابات المفردة.
التحقق من التوقيع
- اقرأ متن الطلب كما وصل تمامًا، قبل تحليله.
- احسب HMAC-SHA256 له بسر التوقيع، مكتوبًا بالنظام الست عشري.
- قارنه بـ
X-Polzy-Signatureباستخدام مقارنة بزمن ثابت. وإذا اختلفا، فارفض الطلب.
الطابع الزمني جزء من المتن، لذا فإن أي تغيير فيه يُبطل التوقيع أيضًا.
إرسال ويب هوك من سير عمل
- افتح سير العمل ثم سير العمل المطلوب، أو أنشئ واحدًا جديدًا.
- ضمن الموصلات في الخطوات المثبتة، اسحب إرسال ويب هوك · Webhooks إلى لوحة العمل.
- في نقطة النهاية، أدخل العنوان الذي ترسل إليه هذه الخطوة.
- في اسم الحدث، أبقِ
workflow.stepأو سمِّ الحدث الذي يتوقعه خادمك. يُرسل باسمX-Polzy-Event. - اترك الحمولة فارغة لإرسال كل ما يعرفه التشغيل، أو اكتب JSON الذي تريده، مع
{{لإدراج قيم من التشغيل. - اختر إرسال اختبار لإرسال طلب واحد مملوء بإجابة نموذجية.
تُوقَّع الخطوة بسر الاتصال، وتمرّر رد خادمك باسم {{connector.statusCode}} و{{connector.response}}.
التحقق من أنه يعمل
في علامة التبويب التكاملات للحملة، يحتسب سطر النشاط الإجابات المرسلة وتلك التي فشلت. وتعرض صفحة الموصل كل عملية إرسال ضمن النشاط، مع نجح أو فشل والسبب.
حل المشكلات
ضمن النشاط، تظهر عملية الإرسال الفاشلة بعبارة Webhook failed: متبوعة بالسبب؛ ويعرض تشغيل سير العمل السبب نفسه دون هذه البادئة.
- Webhook failed: only https endpoints are allowed. يجب أن تبدأ نقطة النهاية بـ
https://. - Webhook failed: private addresses are not allowed. يشير العنوان إلى شبكة خاصة، مثل
localhostأو10.0.0.5. استخدم عنوانًا يمكن الوصول إليه من الإنترنت. - Webhook failed: that host could not be found. الاسم الوارد في العنوان غير موجود. تحقق من كتابته.
- Webhook failed: متبوعة بحالة مثل
500، أو timeout of 10000ms exceeded. ردّت نقطة نهايتك بخطأ، أو استغرقت أكثر من 10 ثوانٍ. أي رد غير 2xx يُعد فاشلًا، ويُعاد الإرسال ثلاث مرات إجمالًا. - No endpoint for this survey. Set one on its Integrations tab. لا توجد نقطة نهاية للحملة. أضِف واحدة عبر تعديل الإعداد في علامة التبويب التكاملات للحملة.
- لا يتطابق التوقيع. احسبه على المتن الخام، قبل أي تحليل، بالسر الذي أدخلته. وإذا أُنشئ السر لك، فأدخل سرّك الخاص.
- لا تصل الترويسة الخاصة بك. راجع ما يلي: لا تذهب الترويسات إلا إلى مضيف يرسل إليه الاتصال نفسه.
الإجابات التي وصلت قبل حفظ نقطة النهاية، أو أثناء إيقاف المفتاح، لا تُرسل لاحقًا. صدّرها بدلًا من ذلك من الردود في الاستبيان.
معلومات مفيدة
- إلى أين تذهب ترويسات HTTP؟ إلى مضيف يرسل إليه الاتصال نفسه فقط. نقطة النهاية التي تختارها حملة أو خطوة على مضيف آخر تُستدعى دونها، فلا تصل قيمة
Authorizationالمحفوظة أبدًا إلى عنوان لم تكن مخصصة له. اعتمد على التوقيع لتمييز طلبات Polzy عن غيرها. - هل تُرسل الإجابات غير المكتملة؟ لا. تُرسل الإجابات المكتملة فقط، مرة واحدة لكل منها.
- هل يمكن لنقطة نهايتي أن ترد ببيانات؟ في خطوة سير العمل، نعم: يُحفظ الرد باسم
{{connector.response}}للخطوات اللاحقة. أما في إجابات الحملة فلا يُعتد إلا بحالة الرد.
مقالات ذات صلة
يمكن للأعضاء المسجّلين سؤال Polzy أو مراسلة الفريق من صفحة الدعم. تعتمد سرعة ردّنا على خطتك.
