Mycroft-core: الحوار_renderer لا شيء في حالة عدم وجود دليل حوار صالح

تم إنشاؤها على ٦ مايو ٢٠٢٠  ·  2تعليقات  ·  مصدر: MycroftAI/mycroft-core

القضية:

إذا لم يكن للمهارة دليل صالح dialog أو locale ، وتحاول التحدث ببعض الحوارات باستخدام السلاسل داخل Skill ، على سبيل المثال

self.speak_dialog('say something')

ثم تفشل الطريقة حيث لم يتم تعيين dialog_renderer :

  File "/home/kris/mycroft-core/mycroft/skills/mycroft_skill/mycroft_skill.py", line 1102, in speak_dialog
    self.speak(self.dialog_renderer.render(key, data),
AttributeError: 'NoneType' object has no attribute 'render'

إنشاء دليل فارغ dialog/en-us/ يحل المشكلة.

توقع

نظرًا لأن مؤلف المهارة لا يستخدم سلسلة حوار ، فإن التوقع هو أن الدليل غير مطلوب.

أو يمكن أن تقدم رسالة خطأ وصفية أكثر لهذه الحالة ، حيث قد تكون أيضًا قد أخطأت في كتابة اسم الدليل على سبيل المثال local/en_us

help wanted

التعليق الأكثر فائدة

أسهل طريقة للتعامل مع هذا الأمر هي طريقة MycroftSkill.speak_dialog() مما يجعلها شيئًا مثل

if self.dialog_renderer:
    data = data or {}
    self.speak(self.dialog_renderer.render(key, data),
               expect_response, wait, meta={'dialog': key, 'data': data})
else:
    self.log.warning('Dialog renderer doesn't exist, does the locale/dialog folder exists?')
    self.speak(key, expected_response, wait, {})

ال 2 كومينتر

أسهل طريقة للتعامل مع هذا الأمر هي طريقة MycroftSkill.speak_dialog() مما يجعلها شيئًا مثل

if self.dialog_renderer:
    data = data or {}
    self.speak(self.dialog_renderer.render(key, data),
               expect_response, wait, meta={'dialog': key, 'data': data})
else:
    self.log.warning('Dialog renderer doesn't exist, does the locale/dialog folder exists?')
    self.speak(key, expected_response, wait, {})

سأحصل عليه إذا لم يمانع أحد

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات