Skip to content

通过 Webhook 接收推播通知

您可以配置自定义 Webhook 来接收人机的推播通知。这使您能够:

  • 将推播通知集成到您自己的系统或应用程序中
  • 使用自己的 LINE 官方帐号或 Telegram Bot
  • 与企业通知系统或自定义应用程序集成
  • 将推播通知转换为其他自动化工作流的事件触发器

要求:

  • 已激活 EasyAccess 2.0 的人机
  • 在 EasyBuilder Pro 中启用了推播通知
  • 一个 Webhook 端点(推荐使用 HTTPS)
  • 配置 Webhook 的 Domain Admin 权限

在 Weincloud 中设置 Webhook

创建 Webhook

  1. 通过社交登录登录 Weincloud(详情请参考 社交登录
  2. 从左侧边栏选择 警报通知 进入"社群登入设定/警报通知"页面
  3. 点击 创建 Webhook
  4. 填写 Webhook 配置:
    • Webhook 名称:为您的 Webhook 起一个描述性名称
    • 端点 URL:将发送 Webhook 请求的 URL(例如:https://your-server.com/webhook
    • API 密钥:(可选但推荐)用于身份验证的密钥

关联人机与 Webhook

创建 Webhook 后,您需要将其与特定的人机关联:

  1. 选择您创建的 Webhook(右侧面板将默认显示 信息 标签)
  2. 切换到 人机 标签
  3. 点击 添加 选择人机
  4. 选择应向此 Webhook 发送推播通知的人机
  5. 点击 添加

测试您的 Webhook

您可以在部署前测试 Webhook 配置:

  1. 选择您配置的 Webhook
  2. 点击 测试 按钮
  3. Weincloud 将向您的端点发送测试资料
  4. 检查响应状态并验证您的端点是否正确接收到请求

Webhook 请求格式

当关联的人机上发生事件时,Weincloud 将向您配置的 Webhook URL 发送 HTTP POST 请求。

HTTP 标头

headers
X-API-KEY: <your api key>
Content-Type: application/json

注意: 您可以在服务器中验证 X-API-KEY 标头,以确保它与配置的 API 密钥匹配,从而进行身份验证。

资料内容示例

json
{
  "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 项目设置。

字段说明

字段类型说明
hwkeystring人机设备的唯一硬件密钥
hmiNamestring人机的显示名称(如果设置了昵称则为昵称,否则为设备名称)
messageobject多语言事件消息(键值对)
hmiTimestring事件在人机上发生的时间戳(格式:YYYY-MM-DD HH:MM:SS)。时区遵循人机的配置。
serverTimestring事件到达服务器的时间戳(格式:YYYY-MM-DD HH:MM:SS)。时区取决于服务器区域:全球区域为 UTC+0,中国区域为 UTC+8。
eventTypestring触发通知的事件类型(见下文)

事件类型

事件类型说明
event-trigger触发事件 - 警报或条件被触发
event-recover恢复事件 - 之前触发的警报已恢复
event-online-offline设备在线/离线事件

实现示例

以下是流行的无服务器平台的实现示例。这些示例演示了如何接收 Webhook 请求、验证身份以及将通知转发到消息平台。

AWS Lambda

AWS Lambda 是一种无服务器计算服务,可响应 HTTP 请求运行您的代码,无需管理服务器。

设置步骤(AWS Lambda)

  1. 创建 Lambda 函数

    • 前往 AWS Lambda 控制台
    • 点击 创建函数
    • 选择 从头开始创作
    • 输入函数名称
    • 选择 Python 3.13 运行时
    • 创建函数
  2. 配置环境变量

    • 进入 配置环境变量
    • 添加所需的变量(请参考下面的 环境变量
    • 点击 保存
  3. 部署代码

    • 从下面的 示例代码下载 下载示例文件
    • 将代码复制到 Lambda 函数编辑器中
    • 点击 部署
  4. 创建函数 URL

    • 进入 配置函数 URL
    • 点击 创建函数 URL
    • 身份验证类型:NONE(您可以使用 API 密钥实现自己的身份验证)
    • 点击 保存
    • 复制生成的 URL
  5. 在 Weincloud 中配置

    • 使用 Lambda 函数 URL 作为您的 Webhook 端点
    • 将 API 密钥设置为与 EXPECTED_API_KEY 环境变量匹配
    • 在 Weincloud 中点击 测试 验证设置

Cloudflare Workers

Cloudflare Workers 是一个无服务器平台,可在 Cloudflare 的全球边缘网络上运行您的代码。

设置步骤(Cloudflare Workers)

  1. 创建 Worker

    • 登录 Cloudflare 控制面板
    • 导航到 Workers 和 Pages
    • 点击 创建应用程序
    • 点击 从 Hello World! 开始
    • 为您的 Worker 命名
    • 点击 部署
  2. 部署代码

    • 从下面的 示例代码下载 下载示例文件
    • 在您的 Worker 中点击 编辑代码
    • 用示例代码替换默认代码
    • 点击 部署
  3. 配置环境变量

    • 进入 设置变量和机密
    • 添加所需的变量(请参考下面的 环境变量
    • 点击 保存
  4. 获取 Worker URL

    • 复制您的 Worker 的 URL(例如:https://your-worker.your-subdomain.workers.dev
    • 在 Weincloud 中使用此 URL 作为您的 Webhook 端点
    • 在 Weincloud 中点击 测试 验证设置

示例代码下载

以下是在不同平台上实现 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_TOKENLINE 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_TOKENTelegram 机器人令牌使用 @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 密钥匹配
  • 保护所有令牌和密钥,避免泄露给未经授权的人员