跳到主要内容

通过 Node-RED 向 Microsoft Teams 发送消息

本教程向您展示如何将巡检通知从 OV20i 摄像头直接发送到 Microsoft Teams 频道。您将学习设置包含巡检结果和可点击图片链接的自动化警报,使您的团队能够即时了解生产状态。

您将构建: 一个自动化系统,直接将 OV20i 巡检结果(包括图像和通过/不通过状态)发布到 Microsoft Teams 频道。

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

先决条件

  • OV20i 摄像头已连接至您的工厂网络
  • 具备在 Microsoft Teams 中添加连接器的访问权限
  • 您希望接收通知的 Teams 频道
  • OV20i 与 Microsoft Teams 之间的网络连通性
  • 对 Node-RED 流的基本理解

教程概览

我们将构建: 一个 Node-RED 流,自动将巡检结果发送到 Microsoft Teams,并包含可点击的图像链接。

所需时间: 15-20 分钟

掌握的技能: Teams webhook 集成、Node-RED HTTP 请求、自动化通知系统

步骤 1:设置 Microsoft Teams Webhook

1.1 访问您的 Teams 频道

  1. 打开 Microsoft Teams,并导航到巡检通知所在的频道
  2. 点击频道名称旁边的 three dots (•••)
  3. 从下拉菜单中选择 "Manage channel"

1.2 添加 Incoming Webhook 连接器

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

1.3 配置 Webhook 设置

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

1.4 保存 Webhook URL

  1. 复制生成的 webhook URL——这是 Node-RED 设置的关键
  2. 将 URL 保存到安全位置(您将在步骤 2 中需要它)
  3. 点击 "Done" 完成 Teams 设置

检查点: 现在您应该拥有一个类似于 https://yourcompany.webhook.office.com/webhookb2/... 的 webhook URL

Step 2: 访问 OV20i Node-RED

2.1 进入 Node-RED

  1. 打开您的 OV20i Web 界面
  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 的输入(可选)

Flow 结构:

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 OV20i"
};

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. 点击 “完成” 以保存函数节点
  2. 为节点提供一个描述性名称,例如 “Format Teams Message”

步骤 5:配置 HTTP 请求节点

5.1 设置 HTTP 请求

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

5.2 附加设置

  • 名称:为清晰起见输入“Send to Teams”
  • Headers:留空(由函数节点处理)
  • Payload:保持为 "Ignore"(由函数节点处理)

5.3 保存 HTTP 配置

  1. 点击 “完成” 以保存 HTTP 请求节点
  2. 验证 webhook URL 是否正确——这对成功至关重要

步骤 6:测试您的集成

6.1 部署流程

  1. 点击右上角的“部署”按钮
  2. 等待显示“部署成功”确认信息
  3. 检查节点上的任何错误指示(红色三角形)

6.2 使用 Inject 节点进行测试

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

6.3 验证 Teams 通知

  1. 切换到 Microsoft Teams 并检查您的目标通道
  2. 查找来自您的 OV20i 的测试消息
  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
}

步骤 8:故障排除

8.1 常见问题

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

8.2 调试 Flow

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

8.3 网络连接

  1. 确保 OV20i 能访问互联网(从摄像头执行 ping 测试)
  2. 检查防火墙设置,以避免出站 HTTPS 请求被阻塞
  3. 验证 Teams webhook URL 的 DNS 解析
  4. 在与摄像头同一网络的浏览器中测试

成功!您的 Teams 集成已完成

您的 OV20i 摄像头现在可以:

向 Microsoft Teams 通道发送自动通知

包含可点击的图像链接,以便即时检查

基于检查结果过滤通知

提供包含检查详情和时间戳的丰富格式化

支持多通道,用于不同类型的通知

最佳实践

信息管理

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

安全考虑

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

性能优化

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

image.png

下一步

在设置好 Teams 集成之后:

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

🔗 相关链接