使用XML响应Twilio WebHook

时间:2018-02-04 02:25:45

标签: asp.net-web-api2 twilio

我正在构建一个Web API 2 API来响应Twilio webhooks。我已经构建了一个相当标准的端点,我可以看到,当我在那里发送我的号码时,Twilio会点击它,但它会得到一个12300 - 无效的内容类型 - 无效的内容类型:application / json; charset = utf-8提供。

我发现Twilio需要响应XML,但使用* / *的accept-header,因此我的端点默认返回JSON。

[Route("reply")]
[HttpPost]
public TwiMLResult TwilioSMS([FromBody]SmsRequest request)
{
    var requestBody = request.Body;

    var response = new MessagingResponse();
    if (requestBody == "hello")
        response.Message("Hi!");
    else
        response.Message("Invalid Input");

    return new TwiMLResult(response);
}

我尝试返回一个HttpResponseMessage(如下所示),所以我可以指定XML,但是我得到一个12200 Schema Validation Warning - cvc-elt.1:找不到元素的声明' TwiMLResult& #39;来自Twilio。

HttpResponseMessage resp = Request.CreateResponse<TwiMLResult>(
        HttpStatusCode.OK, value: new TwiMLResult(response),
        formatter: Configuration.Formatters.XmlFormatter);

如何强制此控制器/端点返回XML,但不影响我的其他控制器/端点(仍应基于accept-header返回)?

1 个答案:

答案 0 :(得分:2)

Twilio开发者传道者在这里。

尝试使用MessagingResponse直接返回XmlMediaTypeFormatter

return this.Request.CreateResponse(
    HttpStatusCode.OK, XElement.Parse(response), new XmlMediaTypeFormatter());

希望有所帮助。