OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  ngrok-unofficial-webhook:快速启动 ngrok 隧道进行 Webhook 调试

ngrok-unofficial-webhook:快速启动 ngrok 隧道进行 Webhook 调试

 
  ocmuuu ·  2026-02-24 13:20:22 · 2 次点击  · 0 条评论  

名称: ngrok-unofficial-webhook-skill
描述: 启动 ngrok 隧道以接收传入的 Webhook,并通过 LLM 进行处理。当用户要求监听 Webhook、设置 Webhook 端点、启动 ngrok,或其他技能(如 Zoom RTMS Meeting Assistant)需要公共 Webhook URL 时使用。接收 Webhook 负载,并让 LLM 决定如何处理。


Ngrok Webhook 监听器

通过 ngrok 启动一个公共 Webhook 端点。传入的 Webhook 会自动路由到匹配的技能,或呈现给用户进行手动处理。

前提条件

cd skills/ngrok-unofficial-webhook-skill
npm install

环境变量

在技能的 .env 文件中设置(可从 .env.example 复制)。

必需:
- NGROK_AUTHTOKEN — 来自 https://dashboard.ngrok.com 的 ngrok 认证令牌

可选:
- NGROK_DOMAIN — 用于保持 URL 稳定的 ngrok 域名
- WEBHOOK_PORT — 本地端口(默认:4040
- WEBHOOK_PATH — Webhook 路径(默认:/webhook
- OPENCLAW_BIN — openclaw 二进制文件路径(默认:openclaw
- OPENCLAW_NOTIFY_CHANNEL — 通知渠道(默认:whatsapp
- OPENCLAW_NOTIFY_TARGET — 通知的电话号码/目标

使用方法

启动 Webhook 监听器

作为后台进程运行:

cd skills/ngrok-unofficial-webhook-skill
node scripts/webhook-server.js

服务器会将其公共 URL 打印到 stderr:

NGROK_URL=https://xxxx.ngrok-free.app
Webhook endpoint: https://xxxx.ngrok-free.app/webhook

如需长期运行,可使用 nohup 启动:

nohup node scripts/webhook-server.js >> /tmp/ngrok-webhook.log 2>&1 &

Webhook 到达时的处理流程

  1. 服务器立即向发送方响应 200 OK
  2. 发现已安装并在其 skill.json 中声明了 webhookEvents 的技能
  3. 自动路由(无需用户干预):
    • 如果匹配的技能有 forwardPort → 向本地服务发起 HTTP POST 请求
    • 如果匹配的技能有 webhookCommands → 运行配置的 shell 命令
  4. 手动路由(用户决定):
    • 如果没有可用的自动路由,则通过 WhatsApp 发送包含负载和匹配技能编号列表的通知
    • 用户回复其选择

技能发现

技能通过在 skill.json 中添加 webhookEvents 来选择加入 Webhook 处理:

{
  "openclaw": {
    "webhookEvents": ["meeting.rtms_started", "meeting.rtms_stopped"],
    "forwardPort": 4048,
    "forwardPath": "/"
  }
}

对于基于命令的自动处理(无需运行服务):

{
  "openclaw": {
    "webhookEvents": ["recording.completed"],
    "webhookCommands": {
      "recording.completed": {
        "command": "python3 scripts/download.py {{meeting_id}}",
        "description": "下载云端录制",
        "meetingIdPath": "payload.object.id"
      }
    }
  }
}
  • command — 要运行的 shell 命令;{{meeting_id}} 会被替换为提取的值
  • meetingIdPath — 从 Webhook 负载中提取会议 ID 的点分隔路径
  • description — 用于通知的人类可读描述

ngrok 技能会扫描所有同级技能文件夹中带有这些字段的 skill.json 文件。

标准输出

服务器还将每个 Webhook 作为 JSON 行写入 stdout,以便进程轮询:

{
  "id": "uuid",
  "timestamp": "ISO-8601",
  "method": "POST",
  "path": "/webhook",
  "query": {},
  "body": {}
}

健康检查

curl http://localhost:4040/health

停止监听器

完成后终止后台进程。

与 Zoom 集成

典型流程:
1. 启动此 Webhook 监听器 → 获取 ngrok URL
2. 在您的 Zoom Marketplace 应用的 Webhook 设置中配置此 ngrok URL
3. 当 RTMS 开始时,Zoom 发送 meeting.rtms_started → 自动转发给 RTMS Meeting Assistant
4. 当 RTMS 停止时,Zoom 发送 meeting.rtms_stopped → 自动转发,触发清理

2 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor