我和Twilio有一个间歇性的问题。每50次调用中就有一次调用失败,当我检查日志时,它指出这是错误11200,并且给出了“一次尝试从https://mednection.azurewebsites.net/appointment/fallback检索内容,返回了HTTP状态代码500”。
我已经看过Twilio关于这个错误的建议(可以在https://www.twilio.com/docs/errors/11200找到)。它们列出了一系列可能导致网关错误的原因:
1) Web服务器向Twilio返回了4xx或5xx HTTP响应-据我在日志中所见,web服务器向Twilio返回了200 HTTP响应。2) Web服务器配置错误-我们已经检查了web服务器的配置,并认为它是正确的。3) Twilio和您的web服务器之间的网络中断-我们已经测试了www.twilio.com和我们的服务器之间的ping响应时间和数据包丢失。ping时间小于15秒,当使用ping -n 100 www.twilio.com测试时,似乎没有数据包丢失。4)响应没有附加内容类型报头-我们将内容类型设置为应用程序/xml。5) Content-Type与实际内容不匹配--我们将Content-Type设置为应用程序/xml,并使用TwiML语言将响应发回。
我们还检查了Twilio的“可能的解决方案”部分中的所有元素是否存在此错误。
简单介绍一下我们正在做的事情:
我们正在开发预约创建系统。在这两个呼叫中,同时检查双方的可用性,同时挂断我收到的这个问题的呼叫。
我不排除是我们这一端的一些东西导致了这个问题,但我们真的不知道下一步该检查什么。web服务器似乎正在发回200响应,但Twilio似乎正在接收502响应。
有没有人有什么建议可以帮助我们呢?会不会是我们使用的API有问题?
提前谢谢你!
twilio
发布于 2021-03-25 15:15:17
Twilio似乎忘记为他们的请求设置content-type
...这使得中间件不可能解析主体。
如果您在express中使用Node.js,这里有一个解决方案:
content-type
setapplication/x-www-form-urlencoded
,这似乎是Twilio发送的实际内容类型。// This is used by your TwiML App as the Voice Request Url
app.post('/makecall', (req, res, next) => {
if (!req.headers['content-type']) {
req.headers['content-type'] = 'application/x-www-form-urlencoded'
const urlEncodedMiddleware = bodyParser.urlencoded({ extended: false })
urlEncodedMiddleware(req, res, next)
} else {
next()
}
}, makeCall);
如果Twilio决定开始发送content-type
,这个解决方案是一个未来的证明。但是,如果他们在不发送content-type
的情况下更改正文格式,它可能会崩溃……
受此答案启发的解决方案:https://stackoverflow.com/a/17228529/1340601
https://stackoverflow.com/questions/59647041
复制相似问题