텔레그램 웹훅
Jan 19, 2025 pm 08:36 PM폴링 모드에 작별 인사를 하고 효율적인 Telegram Webhook을 도입하세요! Telegram 서버에 지속적으로 업데이트를 요청하는 폴링 방식과 달리 Webhook을 사용하면 Telegram이 업데이트를 서버에 직접 푸시할 수 있으므로 서버 리소스 소비가 줄어들고 효율성이 크게 향상됩니다. 이전 기사에서는 Node.js를 사용하여 Telegram 로봇을 구축하고 폴링 방법을 사용하여 업데이트를 얻는 방법을 설명했습니다. 이 접근 방식이 효과적이지만 확장성을 찾고 있다면 현재 속도 제한이 발생하지 않더라도 웹훅으로 전환하면 봇이 더 효율적으로 실행되고 증가하는 트래픽을 쉽게 처리하여 서버의 부하를 줄일 수 있습니다.
텔레그램 웹훅 주요 고려사항
웹훅을 사용할 때 다음 사항에 꼭 주의하세요.
허용된 포트
텔레그램은 웹훅 포트 4개만 지원합니다. 이 제한사항의 이유는 현재 명확하지 않지만 향후 변경될 수 있습니다. 현재 지원되는 포트는 다음과 같습니다.
- 443 (HTTPS 권장)
- 80
- 88
- 8443
웹후크가 제대로 작동하려면 이러한 포트 중 하나가 사용 가능하고 액세스 가능해야 합니다. 포트를 명시적으로 지정하지 않으면 웹훅은 기본적으로 8443 포트로 설정됩니다.
서버 제한
포트는 4개만 허용되므로, 동일한 서버에서 웹훅을 사용하는 애플리케이션의 개수는 4개를 초과할 수 없습니다.
전제조건
설정을 시작하기 전에 다음 사항을 확인하세요.
- Node.js 설치: 아직 설치되지 않은 경우 nodejs.org에서 Node.js를 다운로드하여 설치하세요.
- 텔레그램 계정: 봇 토큰을 받고 봇과 상호 작용하려면 텔레그램 계정이 필요합니다.
- HTTPS URL용 Ngrok: Telegram은 HTTPS 엔드포인트를 사용하려면 웹후크가 필요합니다. Ngrok을 사용하여 로컬 서버를 인터넷에 노출하세요.
전체 코드는 Github에서 확인할 수 있습니다.
텔레그램 웹훅 설정(Node.js 예시)
// 导入Telegram Bot API const TelegramBot = require('node-telegram-bot-api'); // 使用您的机器人令牌替换 const token = 'your telegram token'; // 请查看我的文章,了解如何在Telegram上从@BotFather获取机器人令牌 const WEB_HOOK_URL = 'https://localhost:3000/telegram-bot-webhook'; // 注意:它在localhost上无法工作,因此请使用ngrok之类的隧道服务。 // 创建使用Webhook的机器人 const bot = new TelegramBot(token, { webHook: { port: 88, // Telegram Webhook允许的端口:443、80、88、8443 }, }); // 初始化Webhook const initWebHook = async () => { const webhookInfo = await bot.getWebHookInfo(); if (webhookInfo.url !== WEB_HOOK_URL) { await bot.setWebHook(WEB_HOOK_URL, { max_connections: 100, }); } }; initWebHook(); // 监听任何消息 bot.on('message', (msg) => { const chatId = msg.chat.id; // 简单命令处理 if (msg.text.toLowerCase() === '/start') { bot.sendMessage(chatId, '欢迎!今天我能如何帮助您?', { reply_markup: { keyboard: [['/start', '/help']], }, }); } else if (msg.text.toLowerCase() === 'hello') { bot.sendMessage(chatId, `你好,${msg.from.first_name}!`); } else { bot.sendMessage(chatId, "我不确定如何回应。"); } }); // 导出机器人模块 module.exports = bot;
텔레그램 웹훅 라우팅
const express = require("express"); const app = express(); const bot = require("./bot"); // 解析POST请求的JSON主体 app.use(express.json()); app.get("/", (req, res) => { res.send("Hello World"); }); app.post("/telegram-bot-webhook", (req, res) => { bot.processUpdate(req.body); res.sendStatus(200); }); app.listen(process.env.PORT || 3000, () => { console.log("服务器正在3000端口运行"); });
요약
웹훅으로 전환하면 Telegram 속도 제한 문제를 제거하고 봇의 효율성을 높일 수 있습니다. 서버를 올바르게 구성하고, 허용된 포트를 사용하고, HTTPS를 사용하여 연결을 보호하는지 확인하세요.
내 다음 기사가 게시되면 알림을 받으려면 나를 팔로우하세요 ?.
위 내용은 텔레그램 웹훅의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









