@Federico_Gentile هذا الخطأ 404 يعني أن طلب GET وصل فعلاً إلى العقدة على الرغم من أنها مضبوطة على POST، إذاً شيء ما يغير الطريقة، وليس إعدادات العقدة.
هناك سببان شائعان مع ngrok:
الاختبار بفتح الرابط في المتصفح. شريط العناوين يرسل دائماً GET. يجب أن يأتي POST من curl/Postman أو Telegram.
إعادة توجيه تخفض الطريقة. إذا اتصلت برابط ngrok على http:// (أو ضربت إعادة توجيه الشرطة المائلة الزائدة)، فإن 301/302 إلى https يحول POST إلى GET. استخدم رابط ngrok على https مباشرة، وعيّن WEBHOOK_URL=https://your-ngrok-domain حتى يصدر n8n https.
كيف تُرسل الطلب الفاشل: متصفح، أم curl، أم Telegram setWebhook؟
شكراً جزيلاً على الرد. حتى الآن، أنا أرسل الطلب عبر شريط البحث في المتصفح، لذا قد يكون هذا هو السبب. إذا كنت أريد اختباره بشكل صحيح، فما الذي تنصحني باستخدامه إذن؟
@Federico_Gentile أيوه، هذا بالضبط، شريط البحث يرسل GET لذا سيصطدم بهذا الخطأ دائماً.
للاختبار، أرسل POST حقيقي. الطريقة الأسرع هي curl:
curl -X POST -H "Content-Type: application/json" -d '{"hello":"world"}' https://your-ngrok-domain/webhook-test/9390c7f6-894b-4948-9579-8d9ec556dc7b
هناك ملاحظة واحدة مع اختبار الرابط: اضغط على “Listen for test event” أولاً، فهو يلتقط طلباً واحداً فقط أثناء الاستماع النشط. Postman يعمل أيضاً، فقط عيّن الطريقة إلى POST.
بالنسبة لإعداد Telegram الحقيقي، انتقل إلى Production URL، فعّل سير العمل، ثم وجّه setWebhook من Telegram إلى ذلك رابط https. يرسل Telegram التحديثات كـ POST، لذا سيتصرف مثل Telegram Trigger الخاص بك بالفعل.
الخطأ يحدث لأن Telegram يحاول الوصول إلى عنوان webhook الخاص بك باستخدام طلب GET، بينما عقدة Webhook في n8n مكونة لقبول طلبات POST فقط.
إليك بعض الأشياء التي يجب التحقق منها:
تأكد من أنك تستخدم عنوان الإنتاج (أو عنوان الاختبار النشط أثناء الاستماع) من n8n وليس فتح العنوان مباشرة في المتصفح. المتصفحات ترسل طلبات GET افتراضياً.
تحقق من أن webhook الخاص بـ Telegram مسجل بشكل صحيح: