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
- 打开 Microsoft Teams,并导航到用于检查通知的通道
- 点击通道名称旁边的 三点 (•••)
- 从下拉菜单中选择 "Manage channel"
1.2 Add Incoming Webhook Connector
- 点击 "Connectors" 在通道管理菜单中
- Search for "Incoming Webhook" 在连接器列表中
- 点击 "Add" 在 Incoming Webhook 选项旁
1.3 Configure Webhook Settings
- Name: 输入描述性名称(例如 "OV20i Inspection Alerts")
- Icon: 可选地为通知上传自定义图标
- 点击 "Create" 以生成 webhook
1.4 Save Webhook URL
- Copy the generated webhook URL - 这对 Node-RED 设置至关重要
- Save the URL 到安全位置(您将在第 2 步中使用)
- 点击 "Done" 完成 Teams 设置
Checkpoint: 您现在应该拥有一个类似于以下格式的 webhook URL: https://yourcompany.webhook.office.com/webhookb2/...
Step 2: Access OV20i Node-RED
2.1 Navigate to Node-RED
- 打开您的 OV20i web interface
- 转到 Recipe Editor,点击 Configure I/O,或从书签导航中选择 "IO Block"
2.2 Prepare Your Workspace
- 在 Node-RED 画布上清出一个区域,用于 Teams 集成流程
- 识别左侧的 Palette,包含可用节点
- 规划您的流程:Trigger → Process → Send to Teams
Step 3: Build the Node-RED Flow
3.1 Add Required Nodes
从 Palette 将以下节点拖放到画布:
- Inject node(用于测试)
- Function node(用于格式化消息)
- HTTP request node(用于发送到 Teams)
- Debug node(可选,用于故障排除)
3.2 Connect the Nodes
- 将 Inject 的输出连到 Function 的输入
- 将 Function 的输出连到 HTTP request 的输入
- 将 HTTP request 的输出连到 Debug 的输入(可选)
Flow structure:
Inject → Function → HTTP Request → Debug
步骤 4:配置函数节点
4.1 基本消息配置
- 双击函数节点 以打开配置
- 用以下基础消息格式替换默认代码:
// 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 保存函数配置
- 点击 "完成" 以保存函数节点
- 为节点命名一个描述性的名称,如 "Format Teams Message"
步骤 5:配置 HTTP 请求节点
5.1 设置 HTTP 请求
- 双击 HTTP 请求节点 进行配置
- 设置方法:从下拉列表中选择 "POST"
- 设置 URL:粘贴来自步骤 1.4 的 Teams webhook URL
- 设置返回值:选择 "UTF-8 string"
5.2 附加设置
- Name:为清晰起见输入 “Send to Teams”
- Headers:留空(由函数节点处理)
- Payload:保持为 "Ignore"(由函数节点处理)
5.3 保存 HTTP 配置
- 点击 "Done" 保存 HTTP 请求节点
- 验证 webhook URL 是否正确 - 这对成功至关重要
步骤 6:测试你的集成
6.1 部署流程
- 点击右上角的 "Deploy" 按钮
- 等待出现 "Successfully deployed" 确认
- 检查节点上的错误指示灯(红色三角形)
6.2 使用 Inject 节点进行测试
- 单击注入节点左侧的按钮
- 检查调试面板(右侧边栏)中的任何错误信息
- 验证消息是否出现在你的 Teams 通道中
6.3 验证 Teams 通知
- 切换到 Microsoft Teams 并检查目标频道
- 查找来自 OV20i 的测试消息
- 测试任意可点击链接,确保它们工作正常
步骤 7:与检测流程的集成
7.1 连接到检测结果
要在每次检测后发送自动通知:
- 找到你的主检测流程(通常以 "All Block Outputs" 开头)
- 将你的 Teams 通知 作为主流程的一个分支添加
- 在检测处理完成但尚未得出最终结果时进行连接
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
- 在每一步之后添加调试节点以追踪数据流
- 检查调试面板以获取错误信息和数据结构
- 使用 inject node 进行测试以隔离配置问题
- 通过外部工具测试来验证 webhook URL(如有需要)
8.3 Network Connectivity
- 确保 OV20i 能连接到互联网(来自摄像头的 ping 测试)
- 检查防火墙设置,以防止阻止出站 HTTPS
- 验证 Teams webhook URL 的 DNS 解析
- 在与摄像头同一网络中的浏览器上进行测试
成功!Your Teams 集成已完成
您的 OV20i 摄像头现在可以:
✅ 向 Microsoft Teams 通道发送自动通知
✅ 包含可点击的图像链接,便于立即检查
✅ 基于检查结果过滤通知
✅ 提供包含检查详情和时间戳的丰富格式化
✅ 支持不同通知类型的多个通道
最佳实践
消息管理
- 为不同类型的通知使用描述性的通道名称
- 在消息中包含时间戳和工位标识符
- 过滤消息,以避免通知过载
- 在生产部署前进行彻底测试
安全考量
- 保护 webhook URL - 将其视为敏感凭据
- 对所有通信使用 HTTPS(Teams 默认为此)
- 将网络访问限制为必要的服务
- 如遇泄露,定期轮换 webhook URL
性能优化
- 大量消息时进行批量通知
- 针对网络故障使用合适的重试逻辑
- 监控消息投递成功率
- 实现速率限制以避免 Teams API 限制

下一步
在设置完 Teams 集成后:
- 为不同检查类型创建不同的通知通道
- 为关键失败设置升级工作流
- 与其他团队工具集成(如电子邮件、SMS 等)
- 构建仪表板,将 Teams 与其他监控工具结合
- 培训您的团队 以对自动通知做出响应
The Integration Builder 可以根据简单的英文描述生成完整的 Teams 通知流程。请描述您需要的内容(例如:在部件失败时,将检查结果和图像发布到一个 Teams 通道),即可在几秒钟内获得一个生产就绪的 Node-RED flow。