> ## Documentation Index
> Fetch the complete documentation index at: https://docs.myrmagent.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks

> 配置 Webhook 实现事件驱动集成。

# Webhooks

通过 HTTP 触发 Agent 任务，或将 Agent 结果推送到外部服务。

## 入站触发

外部系统（Zapier、n8n、自定义脚本）可通过 HTTP 请求触发 Agent 任务。

### Webhook 触发

```bash theme={null}
curl -X POST https://your-myrm-host/api/cron/trigger/webhook/my-path \
  -H "x-webhook-secret: your-secret" \
  -H "Content-Type: application/json" \
  -d '{"message": "处理这些数据"}'
```

### 事件触发

```bash theme={null}
curl -X POST https://your-myrm-host/api/cron/trigger/event \
  -H "Content-Type: application/json" \
  -d '{"message": "new_order_placed", "channel": "ecommerce"}'
```

### 系统事件触发

```bash theme={null}
curl -X POST https://your-myrm-host/api/cron/trigger/system-event \
  -H "Content-Type: application/json" \
  -d '{"source": "monitoring", "event_type": "alert", "payload": {"severity": "high"}}'
```

## 出站 Webhook

在 **设置 > 渠道** 中配置 Webhook Channel。Agent 结果会自动以结构化 JSON POST 请求推送到配置的 URL。

## 安全

### 入站

入站 Webhook 触发器需要 `x-webhook-secret` 请求头，必须与 Cron 任务中配置的密钥匹配。缺少有效密钥的请求会返回 401。

### 出站

所有出站 Webhook 请求均受多层安全防护：

* **SSRF 防护**：每个出站 HTTP 请求都经过 `secure_request()` 处理，包含 DNS 固定和私网地址拦截。指向内网 IP（127.0.0.1、10.x、192.168.x 等）的 Webhook URL 会被自动拒绝。
* **HMAC-SHA256 签名**：出站 Webhook 负载包含 `X-Webhook-Signature` 头（`sha256=...`），接收方可验证请求真实性。为每个 Webhook 配置独立密钥以获得最强验证。
* **重定向验证**：出站请求的每一跳重定向都会进行 SSRF 检查——即使原始 URL 是公网地址，重定向到内网也会被拦截。
* **指数退避重试**：临时故障（5xx、超时）自动指数退避重试；永久错误（4xx）立即失败。

## GitHub 集成

内置 GitHub Channel 提供原生 Webhook 集成，支持 PR 审查、Issue 管理和 Push 事件处理。

1. 进入 **设置 > 集成 > GitHub**
2. 输入 Personal Access Token (PAT)
3. 配置 Webhook Secret
4. GitHub 事件（PR 创建、Issue、Push）自动触发 Agent 响应，携带完整上下文

HMAC-SHA256 签名验证确保只有来自 GitHub 的真实请求被处理。

## 通过 GUI 配置

1. 进入 **设置 > 自动化**（定时任务）
2. 创建新的定时任务
3. 选择「Webhook」作为触发类型
4. 配置 Webhook 路径和密钥
5. 绑定 Agent 执行

## 自然语言配置

也可以通过对话让 Agent 自动配置 Webhook 触发器：

> "帮我创建一个 Webhook 触发器，当支付系统发来新订单时自动处理"

Agent 会自动设置触发器、生成 Webhook URL 和密钥，并引导你完成外部系统的配置。
