1

我正在使用以下代码在我的 .net 核心 api 中接收发送到 Twilio 虚拟号码的短信。我的 web hook 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();
        }
    }
}

当我在本地测试代码时,我在提琴手和邮递员中得到 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 的响应类型应该是什么?我不需要向用户发送回复消息,只需要保存短信。

4

1 回答 1

4

Twilio 开发人员布道者在这里...

使用您共享的示例代码,您似乎正在尝试接收文本正文,将其保存,然后响应 Twilio。假设您使用的是最新版本的 Twilio Nuget 包和来自 Twilio 的 HTTP Post 请求,您可以使用以下代码来执行此操作,我们在此处的文档中也有该代码。

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 帮助程序库,此博客文章使用它来使代码更简洁、更易于阅读。

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

于 2018-03-29T20:32:15.900 回答