使用 XML 响应 Twilio WebHook
Responding to Twilio WebHook with XML
我正在构建一个 Web API 2 API 来响应 Twilio webhook。我已经建立了一个相当标准的端点,当我在那里输入我的号码时,我可以看到 Twilio 命中它,但它得到一个 12300 - Invalid Content-Type - Invalid Content-Type: application/json; charset=utf-8 提供。
我发现 Twilio 需要 XML 作为响应,但使用 */* 的 accept-header,所以我的端点默认为 return 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);
}
我已经尝试 return 改为使用 HttpResponseMessage(如下所示),因此我可以指定 XML,但我收到 12200 架构验证警告 - cvc-elt.1:无法从 Twilio 中找到元素 'TwiMLResult' 的声明。
HttpResponseMessage resp = Request.CreateResponse<TwiMLResult>(
HttpStatusCode.OK, value: new TwiMLResult(response),
formatter: Configuration.Formatters.XmlFormatter);
我如何才能将此 controller/endpoint 强制为 return XML,但不影响我的其他 controllers/endpoints(基于 accept-header)?
此处为 Twilio 开发人员布道师。
尝试使用 XmlMediaTypeFormatter
:
直接返回 MessagingResponse
return this.Request.CreateResponse(
HttpStatusCode.OK, XElement.Parse(response), new XmlMediaTypeFormatter());
希望对您有所帮助。
我正在构建一个 Web API 2 API 来响应 Twilio webhook。我已经建立了一个相当标准的端点,当我在那里输入我的号码时,我可以看到 Twilio 命中它,但它得到一个 12300 - Invalid Content-Type - Invalid Content-Type: application/json; charset=utf-8 提供。
我发现 Twilio 需要 XML 作为响应,但使用 */* 的 accept-header,所以我的端点默认为 return 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);
}
我已经尝试 return 改为使用 HttpResponseMessage(如下所示),因此我可以指定 XML,但我收到 12200 架构验证警告 - cvc-elt.1:无法从 Twilio 中找到元素 'TwiMLResult' 的声明。
HttpResponseMessage resp = Request.CreateResponse<TwiMLResult>(
HttpStatusCode.OK, value: new TwiMLResult(response),
formatter: Configuration.Formatters.XmlFormatter);
我如何才能将此 controller/endpoint 强制为 return XML,但不影响我的其他 controllers/endpoints(基于 accept-header)?
此处为 Twilio 开发人员布道师。
尝试使用 XmlMediaTypeFormatter
:
MessagingResponse
return this.Request.CreateResponse(
HttpStatusCode.OK, XElement.Parse(response), new XmlMediaTypeFormatter());
希望对您有所帮助。