调用microsoftTeams.tasks.submitTask后如何向Teams输入框发送Adaptive Card
解决方案
你当前使用onTeamsTaskModuleSubmit返回TaskModuleResponse的逻辑是处理普通Bot触发的Task Module提交的流程,而你开发的是撰写上下文的消息扩展操作,需要返回适配消息扩展的响应结构,才能把Adaptive Card直接插入到用户的聊天输入框中。
具体实现步骤
- 不要返回
TaskModuleResponse对象,改为返回ComposeExtensionResponse类型的响应 - 构造你需要投放的Adaptive Card附件,
contentType指定为application/vnd.microsoft.card.adaptive - 将附件嵌套到响应结构的
composeExtension.result字段中,attachmentLayout设置为list即可
代码示例(Node.js Bot Framework SDK)
async handleTeamsTaskModuleSubmit(context, taskModuleRequest) { // 1. 接收task module提交的用户数据 const userData = taskModuleRequest.data; // 2. 构造业务需要的Adaptive Card const customerCard = { "type": "AdaptiveCard", "version": "1.4", "body": [ { "type": "TextBlock", "text": `新建客户信息:${userData.customerName}`, "weight": "Bolder", "size": "Large" }, // 其他你需要展示的卡片字段 ] }; // 3. 返回消息扩展响应,Teams会自动将卡片插入聊天输入框 return { composeExtension: { type: "result", attachmentLayout: "list", attachments: [ { contentType: "application/vnd.microsoft.card.adaptive", content: customerCard } ] } }; }
注意事项
你提供的应用清单配置已经满足要求,commands.context包含compose值,无需额外修改清单,也不需要调用额外的发消息接口,返回上述结构后Teams会自动完成卡片投放逻辑。
内容的提问来源于stack exchange,提问作者Matthew Hong
相关产品推荐
相关产品推荐

