跳到主要内容

使用 Node-RED 向 Microsoft Teams 发送消息

本教程将向你展示如何将来自 OV80i 摄像头的检查通知直接发送到 Microsoft Teams 频道。你将学习如何设置自动警报,其中包含检查结果和可点击的图片链接,让你的团队即时了解生产状态。

你将构建的内容: 一个自动化系统,直接将 OV80i 检查结果(包括图片和通过/不通过状态)发送到 Microsoft Teams 频道。

实际应用场景: 在检查失败时获得即时通知、与远程团队共享检查图片,或在你的团队协作空间中创建自动化的质量报告。

先决条件

  • OV80i 摄像头已连接到工厂网络
  • 具有添加连接器权限的 Microsoft Teams 访问权限
  • 用于接收通知的 Teams 频道
  • OV80i 与 Microsoft Teams 之间的网络连接
  • 对 Node-RED 流程的基本了解

Tutorial Overview

本教程将构建的内容: 一个 Node-RED 流,自动将检查结果发送到 Microsoft Teams,并附带可点击的图片链接。

所需时间: 15–20 分钟

学习技能: Teams webhook 集成、Node-RED HTTP 请求、自动通知系统

第 1 步:设置 Microsoft Teams Webhook

1.1 访问你的 Teams 频道

  1. 打开 Microsoft Teams,并导航到用于检查通知的频道
  2. 在频道名称旁点击 三个点 (•••)
  3. 从下拉菜单中选择 “Manage channel”

1.2 添加 Incoming Webhook 连接器

  1. 在频道管理菜单中点击 "Connectors"
  2. 在连接器列表中 搜索 "Incoming Webhook"
  3. 在 Incoming Webhook 选项旁点击 "Add"

1.3 配置 Webhook 设置

  1. 名称:输入一个描述性名称(例如,"OV80i Inspection Alerts")
  2. 图标:可选上传自定义图标用于通知
  3. 点击 "Create" 以生成 webhook

1.4 保存 Webhook URL

  1. 复制生成的 webhook URL — 这对 Node-RED 设置至关重要
  2. 在安全位置保存该 URL(你将在第 2 步中需要它)
  3. 点击 "Done" 以完成 Teams 设置

检查点: 你现在应该有一个看起来像这样的 webhook URL:https://yourcompany.webhook.office.com/webhookb2/...

第 2 步:访问 OV80i Node-RED

2.1 进入 Node-RED

  1. 打开你的 OV80i web interface
  2. 转到 Recipe Editor > IO Block
  3. 点击 "Configure I/O" 进入 Node-RED 编辑器

2.2 准备工作区

  1. 在 Node-RED 画布中清空一个区域,用于你的 Teams 集成流程
  2. 识别左侧的调色板,其中包含可用节点
  3. 规划你的流程:Trigger → Process → Send to Teams

第 3 步:构建 Node-RED 流

3.1 添加所需节点

从调色板将以下节点拖到画布:

  1. Inject node(用于测试)
  2. Function node(用于格式化消息)
  3. HTTP request node(用于发送到 Teams)
  4. Debug node(可选,用于故障排除)

3.2 连接节点

  1. inject 的输出连到 function 的输入
  2. function 的输出连到 HTTP request 的输入
  3. HTTP request 的输出连到 debug 的输入(可选)

流程结构:

Inject → Function → HTTP Request → Debug

步骤 4:配置函数节点

4.1 基本消息配置

  1. 双击函数节点 以打开配置
  2. 将默认代码 替换为此基本消息格式:
// Basic Teams message
msg.headers = {
"Content-Type": "application/json"
};

msg.payload = {
text: "You got a new message from your OV80i"
};

return msg;

4.2 使用图片链接的高级消息

对于带有可点击图片的动态检测结果:

// Dynamic message with inspection image
let imageUrl = msg.payload.image_url;

msg.headers = {
"Content-Type": "application/json"
};

msg.payload = {
text: `Inspection Complete - [View Image](${imageUrl})`
};

return msg;

4.3 完整检测通知

包含完整的检测详情:

// Complete inspection notification
const inspectionData = msg.payload;
const imageUrl = inspectionData.image_url;
const result = inspectionData.result ? "PASS" : "FAIL";
const timestamp = new Date().toLocaleString();

msg.headers = {
"Content-Type": "application/json"
};

msg.payload = {
text: `🔍 **Inspection ${result}** - ${timestamp}\n\n[View Image](${imageUrl})`
};

return msg;

4.4 保存函数配置

  1. 点击 "Done" 以保存函数节点
  2. 为节点起一个描述性名称,例如 "Format Teams Message"

步骤 5:配置 HTTP 请求节点

5.1 设置 HTTP 请求

  1. 双击 HTTP 请求节点 进行配置
  2. Set Method:从下拉列表中选择 "POST"
  3. Set URL:粘贴步骤 1.4 的 Teams webhook URL
  4. Set Return:选择 "UTF-8 string"

5.2 额外设置

  • Name:输入 "Send to Teams" 以确保清晰
  • Headers:留空(由函数节点处理)
  • Payload:保持为 "Ignore"(由函数节点处理)

5.3 保存 HTTP 配置

  1. 点击 "Done" 以保存 HTTP 请求节点
  2. Verify the webhook URL 是否正确 - 这对成功至关重要

步骤 6:测试您的集成

6.1 部署流程

  1. 点击右上角的 "Deploy" 按钮
  2. 等待 "Successfully deployed" 确认
  3. 检查节点上的任何错误指示(红色三角形)

6.2 使用 Inject 节点进行测试

  1. 点击注入节点左侧的按钮
  2. 检查调试面板(右侧边栏)中的错误消息
  3. 验证消息在 Teams 通道中显示

6.3 验证 Teams 通知

  1. 切换到 Microsoft Teams 并检查目标频道
  2. 查找来自 OV80i 的测试消息
  3. 测试任何可点击链接,以确保它们正常工作

步骤 7:与检测流程集成

7.1 连接到检测结果

为在每次检测后发送自动通知:

  1. 找到主检测流程(通常以 "All Block Outputs" 开头)
  2. 将 Teams 通知 作为主流程的分支添加
  3. 在检测处理之后但在最终结果之前连接

7.2 示例集成流程

All Block Outputs → [Inspection Logic] → Final Pass/Fail

Format Teams Message → Send to Teams

7.3 筛选通知(可选)

仅在检测失败时发送通知:

// Only send notifications for failures
const inspectionResult = msg.payload.result;

if (!inspectionResult) { // Only if inspection failed
const imageUrl = msg.payload.image_url;

msg.headers = {
"Content-Type": "application/json"
};

msg.payload = {
text: `⚠️ **INSPECTION FAILED** - Immediate attention required\n\n[View Failed Image](${imageUrl})`
};

return msg;
} else {
return null; // Don't send message for passing inspections
}

Step 8: Troubleshooting

8.1 常见问题

问题症状解决方法
Teams 中没有消息调试显示成功但未收到 Teams 通知检查 webhook URL,验证网络连接
HTTP 错误 400调试中的错误请求检查消息格式,确保 Content-Type 头
图像链接无法打开消息出现但图片无法打开验证图像 URL 在 Teams 用户网络中的可访问性
流程未触发预期时无调试输出检查流程连接,验证触发条件

8.2 调试您的流程

  1. 在每步之后添加调试节点以跟踪数据流
  2. 检查调试面板以获取错误信息和数据结构
  3. 使用 inject 节点进行测试以隔离配置问题
  4. 通过外部工具测试验证 webhook URL(如有需要)

8.3 网络连接

  1. 确保 OV80i 可以访问互联网(摄像头端的 ping 测试)
  2. 检查可能阻止出站 HTTPS 的防火墙设置
  3. 验证 Teams webhook URL 的 DNS 解析
  4. 在与摄像头同一网络的浏览器上进行测试

成功!您的 Teams 集成已完成

您的 OV80i 摄像头现在可以:

向 Microsoft Teams 通道发送自动通知

包含可点击的图片链接,便于即时查看检查结果

基于检测结果筛选通知

提供带有检测细节和时间戳的富文本格式

支持针对不同通知类型的多个渠道

最佳实践

信息管理

  • 为不同类型的通知使用描述性通道名称
  • 在消息中包含时间戳和工位标识
  • 筛选消息,以避免通知过载
  • 在生产部署前进行充分测试

安全注意事项

  • 保护 webhook URLs——将其视为敏感凭证
  • 对所有通信使用 HTTPS(Teams 的默认设置)
  • 仅将网络访问限制为必要的服务
  • 如被泄露,请定期轮换 webhook URLs

性能优化

  • 大量发送消息时进行分批通知
  • 针对网络故障使用适当的重试逻辑
  • 监控消息投递的成功率
  • 实现速率限制以避免 Teams API 限额

image.png

下一步

设置完成 Teams 集成后:

  1. 为不同的检测类型创建不同的通知通道
  2. 为关键失败设置升级工作流
  3. 与其他团队工具集成(如电子邮件、短信等)
  4. 构建仪表板,将 Teams 与其他监控工具结合
  5. 对你的团队进行培训,以应对自动通知

🔗 相关链接