跳到主要内容

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

本教程演示如何将 OV80i 摄像头的检测通知直接发送到 Microsoft Teams 频道。您将学习如何设置自动警报,包含检测结果和可点击的图像链接,确保团队即时了解生产状态。

您将构建的内容: 一个自动化系统,将 OV80i 检测结果(包括图像和通过/失败状态)直接发布到 Microsoft Teams 频道。

实际应用场景: 当检测失败时即时收到通知,与远程团队共享检测图像,或在团队协作空间创建自动化质量报告。

先决条件

  • 已连接到工厂网络的 OV80i 摄像头
  • 具有添加连接器权限的 Microsoft Teams 访问权限
  • 用于接收通知的 Teams 频道
  • OV80i 与 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. 名称:输入描述性名称(例如 “OV80i 检测警报”)
  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:访问 OV80i Node-RED

2.1 进入 Node-RED

  1. 打开您的 OV80i 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: "您收到来自 OV80i 的新消息"
};

return msg;

4.2 带图像链接的高级消息

用于动态检测结果,包含可点击图像:

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

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

msg.payload = {
text: `检测完成 - [查看图像](${imageUrl})`
};

return msg;

4.3 完整检测通知

包含完整检测详情:

// 完整检测通知
const inspectionData = msg.payload;
const imageUrl = inspectionData.image_url;
const result = inspectionData.result ? "通过" : "失败";
const timestamp = new Date().toLocaleString();

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

msg.payload = {
text: `🔍 **检测${result}** - ${timestamp}\n\n[查看图像](${imageUrl})`
};

return msg;

4.4 保存 Function 配置

  1. 点击 “完成” 保存 Function 节点
  2. 为节点命名,例如 “格式化 Teams 消息”

步骤 5:配置 HTTP Request 节点

5.1 设置 HTTP 请求

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

5.2 其他设置

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

5.3 保存 HTTP 配置

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

步骤 6:测试集成

6.1 部署流程

  1. 点击右上角的 “Deploy” 按钮
  2. 等待显示 “部署成功” 确认
  3. 检查节点是否有错误标记(红色三角)

6.2 使用 Inject 节点测试

  1. 点击 Inject 节点左侧的按钮
  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 → [检测逻辑] → 最终通过/失败

格式化 Teams 消息 → 发送到 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: `⚠️ **检测失败** - 需要立即关注\n\n[查看失败图像](${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. 确保 OV80i 能访问互联网(摄像头上执行 ping 测试)
  2. 检查防火墙设置,避免阻止出站 HTTPS
  3. 验证 Teams webhook URL 的 DNS 解析
  4. 在与摄像头相同网络的浏览器中测试访问

成功!您的 Teams 集成已完成

您的 OV80i 摄像头现在可以:

自动发送通知 到 Microsoft Teams 频道

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

根据检测结果过滤通知

提供丰富格式,显示检测详情和时间戳

支持多个频道,满足不同通知需求

最佳实践

消息管理

  • 为不同通知类型使用描述性频道名称
  • 消息中包含时间戳和工位标识
  • 过滤消息,避免通知过载
  • 上线前充分测试

安全注意事项

  • 保护 webhook URL,视为敏感凭证
  • 所有通信使用 HTTPS(Teams 默认)
  • 限制网络访问,仅允许必要服务
  • 若泄露,定期更换 webhook URL

性能优化

  • 批量发送通知以减少请求次数
  • 针对网络故障使用合适的重试机制
  • 监控消息投递成功率
  • 实施速率限制,避免触发 Teams API 限制

image.png

后续步骤

设置 Teams 集成后:

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

🔗 参见