المساعد الافتراضي والمهارات
المطبوع
عندما يتم إنشاء QnAMakerDialog بلغة معينة (مثل DE) ، فسيتم حل هذه اللغة دائمًا على الرغم من تغيير اللغة أو استخدام مستخدم آخر لغة مختلفة (مثل EN).
المستخدم 1 : يرسل الكلام إلى الروبوت (DE) ؛
بوت: إن بوت يحل الكلام كما سين جيم نية، وخلق QnADialog جديدة، مع knowledgebaseId كما إيد من الحوار:
``
private registerQnADialog(knowledgebaseId: string, cognitiveModels: ICognitiveModelSet, locale: string): void {
const qnaEndpoint: QnAMakerEndpoint | undefined = cognitiveModels.qnaConfiguration.get(knowledgebaseId);
if (qnaEndpoint == undefined){
throw new Error(
تعذر العثور على تكوين قاعدة معارف QnA Maker بالمعرف: $ {KnowledgebaseId} .`)؛
}
if (this.dialogs.find(knowledgebaseId) == undefined) {
const qnaDialog: QnAMakerDialog = new QnAMakerDialog(
qnaEndpoint.knowledgeBaseId,
qnaEndpoint.endpointKey,
// The following line is a workaround until the method getQnAClient of QnAMakerDialog is fixed
// as per issue https://github.com/microsoft/botbuilder-js/issues/1885
new URL(qnaEndpoint.host).hostname.split('.')[0],
this.templateEngine.generateActivityForLocale('UnsupportedMessage', locale) as Activity,
// Before, instead of 'undefined' a '0.3' value was used in the following line
undefined,
this.templateEngine.generateActivityForLocale('QnaMakerAdaptiveLearningCardTitle', locale).text,
this.templateEngine.generateActivityForLocale('QnaMakerNoMatchText', locale).text
);
qnaDialog.id = knowledgebaseId;
this.addDialog(qnaDialog);
}
}
""
الروبوت : يرسل إجابة QnA إلى المستخدم 1 في لغة المستخدم 1 (DE)
المستخدم 2 : يرسل الكلام إلى الروبوت (بالإنكليزية) ؛
بوت: إن بوت يحل الكلام كما سين جيم نية (نفسه إرسالها المستخدم 1)، يتم إنشاء أي QnaMakerDialog جديدة لحوار واحد مع نفسه knowledgebaseId موجود بالفعل.
الروبوت : يبدأ الروبوت مرة أخرى في حوار QnA (مضاف من المستخدم 1 التكرار) ويحصل على الإجابة من قاعدة المعرفة (DE) للمستخدم الأول ؛
البوت : يرسل رسالة إلى المستخدم 2 في لغة المستخدم 1.
سيتم إنشاء QnAMakerDialog آخر باستخدام اللغة الصحيحة ومعرف قاعدة المعرفة الصحيح.
شكرا @ tommyJimmy87. بمجرد حصولنا على أي تحديث يتعلق بتنفيذ Dependency Injection ، سنعود إليك!
مرحبًا @ tommyJimmy87 ، أنشأنا PR # 3559 الذي يحل هذه المشكلة بدمج حقن التبعية في الروبوتات.
إذا كنت لطيفًا جدًا ، فهل يمكنك التحقق من صحة التغييرات باتباع خطوات إعادة المحاولة هذه واستخدام هذا الفرع :
npm install
لتثبيت التبعياتnpm run build
لتجميع الحلnpm pack
لإنشاء ملف tgzاستخدام TGZ إنشاؤها في مساعد الظاهري package.json على النحو التالي:
"bot-Solutions": "PATH TO BOT-SOLUTIONS TGZ"
انشر المساعد الافتراضي بلغات متعددة
QnAMakerDialog
الذي ذكرتهأخيرًا وليس آخرًا ، كما ذكرنا ، تحتوي العلاقات العامة على التغييرات التالية:
inversifyjs
) في المساعد الافتراضي ومهارة TypeScriptسنهتم بإجابتك 😊.
مرحبًا @ Batta32 ،
شكراً لدعمكم ، يبدو أن المشكلة قد تم حلها من خلال مكتبة حلول الروبوت الجديدة التي قمت بدمجها من فرعكم :) هل لديك تقدير تقريبي لموعد إصدارها؟
HI @ Batta32 ، لقد لاحظت أنه عندما أحاول إجراء اختبارات الوحدة ، يظهر لي خطأ: TypeError: Reflect.hasOwnMetadata is not a function
.
هل هذا لأنك لم تقم بترحيل الاختبارات لاستخدام العكس؟
شكرا @ tommyJimmy87! سنراجع هذا وسنعود إليك بمجرد حصولنا على أي تحديث لهذا 😊.
مرحبًا @ Batta32 ، لقد حللنا هذه المشكلة بإضافة هذا الاستيراد إلى ملف js الأساسي للاختبار: require('reflect-metadata');
مرحبًا @ tommyJimmy87 - لم نتمكن من إعادة
توصلنا إلى أسئلة :
هذا هو بيئتنا:
feature/southworks/dependency-injection-implementation
اتخذنا الخطوات التالية لإعادة إظهار المشكلة للمساعد الظاهري والمهارة:
npm install
لتثبيت التبعياتnpm run build
لتجميع الحلnpm pack
لإنشاء .tgz
.tgz
الذي تم إنشاؤه في حزمة Virtual Assistant.json على النحو التالي:npm install
لتثبيت التبعياتnpm run build
لتجميع الحلnpm run test
لتجميع الحلمرحبًا @ tommyJimmy87 - أضفنا التغييرات المقترحة في PR # 3559.
قمنا بتحديث Virtual Assistant & Skill bots بإضافة ملفات اختبارات الاستيراد التالية: require('reflect-metadata');
وجه التحديد في BotTestBase و SkillTestBase ، من أجل تجنب المشكلة التي ذكرتها فيما يتعلق باختبارات الوحدة.
يمكنك متابعة هذه الخطوات لاختبار التغييرات في Virtual Assistant and Skill.
شكرا،
دييغو.
مرحبًا @ Batta32 و @ DiegoCardozo94 ،
لدي سؤال عام ولكن بما أنني أستخدم هذا الفرع في مشروعنا بالفعل على الرغم من أنه لم يتم إصداره ، فسأطرحه هنا.
في السيناريو الخاص بنا ، لدينا MS Teams باعتبارها القناة الوحيدة ، أرى أن TeamsActivityHandler يُستخدم فقط في VA وليس في عينة المهارة ، فهل هذا صحيح؟ لأنني ربما كنت أتوسع أيضًا في مهارة TeamsActivityHandler والتي دفعتني إلى مشكلة واحدة على وجه التحديد: في الأساس لا يتم استدعاء طريقة endOfConversation
بعد cancel
في المهارة DefaultActivityHandler
. ولكن ربما ينبغي علي التحول إلى ملحق ActivityHandler "العادي" ضمن المهارات. هل يمكنك مساعدتي أو بالأحرى إعطائي ملاحظات على هذا؟
شكرا
مرحبًا @ tommyJimmy87 ، تم TeamsActivityHandler
من ActivityHandler
والذي يضيف دعمًا لأحداث وتفاعلات Microsoft Teams المحددة.
المساعد الافتراضي هو الذي يتفاعل مع قناة Microsoft Teams في مخطط المساعد الافتراضي المتصل بالمهارات ، لذلك يجب أن يمتد DefaultActivityHandler
للمساعد الظاهري من TeamsActivityHandler
، وليس المهارة في هذا المخطط المذكور ، كما ترون في العينات.
ينفذ DefaultActivityHandler
الخاص بالمساعد الظاهري في القوالب / العينات TeamsActivityHandler
الذي يتيح سيناريوهات Teams خارج الصندوق.
لقد بحثنا في الوثائق التالية التي يمكنك أيضًا مراجعتها:
أخبرنا إذا كان هذا يساعدك.
هذه المشكلة قديمة لأنها كانت مفتوحة لمدة 30 يومًا بدون أي نشاط. أزل التسمية أو التعليق الذي لا معنى له وإلا فسيتم إغلاق هذا في غضون 5 أيام
@ Batta32 لم يتم تحرير هذا بعد أليس كذلك؟
مرحبًا @ tommyJimmy87 - نحن بصدد وضع اللمسات الأخيرة على خطة لإصدار حزم جديدة. بمجرد حصولنا على أي تحديث ، سنعود إليك هنا 😊.
@ Batta32 أي تحديثات؟
مرحبًا cwhitten ، تم إصلاح هذه المشكلة بالفعل مع PR # 3559 والذي تم تحديثه بالتغييرات المطلوبة لـ peterinnesmsft .
بمجرد دمج PR ، ستكون التغييرات موجودة في الفرع next
.
ما هي حالة # 3559؟ @ batta32
آخر تحديث لها كان في 11 سبتمبر
شكرا
مرحبًا tonyanziano ، PR # 3559 جاهز للمراجعة ودمج التغييرات المطلوبة لـpeterinnesmsft.
بمجرد دمج PR ، ستكون التغييرات موجودة في الفرع next
.
هذه المشكلة قديمة لأنها كانت مفتوحة لمدة 30 يومًا بدون أي نشاط. أزل التسمية أو التعليق الذي لا معنى له وإلا فسيتم إغلاق هذا في غضون 5 أيام
joshgummersall ما هي حالة # 3752؟ متى تتوقع دمج ذلك؟
بمجرد أن يقوم شخص آخر بمراجعته والموافقة عليه!
@ joshgummersall ،
هل يمكنك العمل على دمج العلاقات العامة حتى يمكن إغلاق هذه التذكرة؟
@ virtual-josh ، إنها تنتظر مراجعة واحدة أخرى للعلاقات العامة ؛ تمت الموافقة عليه من قبل مراجع واحد بالفعل. لست متأكدًا من الذي يتعين عليه إجراء اختبار ping لإجراء مراجعة ثانية.
التعليق الأكثر فائدة
مرحبًا @ Batta32 ،
شكراً لدعمكم ، يبدو أن المشكلة قد تم حلها من خلال مكتبة حلول الروبوت الجديدة التي قمت بدمجها من فرعكم :) هل لديك تقدير تقريبي لموعد إصدارها؟