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 的唯一解决方法吗?

Null botId - Microsoft Bot Framework SDK V3

显然你可以做到

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 类选择我的实现。