虚拟助手
打字稿
当您启动一个对话,然后从该对话启动一个技能时,它没有在堆栈上正确注册。 当用户使用“取消”中断时,技能永远不会收到对话结束来重置。
创建 VA 和技能。 从 VA 的“入职对话”开始技能。尝试使用中断取消技能并检查技能是否收到对话结束
来自技能的对话堆栈在子对话中开始
[ { id: 'MainDialog',
状态:{选项:{},值:[对象],步骤索引:1}},
{ id: 'TextPrompt', state: { options: [Object], state: {} } },
{ id: 'TransferDialog2',
状态:{对话框:[对象]},
版本:'-43530585'}]
从主对话开始的技能对话堆栈
[ { id: 'MainDialog',
状态:{选项:{},值:[对象],步骤索引:2}},
{ ID:'dlpskill',状态:{}}]
感谢@tomSauret847报告此问题! 一旦我们有任何更新,我们会尽快回复您😊。
嗨@tomSauret847! 我们试图重现这个问题没有成功。
我们对您的重现步骤有一些疑问。
TransferDialog2
是什么意思? 它是onboardingDialog
的同义词吗?我们注意到在 VA 的 MainDialog 的interruptDialog
方法中有一个验证,只有当当前对话框属于一个技能时才会切换到另一个技能。
在onboardingDialog
的情况下,这将返回 false,因此它不会被中断以启动技能示例。
这是我们的环境:
我们采取了以下步骤来重现该问题:
onboardingDialog
期间发送技能的话语onboardingDialog
未完成谢谢!
目前,我们将实时代理转移设置为一项技能,如果机器人无法解决客户问题 (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 ,我们想与您确认我们正确理解了这个问题。
根据您在上一条评论中所说的,我们将努力重新创建以下场景:
onboardingDialog
使其调用技能示例。 我们将根据共享代码段进行修改。这就是您的工作流程的理解方式。
谢谢@VictorGrycuk这是我们正在实施的场景的正确工作流程。 我们可以让技能在对话过程中正常工作,但是当客户取消时,技能不会重置,因为它永远不会收到对话结束。
最有用的评论