• 产品简介
  • 快速开始
    • 导入 Git 仓库
    • 从模板开始
    • 直接上传
    • 从 AI 开始
  • 框架指南
    • 前端
      • Vite
      • React
      • Vue
      • 其他框架
    • 后端
    • 全栈
      • Next.js
      • Nuxt
      • Astro
      • React Router
      • SvelteKit
      • TanStack Start
      • Vike
    • 自定义 404 页面
  • 项目指南
    • 项目管理
    • edgeone.json
    • 缓存配置
    • 错误码
  • 构建指南
  • 部署指南
    • 概览
    • 触发部署
    • 管理部署
    • 部署按钮
    • 使用 Github Action
    • 使用 Gitlab CI/CD
    • 使用 CNB 插件
    • 使用 IDE 插件
    • 使用 CodeBuddy IDE
  • 域名管理
    • 概览
    • 自定义域名
    • 配置 HTTPS 证书
      • 概览
      • 申请免费证书
      • 使用 SSL 托管证书
    • 配置 DNS 的 CNAME 记录
  • 可观测性
    • 概览
    • 指标分析
    • 日志分析
  • Pages Functions
    • 概览
    • Edge Functions
    • Cloud Functions
      • 概览
      • Node Functions
  • 中间件
  • KV 存储
  • 边缘 AI
  • API Token
  • EdgeOne CLI
  • Pages MCP
  • 消息通知
  • 集成指南
    • AI
      • 对话型大模型集成
      • 图片大模型集成
    • 数据库
      • Supabase 集成
      • Pages KV 集成
    • 电商
      • Shopify 集成
      • WooCommerce 集成
    • 支付
      • Stripe 集成
      • Paddle 集成
    • CMS
      • WordPress 集成
      • Contentful 集成
      • Sanity 集成
      • Payload 集成
    • 身份验证
      • Supabase 集成
      • Clerk 集成
  • 最佳实践
    • 使用通用大模型快速搭建 AI 应用
    • 使用边缘 AI 模型快速搭建对话型 AI 站点
    • 使用 Shopify 搭建电商平台
    • 使用 Supabase 和 Stripe 搭建 SaaS 站点
    • 如何快速搭建公司品牌站点
    • 如何快速搭建博客站点
  • 迁移指南
    • 从 Vercel 迁移至 EdgeOne Pages
    • 从 Cloudflare Pages 迁移至 EdgeOne Pages
    • 从 Netlify 迁移至 EdgeOne Pages
  • 排障指南
  • 常见问题
  • 联系我们
  • 产品动态

消息通知

消息通知是 EdgeOne Pages 提供的事件推送功能。当您的项目发生特定事件时,Pages 会通过不同的渠道(站内信、邮箱、短信)或 Webhook 向您发送通知,帮助您及时了解项目的运行状态。

支持的事件类型

Pages 支持以下事件类型的通知:
类别
事件
字段
说明
域名
域名配置
domain.added
添加自定义域名时触发(暂不包括 CNAME 配置,证书配置以及删除事件)
部署
部署失败
deployment.failed
部署过程中发生错误时触发
部署成功
deployment.succeeded
部署完成且成功时触发
部署创建
deployment.created
新的部署开始时触发
项目
项目删除
project.deleted
项目被删除时触发
项目更新
project.settings.updated
项目设置被修改时触发
项目创建
project.created
新项目被创建时触发

使用通知接收消息

通知功能允许您通过站内信、邮箱或短信接收 Pages 事件。操作步骤参考如下:
1. 您可以使用 Gmail 邮箱快速注册登录 腾讯云控制台
2. 进入 Pages 的设置,单击通知,打开通知设置开关并选择需要接收的通知事件。

开启后,通知功能包含以下通知渠道:
站内信 - 在腾讯云控制台内接收通知。
邮箱 - 接收邮件通知。
短信 - 接收短信通知。
对于每个事件类型,可单独选择是否接收通知。

使用 Webhook 自定义推送渠道

Webhook 允许您将 EdgeOne Pages 的事件实时推送到您自己的服务器或第三方服务。当 Pages 发生特定事件时,会向您配置的 Webhook 端点发送 HTTP POST 请求,包含完整的事件数据。操作步骤参考如下:
1. 您可以使用 Gmail 邮箱快速注册登录 腾讯云控制台
2. 进入 Pages 的设置,单击 Webhooks ,填写 Webhook 相关配置,配置参考如下:
配置项
说明
项目
全部项目:Webhook 对账户下的所有项目生效。
指定项目:Webhook 仅对选中的项目生效。
事件
选择要监听的事件类型,支持多选。
端点
Webhook URL(必填):您的服务器接收事件通知的地址。
密钥令牌(可选):用于验证请求来源,留空时由平台自动生成。


相关参考

Webhook 端点配置详解

什么是端点

端点是您服务器上的一个 URL,用于接收来自 Pages 的 Webhook 请求。

请求格式

当事件发生时,Pages 会向您的端点发送 HTTP POST 请求。
HTTP 请求头:
POST /webhooks/edgeone-pages HTTP/1.1
Host: example.com
Content-Type: application/json
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, compress, deflate, br
Authorization: Bearer xxx
Connection: keep-alive
请求体示例(JSON 格式):
部署事件示例(deployment.created):
{
"eventType": "deployment.created",
"appId": "app-123",
"projectId": "project-456",
"deploymentId": "deploy-789",
"projectName": "my-project",
"repoBranch": "main",
"timestamp": "2024-01-13T12:34:56.789Z"
}
项目事件示例(project.created):
{
"eventType": "project.created",
"appId": "app-123",
"projectId": "project-456",
"projectName": "my-project",
"repoUrl": "https://github.com/user/repo",
"timestamp": "2024-01-13T12:34:56.789Z"
}
域名事件示例(domain.added):
{
"eventType": "domain.added",
"appId": "app-123",
"projectId": "project-456",
"projectName": "my-project",
"domainName": "example.com",
"domainId": "domain-789",
"timestamp": "2024-01-13T12:34:56.789Z"
}
字段说明:
字段
类型
说明
出现场景
eventType
string
事件类型
所有事件
appId
string
账户 ID
所有事件
projectId
string
项目 ID
所有事件
timestamp
string
事件发生的时间戳(ISO 8601 格式)
所有事件
projectName
string
项目名称
所有事件
deploymentId
string
部署 ID
部署事件
repoBranch
string
Git 分支
部署事件
repoUrl
string
仓库 URL
项目事件
domainName
string
域名
域名事件
domainId
string
域名 ID
域名事件
注意:
如果您的端点返回非 2xx 状态码或无法访问,Pages 会采取指数退避策略自动重试最多 3 次。

如何实现端点

您需要在自己的服务器上实现一个端点来接收 Webhook 请求。以下是一个 Cloud Functions 的示例:
/**
* API 路径: /webhooks/demo
*/

/**
* 验证 Bearer Token(可选)
*/
function verifyToken(authHeader, expectedToken) {
if (!expectedToken) return true; // 未配置则跳过验证
const parts = authHeader?.split(' ');
if (parts?.length !== 2 || parts[0] !== 'Bearer') return false;
return parts[1] === expectedToken;
}

/**
* 处理 webhook 事件
*/
function handleEvent(eventType, data) {
switch (eventType) {
case 'deployment.created':
console.log(`🚀 部署创建: ${data.projectName} (${data.repoBranch})`);
// 在此添加你的业务逻辑
// 例如: 发送通知、更新数据库等
return { message: '部署事件已处理', projectName: data.projectName };
case 'project.created':
console.log(`📁 项目创建: ${data.projectName}`);
return { message: '项目事件已处理', projectName: data.projectName };
// 更多事件可参考支持的事件类型
default:
console.log(`⚠️ 未知事件: ${eventType}`);
return { message: '未知事件类型', eventType };
}
}

/**
* Cloud Function 入口
*/
export async function onRequest(context) {
const { request, env } = context;

// 1. 健康检查
if (request.method === 'GET') {
return new Response(JSON.stringify({ status: 'ok', message: 'Webhook endpoint is ready' }), {
headers: { 'Content-Type': 'application/json' }
});
}

// 2. 只接受 POST
if (request.method !== 'POST') {
return new Response(JSON.stringify({ error: 'Method not allowed' }), {
status: 405,
headers: { 'Content-Type': 'application/json' }
});
}

try {
// 3. 验证 Bearer Token(可选)
const authHeader = request.headers.get('authorization');
const webhookToken = env.WEBHOOK_TOKEN;
if (webhookToken && !verifyToken(authHeader, webhookToken)) {
return new Response(JSON.stringify({ error: 'Unauthorized' }), {
status: 401,
headers: { 'Content-Type': 'application/json' }
});
}

// 4. 解析请求体
const payload = await request.json();
const eventType = payload.eventType || payload.type;

// 5. 处理事件
const result = handleEvent(eventType, payload);

// 6. 返回成功响应
return new Response(JSON.stringify({
success: true,
eventType,
result,
timestamp: new Date().toISOString()
}), {
status: 200,
headers: { 'Content-Type': 'application/json' }
});

} catch (error) {
console.error('处理错误:', error);
return new Response(JSON.stringify({
error: 'Internal server error',
message: error.message
}), {
status: 500,
headers: { 'Content-Type': 'application/json' }
});
}
}
ai-agent
你可以这样问我
如何开始使用 EdgeOne Pages?