生成传出 Webhook
重要
Microsoft 365 连接器 (以前称为 Office 365 连接器) 即将弃用,并且即将阻止创建新的 Microsoft 365 连接器。 有关计划以及工作流应用如何提供更灵活、更安全的体验的详细信息,请参阅 停用 Microsoft Teams 中的 Microsoft 365 连接器。
如何在 Teams 中创建 Webhook?
若要在收到 Webhook 请求时自动发布到聊天或频道,请使用预定义的工作流模板,或使用 收到 Teams Webhook 请求时 触发器从头开始创建工作流。 有关详细信息,请参阅 在 Microsoft Teams 中收到 Webhook 请求时发布工作流。
有关 收到 Teams Webhook 请求时 触发器的详细信息,请参阅 Microsoft Teams - Webhook。
如果已生成Office 365连接器:
创建 Power Automate 连接器:Power Automate 增强了 Teams 中广泛使用的工作流应用。 它是以编程方式将数据传入和传出 Teams 的可缩放且安全的方法。 如果采用此方法,则可以创建工作流模板,用于将产品中的警报发布到 Teams 频道。 此方法简化了用户采用新方法。 有关详细信息,请参阅 面向企业开发人员、ISV 和合作伙伴的 Power Automate。
更新 Teams 应用:可以增强当前 Teams 应用。 例如,可以让用户基于系统中的触发器事件设置主动消息。 有关详细信息,请参阅 机器人如何通过主动消息发布到通道。
已知问题
- 工作流应用不能作为流机器人在专用频道中发布。 但是,它可以代表用户发布。
- 工作流仅支持自适应卡片。 它不支持Office 365连接器使用的较旧消息卡格式。 工作流不支持使用消息卡格式。 有关详细信息,请参阅如何将连接器消息卡格式转换为自适应卡片。
- 工作流不提供 DataDog 和 Jenkins 等第三方连接器。
- 只能在默认环境中创建工作流。
限制
工作流仅链接到特定用户 (称为工作流) 所有者,而不是 Teams 团队或频道。 如果没有分配共同所有者,如果没有所有者,工作流可能会成为孤立流。 为了保持流自动化业务流程的连续性,管理员可以添加一个或多个共同所有者,并授予他们对工作流的完全控制权限。 他们还可以为连接添加身份验证(如果有),并在已禁用流时启用流。 有关详细信息,请参阅 管理孤立流。
Webhook 可帮助Microsoft Teams 与外部应用集成。 在 Teams 中,传出 Webhook 充当机器人,并使用 @提及 在频道中搜索消息。 传出 Webhook 允许用户将消息发送到 Web 服务,而无需通过Microsoft Bot Framework执行创建机器人的整个过程。 传出 Webhook 将数据从 Teams 发布到能够接受 JSON 有效负载的任何服务。
传出 Webhook 的主要功能
- 将通知发送到任何外部 Web 服务。
- 使用富文本消息(包括卡片和图像)进行响应。
- 在公共频道中接收消息,而不是在个人或专用范围内接收消息。
- 将 HTTP POST 发送到 Web 服务并获取响应。
注意
传出 Webhook 无法访问任何其他 API,例如检索团队中的名单或频道列表。
本分步指南可帮助你在 Teams 中创建传出 Webhook。 你将看到以下输出:
先决条件
确保安装以下工具并设置开发环境:
安装 | 用于使用... | |
---|---|---|
Microsoft Teams | Microsoft Teams,在一个位置通过聊天、会议和通话应用与你合作的每个人协作。 | |
Visual Studio 2022 | 可以在 Visual Studio 2022 中安装企业版,并安装 ASP.NET 和 Web 开发工作负载。 使用最新版本。 | |
开发隧道 | Teams 应用功能 (对话机器人、消息扩展和传入 Webhook) 需要入站连接。 隧道将开发系统连接到 Teams。 开发隧道是一种功能强大的工具,用于安全地将 localhost 打开到 Internet 并控制谁有权访问。 Visual Studio 2022 版本 17.7.0 或更高版本中提供了开发隧道。 或者 还可以使用 ngrok 作为隧道,将开发系统连接到 Teams。 对于仅包含选项卡的应用,这不是必需的。 此包使用 npm devDependencies ) 安装在项目目录 (中。 |
注意
下载 ngrok 后,注册并安装 authtoken。
设置本地环境
选择“ 代码”。
在下拉菜单中,选择“ 使用 GitHub Desktop 打开”。
选择“ 克隆”。
创建传出 Webhook
创建隧道
打开 Visual Studio。
选择 “创建新项目”。
在搜索框中,输入 “ASP.NET”。 在搜索结果中,选择“ASP.NET Core Web 应用”。
选择 下一步。
输入 “项目名称 ”,然后选择“ 下一步”。
选择“创建”。
此时会显示概述窗口。
在调试下拉列表中,选择“ 开发隧道 (无活动隧道) >创建隧道...”。
将出现一个弹出窗口。
在弹出窗口中更新以下详细信息:
- 帐户:输入Microsoft或 GitHub 帐户。
- 名称:输入隧道的名称。
- 隧道类型:从下拉列表中选择“ 临时”。
- 访问:从下拉列表中选择“ 公共”。
选择“确定”。
此时会显示一个弹出窗口,显示已成功创建开发隧道。
选择“确定”。
可以在调试下拉列表中找到已创建的隧道,如下所示:
选择 F5 以在调试模式下运行应用程序。
如果出现 “安全警告 ”对话框,请选择“ 是”。
将出现一个弹出窗口。
选择 继续。
开发隧道主页将在新的浏览器窗口中打开,开发隧道现在处于活动状态。
转到 Visual Studio,选择“ 查看 > 输出”。
在 “输出 控制台”下拉菜单中,选择“ 开发隧道”。
输出控制台显示开发隧道 URL。
转到 “Teams ”,然后从左窗格中选择“ Teams ”。
转到所需的团队,选择“ (•••) 的更多选项”,然后选择“ 管理团队”。
从导航栏中选择“ 应用 ”选项卡。
从窗口右下角选择“ 创建传出 Webhook ”。
输入以下详细信息:
名称:选项卡中的 @mention Webhook 标题。
回调 URL:从 ngrok 生成的 URL,该 URL 接受 JSON 有效负载并接收来自 Teams 的 POST 请求。 若要使用
api/Sample
或api/authenticatedSample
,请执行以下操作:对于 api 示例,请复制并粘贴
dev tunnel
或ngrok
URL,并将其追加到/api/sample
。对于 api authenticatedSample,请复制并粘贴
dev tunnel
或ngrok
URL,并将其追加到/authenticatedSample?id=contoso
。
说明:显示在配置文件卡和团队级应用仪表板的详细字符串。
个人资料图片 (可选) :Webhook 的应用图标。
选择“创建”。 传出 Webhook 将添加到当前团队的频道。
此时会显示一个
Hash-based Message Authentication Code (HMAC)
对话框。 可以使用 AuthProvider.cs 文件中的安全令牌对 Teams 与任何指定的外部服务之间的调用进行身份验证。注意
仅当 URL 有效且服务器和客户端身份验证令牌相等时,传出 Webhook 才对团队的用户可用。 例如,HMAC 握手。
生成并运行服务
打开 Visual Studio。
转到 “文件>打开>项目/解决方案...”。
在 csharp 文件夹中,选择 “WebhookSampleBot.sln 文件”。
转到 AuthProvider.cs 文件。 更新
contoso
并M365x70471008
添加 HMAC。按 F5 运行项目。
如果出现以下对话框,请选择“是”:
网页显示本地主机信息。
在 Teams 中与应用交互
转到 “Teams ”,然后从左窗格中选择“ Teams ”。
转到 常规>新建对话。
若要在通道中调用传出 Webhook,请 @提及传出 Webhook 名称,然后选择“发送”图标。
注意
你可以使用传出 Webhook 将自适应卡片、主图卡片和短信作为附件发送。
会议聊天显示一条新消息。
完成挑战
你想出了这样的东西吗?
恭喜!
你已完成本教程以开始使用传出 Webhook 应用!
你有关于此部分的问题? 如果有,请向我们提供反馈,以便我们对此部分作出改进。