Botframework-solutions: QnAMakerDialog не создается для разных языков

Созданный на 29 июн. 2020  ·  22Комментарии  ·  Источник: microsoft/botframework-solutions

Какой проект затронут?

Виртуальный помощник и навыки

На каком это языке?

Машинопись

Что происходит?

Когда 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 с правильным языком и правильным идентификатором базы знаний.

Bot Services Kobuk bug customer-replied-to customer-reported in-progress

Самый полезный комментарий

Привет @ Batta32 ,

спасибо за поддержку, похоже, проблема была решена с помощью новой библиотеки решений для ботов, которую я интегрировал из вашей ветки :) У вас есть приблизительная оценка того, когда вы собираетесь ее выпустить?

Все 22 Комментарий

Спасибо @ tommyJimmy87. Как только у нас появятся какие-либо обновления, связанные с реализацией внедрения зависимостей, мы вернемся к вам!

Привет @ tommyJimmy87 , мы создали PR # 3559, который решает эту проблему с помощью внедрения зависимостей в ботов.

Если вы так любезны, можете ли вы проверить изменения, выполнив следующие шаги воспроизведения и используя эту ветку :

  1. Перейти в библиотеку бот-решений
  2. Выполните npm install чтобы установить зависимости.
  3. Выполните npm run build чтобы скомпилировать решение
  4. Выполните npm pack чтобы создать tgz
  5. Перейти к образцу виртуального помощника
  6. Используйте созданный tgz в Virtual Assistant package.json следующим образом:

    «бот-решения»: «ПУТЬ К БОТ-РЕШЕНИЯМ ТГЗ»

  7. Разверните виртуального помощника на нескольких языках

  8. Следуйте инструкциям, чтобы воспроизвести упомянутый вами сценарий QnAMakerDialog

И последнее, но не менее важное: как уже упоминалось, PR содержит следующие изменения:

  1. Реализация внедрения зависимостей (библиотека inversifyjs ) в виртуальном помощнике и навык TypeScript
  2. Обновить шаблоны

Будем внимательны к вашему ответу 😊.

Привет @ Batta32 ,

спасибо за поддержку, похоже, проблема была решена с помощью новой библиотеки решений для ботов, которую я интегрировал из вашей ветки :) У вас есть приблизительная оценка того, когда вы собираетесь ее выпустить?

Привет @ Batta32 , я заметил, что при попытке запустить модульные тесты я получаю сообщение об ошибке: TypeError: Reflect.hasOwnMetadata is not a function .
Это потому, что вы не перенесли тесты для использования inversify?

Спасибо @ tommyJimmy87! Мы рассмотрим это и вернемся к вам, как только у нас будет какое-либо обновление этого 😊.

Привет @ Batta32 , мы решили эту проблему, добавив этот импорт в тестовый базовый js файл: require('reflect-metadata');

Привет @ tommyJimmy87 - мы не смогли воспроизвести проблему, о которой вы упомянули, связанную с модульными тестами.

У нас возникли вопросы :

  1. Вы используете нашу ветку для проверки этих изменений?
  2. С каким компонентом у вас проблема?
  3. Можете ли вы поделиться репродуктивными шагами, которые вы выполнили?

Это наша среда :

  • Мы используем эту ветку : feature/southworks/dependency-injection-implementation
  • Пример виртуального помощника TypeScript
  • Образец навыков TypeScript

Мы предприняли следующие шаги, чтобы воспроизвести проблему для виртуального помощника и навыка:

  1. Перейти в библиотеку бот-решений
  2. Выполните npm install чтобы установить зависимости.
  3. Выполните npm run build чтобы скомпилировать решение
  4. Выполните npm pack чтобы создать .tgz
  5. Перейти к образцу виртуального помощника
  6. Используйте созданный .tgz в Virtual Assistant package.json следующим образом:
  7. "бот-решения": ""
  8. Выполните npm install чтобы установить зависимости.
  9. Выполните npm run build чтобы скомпилировать решение
  10. Выполните npm run test чтобы скомпилировать решение.
  11. Проверить выполнение теста

image

image

Привет @ 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-обзора; он уже одобрен одним рецензентом. Не уверен, к кому обратиться для второго обзора.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги