التحقق من نقطة نهاية خطاف الويب (webhook) في WhatsApp
قبل تسليم أي حدث، تستدعي Meta نقطة النهاية لديك بطلب GET يتضمن hub.mode وhub.verify_token وhub.challenge. يجب أن تقارن نقطة النهاية الرمز، ثم تعيد التحدي في نص الاستجابة الخام. أي شيء آخر يمنع بدء التسليم.
القيمة التي يجب إعادتها في نص الاستجابة.
قيمة hub.mode في طلب التحقق.
المخطط الوحيد الذي ستتحقق منه Meta. يُرفض HTTP قبل إجراء الطلب.
ماذا ترسل Meta بالضبط؟
ترسل طلب GET إلى عنوان URL الخاص بك مع ثلاث معلمات في سلسلة الاستعلام. تكون قيمة hub.mode هي subscribe. أما hub.verify_token فهي الرمز الذي أعددته عند ضبط الوجهة. وhub.challenge قيمة تنشئها Meta لهذه المحاولة.
يجب أن تقارن نقطة النهاية hub.verify_token بالرمز الذي اخترته، وإذا تطابقا، فأعد استجابة بالرمز 200 يكون نصها الكامل هو hub.challenge. لا تضعه داخل JSON، ولا تحطّه بين علامتي اقتباس، ولا تضف سطرًا جديدًا في النهاية كما تفعل بعض أطر العمل افتراضيًا.
إذا لم يتطابق الرمز، فأعد 403. هذا هو البروتوكول كاملًا، وقد صُمم ليكون صغيرًا عمدًا.
لماذا يفشل الرد الخاطئ بصمت؟
لأن فشل التحقق ليس خطأً في نظامك، بل غيابًا في نظام Meta.
عندما لا يُعاد التحدي بشكل صحيح، لا تبدأ Meta ببساطة التسليم إلى تلك الوجهة. يعيد خادمك 200 لطلب التحقق، وتظهر في سجلاتك عملية وصول الطلب، ولا تعرض أي لوحة تحكم مشكلة. العرض الوحيد هو أن الرسائل لا تصل، ولذلك يشخّص معظم الناس المشكلة على أنها مشكلة في Coexistence، لا مشكلة في المصافحة.
لهذا يستحق التحقق قبل إجراء الطلب. نتحقق من أن عنوان URL يستخدم HTTPS ومن توفير رمز تحقق قبل إجراء طلب Graph، حتى تفشل الوجهة غير الصحيحة فورًا بدل أن تبدو متصلة.
ما الأمور الأخرى التي قد تمنع التحقق؟
ثلاثة أمور لا علاقة لها بالشفرة.
المصادقة أمام نقطة النهاية. سترفض بوابة أو طبقة مصادقة أساسية أو قائمة سماح لعناوين IP طلب Meta، ولا تملك Meta بيانات اعتماد لتقديمها. يجب أن يكون مسار التحقق قابلًا للوصول من دونها.
إعادة التوجيه. تستدعي Meta عنوان URL الذي قدمته، ولا تُتبع عملية إعادة توجيه 301 إلى مضيف أساسي بطريقة تُكمل المصافحة. قدم لها العنوان النهائي.
وإطار عمل يحوّل الاستجابة إلى صيغة متسلسلة. إن أعدت سلسلة نصية من معالج يضع كل شيء داخل JSON، فسيحتوي النص على علامتي اقتباس حول التحدي، ولن يطابق القيمة المطلوبة.
الأخطاء الشائعة
- إرجاع JSON. يجب أن يحتوي النص على قيمة التحدي الخام وحدها دون أي شيء حولها.
- وضع نقطة النهاية خلف المصادقة. لا تملك Meta بيانات اعتماد وستُرفض.
- تقديم عنوان URL يعيد التوجيه إلى Meta. استخدم العنوان النهائي.
تتحقق EasyCoexistence من استخدام HTTPS وتوفير رمز تحقق للوجهة قبل الاتصال بـ Meta، وتسجل فشل المصافحة في الخط الزمني للاتصال بدل تجاهل الوجهة.
الأسئلة الشائعة
ما الرمز الذي ينبغي استخدامه؟
أي سلسلة تختارها. وجودها يتيح لنقطة النهاية تمييز طلب Meta من طلب أي شخص آخر يعرف عنوان URL.
كم مرة يحدث التحقق؟
عند الإعداد، ومرة أخرى كلما ضُبطت الوجهة. لا يُعاد التحقق من نقطة نهاية تعمل عند كل حدث.
هل يمكنني اختبار ذلك بنفسي؟
نعم. استدعِ نقطة النهاية الخاصة بك بالمعلمات الثلاث، وتحقق من أن النص يعود مطابقًا تمامًا لقيمة التحدي.
ماذا يحدث إذا كان خادمي متوقفًا أثناء التحقق؟
تفشل المصافحة ولا تُفعّل الوجهة. يؤدي حفظها مرة أخرى إلى إعادة تشغيل التحقق.
تابع القراءة
هل أنت مستعد للبدء؟
أعد إعداد WhatsApp Coexistence خلال دقائق، وليس أشهر. يواصل التطبيق العمل على الهاتف.
ابدأ الفترة التجريبية المجانيةتم التحقق في