通过消息机器人自动发送通知,能让开发工作流更高效、更便捷。无论是构建完成、出现报错还是部署结束,你都能第一时间收到提醒。本文将带你了解如何在主流即时通讯平台上,通过 webhook 配置自动消息机器人。需要把 CI/CD 结果、服务器告警或任务完成状态通知给团队?这些集成方案都能轻松搞定。本文只介绍支持机器人功能的平台,部分以隐私为优先的加密通讯工具不支持自动化,相关内容会单独列出。
目录
了解基于 Webhook 的机器人自动化
基于 webhook 的机器人原理很简单:你的应用向某个 URL 发送一个 HTTP POST 请求,消息平台随即将内容推送到指定的频道或用户。
这种方式适用于多种自动化场景:
- 构建通知 - 构建成功或失败时发出告警,并附上错误详情
- 部署更新 - 代码推送到预发布或生产环境时通知团队
- 监控告警 - 发送服务器健康预警或宕机通知
- 定时报告 - 定期推送每日指标或状态摘要
基本流程分三步:
- 在目标平台创建机器人或 webhook URL
- 配置你的自动化工具(CI/CD、监控系统或自定义脚本)发送 HTTP 请求
- 按照平台要求格式化消息 payload
选择合适的平台时,还需要考虑其安全特性。想深入了解各平台的安全性,可以参考我们的即时通讯平台终极指南(2026 版)。
各平台机器人集成指南
以下是支持 webhook 机器人集成的各平台详细配置步骤。
Discord Webhook 机器人
Discord 的 webhook 配置是所有平台中最简单的。发送基础消息无需创建机器人应用,也不需要身份验证令牌。
分步配置
- 打开服务器设置 - 右键点击服务器名称,选择"服务器设置"
- 进入集成页面 - 点击左侧栏中的"集成"
- 创建 Webhook - 点击"Webhooks",然后点击"新建 Webhook"
- 配置 Webhook - 为 webhook 命名(例如"Build Bot"),选择频道,可选择上传头像
- 复制 Webhook URL - 点击"复制 Webhook URL"并妥善保存
通过 Webhook 发送消息
curl -X POST -H "Content-Type: application/json" \
-d '{"content": "✅ Build completed successfully!\n\nProject: MyApp\nBranch: main\nDuration: 3m 42s"}' \
https://discord.com/api/webhooks/YOUR_WEBHOOK_ID/YOUR_WEBHOOK_TOKEN
错误通知的富文本嵌入示例
curl -X POST -H "Content-Type: application/json" \
-d '{
"embeds": [{
"title": "❌ Build Failed",
"color": 15158332,
"fields": [
{"name": "Project", "value": "MyApp", "inline": true},
{"name": "Branch", "value": "feature/login", "inline": true},
{"name": "Error", "value": "```TypeError: Cannot read property of undefined```"}
],
"timestamp": "2026-01-15T10:30:00.000Z"
}]
}' \
YOUR_WEBHOOK_URL
官方文档: Discord Webhook 文档
Slack Webhook 机器人
Slack 通过 Slack Apps 系统提供 Incoming Webhooks 功能,支持富文本消息格式和灵活的频道指定。
分步配置
- 创建 Slack App - 前往 api.slack.com/apps,点击"创建新应用"
- 选择创建方式 - 选择"从头开始",为应用命名(例如"CI/CD 通知")
- 启用 Incoming Webhooks - 在左侧栏进入"Incoming Webhooks"并开启开关
- 将 Webhook 添加到工作区 - 点击"向工作区添加新 Webhook"
- 选择频道 - 选择接收通知的频道,点击"允许"
- 复制 Webhook URL - 页面上会显示你的专属 webhook URL
通过 Webhook 发送消息
curl -X POST -H "Content-Type: application/json" \
-d '{"text": "✅ Deployment to production completed successfully!"}' \
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXX
使用 Block Kit 发送详细通知
curl -X POST -H "Content-Type: application/json" \
-d '{
"blocks": [
{
"type": "header",
"text": {"type": "plain_text", "text": "🚨 Build Failed"}
},
{
"type": "section",
"fields": [
{"type": "mrkdwn", "text": "*Project:*\nMyApp"},
{"type": "mrkdwn", "text": "*Branch:*\nmain"},
{"type": "mrkdwn", "text": "*Error:*\n`Module not found`"}
]
}
]
}' \
YOUR_WEBHOOK_URL
官方文档: Slack Incoming Webhooks 指南
Microsoft Teams Webhook 机器人
Microsoft Teams 通过连接器系统支持 Incoming Webhooks,可向频道推送通知。
分步配置
- 打开频道设置 - 进入目标频道,点击频道名称旁的三点菜单(•••)
- 选择连接器 - 点击"连接器"(新版本中为"管理频道",然后点击"连接器")
- 找到 Incoming Webhook - 搜索"Incoming Webhook"并点击"配置"
- 命名 Webhook - 输入名称(例如"构建告警"),可选择上传图片
- 创建并复制 URL - 点击"创建",复制生成的 webhook URL
通过 Webhook 发送消息
curl -X POST -H "Content-Type: application/json" \
-d '{"text": "✅ Build #1234 completed successfully on main branch"}' \
YOUR_TEAMS_WEBHOOK_URL
使用 Adaptive Card 发送富文本通知
curl -X POST -H "Content-Type: application/json" \
-d '{
"type": "message",
"attachments": [{
"contentType": "application/vnd.microsoft.card.adaptive",
"content": {
"type": "AdaptiveCard",
"version": "1.2",
"body": [
{"type": "TextBlock", "size": "Large", "weight": "Bolder", "text": "❌ Build Failed"},
{"type": "FactSet", "facts": [
{"title": "Project:", "value": "MyApp"},
{"title": "Error:", "value": "Compilation failed"}
]}
]
}
}]
}' \
YOUR_TEAMS_WEBHOOK_URL
官方文档: Microsoft Teams Incoming Webhooks
Telegram 机器人
Telegram 提供功能强大的 Bot API,可通过编程方式发送消息。与其他平台不同,你需要直接向 Telegram 的 API 发送请求,而不是使用 webhook URL。
分步配置
- 通过 BotFather 创建机器人 - 打开 Telegram,搜索
@BotFather - 新建机器人 - 发送
/newbot命令 - 为机器人命名 - 按提示设置显示名称和用户名(用户名必须以"bot"结尾)
- 保存 API 令牌 - BotFather 会返回类似
123456789:ABCdefGHIjklMNOpqrsTUVwxyz的令牌 - 获取聊天 ID - 将机器人添加到群组或频道并发送一条消息,然后访问
https://api.telegram.org/bot<TOKEN>/getUpdates查找聊天 ID
通过 Bot API 发送消息
curl -X POST \
"https://api.telegram.org/bot/sendMessage" \
-d "chat_id=" \
-d "text=✅ Build completed successfully!%0A%0AProject: MyApp%0ABranch: main" \
-d "parse_mode=HTML"
使用 HTML 发送格式化消息
curl -X POST \
"https://api.telegram.org/bot/sendMessage" \
-H "Content-Type: application/json" \
-d '{
"chat_id": "",
"text": "❌ Build Failed\n\nProject: MyApp\nBranch: main\nError: Module not found",
"parse_mode": "HTML"
}'
官方文档: Telegram Bot API
Mattermost Webhook 机器人
Mattermost 是 Slack 的开源替代品,具备完善的 webhook 支持,非常适合自托管团队协作场景。
分步配置
- 进入集成页面 - 点击汉堡菜单,然后点击"集成"
- 创建 Incoming Webhook - 选择"Incoming Webhooks",点击"添加 Incoming Webhook"
- 配置 Webhook - 设置标题、描述和默认频道
- 保存并复制 URL - 点击"保存",复制生成的 webhook URL
通过 Webhook 发送消息
curl -X POST -H "Content-Type: application/json" \
-d '{"text": "✅ Build completed successfully!"}' \
https://your-mattermost-server.com/hooks/YOUR_WEBHOOK_ID
富文本附件消息
curl -X POST -H "Content-Type: application/json" \
-d '{
"attachments": [{
"fallback": "Build Failed",
"color": "#FF0000",
"title": "❌ Build Failed",
"fields": [
{"short": true, "title": "Project", "value": "MyApp"},
{"short": true, "title": "Branch", "value": "main"},
{"short": false, "title": "Error", "value": "```Module not found```"}
]
}]
}' \
YOUR_WEBHOOK_URL
官方文档: Mattermost Incoming Webhooks
Matrix/Element 机器人
Matrix 是一个去中心化通信的开放协议,Element 是其最流行的客户端。集成机器人需要使用 Matrix Client-Server API。
分步配置
- 创建机器人账号 - 在你的 homeserver 或 matrix.org 上为机器人注册一个新的 Matrix 账号
- 获取访问令牌 - 登录后在 Element 中找到访问令牌:设置 - 帮助与关于 - 高级 - 访问令牌
- 获取房间 ID - 让机器人加入目标房间,然后在房间设置 - 高级中找到房间 ID
- 邀请机器人进入房间 - 确保机器人账号已加入将要发送消息的房间
通过 Matrix API 发送消息
curl -X PUT \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"msgtype": "m.text", "body": "✅ Build completed successfully!"}' \
"https://matrix.org/_matrix/client/r0/rooms/YOUR_ROOM_ID/send/m.room.message/$(date +%s)"
使用 HTML 发送格式化消息
curl -X PUT \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"msgtype": "m.text",
"body": "Build Failed\nProject: MyApp\nError: Module not found",
"format": "org.matrix.custom.html",
"formatted_body": "❌ Build Failed
Project: MyApp
Error: Module not found
"
}' \
"https://matrix.org/_matrix/client/r0/rooms/YOUR_ROOM_ID/send/m.room.message/$(date +%s)"
提示: 如果想简化 Matrix 机器人的开发,可以尝试使用 matrix-nio(Python)或 matrix-bot-sdk(JavaScript)等库。
官方文档: Matrix Client-Server API 规范
WhatsApp Business 机器人
WhatsApp 提供 Business API 用于自动化消息发送,但需要完成企业认证,配置流程比其他平台更复杂。
分步配置
- 创建 Meta 企业账号 - 访问 business.facebook.com 创建企业账号
- 配置 WhatsApp Business - 前往 developers.facebook.com,创建应用并添加 WhatsApp 产品
- 配置电话号码 - 为机器人添加电话号码(开发阶段可使用测试号码)
- 获取访问令牌 - 在应用控制台中生成永久访问令牌
- 完成企业认证 - 上线前需完成企业认证流程
通过 Cloud API 发送消息
curl -X POST \
"https://graph.facebook.com/v17.0/YOUR_PHONE_NUMBER_ID/messages" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"messaging_product": "whatsapp",
"to": "RECIPIENT_PHONE_NUMBER",
"type": "text",
"text": {"body": "✅ Build completed successfully!"}
}'
注意: WhatsApp 要求在主动发起会话时必须使用消息模板。只有在用户互动后的 24 小时内,才能发送自由格式的消息。如需发送自动化通知,请提前创建消息模板并等待审核通过。
官方文档: WhatsApp Cloud API 文档
Facebook Messenger 机器人
Facebook Messenger 机器人需要一个 Facebook 应用和主页,消息通过 Send API 发送。
分步配置
- 创建 Facebook 应用 - 前往 developers.facebook.com,新建应用(选择"企业"类型)
- 添加 Messenger 产品 - 在应用控制台中点击"添加产品",选择 Messenger
- 关联 Facebook 主页 - 将 Facebook 主页与应用关联(如无主页请先创建)
- 生成主页访问令牌 - 在 Messenger 设置中为主页生成令牌
- 获取 PSID - 用户需先向你的主页发送消息,从 webhook 事件中获取其页面作用域 ID(PSID)
通过 Send API 发送消息
curl -X POST \
"https://graph.facebook.com/v17.0/me/messages" \
-H "Content-Type: application/json" \
-d '{
"recipient": {"id": "USER_PSID"},
"message": {"text": "✅ Build completed successfully!"},
"access_token": "YOUR_PAGE_ACCESS_TOKEN"
}'
注意: Facebook Messenger 对自动化消息有严格限制。机器人只能在用户互动后的 24 小时内发送推广类消息。如需在此时间窗口之外发送通知,需申请特定消息标签或使用一次性通知功能。
官方文档: Facebook Messenger 平台文档
不支持机器人的通讯平台
以下通讯平台以隐私和安全为优先,这意味着基于 webhook 的机器人集成要么无法实现,要么不具备实用价值:
- Signal - 没有官方机器人 API。Signal 专注于端对端加密,刻意避免可能降低安全性的自动化功能。
- Session - 去中心化通讯平台,没有机器人基础设施。其洋葱路由设计使自动化消息发送不具可行性。
- Briar - 专为活动人士和记者设计的点对点通讯工具,没有服务器基础设施,因此不支持 webhook。
- Wire - 提供部分企业级 API 功能,但没有用于自动化通知的简单 webhook 系统。
- Wickr - 面向企业市场,没有公开的机器人 API。自动化集成需要 Wickr Enterprise 版本并进行定制开发。
- SimpleX - 其架构设计不使用用户标识符,这使得机器人集成与其架构存在根本性的不兼容。
- Threema - 为企业提供 Threema Gateway,但这是需要签订合同的付费服务,并非简单的 webhook 配置。
- Viber - 提供机器人 API,但需要企业账号审核,且主要面向客服场景,不适合开发者通知需求。
- LINE - 提供 Messaging API,但需要企业账号认证,对于简单的通知场景来说配置过于复杂。
- 微信 - 提供公众号 API,但需要中国大陆企业资质和政府审批。
如果你倾向于使用上述平台进行安全通信,可以考虑将其与支持自动化的平台搭配使用。你也可以阅读我们关于如何真正保护私信安全的指南。
实战示例
以下是一个完整的 Node.js 示例,可同时向多个平台发送构建通知:
const axios = require('axios');
const notifiers = {
discord: async (message, webhookUrl) => {
await axios.post(webhookUrl, { content: message });
},
slack: async (message, webhookUrl) => {
await axios.post(webhookUrl, { text: message });
},
telegram: async (message, token, chatId) => {
await axios.post(`https://api.telegram.org/bot${token}/sendMessage`, {
chat_id: chatId,
text: message,
parse_mode: 'HTML'
});
},
teams: async (message, webhookUrl) => {
await axios.post(webhookUrl, { text: message });
}
};
async function notifyBuildResult(success, project, branch, error = null) {
const emoji = success ? '✅' : '❌';
const status = success ? 'succeeded' : 'failed';
let message = `${emoji} Build ${status}\n\nProject: ${project}\nBranch: ${branch}`;
if (error) message += `\nError: ${error}`;
const notifications = [
notifiers.discord(message, process.env.DISCORD_WEBHOOK),
notifiers.slack(message, process.env.SLACK_WEBHOOK),
notifiers.telegram(message, process.env.TELEGRAM_TOKEN, process.env.TELEGRAM_CHAT_ID),
notifiers.teams(message, process.env.TEAMS_WEBHOOK)
];
await Promise.allSettled(notifications);
}
// 在 CI/CD 流水线中使用
notifyBuildResult(false, 'MyApp', 'main', 'Module not found: @utils/helper');
核心要点:
- Discord、Slack 和 Mattermost 配置最简单 - 创建 webhook URL 即可直接使用
- Telegram 需要机器人令牌和聊天 ID,但可靠性强,消息格式支持丰富
- Microsoft Teams 通过 Adaptive Card 实现富文本通知
- Matrix/Element 配置步骤较多,但非常适合自托管环境
- WhatsApp 和 Facebook Messenger 有更严格的规则和消息发送政策
- 以隐私为设计核心的通讯平台出于安全考虑,刻意不提供机器人 API
总结
在各大即时通讯平台上配置基于 webhook 的机器人通知,能为你的开发工作流带来强大的自动化能力。Discord 和 Slack 上手最快,只需一个简单的 webhook URL 即可。Telegram 稳定可靠,配置也不复杂。对于企业团队,Microsoft Teams 和 Mattermost 能与现有工具无缝集成。Matrix 则提供自托管、注重隐私的选项,并支持完整的 API 访问。
建议从一个平台开始,先跑通通知流程,再按需扩展到更多频道。上面的代码示例可以直接使用。你的下一步就是在选定平台上创建一个 webhook,发送第一条自动化消息 - 整个过程不超过 10 分钟。
常见问题
Discord 是最简单的。在频道设置中创建 webhook 后,你会立刻得到一个可以直接 POST 消息的 URL,无需令牌、无需创建应用、无需认证。Slack 也比较简单,但需要先创建一个 Slack App。
不能。Signal、Session、Briar 和 SimpleX 等注重隐私的通讯平台没有机器人 API,这是有意为之的设计选择,目的是保护用户隐私。这些平台专注于端对端加密和最小化数据收集,与自动化消息发送的需求存在根本冲突。如需发送通知,建议使用支持自动化的平台,同时保留私密对话使用安全通讯工具。
需要,请像对待密码一样保护 webhook URL。任何持有该 URL 的人都可以向你的频道发送消息。请将其存储在环境变量中,绝对不要提交到版本控制系统,一旦泄露应立即重新生成。部分平台(如 Slack)支持在需要时创建新的 webhook URL。
Webhook 是单向的:你向一个 URL 发送消息,它就会出现在频道中。机器人 API 是双向的:你既可以发送消息,也可以接收并回复用户消息。对于构建告警或监控等简单通知场景,webhook 已经足够。如果需要机器人响应用户指令,则需要完整的机器人 API,并在你的服务器上配置 webhook 端点。
大多数平台都有频率限制。Discord 每个 webhook 每分钟最多发送 30 条消息,Slack 也有类似限制。建议使用带指数退避策略的消息队列来处理重试。如果消息量较大,可以将多个事件合并为一条消息,或在平台支持的情况下使用批量 API。