Botframework-solutions: 当用户从 VA 中的子对话框启动技能时取消,无法正确结束技能

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

什么项目受到影响?

虚拟助手

这是什么语言?

打字稿

发生什么了?

当您启动一个对话,然后从该对话启动一个技能时,它没有在堆栈上正确注册。 当用户使用“取消”中断时,技能永远不会收到对话结束来重置。

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

创建 VA 和技能。 从 VA 的“入职对话”开始技能。尝试使用中断取消技能并检查技能是否收到对话结束

你期待发生什么?

你能分享任何日志、错误输出等吗?

来自技能的对话堆栈在子对话中开始
[ { id: 'MainDialog',
状态:{选项:{},值:[对象],步骤索引:1}},
{ id: 'TextPrompt', state: { options: [Object], state: {} } },
{ id: 'TransferDialog2',
状态:{对话框:[对象]},
版本:'-43530585'}]

从主对话开始的技能对话堆栈
[ { id: 'MainDialog',
状态:{选项:{},值:[对象],步骤索引:2}},
{ ID:'dlpskill',状态:{}}]

任何屏幕截图或其他上下文?

Needs Triage Bug

最有用的评论

所有16条评论

感谢@tomSauret847报告此问题! 一旦我们有任何更新,我们会尽快回复您😊。

嗨@tomSauret847! 我们试图重现这个问题没有成功。

我们对您的重现步骤有一些疑问

  • 你在使用[email protected]吗?
  • 你是否触发通过在发送话语的技巧onboardingDialog的VA的?
  • 您是否更新了 VA 以将意图转发到技能? 如果是这样,你对它做了哪些修改?
  • TransferDialog2是什么意思? 它是onboardingDialog的同义词吗?

我们注意到在 VA 的 MainDialog 的interruptDialog方法中有一个验证,只有当当前对话框属于一个技能时才会切换到另一个技能。
onboardingDialog的情况下,这将返回 false,因此它不会被中断以启动技能示例。

这是我们的环境:

我们采取了以下步骤来重现该问题:

  1. 部署虚拟助手和技能
  2. 将虚拟助手连接到技能
  3. 在 Bot Emulator 中运行两个机器人
  4. 在 VA 的onboardingDialog期间发送技能的话语
  5. 技能未初始化,因为onboardingDialog未完成

image

谢谢!

目前,我们将实时代理转移设置为一项技能,如果机器人无法解决客户问题 (TransferDialog2),则可以升级为实时代理。 我们需要执行一些验证以确保客户被转移到正确的聊天队列,这就是我们将其构建到类似于入职对话的对话中的原因。 我在 transferDialog 中使用以下代码调用 agenttransfer 技能。

    const identifiedSkill: IEnhancedBotFrameworkSkill | undefined = this.skillsConfig.skills.get('agenttransfer');
    if (identifiedSkill !== undefined) {
        await this.activeSkillProperty.set(sc.context, identifiedSkill);
        return sc.beginDialog('agenttransfer', skillDialogArgs);

VA 将启动该技能并将所有客户消息转发到该技能,但如果客户触发“取消对话”中断,则 VA 不会将对话结束发送给该技能,以允许我们清理并结束该技能。 您确实复制了步骤,但没有取消复制中的技能。 这就是我们的问题在于能够在清理已用资源并将其关闭的技能中接收 EOC。

我正在使用 TypeScript VA
打字技巧
我已经根据发布到 repo 的“下一个”分支的更改进行了更新,以确保它们是最新的
该技能正在被触发并正常运行,当客户选择取消所有活动对话时,它只是不会收到 EOC。

感谢@tomSauret847提供所有信息😊。
我们将继续重现该问题,如有任何更新,我们会通知您。

@tomSauret847 ,我们想与您确认我们正确理解了这个问题。

根据您在上一条评论中所说的,我们将努力重新创建以下场景:

  1. 创建虚拟助手示例
  2. 创建技能样本
  3. 修改 VA 的onboardingDialog使其调用技能示例。 我们将根据共享代码段进行修改。
  4. 技能示例开始后发送取消
  5. 取消技能样本应该失败

这就是您的工作流程的理解方式。
image

谢谢@VictorGrycuk这是我们正在实施的场景的正确工作流程。 我们可以让技能在对话过程中正常工作,但是当客户取消时,技能不会重置,因为它永远不会收到对话结束。

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

相关问题

hansmbakker picture hansmbakker  ·  3评论

igor17400 picture igor17400  ·  4评论

esoler-sage picture esoler-sage  ·  3评论

lauren-mills picture lauren-mills  ·  3评论

darrenj picture darrenj  ·  3评论