Use Webhook to send notification to Telegram messenger
1. 创建 Telegram Bot
首先,你需要创建一个 Telegram Bot 并获取 API Token:
打开 Telegram,搜索“BotFather”。
向 BotFather 发送
/newbot
命令。按照提示输入机器人名称和用户名。
创建完成后,BotFather 会给你一个 API Token。请将其保存。
2. 获取你的 Telegram Chat ID
要将消息发送到特定的 Telegram 聊天,你需要知道聊天 ID。可以通过以下步骤获取:
向你的 Telegram Bot 发送任意消息(比如 “Hello”)。
打开浏览器,访问以下 URL:
https://api.telegram.org/bot<YourBotToken>/getUpdates
替换
<YourBotToken>
为你在步骤 1 中获得的 API Token。你将看到返回的数据中包含一个
chat
对象,其中id
字段就是你的 Chat ID。
3. 创建 Cloudflare Worker
接下来,创建一个 Cloudflare Worker 来接收 Cloudflare 的通知并转发到 Telegram。
登录 Cloudflare Dashboard。
选择你要设置 Worker 的域名。
进入 Workers 页,点击 Create a Worker。
在 Worker 编辑器中,编写以下代码来转发通知到 Telegram:
```javascript
// Telegram Bot Token 和 Chat ID
const TELEGRAM_TOKEN = '<YourBotToken>';
const CHAT_ID = '<YourChatID>';
// 发送消息到 Telegram
async function sendMessageToTelegram(message) {
const url = `https://api.telegram.org/bot${TELEGRAM_TOKEN}/sendMessage`;
const payload = {
chat_id: CHAT_ID,
text: message,
parse_mode: "Markdown" // 使用 Markdown 格式,也可以改为HTML
};
const response = await fetch(url, {
method: 'POST',
body: JSON.stringify(payload),
headers: {
'Content-Type': 'application/json',
},
});
return response;
}
// Cloudflare Worker 主函数
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
if (request.method === 'POST') {
try {
// 获取 Cloudflare 的 Webhook 通知数据
const data = await request.json();
// 自定义消息格式,你可以根据需要解析 Cloudflare 的通知内容
const message = `Cloudflare Notification:\n${JSON.stringify(data, null, 2)}`;
// 将通知转发到 Telegram
await sendMessageToTelegram(message);
return new Response('Notification sent to Telegram', { status: 200 });
} catch (err) {
return new Response('Error processing notification', { status: 500 });
}
}
// 如果不是 POST 请求,返回 405 方法不允许
return new Response('Method Not Allowed', { status: 405 });
}
注意:
替换
'<YourBotToken>'
和'<YourChatID>'
为你自己的 Telegram Bot Token 和 Chat ID。body
中的内容是从 Cloudflare 收到的 Webhook 数据。你可以根据实际的通知格式来调整消息内容。
4. 设置 Cloudflare Webhook
现在,你需要配置 Cloudflare 将 Webhook 发送到你的 Worker:
进入 Cloudflare 的 Notifications 页面(Cloudflare Dashboard > Alerts & Notifications)。
在 Webhook URL 字段中输入你创建的 Worker URL。Worker URL 格式如下:
phpCopy codehttps://<your-worker-subdomain>.<your-worker-domain>.workers.dev
你可以从 Worker 页面获得这个 URL。
配置 Webhook 通知类型,比如选择 “Security Events” 或 “Traffic Alerts” 等,根据需要设置。


5. 测试和验证
配置完成后,Cloudflare 会将通知发送到你设置的 Worker,Worker 会将通知转发到 Telegram。你可以通过触发 Cloudflare 的通知事件来测试是否能够成功收到消息。

额外注意事项
如果你想在 Telegram 中显示更友好的格式,可以使用 Telegram 的 Markdown 或 HTML 格式化功能。例如,使用
parse_mode: "Markdown"
来格式化文本。你可以在 Worker 中加入额外的逻辑,例如过滤特定类型的通知、格式化消息内容等。
通过这种方式,你可以方便地将 Cloudflare 通知通过 Webhook 转发到 Telegram。
Last updated