能否通过BotBuilder SDK读取MS Teams manifest.json元数据?
MS Teams机器人读取manifest自定义元数据问题答复
结论:无法直接通过BotBuilder SDK在应用安装事件中获取你在manifest.json中新增的自定义元数据字段,具体规则和可行实现方案如下:
manifest.json强依赖官方发布的schema做校验,所有不在官方schema定义范围内的自定义字段,要么在应用上传(旁加载/发布到组织库/提交商店)环节直接触发校验报错,要么会在平台侧处理时被裁剪,根本不会随事件载荷下发到你的Bot服务端。- BotBuilder SDK捕获的应用安装事件对应
installationUpdate活动类型,事件载荷仅包含平台约定的固定字段:租户ID、应用内置固定ID、安装范围(用户/群聊/团队)的基础ID、操作类型(安装/卸载/升级)、触发操作的用户基本信息,不会透传任何非官方定义的manifest.json字段。
你可以根据实际场景选以下稳定可行的替代方案:
- 本地映射表方案(最推荐,无额外权限依赖)
每个Teams应用manifest.json里的id字段是你自己生成的固定GUID,不同版本/不同分发渠道的应用你可以分配不同的GUID,把GUID和对应的自定义元数据存在自己服务端的配置文件/数据库里。安装事件触发时,你从载荷里拿到当前安装的应用ID,直接查本地映射表就能拿到对应元数据,生产环境稳定性最高。 - 预留字段传参方案
manifest.jsonschema预留了部分可自定义配置的字段,比如你可以在Bot的消息端点、配置页面URL后面拼接自定义查询参数,不过这类参数只会在对应URL被请求时携带,不会出现在安装事件的载荷里,适合需要在页面加载/消息回调时识别自定义配置的场景。 - Graph接口拉取方案
如果是租户内部署的场景,你可以给Bot申请Teams应用相关的Graph应用权限,拿到租户管理员授权后,在安装事件触发时调用Graph的Teams应用查询接口,拉取当前租户下对应应用的完整manifest.json内容做解析,这个方案不需要你本地维护映射表,但需要额外做权限配置和接口调用容错。
注意:不要尝试在
manifest.json的非预留字段插入自定义内容,这类不合规的manifest大概率会在上架校验环节被直接拦截,就算测试环境偶尔旁加载成功,平台侧的非标准字段裁剪逻辑也会导致你无法稳定拿到对应内容。
内容的提问来源于stack exchange,提问作者cgvalayev
相关产品推荐
相关产品推荐

