Null botId - Microsoft Bot Framework SDK V3
本文关键字:Framework SDK V3 Bot Microsoft botId Null | 更新日期: 2023-09-27 17:57:03
我正在尝试在 SDK V3 更新后在本地运行 MS Bot 框架的 EchoBot 示例,但无法创建对话框。
在电话
Conversation.SendAsync(activity, () => EchoChainDialog.dialog);
我得到的错误是
System.ArgumentNullException occurred
HResult=-2147467261
Message=Value cannot be null.
Parameter name: botId
ParamName=botId
Source=Microsoft.Bot.Builder
StackTrace:
at Microsoft.Bot.Builder.Internals.Fibers.SetField.CheckNull[T](String name, T value)
InnerException:
我想知道空 botID 是什么意思。我正在按照入门教程在本地运行该应用程序。它说不需要为机器人提供 AppID,我相当确定 AppId 和 botId 不是一回事。我似乎找不到太多关于这个botId字段的文档。
还有其他人遇到过这个问题吗?这是注册机器人并提供 AppID 的唯一解决方法吗?
显然你可以做到
ConfigurationManager.AppSettings["BotId"] = "test";
它会起作用。我不确定应该设置"BotId"字段的内容,但是如果您遇到此问题并且只需要在本地进行测试,那么在调用Conversation.SendAsync
之前MessagesController.cs
添加此行是一种解决方法。
它需要在web.config或app.config中
<appSettings>
<add key="BotId" value="[Your Id]" />
<add key="MicrosoftAppId" value="[The app id]" />
<add key="MicrosoftAppPassword" value="[The client secret]" />
</appSettings>
BotBuilder中的autofac魔法从那里拾取它,而且只能从那里开始。
我尝试以其他方式设置它,因为我想使用新的 json 样式配置,但到目前为止还没有成功。我想一定有某种方法,可以实现我尝试过的 IBotIdResolver,但它似乎需要更多的自定义,我无法让 Conversation 类选择我的实现。