Teams中Adaptive Card点击提交按钮总提示“出错请重试”如何排查
报错提示:something went wrong please try again
错误截图:
错误产生原因
- 服务端未正确处理
task/fetchinvoke请求:点击按钮后Teams会向你注册的Bot消息端点发送类型为task/fetch的调用请求,若服务端没有对应处理逻辑、返回非200状态码或者响应格式不符合Teams要求,就会触发该报错。 - Teams应用清单配置错误:
manifest.json中的validDomains字段未添加任务模块要加载的页面域名,或者清单中缺少Bot相关的权限配置,会导致任务模块无法正常拉起。 - Bot服务不可达:Bot的消息端点未使用HTTPS协议、证书无效、端口非443,或者服务部署在内网无法被Teams的公网请求访问,本地调试时未使用内网穿透工具暴露服务,都会导致请求失败。
- Adaptive Card配置不兼容:使用的Adaptive Card schema版本低于1.2,或者
Action.Submit中的字段拼写错误,比如msteams字段、type: "task/fetch"拼写有误,也会触发调用异常。 - 权限问题:Bot未在Azure门户中开启Teams频道权限,单租户应用的测试用户不在对应Azure AD租户范围内,或者Teams客户端未开启应用侧加载权限,也会导致请求被拦截。
解决方案
- 完善服务端invoke请求处理
确保你的Bot代码中已注册onInvokeActivity处理逻辑,收到task/fetch类型的请求时,返回符合Teams规范的响应,示例响应结构如下:{ "task": { "type": "continue", "value": { "title": "登录", "url": "你的登录页地址", "height": 500, "width": 400 } }, "responseType": "task" } - 修正Teams应用清单配置
检查manifest.json文件,确保validDomains数组已经添加了你所有要在任务模块中加载的域名,示例配置:
同时确认清单中Bot的"validDomains": [ "your-login-domain.com", "other-required-domain.com" ]botId和你在Azure注册的Bot客户端ID一致。 - 验证Bot服务可达性
确认Bot服务已部署在公网,使用HTTPS协议、443端口且SSL证书有效,没有防火墙拦截来自Teams的请求。本地调试时需使用内网穿透工具暴露本地服务端口,且Azure中Bot注册的消息端点地址和公网暴露的地址一致。 - 修正Adaptive Card配置
确认Adaptive Card的schema版本为1.2及以上,检查当前按钮配置的字段拼写无误,你给出的配置本身语法没有问题,确认translation.BotSection.Login变量能正常输出字符串即可:actions: [ { type: "Action.Submit", title: `${translation.BotSection.Login}`, data: { msteams: { type: "task/fetch", }, login: "botlogin", }, }, ], - 检查权限配置
进入Azure门户的Bot服务页面,确认已经添加Teams频道,权限配置正确。如果是单租户应用,确认测试用户在对应Azure AD租户内,同时Teams客户端的侧加载权限已经开启。
内容的提问来源于stack exchange,提问作者siva subramanian
相关产品推荐
相关产品推荐


