You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Azure Web频道聊天机器人部署后数小时出现发送失败故障

解决Azure Web App Bot闲置后无法发送消息的问题

嗨,我之前也碰到过几乎一模一样的情况,结合你的场景给你梳理下排查方向和实际可行的解决办法:

核心原因分析

  • App Service自动休眠(最常见):如果你的App Service用的是Free/Shared层级,Azure会在应用15-20分钟没流量时自动休眠,唤醒需要一定时间,直接导致机器人请求超时,出现「无法发送」错误
  • LUIS连接回收:虽然LUIS和Bot在同一区域,但闲置后系统会回收闲置连接,首次请求重新建立连接时容易触发超时
  • 会话状态丢失:如果Bot用的是内存存储会话状态(测试环境常用),闲置过久状态会被清空,导致无法处理新的对话请求

一步步排查验证

  1. 查看App Service实时日志
    登录Azure门户,找到你的App Service,打开左侧的日志流,然后尝试给机器人发消息触发错误,看看日志里有没有超时、连接失败的具体提示,这能帮你精准定位是Bot本身还是依赖服务的问题
  2. 确认App Service Plan层级
    进入对应的App Service Plan,检查是不是Free/Shared层——这类层级的休眠是默认行为,没法直接禁用,得升级层级或者用其他办法规避
  3. 直接测试Bot端点
    用Postman或者curl发个POST请求到Bot的https://zapateria-bot.azurewebsites.net/api/messages端点(模拟Bot Framework的请求格式),看看能不能正常响应,排除前端或者聊天通道的问题

针对性解决办法

  • 开启「始终开启」(需Basic+层级)
    如果你的App Service Plan是Basic及以上,直接在App Service的配置>常规设置里打开「始终开启」,Azure会持续保持应用运行状态,不会进入休眠
  • 添加定时唤醒任务
    要是没法升级层级,可以搞个简单的定时任务(比如Azure Function、第三方定时工具),每隔10分钟给Bot的端点发个GET请求,让应用一直处于活跃状态,避免休眠
  • 调整LUIS超时配置
    在Bot的代码里给LUIS识别器设置更长的超时时间,比如把timeout参数调到10秒以上,给首次连接留足够的唤醒缓冲时间
  • 切换持久化会话存储
    把内存存储换成Azure Blob Storage或者Cosmos DB,这样就算应用休眠重启,会话状态也不会丢失,能正常处理新的对话请求

你可以先试试重启App Service临时恢复服务,再按照上面的方法从根本上解决问题。

内容的提问来源于stack exchange,提问作者Daniel

火山引擎 最新活动