Виртуальный помощник и навыки
Машинопись
Когда QnAMakerDialog создается с определенным языком (например, DE), он всегда будет разрешать этот язык, даже если вы измените язык или другой пользователь использует другой язык (например, EN).
Пользователь 1 : отправляет сообщение боту (DE);
Бот : Бот разрешает высказывание как намерение QnA и создает новый QnADialog с идентификатором базы знаний в качестве идентификатора диалогового окна:
``
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 : отправляет сообщение боту (EN);
Бот : Бот разрешает высказывание как намерение QnA (то же самое, что отправил пользователь 1), новый QnaMakerDialog не создается, потому что один диалог с таким же идентификатором базы знаний уже существует.
Бот : Бот снова запускает диалог QnA (добавлен из пользовательской итерации 1) и получает ответ из базы знаний (DE) первого пользователя;
Бот : отправляет сообщение пользователю 2 в локали пользователя 1.
Будет создан еще один QnAMakerDialog с правильным языком и правильным идентификатором базы знаний.
Спасибо @ tommyJimmy87. Как только у нас появятся какие-либо обновления, связанные с реализацией внедрения зависимостей, мы вернемся к вам!
Привет @ tommyJimmy87 , мы создали PR # 3559, который решает эту проблему с помощью внедрения зависимостей в ботов.
Если вы так любезны, можете ли вы проверить изменения, выполнив следующие шаги воспроизведения и используя эту ветку :
npm install
чтобы установить зависимости.npm run build
чтобы скомпилировать решениеnpm pack
чтобы создать tgzИспользуйте созданный tgz в Virtual Assistant package.json следующим образом:
«бот-решения»: «ПУТЬ К БОТ-РЕШЕНИЯМ ТГЗ»
Разверните виртуального помощника на нескольких языках
QnAMakerDialog
И последнее, но не менее важное: как уже упоминалось, PR содержит следующие изменения:
inversifyjs
) в виртуальном помощнике и навык TypeScriptБудем внимательны к вашему ответу 😊.
Привет @ Batta32 ,
спасибо за поддержку, похоже, проблема была решена с помощью новой библиотеки решений для ботов, которую я интегрировал из вашей ветки :) У вас есть приблизительная оценка того, когда вы собираетесь ее выпустить?
Привет @ Batta32 , я заметил, что при попытке запустить модульные тесты я получаю сообщение об ошибке: TypeError: Reflect.hasOwnMetadata is not a function
.
Это потому, что вы не перенесли тесты для использования inversify?
Спасибо @ tommyJimmy87! Мы рассмотрим это и вернемся к вам, как только у нас будет какое-либо обновление этого 😊.
Привет @ Batta32 , мы решили эту проблему, добавив этот импорт в тестовый базовый js файл: require('reflect-metadata');
Привет @ tommyJimmy87 - мы не смогли воспроизвести проблему, о которой вы упомянули, связанную с модульными тестами.
У нас возникли вопросы :
Это наша среда :
feature/southworks/dependency-injection-implementation
Мы предприняли следующие шаги, чтобы воспроизвести проблему для виртуального помощника и навыка:
npm install
чтобы установить зависимости.npm run build
чтобы скомпилировать решениеnpm pack
чтобы создать .tgz
.tgz
в Virtual Assistant package.json следующим образом:npm install
чтобы установить зависимости.npm run build
чтобы скомпилировать решениеnpm run test
чтобы скомпилировать решение.Привет @ tommyJimmy87 - мы добавили предлагаемые изменения в PR # 3559.
Мы обновили ботов Virtual Assistant и Skill, добавив следующие файлы тестов импорта: require('reflect-metadata');
специально в BotTestBase и SkillTestBase , чтобы избежать упомянутой вами проблемы, связанной с модульными тестами.
Вы можете выполнить эти шаги, чтобы проверить изменения в виртуальном помощнике и навыках.
Спасибо,
Диего.
Привет, @ 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 ,
Можете ли вы работать над объединением PR, чтобы этот билет можно было закрыть?
@ virtual-josh, он просто ждет еще одного PR-обзора; он уже одобрен одним рецензентом. Не уверен, к кому обратиться для второго обзора.
Самый полезный комментарий
Привет @ Batta32 ,
спасибо за поддержку, похоже, проблема была решена с помощью новой библиотеки решений для ботов, которую я интегрировал из вашей ветки :) У вас есть приблизительная оценка того, когда вы собираетесь ее выпустить?