【问题标题】:Frequent timeout errors when returning message to twilio from Microsoft Bot Framework从 Microsoft Bot Framework 向 twilio 返回消息时经常出现超时错误
【发布时间】:2019-11-12 20:15:55
【问题描述】:

我在 twilio 和 bot 框架通道集成方面遇到了一些问题。

简而言之,通过 twilio 通道发生的大量传入消息和对话超时,用户永远不会收到响应。然后,几分钟后,所有堆积的响应将同时到达 - 几乎就像响应者挂起然后继续一样。该错误仅发生在 twilio 通道中 - 当嵌入站点、在 azure 门户中测试以及连接到 slack 时,它可以正常工作。

当我第一次将 twilio 连接到机器人时,它运行了几天完全正常,现在我在通过该通道发生的大约 70-80% 的消息中收到以下错误。

在高层次上,我得到的特定于频道的错误是:“向您的机器人发送此消息时出错:HTTP 状态代码 GatewayTimeout”

在应用日志中,错误记录要详细得多,但仍无法深入了解具体是什么导致了错误:

HTTP 错误 500.1013 - 内部服务器错误

由于发生内部服务器错误,页面无法显示。

最可能的原因: •IIS 收到请求;但是,在处理请求期间发生了内部错误。此错误的根本原因取决于处理请求的模块以及发生此错误时工作进程中发生的情况。 •IIS 无法访问网站或应用程序的web.config 文件。如果 NTFS 权限设置不正确,可能会发生这种情况。 •IIS 无法处理网站或应用程序的配置。 •经过身份验证的用户没有使用此DLL 的权限。 •请求被映射到托管处理程序,但未安装 .NET 可扩展性功能。

您可以尝试的事情: • 确保 web.config 文件的 NTFS 权限正确并允许访问 Web 服务器的计算机帐户。 •检查事件日志以查看是否记录了任何其他信息。 •验证DLL 的权限。 •如果请求映射到托管处理程序,请安装.NET 可扩展性功能。 •创建一个跟踪规则来跟踪此HTTP 状态代码的失败请求。有关为失败的请求创建跟踪规则的更多信息,请单击此处。

在 twilio 方面,我收到以下错误

错误 - 11200 HTTP 检索失败

可能的原因 Web 服务器向 Twilio 返回 4xx 或 5xx HTTP 响应 错误配置的 Web 服务器 Twilio 和您的 Web 服务器之间的网络中断 没有附加到响应的 Content-Type 标头 Content-Type 与实际内容不匹配,例如使用 Content-Type: audio/x-wav 而不是 Content-Type: audio/mpeg 提供的 MP3 文件

可能的解决方案 仔细检查您的 TwiML URL 是否没有返回 4xx 或 5xx 错误 确保 URL 不会执行 302 重定向到无效 URL 确认请求的 URL 不受 HTTP Auth 保护 确保您的 Web 服务器允许对静态资源的 HTTP POST 请求(如果 URL 引用 .xml 或 .html 文件) 验证您的 Web 服务器是否已启动并响应 检查 URL 主机是否不是私有或本地 IP 地址 验证您的网络服务器和 www.twilio.com 之间的 ping 时间和数据包丢失

Twilio 向 Bot Framework 发送请求,并返回以下信息 消息“错误网关” 源组件“14100” 错误代码“11200” 电子邮件通知“假” http响应“502” 日志级别“错误” 网址“https://sms.botframework.com/api/sms

Twilio 无法从以下位置获取内容:http://sms.botframework.com/api/sms 错误:触发了总超时。配置的 tt 是 15000 毫秒,我们尝试了 1 次 帐户 SID:已编辑 SID:已编辑 请求 ID:已编辑 远程主机:sms.botframework.com 请求方法:POST 请求 URI:http://sms.botframework.com/api/sms 网址片段:真

++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++

一些附加信息:

  • Bot 在嵌入网站、在 azure 门户中进行测试以及连接到 slack 时运行良好。
  • 错误似乎发生在代码中 await context.sendActivity(messageToReturnToUser)await dialogContext.beginDialog(this.id) 或基本上我们发送的任何地方回馈给用户。
  • 几分钟后,bot 框架会将所有堆积的消息发送给最终用户,他们会背靠背收到一大块短信。
  • 错误无法在任何其他渠道或机器人框架模拟器中复制。
  • 并非每条消息都发生错误。任意数量的消息都会顺利通过并立即得到回复,但任意数量的消息将受到延迟的影响。
  • 我使用的是付费的 twilio 号码,这里没有出现试用错误!

还有其他人遇到过这个问题吗?任何意见或帮助将不胜感激!

【问题讨论】:

  • 由于服务器上的错误,您收到 11200 Twilio 错误,因此您应该集中注意力。您是否尝试过 500.1013 错误消息中的任何补救措施?
  • 您能否确认您的机器人使用的是哪个 SDK 和 Botbuilder 版本?
  • @philnash 我已经尝试了 500.1013 错误消息中的所有补救措施,并且根据堆栈跟踪,这似乎是 SDK 或 bot 框架网关无法触发响应的问题- 我希望它在我的代码中 - 至少这样我可以更轻松地诊断问题:(
  • @StevenKanberg 嗨 Steven,我使用的 botbuilder SDK 版本是 4.5.3。它在 node.js 上!
  • 你能分享你正在使用的代码和示例堆栈跟踪吗?

标签: twilio botframework


【解决方案1】:

此问题已在 Azure/BotFramework 方面得到缓解。如果您仍有问题,请告诉我。

【讨论】:

  • 嗨,达娜!哇!它现在似乎工作得非常非常可靠!今天早上我对大约 5k 个并发传入请求进行了一些压力测试,平均响应时间为 0.22 秒,这太棒了!我可以在日志记录、测试等方面做些什么来帮助机器人框架团队吗?真的很喜欢使用该产品!
  • 很高兴听到。继续使用该产品并报告任何错误!错误应该在适当的 botframework/botbuilder repos 上报告,但操作方法问题应该放在 SO 上。
猜你喜欢
  • 2021-02-19
  • 1970-01-01
  • 1970-01-01
  • 2018-10-31
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-10
相关资源
最近更新 更多