Use Webhook to send notification to Telegram messenger
要将消息发送到特定的 Telegram 聊天,你需要知道聊天 ID。可以通过以下步骤获取:
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:
Copy
```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。