跳到主要内容

使用 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. 点击频道名称旁的 三点 (•••)
  3. 从下拉菜单中选择 “管理频道”

1.2 添加 Incoming Webhook 连接器

  1. 在频道管理菜单中点击 “连接器”
  2. 在连接器列表中 搜索 “Incoming Webhook”
  3. 点击 Incoming Webhook 选项旁的 “添加”

1.3 配置 Webhook 设置

  1. 名称:输入描述性名称(例如 “OV20i Inspection Alerts”)
  2. 图标:可选,上传自定义通知图标
  3. 点击 “创建” 生成 webhook

1.4 保存 Webhook URL

  1. 复制生成的 webhook URL — 这是 Node-RED 设置的关键
  2. 将 URL 保存在安全位置(后续步骤需要用到)
  3. 点击 “完成” 完成 Teams 设置

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

步骤 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. 规划流程:触发 → 处理 → 发送到 Teams

步骤 3:构建 Node-RED 流程

3.1 添加所需节点

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

  1. Inject 节点(用于测试)
  2. Function 节点(格式化消息)
  3. HTTP request 节点(发送到 Teams)
  4. Debug 节点(可选,用于调试)

3.2 连接节点

  1. 将 Inject 输出连接到 Function 输入
  2. 将 Function 输出连接到 HTTP request 输入
  3. 将 HTTP request 输出连接到 Debug 输入(可选)

流程结构:

Inject → Function → HTTP Request → Debug

步骤 4:配置 Function 节点

4.1 基本消息配置

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

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

return msg;

4.2 带图像链接的高级消息

用于动态检测结果和可点击图像:

// 带检测图像的动态消息
let imageUrl = msg.payload.image_url;

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

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

return msg;

4.3 完整检测通知

包含完整检测详情:

// 完整检测通知
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 保存 Function 配置

  1. 点击 “完成” 保存 Function 节点
  2. 为节点命名,如 “Format Teams Message”

步骤 5:配置 HTTP Request 节点

5.1 设置 HTTP 请求

  1. 双击 HTTP request 节点 进行配置
  2. 设置方法:从下拉菜单选择 “POST”
  3. 设置 URL:粘贴步骤 1.4 中的 Teams webhook URL
  4. 设置返回类型:选择 “UTF-8 string”

5.2 其他设置

  • 名称:输入 “Send to Teams” 以便识别
  • Headers:留空(由 Function 节点处理)
  • Payload:选择 “忽略”(由 Function 节点处理)

5.3 保存 HTTP 配置

  1. 点击 “完成” 保存 HTTP request 节点
  2. 确认 webhook URL 正确无误 — 这是成功的关键

步骤 6:测试集成

6.1 部署流程

  1. 点击右上角的 “Deploy” 按钮
  2. 等待显示 “Successfully deployed” 确认
  3. 检查节点是否有错误指示(红色三角)

6.2 使用 Inject 节点测试

  1. 点击 Inject 节点左侧的按钮
  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 过滤通知(可选)

仅发送失败检测通知:

// 仅发送失败通知
const inspectionResult = msg.payload.result;

if (!inspectionResult) { // 仅当检测失败时
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; // 合格检测不发送消息
}

步骤 8:故障排除

8.1 常见问题

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

8.2 调试流程

  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 URL,视为敏感凭证
  • 使用 HTTPS 进行所有通信(Teams 默认)
  • 限制网络访问,仅允许必要服务
  • 若泄露,定期更换 webhook URL

性能优化

  • 批量发送通知,减少消息数量
  • 针对网络故障使用适当重试逻辑
  • 监控消息发送成功率
  • 实施速率限制,避免 Teams API 限制

image.png

后续步骤

完成 Teams 集成后:

  1. 为不同检测类型创建不同通知频道
  2. 设置关键故障的升级流程
  3. 与其他团队工具集成(邮件、短信等)
  4. 构建结合 Teams 的监控仪表板
  5. 培训团队响应自动通知

🔗 参见