我正在构建一个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返回)?
答案 0 :(得分:2)
Twilio开发者传道者在这里。
尝试使用MessagingResponse
直接返回XmlMediaTypeFormatter
:
return this.Request.CreateResponse(
HttpStatusCode.OK, XElement.Parse(response), new XmlMediaTypeFormatter());
希望有所帮助。