Botframework-solutions: QnAMakerDialog 不是为不同的语言创建的

创建于 2020-06-29  ·  22评论  ·  资料来源: microsoft/botframework-solutions

什么项目受到影响?

虚拟助理和技能

这是什么语言?

打字稿

发生什么了?

当使用特定语言(例如 DE)创建QnAMakerDialog 时,即使您更改语言或其他用户使用不同的语言(例如 EN),也将始终解析该语言。

重现此问题的步骤是什么?

用户 1 :向机器人(DE)发送话语;
Bot :Bot 将话语解析为 QnA 意图,并创建新的 QnADialog,以knowledgebaseId 作为对话框的Id:

`` private registerQnADialog(knowledgebaseId: string, cognitiveModels: ICognitiveModelSet, locale: string): void { const qnaEndpoint: QnAMakerEndpoint | undefined = cognitiveModels.qnaConfiguration.get(knowledgebaseId); if (qnaEndpoint == undefined){ throw new Error(找不到 ID 为 ${knowledgebaseId }.`) 的 QnA Maker 知识库配置;
}

    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);
    }
}

```

Bot :在用户 1 的语言环境 (DE) 中向用户 1 发送 QnA 答案
用户 2 : 向 bot ( EN ) 发送话语;
Bot :Bot 将话语解析为 QnA 意图(与用户 1 发送的相同),不会创建新的 QnaMakerDialog,因为已经存在一个具有相同 KnowledgebaseId 的 Dialog。
Bot :Bot 再次启动 QnA Dialog(从用户 1 次迭代添加)并从第一个用户的知识库 (DE) 中获取答案;
Bot :在用户 1 的语言环境中向用户 2 发送消息。

你期待发生什么?

将使用正确的语言和正确的知识库 ID 创建另一个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. 使用虚拟助手package.json 中创建的 tgz 如下:

    "bot-solutions": "通往 BOT 解决方案 TGZ 的途径"

  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 虚拟助手示例
  • 打字稿技能示例

我们采取了以下步骤来重现虚拟助手和技能的问题:

  1. 转到机器人解决方案
  2. 执行npm install安装依赖
  3. 执行npm run build编译解决方案
  4. 执行npm pack创建.tgz
  5. 转到虚拟助手示例
  6. 在虚拟助手package.json 中使用创建的.tgz如下:
  7. “机器人解决方案”:“
  8. 执行npm install安装依赖
  9. 执行npm run build编译解决方案
  10. 执行npm run test编译解决方案
  11. 验证测试执行

image

image

@tommyJimmy87 - 我们在 PR #3559 中添加了建议的更改。

我们更新了虚拟助手和技能机器人,添加了以下导入测试文件: require('reflect-metadata');专门在BotTestBaseSkillTestBase 中,以避免您提到的与单元测试相关的问题。

您可以按照这些步骤来测试虚拟助手和技能中的更改。

谢谢,
迭戈。

@Batta32@DiegoCardozo94

我有一个通用问题,但由于我已经在我们的项目中使用了这个分支,即使尚未发布,我也会在这里提问。

在我们的场景中,我们将 MS Teams 作为唯一通道,我看到 TeamsActivityHandler 仅在 VA 中使用,而不在技能示例中使用,对吗? 因为也许我错误地扩展了 TeamsActivityHandler 的技能,这让我特别关注一个问题:基本上endOfConversation方法永远不会在技能的DefaultActivityHandlercancel之后被调用. 但也许我应该在技能范围内切换到“正常”的 ActivityHandler 扩展。 你能帮我或者更确切地说给我反馈吗?

谢谢

@tommyJimmy87TeamsActivityHandler派生自ActivityHandler ,它增加了对 Microsoft Teams 特定事件和交互的支持。

虚拟助手是在连接到 Skills 的 Virtual Assistant 架构中与 Microsoft Teams Channel 交互的一个,因此 Virtual Assistant 的DefaultActivityHandler需要TeamsActivityHandler扩展而不是 Skill在提到的模式中,正如您在示例中看到的那样。

模板/示例中虚拟助手的DefaultActivityHandler实现了TeamsActivityHandler ,它支持开箱即用的 Teams 方案。

我们研究了以下文档,您也可以查看这些文档:

如果这对您有帮助,请告诉我们😊。

此问题已过时,因为它已打开 30 天而没有任何活动。 删除陈旧的标签或评论,否则这将在 5 天内关闭

@Batta32这还没有发布吧?

@tommyJimmy87 - 我们正在敲定发布新软件包的计划。 一旦我们有任何更新,我们会在这里回复您😊。

@Batta32 有什么更新吗?

@cwhitten ,这个问题已经通过 PR #3559 解决了,它更新了@peterinnesmsft的请求更改。

PR 合并后,更改将出现在next分支中。

#3559 的状态是什么? @巴塔32

最后一次更新是在 9 月 11 日

谢谢

@tonyanziano ,PR #3559 已准备好进行审查和合并,其中包含@peterinnesmsft 的请求更改。

PR 合并后,更改将出现在next分支中。

此问题已过时,因为它已打开 30 天而没有任何活动。 删除陈旧的标签或评论,否则这将在 5 天内关闭

@joshgummersall #3752 的状态是什么? 你预计什么时候把它合并?

只要其他人可以审核并批准!

@joshgummersall

你可以努力让 PR 合并以便可以关闭这张票吗?

@virtual-josh,它只是在等待另一份公关审查; 它已经被一位审稿人批准了。 不知道该找谁进行第二次审查。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

lauren-mills picture lauren-mills  ·  4评论

samaea picture samaea  ·  3评论

kendomen picture kendomen  ·  4评论

esoler-sage picture esoler-sage  ·  3评论

lauren-mills picture lauren-mills  ·  3评论