使用 Twilio 在 .net 核心 web api 中接收短信

Receive SMS in .net core webapi uinsg Twilio

我正在使用以下代码接收发送到我的 .net 核心中的 Twilio 虚拟号码的短信 api。我的网络钩子 api 代码是这样的,

namespace MyNameSpace.Controllers
{
    [Route(Routing.CONTROLLER_PREFIX)]
    public class MfaController : MyControllerBase
    {

        [HttpPost]
        [Route(Constants.Save)]
        [Produces("application/xml")]
        public ActionResult SaveText(TextMessage TextInfo)
        {
            // My save logic here


           return Ok();
        }
    }
}

当我在本地测试代码时,我在 fiddler 和 postman 中得到了 200 - Ok 响应。但是我在 Twilio 控制台(调试器)中遇到错误

{
    "callbackResult": "SUCCESS",
    "statusCode": 502,
    "body": "VHd...............",
    "cookies": [],
    "headers": {
        "Transfer-Encoding": [
            "chunked"
        ],
        "X-Cache": [
            "MISS from ip-XXX-18-0-xXx"
        ],
        "X-Cache-Lookup": [
            "MISS from ip-XXX-18-0-XXX:3128"
        ],
        "X-Twilio-Reason": [
            "Response does not contain content type"
        ],
        "Date": [
            "Thu, 29 Mar 2018 16:08:10 GMT"
        ],
        "Content-Type": [
            "text/html"
        ]
    }
}

API 的响应类型应该是什么?我不需要给用户发送回复消息,只需要保存短信即可。

此处为 Twilio 开发人员布道师...

使用您共享的示例代码,您似乎正在尝试接收文本正文,保存它,然后回复 Twilio。假设您使用的是最新版本的 Twilio Nuget 程序包和来自 Twilio 的 HTTP Post 请求,您可以使用以下代码来执行此操作,我们的文档 here.[=13 中也有这些代码=]

public ActionResult SaveText([FromBody] string Body)
{
    // Put your save logic here

    // Respond to Twilio
    var response = new MessagingResponse();
    response.Message("");        
    return new ContentResult { Content=response.ToString(), ContentType="application/xml"};
}

以上代码使用参数绑定从 POST 请求中获取正文。如果您愿意,还可以包含 Twilio.AspNet.Mvc 帮助程序库,this blog post 使用它来使代码更简洁、更易于阅读。

最后一点:我建议发送确认信息,让发件人知道您的应用已收到邮件。让我知道这是否有帮助。