المشكلة: على الرغم من ذلك، لا يؤدي إرسال رسالة جديدة إلى البوت إلى تشغيل أي تنفيذ. لا تعرض علامة التبويب Executions أي إدخالات جديدة — آخر تنفيذ ناجح كان منذ أكثر من يوم، قبل أن أبدأ في إجراء التغييرات. لقد حاولت:
• إلغاء تنشيط/إعادة تنشيط سير العمل عدة مرات، مع الانتظار بين التبديلات
• إنشاء بيانات اعتماد Telegram جديدة تماماً بنفس رمز البوت واستبدالها في عقدة Trigger (نجح اختبار الاتصال، لكن لا تظهر عمليات تنفيذ جديدة)
• التأكد من أن عقدة “Send a photo message” تحتوي على معرّف دردشة ثابت يشير إلى القناة الصحيحة (وليس معرّف دردشة ديناميكي)
السؤال: هل توجد طريقة للتحقق من عنوان URL الحالي للـ webhook/الحالة التي سجلتها Telegram لهذا البوت من داخل n8n، أم أن هذا يتطلب استدعاء Telegram’s getWebhookInfo API مباشرة؟ أشك في أن تسجيل webhook توقف “عالقاً” يشير إلى أحد سير العمل المعطلة الآن، وإعادة تنشيط سير العمل الصحيح لا يفرض على Telegram إعادة تسجيل webhook. كيف يمكنني فرض n8n لإعادة تسجيل webhook بنظافة؟
مرحباً @Marcello1
يسمح Telegram بـ عنوان webhook نشط واحد فقط لكل رمز bot. إذا كان لديك عدة سير عمل تستخدم نفس الـ bot، أو إذا لم يتم التنظيف بشكل صحيح من تفعيل سابق، قد يكون Telegram لا يزال يرسل التحديثات إلى عنوان قديم أو غير صحيح.
لترى بالضبط ما سجّله Telegram، أنشئ سير عمل مؤقت باستخدام عقدة HTTP Request وقم بتكوينها كما يلي:
- الطريقة (Method):
GET - العنوان (URL):
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getWebhookInfo- (استبدل
<YOUR_BOT_TOKEN>برمز الـ bot الفعلي لديك، مع الاحتفاظ بكلمةbotقبله.)
- (استبدل
- المصادقة (Authentication): بلا (الرمز موجود في العنوان).
ما يجب البحث عنه في الرد:
url: هذا هو الحقل الأهم. تحقق مما إذا كان هذا العنوان يطابق عنوان webhook الإنتاج الحالي الخاص بك في n8n. إذا كان يشير إلى نطاق قديم أو عنوان IP محلي أو نسخة n8n مختلفة، فقد وجدت المشكلة.has_custom_certificate: إذا كنت تستخدم شهادات موقّعة ذاتياً، فقد يكون هذا ذا صلة.pending_update_count: إذا كان هذا الرقم مرتفعاً، فهذا يعني أن Telegram يحاول إرسال رسائل إلى عنوان لا يرد (على الأرجح العنوان القديم).last_error_message: سيخبرك هذا إذا كان Telegram غير قادر على الوصول إلى نسخة n8n الخاصة بك (مثلاً: “Connection refused” أو “SSL error”).
لا توجد حالياً لوحة معلومات مدمجة في n8n لعرض حالة webhook المسجل على خوادم Telegram. لتشخيص وإصلاح هذه المشكلة، يجب عليك اتباع هذه الخطوات باستخدام عقدة HTTP Request في n8n.
إذا كان العنوان خاطئاً أو “عالقاً”، يمكنك فرض إعادة تعيين باتباع هذا التسلسل:
- قم بإلغاء تفعيل جميع سير العمل في n8n التي تستخدم رمز Telegram bot محدد. هذا يمنعها من التنافس على تسجيل webhook.
- امسح webhook على Telegram: أنشئ عقدة HTTP Request أخرى لاستدعاء طريقة
deleteWebhook.- الطريقة (Method):
POST - العنوان (URL):
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/deleteWebhook - قم بتشغيل هذا مرة واحدة. هذا يخبر Telegram بالتوقف عن إرسال webhooks تماماً لهذا الـ bot.
- الطريقة (Method):
- تحقق من إعادة التعيين: قم بتشغيل طلب
getWebhookInfoمن الخطوة 1 مرة أخرى. يجب أن يكون حقلurlالآن فارغاً. - أعد تفعيل سير العمل المستهدف لديك: عد إلى سير العمل المطلوب وقم بتبديله إلى نشط (Active).
- عندما تفعّل Telegram Trigger، يرسل n8n تلقائياً طلب
setWebhookإلى Telegram بعنوان الإنتاج الحالي له.
- عندما تفعّل Telegram Trigger، يرسل n8n تلقائياً طلب
هل ساعدك هذا
مرحباً @Marcello1 أهلاً وسهلاً!
هناك شيء واحد يجب إضافته في منشور @kjooleng قبل أن تشغّل هذا التسلسل. استخدم deleteWebhook?drop_pending_updates=true بدلاً من deleteWebhook العادي. قام Telegram بوضع كل رسالة تم إرسالها إلى بوتك في قائمة الانتظار منذ توقفه، وإذا كان هذا التراكم موجوداً عندما تسجل مرة أخرى، سيتم تسليمها دفعة واحدة. مع يوم كامل في قائمة الانتظار، هذا عدد كبير من عمليات التنفيذ تعمل في نفس الوقت، وعقدة “إرسال صورة” لديك ستنشر كل واحدة منها بكل سرور.
من الجدير أيضاً قراءة last_error_message من getWebhookInfo قبل أن تغيّر أي شيء. إذا كانت تقول شيئاً مثل connection refused أو SSL error أو wrong response، فإن التسجيل لم يكن المشكلة أبداً، Telegram ببساطة لا يستطيع الوصول إلى مثيلك. حذف وإعادة التسجيل لن يحل المشكلة وستعود هنا غداً.
هذا يجعلني أسأل، ما هي التغييرات التي أجريتها قبل توقفه مباشرة؟ تغيير مجال، أو بروكسي جديد أو تجديد شهادة ستنتج جميعها هذا بالضبط، وسيبدو webhook مسجلاً بشكل صحيح طوال الوقت.
مرحباً @Marcello1
عند الضغط على خطوة Execute أو Execute workflow في Telegram Trigger بينما يكون سير العمل منشوراً، يتم تبديل تسجيل Telegram إلى عنوان URL الاختبار، وتتوقف عنوان URL المنشور عن استقبال الأحداث حتى تقوم بالنشر مرة أخرى. هذا يتطابق مع التوقيت، لأنه توقف أثناء تعديلك. قم بإلغاء نشر سير العمل، وقم بإجراء الاختبار على عنوان URL الاختبار، ثم انشر، أو احتفظ برمز bot ثانٍ من BotFather بحتة للاختبار حتى لا يقوم الاثنان بالكتابة فوق بعضهما البعض.
شيء واحد في التشخيص: قم بتشغيل getWebhookInfo بعد حوالي 30 ثانية من النشر بدلاً من القيام به على الفور. هناك تقارير تفيد بأن عنوان URL يتم تسجيله بشكل صحيح ثم يمسح نفسه بعد ثوانٍ، وهو ما يبدو من الخارج تماماً مثل تسجيل لم يتم أبداً.