Перейти к основному содержимому

Webhook без веб сервера

· 2 мин. чтения

🆘 UPD 2023.12.15

Этот пост немного устарел, но он уже переписан и актуализирован тут 👈 Рекомендую сразу читать статью по ссылке

  • Все упоминания poll.gmod.app в этом посте заменены на poll.def.pm (но оба домена рабочие в демо режиме)

Проблема

Если развернуть веб сервер с вебхуком возможности нет, а принимать сообщения от какого-то сервиса (например Telegram) нужно, мы используем polling. Это когда мы сами спрашиваем у сервиса, нет ли у него для нас новостей. В случае с Telegram, это происходит через запрос getUpdates.

Но что, если сервис не имеет своего поллинг сервера и предлагает лишь доставку апдейтов на webhook, как например GitHub? Или есть ряд других проблем, которые перечислены в разделе "Применения"?

Решение

poll.def.pm — микросервис, который может выступить в качестве вебхука, а сам отдавать обновления по запросу (по подобию getUpdates у телеграм)

Там где вам нужно указать ссылку на вебхук, вы указываете ссылку на наш микросервис. Мы принимаем входящие сообщения, храним их у себя, а вы потом получаете их через http GET запрос

Документация

poll.def.pm документация

Применения

Главная цель – сделать единую точку, куда все сервисы будут присылать апдейты, а клиенты забирать все сразу с одного единственного места. Проще выполнить один GET запрос вместо 20 разных.

Изначальное применение найдено в Garry's Mod. Это игра, где разработчики имеют условно полную свободу действий на своих серверах, но поднять веб-сервер является проблемой.

  • gm-donate – сервис приема пожертвований для Garry's Mod серверов использует poll.def.pm как способ мгновенной доставки сообщений о платежах Garry's Mod серверам для мгновенного зачисления
  • ggram – библиотека для создания Telegram ботов на Garry's Mod серверах может использовать и poll.def.pm как единую точку, куда множество Telegram ботов присылают апдейты.
  • Integromat – nocode сервис для автоматизации всего и вся присылает отчеты на poll.def.pm, которые в дальнейшем обрабатываются кодом на Garry's Mod сервере
  • Monobank API – украинский мобильный банк, присылает на единственный URL poll.def.pm пуши сразу с десятка аккаунтов, когда по карте проходит какая-то транзакция, а специальный Telegram бот отправляет информацию о транзакции в чат
  • GitHub присылает сообщения с коммитами с нескольких репозиториев сразу, а специальный бот делает красивый summary в специальном чате