Telegram long polling или webhook

LongPolling — это когда приложение само ходит на сервера telegram с какой-то периодичностью и спрашивает, не появилось ли чего-нибудь новенького для меня?
WebHook — когда telegram сам уведомляет мое приложение о новых сообщениях.

LongPolling на скриптовом языке

Если я пишу бота на python или php, где процесс не живет в системе, а запускается nginx’ом отрабатывает и сразу умирает, то каким образом будет работать long polling метод? Кто будет опрашивать сервера telegram на наличие обновлений, если постоянно живущего процесса в системе нет?

WebHook на Java

Если я работаю через webhook, и пишу бота на java, где процесс живет постоянно, то мне нужно поднимать tomcat и создавать endpoint для зарегистрированного вебхука? Или если имплементировать метод getBotPath() абстрактного класса TelegramWebhookBot , то веб-сервер сам поднимется?

Иначе я не пойму: telegram отправляет http-запрос на указанный мною url, и должен же быть какой-то веб-сервер, способный этот http-запрос обработать.

Webhooks vs Websockets vs HTTP Streaming — Which Event-Driven API to use?

Источник: ru.stackoverflow.com

Что выбрать для телеграм бота? Вебхуки или лонгполлинг?

Я не писал телеграм ботов. Задача такова. Нужно написать бота на го, которому отсылаешь голосовое сообщение, а он обрабатывает это аудио и отвечает текстом. Для обработки аудио буду обращаться по grpc к другому сервису.
У меня встал вопрос. А что использовать? Если интернет не врет, то есть два варианта. Лонгполлинг или вебхуки. Как я понял в 100% задач лучше вебхуки. Но я подозреваю, что я не прав.

Еще по теме:  Видеочат в Телеграмме как пользоваться

Что лучше подойдет в моем случае?

  • Вопрос задан более года назад
  • 613 просмотров

Комментировать
Решения вопроса 1

EvgenyMamonov

Senior software developer, system architect

«Long polling» периодически опрашивает телеграм сервер, за счёт этого пользователю будет казаться, что бот «торзмозит», т.к. между отправкой сообщения от пользователя и до получения ответа будут паузы.
По крайней мере у меня было именно так.
Еще стоит сказать о том, что «Long polling» не подойдёт если говорить о нагрузках.

После перехода на WebHook’и — сразу заработало всё очень резво.
Также с использованием WebHook’ов у вас будет возможность горизонтально масштабировать бота в случае роста нагрузок.
Если бы у меня стояла такая задача — я бы использовал WebHook’и.

Ответ написан более года назад
Нравится 4 3 комментария

Мне это пока не нужно, но все-таки интересно. Не знаете ли вы как горизонтально масштабируются телеграм боты? Если в случае с микросервисами мне все вроде бы понятно. Есть балансировщик, он распределяет по инстансам микросервиса и так далее.

Perbandingan Komunikasi Data pada Chat BOT Telegram dengan Metode Web Hook Vs Metode Long Polling


С телеграм ботами же другая история

EvgenyMamonov

Dmitrii, это явно проблема на стороне бота, как один из вариантов — могло разрываться соединение с базой, и при новом запросе с телеграм скрипт понимал, что соединение оборвано, пытался восстановить и т.д.

EvgenyMamonov

nakem, тут всё точно так же как и с обычными HTTP запросами, только в привычном варианте HTTP запрос приходит от пользователя/клиента, а в случае телеграм бота — запрос приходит с телеграм сервера, но это всё тот же HTTP запрос.

Т.е. достаточно просто запустить сервис бота на разных серверах и, например, nginx’ом балансировать трафик между ними.

Еще по теме:  Сломал диалог Телеграмм смайлами

Источник: qna.habr.com

Python Telegram BOT | Webhook или Poling?

large.jpg

Здравствуйте формучане! Сегодня я бы хотел обсудить с вами довольно важную и в то же время интересную тему насчет телеграм ботов:-)
Начнем пожалуй вообще с конструкции самого простого бота на Python:

Это простой бот ,который пишет вам «Привет! Напиши мне что-нибудь!» при команде «/start». Обратите внимание на последнюю строку :

executor.start_polling(dp)

l4_1.jpg

Тут работает метод Polling, да,иногда он подходит для каких-либо задач. Но если у вас какой-то серьезный бот,который работает 24/7 , то у вас может произойти ошибка:
Ошибка 504 gateway timeout – это код состояния HTTP, который появляется, когда один сервер не получает своевременный ответ от другого сервера, который действует как шлюз или прокси. Проще говоря, это означает, что сервер не смог выполнить ваш запрос в течение заданного периода времени.
И ваш бот/боты просто крашнутся
Давайте вообще разберем, чем отличается метод Polling от метода WebHook.
Polling — это метод ,при котором ваш телеграм бот делает постоянные запросы к серверу телеграм, и из-за этого часто возникают ошибки с timeout
WebHook — это метод,при котором не мы отправляем запросы к серверу в ,а сервер Telegram оповещает нас ,если произошло что-то новое. Для этого метода нужен будет свой сервер!(но мы его напишем чуть позже)
Если вообще простым языком,то допустим ,что почта это Telegram ,а мы с вами Polling . Мы постоянно будем бегать на почту ,чтобы спросить ,не пришло ли нам новое письмо,а если мы будем в качестве WebHook’а, то мы будем сидеть на попе ровно и ждать,пока почта сама нас уведомит о новом письме. Думаю,что так понятней! Но как же работать через вебхуки?
Начинаем работу с сервером и SSL-сертификатами!
Для начала,небольшое отступление:
-При работе с webhook ,нам будет нужен SSL сертификат,иначе telegram просто не примет наш сервер на которой он должен будет отправлять запросы!
Начнем!
Создаем сертификат
Повторюсь: я не считаю себя супер-мега-крутым специалистом в айти, возможно, я что-то делаю неправильно, тем не менее, это работает и выглядит вполне прилично. Ладно, приступим.
Для начала, установим пакет openssl:
sudo apt-get install openssl
Затем сгенерируем приватный ключ:
openssl genrsa -out webhook_pkey.pem 2048
Теперь, внимание, генерируем самоподписанный сертификат вот этой вот длинной командой:
openssl req -new -x509 -days 3650 -key webhook_pkey.pem -out webhook_cert.pem
Нам предложат ввести некоторую информацию о себе: двухбуквенный код страны, имя организации и т.д. Если не хотите ничего вводить, ставьте точку. НО! ВАЖНО! Когда дойдете до предложения ввести Common Name, следует написать IP адрес сервера, на котором будет запущен бот.

Еще по теме:  Телеграмм был недавно это сколько времени назад

В результате получим файлы webhook_cert.pem и webhook_pkey.pem
Далее нужно написать сам сервер и подключить SSL. Устанавливаем вишню:

python3 -m pip install cherrypy

Источник: vlmi.top

Рейтинг
( Пока оценок нет )
Загрузка ...