MS Bot在Skype for Business渠道异常:返回NotFound错误求助
听起来你遇到的是Bot在Skype for Business(SFB)渠道触发API端点失败的问题——虽然Web渠道正常运行,但SFB端返回NotFound错误,还提示服务连接异常。我来分享几个针对性的排查和解决步骤:
校验Bot消息端点的全局配置
先确认Azure Bot Channel Registration里的「Settings」>「Messaging endpoint」是否正确设置为你的Web API地址,格式应该是https://<你的WebApp名称>.azurewebsites.net/api/messages。虽然Web渠道正常,但SFB渠道对端点格式的校验更严格,别漏掉/api/messages这类关键后缀。排查Web API的IP访问限制
如果你的Azure Web API设置了IP白名单(在「Networking」>「Access restrictions」页面),很大概率是没添加Microsoft Bot Service的IP范围,导致SFB的请求被拦截返回404。你可以通过Azure CLI快速添加允许规则:az webapp config access-restriction add --resource-group <你的资源组名称> --name <你的WebApp名称> --rule-name "AllowBotService" --priority 100 --action Allow --service-tag AzureBotService也可以手动在Azure门户里添加
AzureBotService这个服务标签。重新连接Skype for Business渠道
有时候渠道的连接会因授权过期或配置异常失效。去Bot Channel Registration的「Channels」页面,找到Skype for Business,点击「Edit」,重新完成授权流程并保存配置,之后再测试Bot响应情况。检查Web API的Bot控制器与日志
即便Web渠道正常,也要确认Bot的消息控制器是否适配SFB的请求:- 确保控制器带有
[HttpPost("api/messages")]路由属性 - 确认添加了正确的身份验证属性(比如
[Microsoft.Bot.Builder.Integration.AspNet.Core.BotAuthentication])
同时,查看Azure Web App的「Log Stream」或Application Insights日志,看看SFB的请求是否真的到达了Web API,有没有未捕获的异常导致返回404。
- 确保控制器带有
验证Bot的身份凭证配置
检查Web API应用设置里的MicrosoftAppId和MicrosoftAppPassword是否正确,有没有密码过期的情况。可以在Azure AD里重新生成Bot的密码,更新到Web App的应用设置后,重启Web App再测试。
按照这些步骤排查,应该能定位到SFB渠道无法触发API端点的核心原因。
内容的提问来源于stack exchange,提问作者Ashutosh

