构建Microsoft Teams动作命令型消息扩展的技术咨询
如何实现Microsoft Teams动作命令型消息扩展
动作命令型消息扩展的工作机制
动作命令(Action Commands)和你当前创建的搜索类命令不同,核心逻辑是触发后唤起任务模块(Task Module),让用户完成输入/选择操作后,再将处理结果返回至Teams场景(聊天、频道或消息框)。它的触发入口可覆盖消息右键菜单、聊天/频道的「+」号菜单、命令框,而非仅局限在消息框内。
基于Teams Toolkit创建的Hello World项目修改步骤
1. 修改Manifest配置文件
打开项目中的manifest.json,找到composeExtensions节点下的commands数组,将默认的query类型命令替换为action类型命令,配置触发上下文和任务模块信息:
"composeExtensions": [ { "botId": "<你的Bot ID>", // 保留原有Bot ID不变 "commands": [ { "id": "customActionCommand", "type": "action", "title": "我的动作命令", "description": "触发后唤起任务模块的示例", "context": ["message", "compose", "commandBox"], // 指定触发场景:消息右键、消息框、命令框 "taskInfo": { "title": "任务模块标题", "width": "medium", "height": "medium", "url": "https://<你的部署域名>/taskmodule.html" // 若用网页作为任务模块填地址;用自适应卡片可后续通过Bot返回 } } ] } ]
2. 处理Bot的任务模块事件
动作命令触发后,Teams会向Bot发送两类核心事件,需在Bot代码中实现处理逻辑:
处理task/fetch事件(唤起任务模块)
用户触发动作命令时,Bot会收到该事件,需返回任务模块定义(可选自适应卡片或外部网页):
// 以Node.js Bot Framework为例 this.onTeamsMessagingExtensionFetchTask(async (context, action) => { // 定义自适应卡片作为任务模块内容 const adaptiveCard = { type: "AdaptiveCard", version: "1.0", body: [ { type: "TextBlock", text: "请输入需要处理的内容", size: "medium" }, { type: "Input.Text", id: "userContent", placeholder: "在这里输入文本", multiline: true } ], actions: [{ type: "Action.Submit", title: "提交内容" }] }; return { task: { type: "continue", value: { card: adaptiveCard, height: 300, width: 500, title: "动作命令任务模块" } } }; });
处理task/submit事件(提交任务模块数据)
用户提交任务模块内容后,Bot收到该事件,处理数据后返回结果到Teams:
this.onTeamsMessagingExtensionSubmitAction(async (context, action) => { const userInput = action.data.userContent; // 构造返回的自适应卡片结果 const resultCard = { contentType: "application/vnd.microsoft.card.adaptive", content: { type: "AdaptiveCard", version: "1.0", body: [ { type: "TextBlock", text: "动作命令处理结果", weight: "bolder", size: "large" }, { type: "TextBlock", text: `你提交的内容:\n${userInput}` } ] } }; // 将结果返回至消息框或聊天场景 return { composeExtension: { type: "result", attachmentLayout: "list", attachments: [resultCard] } }; });
3. 重新部署测试
使用Teams Toolkit重新打包Manifest并部署到Teams,之后可在以下场景触发命令:
- 聊天窗口右键消息 → 选择你的动作命令
- 消息框下方点击「+」号 → 找到你的动作命令
- 命令框输入命令名称 → 触发动作命令
测试任务模块的唤起和提交流程,验证功能是否正常。
内容的提问来源于stack exchange,提问作者Ojasvee Garg
相关产品推荐
相关产品推荐

