如何向Teams的OnTeamsMessagingExtensionFetchTaskAsync等处理程序传递额外信息
Teams Messaging Extension 自定义参数传递实现方案
该需求可以正常实现,常用的实现方式如下:
- 利用
ITurnContext内置的TurnState字典存储参数TurnState是ITurnContext原生提供的请求生命周期内的键值对存储容器,你可以在请求进入业务处理逻辑之前(比如路由阶段、中间件层)把自定义参数写入该字典,后续在消息扩展处理程序中直接读取即可,示例用法:// 写入自定义参数 turnContext.TurnState["YourCustomParamKey"] = yourParamValue; // 业务逻辑中读取参数 var customParam = turnContext.TurnState.Get<YourParamType>("YourCustomParamKey"); - 从
MessagingExtensionAction的Data字段传递参数
如果自定义参数和当前消息扩展的触发动作相关,可以在触发消息扩展调用的按钮 payload、或是应用清单的消息扩展命令配置中预埋自定义参数,这些参数会自动被平台带入MessagingExtensionAction.Data属性,直接反序列化读取即可:var customParam = action.Data?.ToObject<YourCustomParamType>(); - 中间件全局注入公共参数
如果你需要给所有消息扩展请求统一添加公共参数,可以实现自定义Bot中间件,在中间件的请求处理流程中把公共参数写入TurnState,后续所有业务逻辑都可以直接读取,无需重复传参。
注意:不要直接修改
ITurnContext、MessagingExtensionAction的原生内置属性值,避免干扰Teams平台原生逻辑的运行,优先使用上述扩展存储的方式传递自定义参数。
内容的提问来源于stack exchange,提问作者MaheSH YU
相关产品推荐
相关产品推荐

