خطأ "Failed to receive response" في Chat Trigger (إضافة Home Assistant)

مرحبا بالجميع،

قمت بتثبيت إضافة n8n في Home Assistant وكان الوصول الأولي يعمل بشكل مثالي. ومع ذلك، عند إنشاء سير عمل بسيط باستخدام عقدة Chat Trigger متصلة بـ AI Agent (مع Google Gemini Chat Model)، أواجه الخطأ التالي في واجهة الدردشة بعد إرسال رسالة: “Error: Failed to receive response”.

قد أجريت بالفعل بعض اختبارات العزل لمحاولة تصحيح الأخطاء:

  • بيانات اعتماد API الخاصة بـ Gemini تم التحقق منها وهي متصلة.

  • إذا قمت بتبديل المشغل إلى اليدوي (When clicking ‘Execute workflow’) وقمت بتمرير المحتوى مباشرة إلى العقدة، يعمل السير بنجاح ويعالج النموذج الاستجابة.

  • تحدث المشكلة فقط عندما يأتي الإدخال من Chat Trigger. يبدو أن التنفيذ يتوقف/يتعطل في المشغل. عقدة الوكيل لا تظهر فشل (لا تصبح حمراء) ولا يتم إنشاء أي سجل أخطاء في وحدة التحكم.

لقد اختبرت بالفعل إزالة عقدة الذاكرة لتجنب تجاوز الذاكرة في الحاوية، لكن سلوك انتهاء المهلة الزمنية في نافذة الدردشة مستمر.

مرحباً @Ricardo_Mendonca أهلاً وسهلاً!
هل حاولت تحديد مخرجات محفز الدردشة يدويًا في وكيل الذكاء الاصطناعي؟ مثل هذا:

أعتقد أن هذا يجب أن ينجح، أخبرني بكيف تسير الأمور.

مرحباً @Ricardo_Mendonca

المشكلة ليست أن الذكاء الاصطناعي أو سير العمل الخاص بك معطّل — بل أن “الوسيط” (طبقة الشبكة في Home Assistant) يفقد صبره. عندما تُرسل رسالة، يستغرق الذكاء الاصطناعي بضع ثوانٍ للتفكير وتوليد الرد. أثناء هذا الصمت، يعتقد Home Assistant أن الاتصال قد توقف ويقطعه لتوفير الموارد، مما يؤدي إلى خطأ “Failed to receive response”.

لإصلاح هذا، تحتاج إلى تغيير طريقة إرسال n8n للرد. بدلاً من السماح لـ Chat Trigger بمعالجة الرد تلقائياً، غيّر إعدادات المحفز إلى “Use response nodes” وأضف عقدة “Respond to Chat” في نهاية سير العمل الخاص بك مباشرة. هذا يغيّر طريقة الاتصال ويمنع عادة Home Assistant من قطع الاتصال بشكل مبكر.

إذا لم يفلح ذلك، فالمشكلة على الأرجح خطأ في الإعدادات المتعلقة بعنوان الويب الخاص بك. قد يحاول n8n إرسال الرد إلى عنوان داخلي لا يستطيع المتصفح الوصول إليه. يمكنك إصلاح هذا بالتأكد من أن “Webhook URL” في إعدادات الإضافة الخاصة بك مضبوطة على عنوان Home Assistant الخارجي الكامل الخاص بك.

إذا كانت البيئة الخاصة بك مضبوطة على "N8N_HOST=0.0.0.0" ، فقد تحتاج إلى استبدالها بـ localhost أو المجال المخصص الخاص بك

تحقق لترى ما إذا كان أي من هذه الخيارات ينطبق

مرحبًا @Ricardo_Mendonca ، أهلًا وسهلًا بك في مجتمع n8n!
كنت سأتحقق أولًا مما إذا تم إنشاء التنفيذ عند إرسال الرسالة وما إذا كان Agent ينتج مخرجات بشكل طبيعي. إذا انتهى التنفيذ بنجاح، افتح وحدة تحكم المتصفح (F12) وتحقق من أخطاء websocket/SSE المحتملة. سيكون من المفيد أيضًا معرفة الإصدار الدقيق لإضافة n8n و Home Assistant، حيث سيساعد ذلك في تحديد ما إذا كانت المشكلة في طبقة واجهة المحادثة أو في التكامل عبر Ingress.

مرحبا، واجهت نفس المشكلة بالضبط (استضافة ذاتية عبر Docker Compose، وليس إضافة HA، لكن نفس الأعراض: يعمل المشغِّل اليدوي بشكل جيد، مشغِّل الدردشة يتعطل فقط مع “فشل في استقبال الرد”، لم يتم تسجيل أي تنفيذ، عقدة الوكيل لا تتحول إلى الأحمر).

في حالتي، كانت المشكلة هي طريقة تكوين N8N_HOST في ملف docker-compose.yml الخاص بي. كنت قد ضبطته على 0.0.0.0 (مطلوب حتى يستمع الحاوية على جميع الواجهات)، لكن n8n كان يستخدم على ما يبدو نفس القيمة أيضًا لبناء عنوان URL الذي يرسله مرة أخرى إلى المتصفح لنقطة نهاية الدردشة/webhook. لذا كان الواجهة الأمامية تحاول حرفيًا جلب http://0.0.0.0:5678/…، والذي يرفضه المتصفح بشكل صحيح (ERR_ADDRESS_INVALID). يمكنك في الواقع رؤية هذا في DevTools > علامة التبويب Network إذا قمت بتصفية الطلبات الفاشلة أثناء إرسال رسالة دردشة.

كان الحل هو إضافة متغيري env صريحين:

N8N_EDITOR_BASE_URL=http://localhost:5678
WEBHOOK_URL=http://localhost:5678/

(استبدل localhost:5678 بأيا كان عنوانك/منفذك الفعلي الذي يمكن الوصول إليه)

بعد إعادة تشغيل المكدس، بدأ مشغِّل الدردشة يعمل على الفور.

قد يكون من المفيد التحقق من تكوين إضافة HA الخاصة بك لشيء مشابه - إذا كانت تربط على 0.0.0.0 أو اسم مضيف حاوية داخلي بدون عنوان URL موجه للجمهور منفصل، فستواجه نفس المشكلة. يستحق التحقق من علامة التبويب Network في متصفحك أولاً للتأكد من أنها نفس السبب الجذري فعلاً قبل تغيير أي شيء.

شكراً لك، يا شخصاً طيباً! هذا نجح بشكل مثالي، قضيت نصف ساعة جيدة في تجربة كل شيء يمكنني التفكير فيه لكن هذا هو الشيء الوحيد الذي نجح!

أهلا وسهلا! :slight_smile:

نجح الأمر تماماً عند إضافة N8N_EDITOR_BASE_URL

أشكرك بشدة على مساعدتك.