通过 Webhook 接收推播通知
您可以配置自定义 Webhook 来接收人机的推播通知。这使您能够:
- 将推播通知集成到您自己的系统或应用程序中
- 使用自己的 LINE 官方帐号或 Telegram Bot
- 与企业通知系统或自定义应用程序集成
- 将推播通知转换为其他自动化工作流的事件触发器
要求:
- 已激活 EasyAccess 2.0 的人机
- 在 EasyBuilder Pro 中启用了推播通知
- 一个 Webhook 端点(推荐使用 HTTPS)
- 配置 Webhook 的 Domain Admin 权限
在 Weincloud 中设置 Webhook
创建 Webhook
- 通过社交登录登录 Weincloud(详情请参考 社交登录)
- 从左侧边栏选择 警报通知 进入"社群登入设定/警报通知"页面
- 点击 创建 Webhook
- 填写 Webhook 配置:
- Webhook 名称:为您的 Webhook 起一个描述性名称
- 端点 URL:将发送 Webhook 请求的 URL(例如:
https://your-server.com/webhook) - API 密钥:(可选但推荐)用于身份验证的密钥

关联人机与 Webhook
创建 Webhook 后,您需要将其与特定的人机关联:
- 选择您创建的 Webhook(右侧面板将默认显示 信息 标签)
- 切换到 人机 标签
- 点击 添加 选择人机
- 选择应向此 Webhook 发送推播通知的人机
- 点击 添加
测试您的 Webhook
您可以在部署前测试 Webhook 配置:
- 选择您配置的 Webhook
- 点击 测试 按钮
- Weincloud 将向您的端点发送测试资料
- 检查响应状态并验证您的端点是否正确接收到请求
Webhook 请求格式
当关联的人机上发生事件时,Weincloud 将向您配置的 Webhook URL 发送 HTTP POST 请求。
HTTP 标头
X-API-KEY: <your api key>
Content-Type: application/json注意: 您可以在服务器中验证
X-API-KEY标头,以确保它与配置的 API 密钥匹配,从而进行身份验证。
资料内容示例
{
"hwkey": "<hardware key>",
"message": {
"de": "Online",
"en-US": "Online",
"es-ES": "En linea",
"fr-FR": "En ligne",
"it": "Online",
"ja": "オンライン",
"ko": "온라인",
"pl": "Online",
"ru": "Онлайн",
"zh-CN": "在线",
"zh-TW": "連線"
},
"hmiName": "<device name>",
"hmiTime": "2025-01-01 00:00:00",
"serverTime": "2025-01-01 00:00:00",
"eventType": "event-online-offline"
}注意:
message对象中的语言键可能与此示例不同。实际的语言取决于您的 HMI 项目设置。
字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
hwkey | string | 人机设备的唯一硬件密钥 |
hmiName | string | 人机的显示名称(如果设置了昵称则为昵称,否则为设备名称) |
message | object | 多语言事件消息(键值对) |
hmiTime | string | 事件在人机上发生的时间戳(格式:YYYY-MM-DD HH:MM:SS)。时区遵循人机的配置。 |
serverTime | string | 事件到达服务器的时间戳(格式:YYYY-MM-DD HH:MM:SS)。时区取决于服务器区域:全球区域为 UTC+0,中国区域为 UTC+8。 |
eventType | string | 触发通知的事件类型(见下文) |
事件类型
| 事件类型 | 说明 |
|---|---|
event-trigger | 触发事件 - 警报或条件被触发 |
event-recover | 恢复事件 - 之前触发的警报已恢复 |
event-online-offline | 设备在线/离线事件 |
实现示例
以下是流行的无服务器平台的实现示例。这些示例演示了如何接收 Webhook 请求、验证身份以及将通知转发到消息平台。
AWS Lambda
AWS Lambda 是一种无服务器计算服务,可响应 HTTP 请求运行您的代码,无需管理服务器。
设置步骤(AWS Lambda)
创建 Lambda 函数
- 前往 AWS Lambda 控制台
- 点击 创建函数
- 选择 从头开始创作
- 输入函数名称
- 选择 Python 3.13 运行时
- 创建函数
配置环境变量
- 进入 配置 → 环境变量
- 添加所需的变量(请参考下面的 环境变量)
- 点击 保存
部署代码
- 从下面的 示例代码下载 下载示例文件
- 将代码复制到 Lambda 函数编辑器中
- 点击 部署
创建函数 URL
- 进入 配置 → 函数 URL
- 点击 创建函数 URL
- 身份验证类型:NONE(您可以使用 API 密钥实现自己的身份验证)
- 点击 保存
- 复制生成的 URL
在 Weincloud 中配置
- 使用 Lambda 函数 URL 作为您的 Webhook 端点
- 将 API 密钥设置为与
EXPECTED_API_KEY环境变量匹配 - 在 Weincloud 中点击 测试 验证设置
Cloudflare Workers
Cloudflare Workers 是一个无服务器平台,可在 Cloudflare 的全球边缘网络上运行您的代码。
设置步骤(Cloudflare Workers)
创建 Worker
- 登录 Cloudflare 控制面板
- 导航到 Workers 和 Pages
- 点击 创建应用程序
- 点击 从 Hello World! 开始
- 为您的 Worker 命名
- 点击 部署
部署代码
- 从下面的 示例代码下载 下载示例文件
- 在您的 Worker 中点击 编辑代码
- 用示例代码替换默认代码
- 点击 部署
配置环境变量
- 进入 设置 → 变量和机密
- 添加所需的变量(请参考下面的 环境变量)
- 点击 保存
获取 Worker URL
- 复制您的 Worker 的 URL(例如:
https://your-worker.your-subdomain.workers.dev) - 在 Weincloud 中使用此 URL 作为您的 Webhook 端点
- 在 Weincloud 中点击 测试 验证设置
- 复制您的 Worker 的 URL(例如:
示例代码下载
以下是在不同平台上实现 Webhook 端点的完整示例代码文件。这些示例演示了如何接收来自 Weincloud 的 Webhook 请求、验证 API 密钥、解析负载并将消息转发到 LINE 或 Telegram。
AWS Lambda 示例
📥 下载 aws_lambda_line.py (Python - LINE)
📥 下载 aws_lambda_telegram.py (Python - Telegram)
Cloudflare Workers 示例
📥 下载 cloudflare_worker_line.js (JavaScript - LINE)
📥 下载 cloudflare_worker_telegram.js (JavaScript - Telegram)
这些示例包括:
- API 密钥身份验证验证
- Webhook 负载解析和验证
- 消息转发到 LINE Messaging API 或 Telegram Bot API
- 环境变量配置
环境变量
所有示例代码都需要在您的无服务器平台(AWS Lambda 或 Cloudflare Workers)中配置以下环境变量:
LINE 集成
| 变量 | 说明 | 如何获取 |
|---|---|---|
EXPECTED_API_KEY | 用于 Webhook 身份验证的 API 密钥 | 设置为与 Weincloud 中配置的 API 密钥匹配 |
LINE_CHANNEL_ACCESS_TOKEN | LINE Messaging API 频道访问令牌 | LINE Developers 控制台 → 创建/选择频道 → 频道设置 |
LINE_USER_ID | 要发送消息的 LINE 用户 ID 或群组 ID | 个人聊天:从您的 LINE 个人资料获取,或使用 LINE Bot 收集用户 ID 群组聊天:将您的 LINE Bot 添加到群组,然后检查 LINE Webhook 日志或使用 LINE Bot SDK 获取群组 ID |
外部资源:
Telegram 集成
| 变量 | 说明 | 如何获取 |
|---|---|---|
EXPECTED_API_KEY | 用于 Webhook 身份验证的 API 密钥 | 设置为与 Weincloud 中配置的 API 密钥匹配 |
TELEGRAM_BOT_TOKEN | Telegram 机器人令牌 | 使用 @BotFather 创建机器人 |
TELEGRAM_CHAT_ID | 要发送消息的聊天室 ID | 个人聊天:使用像 @userinfobot 这样的机器人获取您的聊天室 ID 群组聊天:将您的 Bot 添加到群组,发送一条消息,然后访问 https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates 找到群组聊天室 ID(负数) |
外部资源:
配置说明:
- 对于 AWS Lambda:在 配置 → 环境变量 中添加环境变量
- 对于 Cloudflare Workers:在 设置 → 变量 中添加变量
EXPECTED_API_KEY必须与您在 Weincloud Webhook 设置中配置的 API 密钥匹配- 保护所有令牌和密钥,避免泄露给未经授权的人员