Null botid - Microsoft Bot Framework SDK Vz

Null botId - Microsoft Bot Framework SDK V3

我正尝试在本地 运行 EchoBot example of the MS Bot Framework, following the updates to SDK V3,但无法创建对话框。

在调用

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: 

我想知道 null botID 是什么意思。在 Getting Started tutorial 之后,我 运行 在本地安装应用程序。它说不需要为机器人提供 AppID,我很确定 AppId 和 botId 不是一回事。我似乎找不到太多关于这个 botId 字段是什么的文档。

还有其他人遇到过这个问题吗?注册机器人并提供 AppId 是解决此问题的唯一方法吗?

显然你可以做到

ConfigurationManager.AppSettings["BotId"] = "test";

它会起作用的。我不确定应该如何设置 "BotId" 字段,但是如果您 运行 遇到这个问题并且只需要在本地进行测试,请在 MessagesController.cs 调用之前添加此行Conversation.SendAsync 是一种解决方法。

需要在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,但它似乎需要更多的定制,我无法让对话 class 选择我的实现。