2016-07-14 46 views
2

我想在本地運行EchoBot example of the MS Bot Framework,跟在updates to SDK V3之後,我無法創建對話框。null botId - 微軟Bot框架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: 

我想知道什麼空BOTID手段。我在本地運行應用程序,遵循Getting Started tutorial。它說,不需要爲機器人提供一個AppID,而且我相當確定AppId和botId不是一回事。我似乎無法找到關於這個botId字段的文檔。

有沒有其他人遇到過這個問題?是唯一的方法來註冊機器人並提供一個AppId?

回答

2

顯然,你可以做

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

,它會工作。我不確定應設置「BotId」字段的內容,但如果您遇到此問題,只需要在本地進行測試,則在致電Conversation.SendAsync之前在MessagesController.cs之前添加此行是一種解決方法。

0

它需要在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類選擇我的實現。