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;