通知渠道
渠道是提醒的接收目的地。您可以根据需要添加多个渠道,然后将它们附加到各个监控器上(或默认附加到所有监控器上)。
渠道与监控器覆盖设置
渠道是在组织级别定义的。每个渠道都可以标记为 默认 (default) — 这意味着新创建的监控器将自动向其发送通知。在任何特定的监控器上,您都可以覆盖该默认设置,并选择一个自定义的渠道子集。
Slack
- 在 Slack 中,前往
Apps → Incoming Webhooks → Add to Slack并选择应该接收提醒的频道。 - 复制 Slack 提供给您的 webhook URL。
- 在 Page Deltas 中,打开
Channels页面,点击Add a channel,选择Slack,粘贴 URL 并保存。 - 点击
Send test确认消息是否能送达正确的 Slack 频道。
Discord
在您的 Discord 服务器中,打开 Server Settings → Integrations → Webhooks → New Webhook。复制该 URL 并将其粘贴到 Page Deltas 的新 Discord 渠道设置中。
Microsoft Teams
在 Teams 中,右键点击目标频道,选择 Connectors → Incoming Webhook → Configure。将其命名为 Page Deltas,保存后将该 URL 复制到 Page Deltas 中。
电子邮件
添加收件人地址。我们将首先向该地址发送一封验证邮件 — 在收件人确认之前,该渠道将保持在 pending verification(等待验证) 状态,并且不会收到任何提醒。发出的邮件由我们控制且已验证的域名发送。对于团队分发,请使用组别名 (group alias),而不是逐个添加个人地址。
通用 Webhook
当您希望通过提醒来驱动自己的系统(如 Linear、Jira、Lambda、通过机器人发到 Slack 等)时,请使用此选项。
有效负载 (Payload)
请求体是一个扁平的 JSON 对象。随着时间的推移,可能会添加新字段,因此请忽略未知键,而不是拒绝它们。
POST <your URL>
Content-Type: application/json
X-Signature: sha256=<hex>
{
"event": "change.detected",
"monitor_id": "...",
"monitor_url": "https://example.com/pricing",
"monitor_name": "Competitor pricing page",
"change_id": "...",
"detected_at": "2026-06-01T12:00:00Z",
"summary": "Pro plan increased from $29 to $39/month.",
"before_screenshot_url": "https://.../before.png",
"after_screenshot_url": "https://.../after.png",
"dashboard_url": "https://app.pagedeltas.com/monitors/..."
}签名验证 (HMAC)
每个请求都带有一个 X-Signature 标头,格式为 sha256=<hex>,其中的值是使用您渠道的密钥(仅在创建时显示一次)对 原始请求体 (raw request body) 计算得出的 HMAC-SHA256 散列值。没有时间戳组件。
# Node.js example
import crypto from "node:crypto";
function verify(req, rawBody, secret) {
const header = req.headers["x-signature"]; // "sha256=<hex>"
const expected =
"sha256=" +
crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
return crypto.timingSafeEqual(
Buffer.from(header),
Buffer.from(expected),
);
}交付与失败
| 行为 | 详情 |
|---|---|
| 尝试次数 | 每个提醒在每个渠道上只尝试交付一次。目前没有自动重试机制 — 请确保您的接收器快速响应,并进行防御性设计以接受重复项。 |
| 失败 | 非 2xx 的响应或网络错误将标记为交付失败。监控器本身不会因交付失败而暂停。 |
| 审计 | 每次尝试(成功或失败,附带 HTTP 状态码)都会记录在服务器端的交付尝试日志中。 |
最佳实践
- 每个 Slack 工作区频道使用一个独立的 Page Deltas 渠道 — 不要将同一个 webhook URL 重复用于多个 Slack 聊天室。
- 对于高频提醒的监控器,请将其发送到专用的 Slack 频道,而不是发到繁忙的 #general 频道。
- 对于关键任务级别的提醒,请同时附加两种不同类型的渠道(例如 Slack + 电子邮件),这样 Slack 的中断就不会导致您错过重要变更。