Інтеграція Telegram Bot API у мобільний застосунок

Сповіщення губляться в пошті та месенджерах, а реакція на звернення затягується. Ми налаштовуємо інтеграцію Telegram Bot API у мобільний застосунок під ключ: від проєктування сценаріїв до запуску та підтримки. Скорочуємо час реакції на звернення та втрати повідомлень, а ваша команда отримує прозорий контроль над кожним сповіщенням.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція Telegram Bot API у мобільний застосунок
Простий
~2-3 дні
Часті запитання

Чому інтеграція Telegram Bot API ламається на проді

Інтеграція Telegram Bot API в мобільний застосунок майже завжди проходить гладко на тестовому боті з одним активним користувачем — і розвалюється, коли в проді тисячі пристроїв, нестабільний мобільний інтернет і кілька інстансів бекенду.

Основна причина в тому, що Bot API працює за моделлю long polling або webhook: застосунок отримує оновлення через сервер, а не напряму, і будь-яка помилка в цьому ланцюжку перетворюється на втрачені сповіщення або дублі.

Класичний збій — втрата оновлень. Якщо сервер підтверджує апдейт до того, як він реально доставлений на пристрій, а застосунок у цей момент пішов у фон або втратив мережу, повідомлення зникає безповоротно. Telegram вважає його доставленим і повторно не надішле.

Зворотна ситуація — дублі: при повторній доставці після таймауту один і той самий апдейт обробляється двічі, і користувач бачить два однакових push або два записи в історії.

Третє джерело відмов — розходження стану між клієнтом і ботом. Користувач натиснув кнопку в застосунку, бот оновив статус на сервері, але мобільний клієнт залишився на старій версії екрана.

Без явної синхронізації стану такі розбіжності накопичуються і призводять до конфліктів: бот вважає заявку закритою, застосунок показує її активною.

Розбираємо, як це закривається: ідемпотентна обробка апдейтів, надійна доставка сповіщень з підтвердженням на стороні пристрою та єдине джерело правди для стану.

Що дає керована інтеграція бота в застосунок

Доставлюваність повідомлень замість «надіслали й сподіваємося»

Повідомлення, надіслане через бота, проходить ланцюжок: застосунок → сервіс-посередник → Telegram Bot API → пристрій.

Обрив на будь-якому кроці раніше виглядав як «повідомлення загубилося»: користувач не дізнався про статус замовлення, підтримка отримувала тікет і вручну з'ясовувала, що сталося.

Керована інтеграція фіксує результат кожного надсилання і повторює доставку з наростаючою паузою, доки не отримає підтвердження. Частка доставлених повідомлень виходить на рівне плато, а не просідає в години пікового навантаження.

Час реакції підтримки та клас відмов при перезапуску

Коли статус доставки видно в спільній панелі, оператор відповідає за фактом, а не за здогадкою: час реакції скорочується з годин до хвилин, бо не потрібно піднімати логи й перепитувати користувача.

Окремо закривається клас відмов при перезапуску сервісу-посередника — черга не губиться, необроблені запити відновлюються зі сховища станів, і після рестарту жодне повідомлення не йде в нікуди.

Навантаження на підтримку та передбачуваність

Кожен усунений клас відмов — це потік однотипних звернень, який просто зникає. Підтримка перестає бути «приймачем збоїв» і займається змістовними питаннями, а команда бачить метрики доставки й часу реакції як звичайні робочі показники, а не як інцидент. Розбираємо, як це влаштовано в конфігурації та на стороні застосунку.

Способи підключення: порівняння технічних варіантів

Підключення бота до застосунку — це завжди вибір між двома режимами доставки оновлень і однією проміжною ланкою.

Режим вебхука: платформа сама надсилає кожну подію на вашу адресу, затримка мінімальна, але потрібна публічна адреса з валідним сертифікатом і обробник, який відповідає швидко — інакше платформа накопичує повтори і з часом вимикає доставку.

Режим опитування оновлень: застосунок сам періодично запитує накопичені події, публічна адреса не потрібна, зате з'являється затримка і зайвий трафік, а за кількох екземплярів сервісу події починають дублюватися.

Проміжний сервіс знімає частину цих обмежень: він приймає вебхук, ставить події в чергу і роздає їх застосунку у зручному темпі. Це додає один вузол у схему, але дає стійкість до піків і дозволяє оновлювати застосунок без простою приймання подій.

Варіант Коли підходить Обмеження
Вебхук напряму Один сервіс, стабільна публічна адреса, потрібна мінімальна затримка Потребує сертифікат і швидку відповідь; у разі недоступності адреси доставка призупиняється
Опитування оновлень Розробка й налагодження, закритий контур без публічної адреси Затримка доставки, зайві запити, дублі за кількох екземплярів
Проміжний сервіс Кілька екземплярів, пікові навантаження, часті релізи Складніша схема: потрібен контроль черги й повторної обробки

На практиці вибір майже завжди визначається тим, скільки екземплярів застосунку працює одночасно і чи є в нього публічна адреса.

Якщо екземпляр один і адреса стабільна — прямий вебхук простіший і швидший; якщо застосунок масштабується або розгортається в закритому контурі — проміжний сервіс окупається вже на перших піках. Опитування оновлень залишаємо для налагодження й локальних сценаріїв, де затримка не критична.

Окремо варто закласти обробку збоїв: повторну доставку, ідемпотентність операцій і журнал подій, щоб розбір інциденту займав хвилини, а не години.

Як ми ведемо інтеграцію: етапи інженерної роботи

Інтеграція з Telegram Bot API майже ніколи не починається з чистого аркуша: у замовника вже є бот, вебхук або опитування оновлень, частина сценаріїв живе в мобільному застосунку, частина — на сервері. Тому перший крок — не писати код, а зафіксувати поточний стан і точки відмови.

  1. Аудит інтеграції. Збираємо карту: які методи Bot API викликаються, де зберігається токен, хто і як отримує оновлення, як застосунок дізнається про статус замовлення чи платежу. На виході — список вузьких місць: гонки при повторній доставці, відсутність ідемпотентності, ручні кроки в підтримці.
  2. Проєктування схеми обміну. Визначаємо, хто володіє станом — бот чи бекенд застосунку, — і розводимо потоки: команди користувача, сповіщення, службові події. Фіксуємо формат повідомлень і правила ретраїв, щоб втрата одного апдейту не ламала сценарій.
  3. Налаштування вебхука. Переводимо бота з опитування оновлень на вебхук там, де потрібна передбачувана затримка, або залишаємо опитування для середовищ без публічної адреси. Налаштовуємо секретний заголовок, обмеження за IP і валідацію вхідних запитів.
  4. Перевірка доставки. Проганяємо сценарії під навантаженням і зі штучними збоями: дублі апдейтів, таймаути, повторне надсилання після падіння сервісу. Дивимося, що користувач не отримує два однакових сповіщення і не втрачає жодного.
  5. Складання і підключення в застосунку. Зв'язуємо мобільний клієнт з бекендом бота: авторизація за токеном, прив'язка акаунта, обробка сценаріїв, коли користувач повернувся в застосунок із чату.
  6. Спостережуваність. Налаштовуємо журналювання викликів, метрики доставки й алерти на зростання помилок — щоб збій в обміні було видно до скарг користувачів.
  7. Передача документації. Віддаємо регламенти експлуатації: як оновлювати токен, що робити при зміні адреси вебхука, як читати журнали і куди дивитися при інциденті.

Кожен етап закінчується артефактом, який можна перевірити, — схемою, конфігурацією або тестовим прогоном. Опишіть вашу задачу — повернемося з оцінкою та планом робіт за цими кроками.

Артефакти та конфігурація, які залишаються у вас

Інтеграція бота із застосунком — це не «налаштували й забули»: через пів року команда має розуміти, як влаштована зв'язка, де лежать ключі та що робити при збої. Тому весь результат передаємо у вигляді робочого комплекту, а не усних домовленостей.

  • Схема інтеграції — як застосунок, бот і ваш бекенд обмінюються подіями: точки входу, черги, обробка повторів і таймаутів.
  • Конфігурація бота — параметри вебхуків, список команд, шаблони повідомлень і розмітка клавіатур в одному файлі, а не в листуванні з розробником.
  • Політики доступу — які сервіси та люди можуть читати токени, змінювати налаштування й дивитися логи; ротація секретів за розкладом.
  • Регламент експлуатації — що моніторимо, які алерти критичні, як відкочуємося на попередню конфігурацію при збої.
  • Інструкція для команди — покроковий розбір типових задач: додати команду, змінити привітання, підключити новий сценарій.
  • Карта залежностей — які зовнішні сервіси задіяні та що станеться з ботом при їхній недоступності.
  • Журнал змін — що і коли змінювалося в конфігурації, щоб розбирати інциденти без археології.

Комплект розрахований на вашого інженера, а не лише на нас: за цими документами новий розробник входить у проєкт за дні, а не тижні. Якщо у вас уже є своя команда підтримки — передаємо все в її форматі та проводимо розбір на реальних сценаріях.

Кейс: як скоротили втрати сповіщень і час реакції

Клієнт — сервіс доставки з застосунком на iOS і Android — скаржився, що клієнти «зникають»: замовлення оформлено, кур'єра призначено, а людина дізнається про це, лише відкривши застосунок.

Сповіщення надходили через штатні канали, але частина пристроїв обрізала їх у фоні, а частина користувачів просто вимикала пуші. Підтримка тонула в зверненнях «де моє замовлення», і кожне таке звернення коштувало часу оператора.

Розібрали воронку доставки сповіщень і побачили дві дірки: немає підтвердження, що повідомлення реально дійшло до пристрою, і немає запасного каналу, коли основний мовчить.

Додали Telegram Bot API як другий канал: бот прив'язується до акаунта за одноразовим кодом із застосунку, а статуси замовлення надходять і в месенджер.

Ключове — зворотний зв'язок: система бачить, доставлено повідомлення чи ні, і якщо основний канал не підтвердив доставку за відведений час, дублює його в бот.

Що змінилося в цифрах

Метрика До Після
Частка доставлених сповіщень ~70% вище 95%
Час реакції підтримки на «зникнення» години хвилини
Звернення «де моє замовлення» базовий рівень менше в рази

Окремо налаштували, що бот не дублює те, що людина вже побачила в застосунку, — інакше канал швидко перетворюється на спам і його вимикають. Прив'язка зберігається на нашій стороні, відв'язка — в один тап, а при зміні пристрою користувач проходить прив'язку заново.

Через кілька тижнів після запуску частка доставлених сповіщень зросла з приблизно 70% до значень вище 95%, а потік звернень щодо зникнень замовлень упав кратно — підтримка переключилася на реальні проблеми замість «перевірте статус».

Це той випадок, коли другий канал не замінює пуші, а страхує їх: система знає, що повідомлення дійшло, і не залишає клієнта в невіданні.

Чим вебхук відрізняється від опитування оновлень і що вибрати

У Telegram Bot API є два способи отримувати оновлення: застосунок сам опитує сервер методом getUpdates або Telegram сам надсилає апдейти на вказану адресу через setWebhook.

Різниця не косметична — вона визначає затримку доставки, стійкість під навантаженням і те, яку інфраструктуру доведеться тримати.

Опитування працює без публічної адреси: застосунок періодично запитує сервер, чи є нові повідомлення, і підтверджує оброблені через offset.

Це зручно для локального налагодження та закритих контурів, але затримка дорівнює інтервалу опитування, а за кількох екземплярів застосунку легко отримати дублі або пропуски — стан доводиться синхронізувати окремо.

Вебхук перевертає схему: Telegram сам ініціює запит до вашого обробника, затримка доставки падає до часу одного мережевого запиту, а горизонтальне масштабування стає чесним — кілька екземплярів за балансувальником розбирають потік незалежно.

Ціна вебхука — вимоги до інфраструктури. Потрібна публічна адреса з валідним TLS-сертифікатом, обробник має відповідати швидко й не блокуватися на довгих операціях: важку логіку виносимо в чергу, а Telegram отримує підтвердження одразу.

Якщо обробник падає або відповідає помилкою, Telegram повторює доставку — отже, обробка має бути ідемпотентною за update_id, інакше повтор створить дубль замовлення або подвійне списання.

Стійкість вирішується по-різному. Опитування переживає перезапуски завдяки збереженню offset, але при простої накопичує чергу й упирається в ліміти запитів.

Вебхук залежить від доступності вашої адреси: короткочасний збій призводить до повторів, тривалий — до відключення вебхука, тому потрібен моніторинг і автоматичне перевстановлення.

Для продакшену з живим трафіком вибираємо вебхук, для налагодження та ізольованих стендів — опитування; перехід між режимами оборотний і робиться однією операцією.

Технічні сумніви перед стартом інтеграції

Перед стартом інтеграції в інженерних команд зазвичай виникає один і той самий набір питань: як бот поводитиметься під навантаженням, що буде при збої мережі, де зберігати токен і чи можна відкотити невдалу зміну без простою. Нижче — відповіді на ті, що найчастіше гальмують рішення.

Як бот переживає ліміти запитів Telegram Bot API?

При масових розсилках або піковій активності бот впирається в обмеження на кількість запитів за секунду.

Ми ставимо чергу з експоненційною затримкою та повторним надсиланням, а не «довбаємо» API в циклі: при відповіді з кодом перевищення ліміту запит повертається в чергу зі збільшеним інтервалом. Так бот не втрачає повідомлення і не отримує тимчасове блокування.

Для розсилок на десятки тисяч отримувачів додаємо шардування за часом — доставка розтягується, але проходить повністю.

Що відбувається при повторній доставці однієї й тієї самої події?

Telegram може надіслати апдейт повторно, якщо не отримав підтвердження. Ми робимо обробку ідемпотентною: кожній події присвоюється ідентифікатор, і повторна доставка не створює дубль замовлення, платежу або повідомлення.

Ідентифікатори зберігаються з TTL, достатнім для покриття вікна повторної доставки. Це захищає від подвійних списань і дубльованих повідомлень користувачу.

Наскільки безпечно зберігати токен бота?

Токен — це повний доступ до бота, тому в коді та репозиторії його бути не повинно. Ми тримаємо його в захищеному сховищі секретів, підставляємо в середовище виконання при старті та ротуємо при підозрі на витік.

Доступ до сховища обмежений за ролями, а всі операції з токеном логуються. При компрометації токен відкликається через службового бота, новий випускається без перезбирання застосунку.

Чи можна відкотити зміни інтеграції без простою?

Так. Ми викочуємо зміни через канарковий реліз: нова версія обробника отримує малу частку трафіку, метрики порівнюються з поточними, і при відхиленні трафік повертається на попередню версію. Схема даних при цьому розширюється зворотно сумісно, тому відкат не потребує міграцій. Користувачі не помічають перемикання — бот продовжує відповідати.

Якщо ваше питання не потрапило до списку — опишіть задачу, повернемося з оцінкою та планом робіт.

Обговоримо ваше завдання і повернемося з оцінкою

Щоб розбір був предметним, а не «розкажіть у двох словах», надішліть вступні щодо вашого сценарію: як застосунок пов'язаний з Telegram Bot API зараз (вебхук чи опитування), які події бота мають доходити до користувача в застосунку і що вже працює. Цього достатньо, щоб оцінити обсяг і не ганяти вас по колу уточнень.

Далі ми розбираємо завдання і повертаємося з планом робіт: де проходить межа між ботом і застосунком, як зв'язуються акаунти, які сценарії сповіщень та авторизації закриваємо, що перевикористовуємо з поточного коду.

За кожним пунктом — оцінка термінів і склад робіт, з явно винесеними ризиками: обмеження платформи, доставка повідомлень, поведінка при недоступності сервісу.

Що ви отримуєте на виході розбору:

  • схему зв'язки застосунку, бота і бекенду з точками відмови;
  • перелік сценаріїв: вхід через бота, сповіщення, передача даних у застосунок;
  • склад робіт за етапами з оцінкою термінів і залежностями;
  • вимоги до доступів, токенів бота і тестового середовища;
  • план випуску: що викочуємо першим, як перевіряємо на реальних користувачах;
  • умови підтримки після запуску і порядок доопрацювань.

Наступний крок простий: опишіть завдання у вільній формі — поточний стан, що має працювати після інтеграції, які терміни критичні. Ми повернемося з оцінкою і планом, а не із загальними словами.

Наші компетенції:

Останні роботи

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714