Teams bot Activity.CreateReply 抛出 NullReferenceException
Teams bot Activity.CreateReply throwing NullReferenceException
我正在为 Microsoft Teams 开发一个机器人。我正在使用自定义机器人功能。我让机器人以旁加载包的形式工作,但由于网络的限制,我需要将机器人保留在内部并使用自定义机器人功能。我目前正在通过使用 ngrok 隧道连接到我的本地主机来测试它。
我现在 运行 在尝试创建回复时遇到了问题。每当我这样称呼时:
var reply = activity.CreateReply(message.ReadToEnd());
我得到一个 NullReferenceException 说 "Object reference not set to an instance of an object"。消息是一个打开的 .txt 文件。每次调用 activity.CreateReply() 时都会出现此错误。我不明白的部分是,在 Bot Framework Emulator 中一切都按预期工作,当 bot 是旁加载包时,但当 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;
}
这是机器人发送的完整错误和 StackTrace:https://pastebin.com/ZSrjrA9z
我正在为 Microsoft Teams 开发一个机器人。我正在使用自定义机器人功能。我让机器人以旁加载包的形式工作,但由于网络的限制,我需要将机器人保留在内部并使用自定义机器人功能。我目前正在通过使用 ngrok 隧道连接到我的本地主机来测试它。
我现在 运行 在尝试创建回复时遇到了问题。每当我这样称呼时:
var reply = activity.CreateReply(message.ReadToEnd());
我得到一个 NullReferenceException 说 "Object reference not set to an instance of an object"。消息是一个打开的 .txt 文件。每次调用 activity.CreateReply() 时都会出现此错误。我不明白的部分是,在 Bot Framework Emulator 中一切都按预期工作,当 bot 是旁加载包时,但当 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;
}
这是机器人发送的完整错误和 StackTrace:https://pastebin.com/ZSrjrA9z