我正在爲Microsoft團隊的機器人工作。我正在使用自定義機器人功能。我得到了bot作爲sideloaded包,但由於我的網絡的限制,我需要保持bot內部和使用自定義bot功能。我目前正在通過使用ngrok來隧道到我的本地主機來測試它。團隊機器人Activity.CreateReply拋出NullReferenceException
我現在遇到了一個問題,當我嘗試創建我的回覆。每當我打電話給我:
var reply = activity.CreateReply(message.ReadToEnd());
我得到一個NullReferenceException,說「對象引用未設置爲對象的實例」。消息是一個打開的.txt文件。每次我調用activity.CreateReply()時都會出現此錯誤。我不明白的一部分是,Bot框架模擬器中的一切都按預期工作,並且bot是一個sideloaded軟件包,但bot不是一個自定義bot。
這裏是我的全部Post方法:
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
var connector = new ConnectorClient(new Uri(activity.ServiceUrl));
if (activity.Type == ActivityTypes.Message)
{
// Commands:
// Retrieve TFS Work Item(s)
if (new Regex(@"\but\s?\d{5}\b").IsMatch(activity.Text.ToLower()))
{
var reply = new RetrieveWorkItem();
await connector.Conversations.ReplyToActivityAsync(reply.Response(activity));
}
// Help
else if (activity.Text.ToLower().Contains("help"))
{
var message = File.OpenText($"{System.AppDomain.CurrentDomain.BaseDirectory}/Messages/HelpMessage.txt");
var reply = activity.CreateReply(message.ReadToEnd());
await connector.Conversations.ReplyToActivityAsync(reply);
}
// Not Recognized
else
{
var reply = activity.CreateReply("Command not recognized. Type \"@Keller Bot Help\" for a list of commands.");
await connector.Conversations.ReplyToActivityAsync(reply);
}
}
else
{
HandleSystemMessage(activity, connector);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
下面是完整的錯誤和堆棧跟蹤通過機器人發送:https://pastebin.com/ZSrjrA9z
你確定該文件正在打開好嗎? –
是的,問題不在文件中,因爲當bot被sideload或者正在使用完全相同的回調URL從模擬器運行時,它會打開得很好。我不是故意要把注意力集中在消息上,因爲我所有的activity.CreateReply()調用都會拋出相同的異常,包括// Not Recognized下的一個簡單字符串。 –
是否有人能夠重現此?我試過了,我不能 – JasonSowers