跳到主要内容

AI 驱动文档

您想了解什么?

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

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

What You'll Build: 一个自动化系统,将 OV20i 的检查结果(包括图片和通过/不通过状态)直接发布到一个 Microsoft Teams 频道。

Real-World Application: 当检查不通过时获得即时通知、与远程团队共享检查图片,或在您的团队协作空间中创建自动化质量报告。

先决条件

  • OV20i 摄像头已连接到工厂网络
  • 具有添加连接器(Connectors)权限的 Microsoft Teams 访问权限
  • 您希望接收通知的 Teams 通道
  • OV20i 与 Microsoft Teams 之间的网络连通性
  • 对 Node-RED 流的基础理解

Tutorial Overview

What we'll build: 一个 Node-RED 流,将自动带有可点击图片链接的检查结果发送到 Microsoft Teams。

Time required: 15-20 分钟

Skills learned: Teams webhook 集成、Node-RED HTTP 请求、自动化通知系统

Step 1: Set Up Microsoft Teams Webhook

1.1 Access Your Teams Channel

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

1.2 Add Incoming Webhook Connector

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

1.3 Configure Webhook Settings

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

1.4 Save Webhook URL

  1. Copy the generated webhook URL - 这对 Node-RED 设置至关重要
  2. Save the URL 到安全位置(您将在第 2 步中使用)
  3. 点击 "Done" 完成 Teams 设置

Checkpoint: 您现在应该拥有一个类似于以下格式的 webhook URL: https://yourcompany.webhook.office.com/webhookb2/...

Step 2: Access OV20i Node-RED

2.1 Navigate to Node-RED

  1. 打开您的 OV20i web interface
  2. 转到 Recipe Editor,点击 Configure I/O,或从书签导航中选择 "IO Block"

2.2 Prepare Your Workspace

  1. 在 Node-RED 画布上清出一个区域,用于 Teams 集成流程
  2. 识别左侧的 Palette,包含可用节点
  3. 规划您的流程:Trigger → Process → Send to Teams

Step 3: Build the Node-RED Flow

3.1 Add Required Nodes

从 Palette 将以下节点拖放到画布:

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

3.2 Connect the Nodes

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

Flow structure:

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. 设置方法:从下拉列表中选择 "POST"
  3. 设置 URL:粘贴来自步骤 1.4 的 Teams webhook URL
  4. 设置返回值:选择 "UTF-8 string"

5.2 附加设置

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

5.3 保存 HTTP 配置

  1. 点击 "Done" 保存 HTTP 请求节点
  2. 验证 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. 查找来自 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 Filter Notifications (Optional)

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

// 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 Common Issues

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

8.2 Debug Your Flow

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

8.3 Network Connectivity

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

成功!Your Teams 集成已完成

您的 OV20i 摄像头现在可以:

向 Microsoft Teams 通道发送自动通知

包含可点击的图像链接,便于立即检查

基于检查结果过滤通知

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

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

最佳实践

消息管理

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

安全考量

  • 保护 webhook URL - 将其视为敏感凭据
  • 对所有通信使用 HTTPS(Teams 默认为此)
  • 将网络访问限制为必要的服务
  • 如遇泄露,定期轮换 webhook URL

性能优化

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

image.png

下一步

在设置完 Teams 集成后:

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

The Integration Builder 可以根据简单的英文描述生成完整的 Teams 通知流程。请描述您需要的内容(例如:在部件失败时,将检查结果和图像发布到一个 Teams 通道),即可在几秒钟内获得一个生产就绪的 Node-RED flow。

🔗 相关链接