ما هو الـ webhook؟
الـ webhook طلب HTTP ترسله خدمة ما إلى عنوان تسجّله عندما يحدث شيء — تسوية دفعة، أو تسليم رسالة، أو انتهاء بناء — فيتفاعل نظامك مع الأحداث بدلاً من الاستطلاع المتكرر. اختباره يعني التقاط ما يُرسَل فعلياً (الأسلوب والترويسات والجسم)، وفحص إعادة المحاولة والترتيب، والتحقق من التوقيع الذي يثبت أن النداء جاء من المرسِل.
ملاحظة أمنية: نقطة نهاية الـ webhook عنوان عام يمكن لأي شخص الإرسال إليه. تحقق من توقيع المرسِل (عادةً HMAC على الجسم الخام) بمقارنة ثابتة الزمن، وارفض الطوابع الزمنية القديمة، وتعامل مع الحمولة كمدخل غير موثوق.
اقرأ الدليل: ما هو اختبار API؟ وكيف تختبر REST API
كيفية استخدام فاحص تسليم رسائل SMS
- اضغط «إنشاء رابط التقاط» وانسخ العنوان الذي يظهر.
- في لوحة مزوّدك، اضبط ذلك العنوان كـ webhook الرسائل الواردة لرقم تملكه.
- أرسل رسالة نصية إلى رقمك أنت.
- يظهر التسليم هنا — افتحه لفحص الحمولة والترويسات والتوقيع.
- قارنه بما استقبله معالجك لتكتشف أين يفترق الاثنان.
- أنت رقم تملكه
- مزوّد SMS لديك مثل Twilio
- خدمة الالتقاط عنوان الالتقاط
- هذه الصفحة
- 1 من هذه الصفحة إلى خدمة الالتقاط: إنشاء رابط التقاط
- 2 من خدمة الالتقاط إلى هذه الصفحة: عنوان الالتقاط لتنسخه ردّ
https://www.mutqansoft.sa/hooks/AbC123xYz - 3 من أنت إلى مزوّد SMS لديك: اضبطه كـ webhook الرسائل الواردة لرقمك في Twilio: الخيار
A message comes in - 4 من أنت إلى مزوّد SMS لديك: أرسل رسالة نصية إلى رقمك أنت
- 5 من مزوّد SMS لديك إلى خدمة الالتقاط: يرسل الرسالة الواردة بطلب POST مُرمَّزة كنموذج لا JSON، مع
X-Twilio-SignatureFrom=%2B966500000000&Body=test&MessageSid=SM… - 6 من هذه الصفحة إلى خدمة الالتقاط: تستعلم عن عمليات التسليم الجديدة
- 7 من خدمة الالتقاط إلى هذه الصفحة: يظهر التسليم هنا ردّ الحمولة والترويسات والتوقيع، لتقارنها بما استقبله معالجك
النتيجة: لا يُخصَّص أي رقم ولا تُستقبل أي رسالة نيابةً عنك.
يُحذف كل تسليم ملتقط بعد ساعتين من وصوله، ويبقى عنوان الالتقاط صالحاً 24 ساعة.
مزايا فاحص تسليم رسائل SMS
- عنوان التقاط تلصقه مباشرةً في حقل webhook الرسائل الواردة لدى مزوّدك
- عرض كامل للطلب: الحمولة بعد التحليل، والترويسات (تظهر ترويسات بيانات الاعتماد بالقيمة [redacted] وتبقى ترويسات التوقيع كما هي)، وسلسلة الاستعلام، والطريقة، والحجم بالبايت
- تحليل الحمولات المُرمَّزة كنموذج وبصيغة JSON معاً، فتُقرأ حمولات Twilio وحمولات JSON بوضوح
- إظهار ترويسات التوقيع وتحديد النظام المستخدم لتعرف ما ينبغي لكودك التحقق منه
- أمر curl قابل لإعادة التشغيل لنفس التسليم، لتجربته على نقطتك الخاصة
- لا يُخصَّص أي رقم ولا تُستقبل أي رسالة نيابةً عنك — الأداة تفحص استدعاء مزوّدك أنت
مثال على فاحص تسليم رسائل SMS
معرفة سبب عدم وصول رسالة واردة إلى المعالج
الإدخال:
webhook المزوّد ← https://www.mutqansoft.sa/hooks/AbC123xYz
أرسل رسالة SMS إلى رقمكالنتيجة:
POST / application/x-www-form-urlencoded ٤١٢ بايت
X-Twilio-Signature: q1VZ…
الحمولة: From=%2B966500000000&Body=test&MessageSid=SM…
← مُرمَّزة كنموذج لا JSON — ومعالج يتوقع JSON سيقرؤها فارغةالأسئلة الشائعة حول فاحص تسليم رسائل SMS
هل تمنحني الأداة رقم هاتف؟
لا، وهذا مقصود. تفحص الأداة webhook الذي يرسله مزوّدك أنت لرقم تتحكم فيه بالفعل. ولا تُخصِّص رقماً ولا تستقبل رسالة نيابةً عن أحد.
كيف أوجّه مزوّدي إليها؟
أنشئ عنوان التقاط هنا، ثم الصقه في حقل webhook الرسائل الواردة لرقمك في لوحة مزوّدك — «A message comes in» في Twilio، واستدعاء الوارد في Vonage، وما يقابلهما لدى غيرهما. أرسل رسالة إلى نفسك فيظهر التسليم هنا.
أي المزوّدين تفهمهم الأداة؟
تُعرض الحمولة والترويسات لأي مُرسِل. وتُتعرَّف أنظمة التوقيع للمزوّدين الشائعين ومنهم Twilio، وتُعرض الترويسة الخام دائماً لتتحقق يدوياً عند الحاجة.
لماذا لم تصل رسالتي إلى نقطتي الخاصة؟
الأسباب المعتادة ظاهرة هنا: استجابة غير 2xx من معالجك، أو توقيع يرفضه كودك، أو حمولة مُرمَّزة كنموذج جرى تحليلها كـ JSON، أو عنوان لا يستطيع المزوّد الوصول إليه. قارن ما يصل إلى عنوان الالتقاط بما استقبله معالجك.
كم تُحفظ الطلبات الملتقطة؟
ساعتان. يبقى عنوان الالتقاط نفسه صالحاً ٢٤ ساعة حتى يستمر عمل الـ webhook الذي ضبطته لدى مزوّدك، لكن كل تسليم يلتقطه — وهو في حالة رسالة SMS واردة يحتوي رقم هاتف وغالباً رمز تحقق — يُحذف بعد ساعتين من وصوله. لا توجّه إليه حركة إنتاجية تحتوي بيانات شخصية.
ملاحظات تقنية
لا تملك هذه الأداة أي تكامل مع مزوّد، وذلك عن قصد. فهي لا تُخصِّص رقم هاتف ولا تحتفظ باعتماد مزوّد ولا تستقبل رسالة لأحد: إنما تلتقط استدعاء HTTP الذي يقوم به مزوّدك أنت لرقم تتحكم فيه أصلاً. وهذا يُبقيها أداة لتصحيح تكاملك لا وسيلة لاستقبال الرسائل بشكل مجهول.
يُحذف الطلب الملتقط بعد ساعتين من وصوله، ويُحتفظ بعدد محدود منها لكل عنوان. ويبقى العنوان نفسه أطول — 24 ساعة — حتى يستمر عمل الـ webhook الذي ضبطته لدى مزوّدك، أما الحمولات فلا، لأن جسم رسالة SMS واردة يحمل رقم هاتف وغالباً رمز تحقق ساري. ولأن كل ما يُرسل إلى عنوان الالتقاط يمكن لحامله قراءته، لا ينبغي توجيه حركة إنتاجية تحمل بيانات شخصية إليه.
المراجع
- RFC 9421: HTTP Message Signaturesطريقة قياسية لتوقيع رسائل HTTP بحيث يتحقق المستلم من مصدرها وسلامتها — أساس توقيعات webhook الحديثة.
- RFC 2104: HMAC: Keyed-Hashing for Message Authenticationبناء HMAC: كيف يُنتج مفتاح سري ودالة تجزئة رمز مصادقة للرسالة.
- OWASP Cheat Sheet Series: REST Securityالقواعد الأمنية لواجهات REST: HTTPS، والتوثيق في كل طلب، والتحقق من المدخلات، واستجابات الخطأ الآمنة، وتحديد المعدل.
- RFC 5322: Internet Message Formatصياغة رسائل البريد الإلكتروني وعناوينه (local-part@domain) التي تُقاس المدقّقات وفقها.