رسائل WhatsApp الواردة لا تصل إلى n8n رغم التحقق من webhook والاشتراك المؤكد في WABA

أقوم بإعداد تكامل WhatsApp Business Cloud في n8n Cloud (الإصدار مرئي في لوحة Executions) والرسائل الواردة لا تشغل أي تنفيذ سير عمل، على الرغم من نجاح جميع الفحوصات:

وصف المشكلة/الخطأ/السؤال

رسائل WhatsApp الواردة لا تشغل أي تنفيذ سير عمل، على الرغم من التحقق من webhook بواسطة Meta وتأكيد الاشتراك في التطبيق في WABA. لوحة اختبار webhook الفعلية الخاصة بـ Meta تؤكد أنها تُرسل فعلاً أحداث الرسائل، لكن n8n لا يسجل أي تنفيذ لها — فقط طلب GET التحقق الأصلي يظهر في Executions. حاولت في البداية عقدة “WhatsApp Trigger” الأصلية، لكن بيانات اعتماد “حساب WhatsApp OAuth” الخاصة بها تفشل باستمرار مع “طلب سيء - يرجى التحقق من معاملات” / “خطأ في التحقق من سر العميل” حتى مع معرف العميل/السر الصحيح (يطابق المواضيع المبلغ عنها الأخرى). كحل بديل، انتقلت إلى عقدة Webhook عامة (GET+POST عبر “السماح بعدة طرق HTTP”) + عقدة “الرد على Webhook” تُرجع {{ $json.query[“hub.challenge”] }} لمصافحة التحقق. التحقق ينجح والاشتراك في WABA (POST /{WABA_ID}/subscribed_apps) يُرجع success:true، لكن رسائل WhatsApp الواردة الفعلية لا تصل إلى n8n.

ما رسالة الخطأ (إن وجدت)؟

لا يوجد خطأ — سير العمل لا ينفذ ببساطة للرسائل الواردة. لا تظهر إدخالة جديدة في Executions بعد إرسال رسالة WhatsApp حقيقية، على الرغم من أن لوحة اختبار Meta تؤكد إرسال الحدث.

يرجى مشاركة سير العمل الخاص بك

{
  "nodes": [
    {
      "parameters": {
        "path": "1490d3bd-a1f9-476b-9e03-c14c2ab22743",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        0,
        0
      ],
      "id": "dd726403-4c27-4940-805f-786f38a2f25e",
      "name": "Webhook",
      "webhookId": "1490d3bd-a1f9-476b-9e03-c14c2ab22743"
    },
    {
      "parameters": {
        "respondWith": "text",
        "responseBody": "={{ $json.query[\"hub.challenge\"] }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        208,
        0
      ],
      "id": "960c8c0d-364f-4ed8-9283-8f7f455856db",
      "name": "Respond to Webhook"
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  ],
  "pinData": {},
  "meta": {
    "instanceId": "0babb2c4b64d06db9ad149b501c44dae5b503104594b5d893908136157b59fd1"
  }
}

شارك الإخراج المُرجع بواسطة العقدة الأخيرة

معلومات على إعدادات n8n الخاصة بك

  • إصدار n8n:
  • قاعدة البيانات (الافتراضي: SQLite):
  • إعداد n8n EXECUTIONS_PROCESS (الافتراضي: own, main):
  • تشغيل n8n عبر (Docker, npm, n8n cloud, desktop app):
  • نظام التشغيل:

مرحبا @FAOR_Beauty_Skin، في أثناء انتظرك للرد، إليك بعض الأشياء التي قد تساعدك:

الموارد المقترحة

تم المطابقة تلقائيًا مع سؤالك.

المستندات:

المنتدى:

@fahmiiireza، @tridi، @LogeshwariV - لقد ساعدتم في حل مشاكل مشابهة من قبل، هل يمكنكم إلقاء نظرة؟

مقترح تلقائيًا بواسطة بوت مجتمع n8n. إنه تجريبي - يرجى مشاركة تعليقاتك هنا.

مرحبا @FAOR_Beauty_Skin أهلا بك!
عملية التحقق GET التي تهبط بدون أي شيء بعدها هي توقيع عنوان URL الاختبار. يسجل n8n عنوان URL الاختبار فقط عندما تكون اللوحة تستمع وتسقطه بعد 120 ثانية، لذا فإن مصافحة Meta تقع داخل هذه النافذة وكل رسالة لاحقة تصل إلى مسار لا يخدمه n8n بعد الآن. عنوان URL الإنتاج موجود فقط بمجرد نشر سير العمل.
انشر سير العمل، ثم اضبط رد الاتصال الخاص بـ Meta على مسار الإنتاج /webhook/1490d3bd-a1f9-476b-9e03-c14c2ab22743 بدلاً من نموذج /webhook-test/، وأعد التحقق. تحقق من ذلك من جانبك قبل العودة إلى Meta:

curl -X POST https://<your-instance>.app.n8n.cloud/webhook/1490d3bd-a1f9-476b-9e03-c14c2ab22743 -H "Content-Type: application/json" -d '{"ping":true}'

إذا كانت هذه الاستدعاء تنشئ بالفعل تنفيذاً والرسائل الحقيقية لا تصل أبداً، فإن عنوان URL صحيح والفجوة هي اشتراك حقل messages ضمن حقول Webhook في إعدادات WhatsApp للتطبيق، وهو شيء منفصل عن استدعاء subscribed_apps الذي أجريته بالفعل مقابل WABA.

عقدة Webhook الخاصة بك مسجلة لـ GET فقط، لذلك ينجح التحقق من Meta وكل طلب POST للرسالة الفعلية يحصل على 404. هذا هو السبب في أن التسليم يبدو مؤكداً من جانب Meta ولا يظهر شيء أبداً في Executions الخاصة بك.

هذا واضح في JSON الذي نشرته — عقدة Webhook لا تحتوي على httpMethod:

"parameters": {
  "path": "1490d3bd-a1f9-476b-9e03-c14c2ab22743",
  "responseMode": "responseNode",
  "options": {}
}

n8n تحذف معاملات الخيارات المتروكة بقيمتها الافتراضية عند الحفظ، والقيمة الافتراضية لـ httpMethod هي GET. تذكر أنك قمت بالتبديل إلى GET+POST عبر „Allow Multiple HTTP Methods

@FAOR_Beauty_Skin

في n8n، هناك فرق ضخم بين بيئة المحرر وبيئة الإنتاج.

  • المشكلة: عند الاختبار في المحرر (بالنقر على “Execute Workflow”)، يستمع n8n إلى عنوان URL للاختبار. عندما تنقر على “Verify” في Meta، فمن المحتمل أن تستخدم Meta عنوان URL للإنتاج.
  • العرض: إذا لم تقم بتبديل المفتاح في الزاوية العلوية اليمنى من n8n إلى “Active”، فسيحصل n8n على طلب POST من Meta، ويرى أنه لا توجد workflow “تستمع” له في وضع الإنتاج، وببساطة سيتجاهله. لن يظهر في قائمة التنفيذ الخاصة بك.
  • الحل:
    1. تأكد من استخدام عنوان URL للإنتاج (بدون /test/ في المسار) في Meta Developer Console.
    2. قم بتفعيل سير العمل (يجب أن يكون المفتاح في الزاوية العلوية اليمنى مُفعّلاً).
    3. تحقق من علامة التبويب “Executions” (وليس المحرر) لمعرفة ما إذا كانت طلبات POST تصل.

Meta لديها مكانان مختلفان لتكوين Webhooks، وهما يتصرفان بشكل مختلف.

  • المشكلة: إذا قمت بتكوين عنوان URL للـ Webhook ضمن قسم “Webhooks” العام في الشريط الجانبي الأيسر لتطبيقك على Meta، فأنت تخبر Meta: “أرسل لي تحديثات حول التطبيق (مثل التغييرات في إعدادات التطبيق أو أذونات المستخدم)”.
  • الحل: يجب تكوين عنوان URL للـ Webhook داخل قسم المنتج WhatsApp المحدد:
    1. انتقل إلى لوحة تحكم Meta App الخاصة بك.
    2. انظر إلى الشريط الجانبي ضمن “Products”.
    3. انقر على “WhatsApp” $\rightarrow$ “Configuration”.
    4. هنا يجب إدخال عنوان URL للـ Webhook و Verify Token. إذا وضعتهما في علامة التبويب “Webhooks” العام، فستجتاز المصافحة، لكنك لن تتلقى رسائل WhatsApp أبداً.

حتى إذا كان عنوان URL صحيحاً والمصافحة موثقة، فلن تُرسل Meta البيانات ما لم تطلب ذلك بشكل صريح.

  • المشكلة: لقد تحققت من الاتصال، لكنك لم تشترك في المحتوى.
  • الحل:
    1. في صفحة WhatsApp $\rightarrow$ Configuration (حيث وضعت عنوان URL الخاص بك)، ابحث عن قسم يسمى “Webhook fields”.
    2. يجب عليك النقر على “Manage”.
    3. ابحث عن الصف المسمى messages.
    4. تأكد من تحديده كـ “Subscribed”. إذا لم تر “Subscribed” بجانب messages، ستظل Meta صامتة حتى لو كان webhook “موثقاً”.

بينما ذكرت أنك قمت بتفعيل “Allow Multiple HTTP Methods”، تحقق مرة أخرى من التكوين المحدد لعقدة Webhook.

  • المشكلة: إذا تم ضبط العقدة بوضوح على GET فقط، فستتجاهل POST من Meta.
  • الحل:
    • افتح عقدة Webhook الخاصة بك.
    • ضمن HTTP Method، تأكد من أنه يقول GET, POST (أو أنك قد حددت كليهما).
    • ملاحظة: قد تتطلب بعض إصدارات العقدة منك تحديد الطريقة من القائمة المنسدلة. إذا رأيت واحدة فقط، فتأكد من أنك لا تقوم بتصفية طلبات POST عن طريق الخطأ.

هل ساعدك هذا؟