Asp.net Core 2.1 or 2.2 BOT SDK 4 invalid activity-missing Conversation.Id 访问参数时出错
Asp.net Core 2.1 or 2.2 BOT SDK 4 invalid activity-missing Conversation.Id error when accessing parameters
在机器人控制器中启动 ProcessAsync 之前,我试图从 Twilio 获取 To 号码。
如果我像下面这样使用 FromForm,我可以获得 To 参数,但是我在对话框中收到“无效 activity-缺少 Conversation.Id”错误。
public async Task PostAsync([FromForm] string To )
{
}
如果我像下面那样使用 Request.Form["To"],我可以获得 To 参数,但是我在对话框。
public async Task PostAsync()
{
Request.Form["To"]
}
有谁知道为什么会这样and/or如何解决?如果我不要求 Bot 控制器中的任何参数,BOT 工作正常。
控制器装饰有[ApiController]
。
非常感谢任何帮助!提前致谢!
我终于让它工作了。看起来这是请求的问题并阅读了两次。关键是要将 Request 重置为 0,这样 Bot Adapter 才能读取它。
var req = Request;
// Allows using the stream several times in ASP.Net Core
req.EnableRewind();
if (!String.IsNullOrEmpty(Request.Form["To"]))
{
toNumber = Request.Form["To"];
}
// Rewind, so the core is not lost when the Bot Adapter looks for the body in the request
req.Body.Position = 0;
在机器人控制器中启动 ProcessAsync 之前,我试图从 Twilio 获取 To 号码。
如果我像下面这样使用 FromForm,我可以获得 To 参数,但是我在对话框中收到“无效 activity-缺少 Conversation.Id”错误。
public async Task PostAsync([FromForm] string To )
{
}
如果我像下面那样使用 Request.Form["To"],我可以获得 To 参数,但是我在对话框。
public async Task PostAsync()
{
Request.Form["To"]
}
有谁知道为什么会这样and/or如何解决?如果我不要求 Bot 控制器中的任何参数,BOT 工作正常。
控制器装饰有[ApiController]
。
非常感谢任何帮助!提前致谢!
我终于让它工作了。看起来这是请求的问题并阅读了两次。关键是要将 Request 重置为 0,这样 Bot Adapter 才能读取它。
var req = Request;
// Allows using the stream several times in ASP.Net Core
req.EnableRewind();
if (!String.IsNullOrEmpty(Request.Form["To"]))
{
toNumber = Request.Form["To"];
}
// Rewind, so the core is not lost when the Bot Adapter looks for the body in the request
req.Body.Position = 0;