Null botId - Microsoft Bot Framework SDK V3

时间:2016-07-14 17:40:58

标签: c# botframework

我正在尝试在EchoBot example of the MS Bot Framework之后本地运行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的唯一方法吗?

2 个答案:

答案 0 :(得分:2)

显然你可以做到

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

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

答案 1 :(得分:1)

它必须位于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类接受我的实现。