【发布时间】:2021-03-27 15:42:40
【问题描述】:
我正在创建一个工作流,允许将 composer 创建的对话框集成到机器人技能项目中。
为了做到这一点,我正在尝试按照这篇文章中的说明进行操作:https://microsoft.github.io/botframework-solutions/skills/handbook/experimental-add-composer/
我的作曲家创建了包括调用技能的对话框。当我通过 Bot Emulator 启动该意图时,我收到此错误:
System.NullReferenceException: 'Unable to locate SkillConversationIdFactoryBase in HostContext'
解决此错误的设置非常耗时,因此我创建了一个 git 存储库,可以很容易地启动它来演示该问题。
该项目可以在这里找到: https://github.com/silverbulletgt/Integrate-Composer-Dialog-Using-Skill
重现问题:
先决条件
重现问题的步骤
-
在 Visual Studio 中打开解决方案文件
Integrate-Composer-Dialog-Using-Skill.sln -
在
DefaultAdapter.cs的line 72上放置一个断点 - 这是可以看到错误的地方 -
开始调试项目
-
打开机器人模拟器
-
连接机器人:http://localhost:3978/api/messages
-
输入
"Greeting" -
Bot 应该以
"Hello, I have recognized that you said greeting"响应 - 这意味着 Composer 对话框集成正在按预期工作。 -
输入
"Skill" -
DefaultAdapter.cs的line 72上的断点应该触发提供错误的详细信息。
可以在这里找到错误和堆栈跟踪:https://github.com/silverbulletgt/Integrate-Composer-Dialog-Using-Skill/blob/master/Readme/error%20stack%20trace.txt
编辑:
我能够编译 Bot Builder 代码 Bot Builder GitHub 并将其连接到我的项目,以便我可以调试。我发现错误发生在 line 157 的 Microsoft.Bot.Builder.Dialogs.Adaptive.BeginSkill.cs 代码 BeginSkill.cs 上。
此行试图将SkillConversationFactoryBase 从dialogContext.Context.TurnState 中取出。我正在研究如何添加它,以便在执行此代码时填充它。
【问题讨论】:
-
欢迎来到 Stack Overflow。你的问题是什么?请查看方便的指南,了解您可以采取哪些步骤来更快地获得更好的答案:stackoverflow.com/help/how-to-ask
-
.dialog 设置值解析问题的相关问题:stackoverflow.com/questions/65363853/…
标签: c# botframework