gpt4 book ai didi

c# - .NET Core API 中的 Twilio StatusCallBack 和 Gather POST 方法返回 HTTP 415 - 不支持的媒体类型

转载 作者:行者123 更新时间:2023-12-05 08:39:45 27 4
gpt4 key购买 nike

下面是我对这两种方法的代码-

GatherCall 正在返回 Twiml,我仍然得到 HTTP 415 并且对于 StatusCallback 方法也是如此。有人可以帮忙吗?我什至无法使用 ngrok 对此进行测试,因为隧道工具在我的组织网络中不起作用。我正在使用 Azure 通过记录所有内容来测试这个。

public TwiMLResult GatherCall([FromRoute] string id, [FromBody] VoiceRequest voiceRequest )
{
_logger.LogInformation("*****************GatherCall - Start****************");
var response = new VoiceResponse();

try
{
_logger.LogInformation("Gather call back for -" + id);

_logger.LogInformation("VoiceRequest parameters-------------------------");
_logger.LogInformation("CallSid : " + voiceRequest.CallSid);
_logger.LogInformation("CallStatus : " + voiceRequest.CallStatus);
_logger.LogInformation("AccountSid : " + voiceRequest.AccountSid);
_logger.LogInformation("From : " + voiceRequest.From);
_logger.LogInformation("To : " + voiceRequest.To);
_logger.LogInformation("Digits : " + voiceRequest.Digits);
_logger.LogInformation("Direction : " + voiceRequest.Direction);
_logger.LogInformation("TranscriptionText : " + voiceRequest.TranscriptionText);

if (voiceRequest.Digits == "1234")
{
response.Say("Your response has been recorded. Thank you.", voice: "alice");
response.Hangup();
//acctepted response
//update call status to db
//acknowledge incident
}
else
{
response.Say("Incorrect code enterted. Please enter correct code to accespt this incident", voice: "alice");
response.Pause(3);
response.Hangup();
}

_logger.LogInformation("*****************GatherCall - EndTry****************");
}
catch (Exception ex)
{
_logger.LogError(ex.Message);
_logger.LogInformation("*****************GatherCall - EndCatch****************");
}
return TwiML(response);
// return TwiML(response.ToString(), "application/xml");
}

public IActionResult StatusCallBack([FromRoute] string id, [FromBody] StatusCallbackRequest statusCallbackRequest)
{
_logger.LogInformation("*****************StatusCallBack - Start****************");
try
{
_logger.LogInformation("Status call back called for -" + id );

_logger.LogInformation("StatusCallbackRequest parameters-------------------------");
_logger.LogInformation("CallSid : " + statusCallbackRequest.CallSid);
_logger.LogInformation("CallStatus : " + statusCallbackRequest.CallStatus);
_logger.LogInformation("AccountSid : " + statusCallbackRequest.AccountSid);
_logger.LogInformation("From : " + statusCallbackRequest.From);
_logger.LogInformation("To : " + statusCallbackRequest.To);
_logger.LogInformation("Digits : " + statusCallbackRequest.Digits);
_logger.LogInformation("Direction : " + statusCallbackRequest.Direction);
_logger.LogInformation("TranscriptionText : " + statusCallbackRequest.TranscriptionText);


_logger.LogInformation("*****************StatusCallBack - EndTry****************");
return Ok("Handled");
}
catch (Exception ex)
{
_logger.LogError(ex.Message);
_logger.LogInformation("*****************StatusCallBack - EndCatch****************");
return Ok("Handled in catch");
}
}

最佳答案

这里是 Twilio 布道者...很抱歉您遇到了困难。看起来您的代码正在尝试将 voiceRequest 参数绑定(bind)到来自 Twilio 的传入 POST 请求的主体(使用 [FromBody])。如果 Twilio 正在发送 POST 请求,您需要绑定(bind)到表单(使用 [FromForm])。否则,ASP.NET Core 将返回 415 错误代码。

尝试用 [FromForm] 替换 [FromBody]。这应该在 POST 请求上解决这个问题。我还建议验证 Twilio 实际上是在发送 POST,而不是 GET 请求。

如果您遇到更多问题,请通过电子邮件将说明发送至 corey@twilio.com。希望这会有所帮助。

关于c# - .NET Core API 中的 Twilio StatusCallBack 和 Gather POST 方法返回 HTTP 415 - 不支持的媒体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59049805/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com