Telegram VoIP для операцій: сповіщення в обхід «Не турбувати», які не дратують одержувачів
Чому виклик Telegram VoIP — найдешевший надійний спосіб розбудити чергового без оплати оператора за повідомлення, скільки це коштує в масштабі (спойлер: нуль) і які режими відмови треба обійти.
- Автор
- WardenPoint team
- Опубліковано
- 21 трав. 2026 р.
- Читання ~ хв
- 4
Марек із нашої команди у серпні минулого року проґавив пожежу на проді о 04:12. Телефон лежав за метр від голови. Вібрації вимкнені. Режим зосередження від 22:00 до 07:00. Slack, Teams, email, навіть SMS від Twilio — усе проходило крізь той самий фільтр тиші, який Марек будував рік, щоб перестати реагувати на кожен пінг від бота безперервної інтеграції. Аварія розвʼязалася сама о 04:47, коли хтось із другої зміни в іншому місті помітив аномалію й уручну перезапустив сервіс. Марек дізнався вранці.
Після тижня розбору ми додали в ланцюжок один канал, який раніше тримали за іграшку — голосовий виклик через Telegram. З того моменту Марек не пропустив жодної пожежі. Решта цього тексту — про те, як спроєктувати ланцюжок, який реально працює, з огляду на три конкретні сценарії відмови, з якими ми зіткнулися за останні півтора року.
Кожен інструмент сповіщень на чергуванні має три питання, на які мусить відповісти:
- Як розбудити чергового, якщо телефон у нічному режимі?
- Що робити, якщо перший канал не спрацював?
- Скільки це коштує на масштабі?
Telegram VoIP-виклик закриває перше питання дешево та ефективно. Друге і третє — окрема розмова, від якої залежить, чи стане Telegram надійним основним каналом, чи лишиться допоміжним.
Що дає Telegram, чого не дають звичайні сповіщення
iOS і Android режим «Не турбувати» працює просто. Звичайні push-сповіщення фільтруються. Вхідні дзвінки — ні. Система операційна трактує дзвінок як категорію вищого пріоритету, бо історично дзвінок означав живу людину з реальною справою.
Розробники Telegram, коли проєктували вбудовані голосові виклики, лишили їх у тій самій категорії, що й звичайні дзвінки оператора. Виклик від бота через MTProto проходить тим самим шляхом, що й виклик від мами — повноекранне сповіщення, повний дзвінок, вібрація навіть у беззвучному режимі. Аплікація в беззвучному режимі, телефон у режимі «Не турбувати», людина спить — апарат усе одно дзвонить.
Чергуванню саме цього й бракує: голосного, безплатного шляху, який не вимагає угоди з оператором.
Коли черговий вимкнув сповіщення бота
Це найпоширеніша помилка. Інженер на третьому місяці чергувань вимикає вібрації Telegram, бо «весь робочий чат туди йде». Або вимикає сповіщення від конкретного бота. Або встановлює фільтр у системі iOS «дозволяти лише обраних». У всіх цих випадках Telegram-виклик не задзвонить — клієнтська аплікація не отримає сигналу про вхідний.
Що тут не працює: повторити Telegram-виклик. Той самий бот, той самий клієнт, той самий фільтр. Результат буде ідентичним.
Що працює: SMS як другий крок ланцюжка. SMS іде через сигнальну мережу SS7, повністю незалежну від ходу Telegram. Телефон, який не реагує на бота, може реагувати на SMS — інша черга, інший пріоритет, інші правила фільтрації.
Крок 1: Telegram VoIP до основного чергового
Крок 2: Очікування 60 секунд
Крок 3: SMS до основного чергового (інший шлях)
Затримка 60 секунд — емпіричний компроміс. Менше — будимо людину двічі, спочатку гучним викликом, потім SMS, і це дратує. Більше — втрачаємо хвилини на інцидент. 60 секунд достатньо, щоб людина з душу дотягнулася до телефону, але недостатньо, щоб знову заснути.
Падіння інфраструктури Telegram — рідко, але документовано
Це рідкісна, але документована подія. За останні два роки відомі публічні випадки тривалістю від 45 хвилин до 4 годин. У такі періоди жоден Telegram-виклик не пройде — інфраструктура MTProto недоступна для клієнтських застосунків.
Питання, яке тут стає критичним: чи залежить ваш запасний канал від тієї самої інфраструктури? Якщо ваше SMS-сповіщення йде через бот, який сам використовує Telegram API для генерації коду — це не запасний канал, це той самий канал в іншому обгортанні. Падіння Telegram = падіння всього ланцюжка.
Правильна архітектура: запасний канал має йти через незалежну інфраструктуру. У нашому ланцюжку це конкретно так:
Крок 3: SMS через Twilio (мережа SS7, незалежна від Telegram)
Крок 5: Звичайний голосовий дзвінок через Twilio (PSTN, ще одна незалежна мережа)
Telegram впав — ланцюжок проходить через два канали Twilio. Twilio впав — Telegram все одно дзвонить першим кроком. Обидва впали одночасно — у нас більші проблеми, ніж сповіщення.
Чергові з юрисдикцій, де Telegram заблоковано
росія, Іран, Китай, Пакистан. Якщо ваш черговий працює з однієї з цих юрисдикцій (фриланс, релокація, відрядження), Telegram-виклик може взагалі не дійти. VPN-маршрут для вхідних дзвінків нестабільний — тунель то відвалюється, то додає затримку, яка ламає рукостискання дзвінка. Для конкретних інженерів у конкретних точках Telegram треба трактувати як «у міру можливостей», не як основу.
Що тут працює: SMS і звичайний дзвінок мають свої власні проблеми в цих регіонах (місцеві оператори можуть блокувати міжнародні номери), але йдуть незалежно від Telegram. Для чергових у заблокованих регіонах конфігурація має ставити SMS і PSTN як основні канали, а Telegram-виклик — у кінець ланцюжка або взагалі відключений.
У більшості європейських команд це не проблема. Якщо у вас є хоча б один черговий в одному з цих регіонів — конфігурація ланцюжка має бути окремо для нього.
Повний ланцюжок з огляду на ці три сценарії
Зібравши все разом:
1. Telegram VoIP до основного чергового
2. Чекати 60 секунд
3. SMS через Twilio до основного (інша мережа)
4. Чекати 60 секунд
5. Звичайний дзвінок через Twilio до основного
6. Чекати 90 секунд
7. Повторити кроки 1–5 для резервного чергового
8. Ескалація до керівника плюс канал команди
Кожен крок продуманий під конкретний режим відмови. Перший — основний, дешевий, голосний. Другий — на випадок, якщо одержувач вимкнув бота. Третій — на випадок, якщо телефон взагалі ігнорує цифрові сповіщення. Четвертий — повторно для людей, які прокинулися на третій спробі.
Скільки це коштує
Telegram-виклик — нуль. SMS через Twilio — приблизно 0,0079 долара за сегмент. Звичайний дзвінок через Twilio — приблизно 0,04 долара. Команда з 200 нічних викликів на місяць платить приблизно 10 доларів за SMS і дзвінки разом — за безпеку нескінченних запасних каналів.
Окремий рахунок Twilio складається не з вартості сповіщень. Це вартість мінімального резервного депозиту, верифікації номерів-відправників і фіксованої місячної плати за активний номер. Залежно від ринку — 20-60 доларів на місяць. Telegram-виклик працює без цього. Але працює тільки тоді, коли Telegram працює.
Підготовка чергового до першого використання
Один разовий крок з боку чергового — почати чат з ботом командою /start. Це дає боту дозвіл на ініціювання дзвінків саме до цього клієнта. Без цього кроку Telegram блокує виклик автоматично — бот не може довільно дзвонити людям, які не виявили згоди на контакт.
Один разовий крок з боку оператора платформи — додати канал telegram_voip до конфігурації ескалації. У WardenPoint це окремий рядок у YAML-конфігурації або один параметр через адміністративний інтерфейс. Усе, що відбувається між двома цими кроками, — це бібліотечна інженерія, яка не цікавить ні оператора, ні чергового.
Читайте далі
Повʼязані дописи

PHP FFI виявився не тим інструментом: міст у дочірньому процесі для Telegram VoIP
Як фоновий потік GLib ламав кучу Zend у проді, чому ми винесли ntgcalls у дочірній процес, що спілкується JSON-рядками через канали, і два взаємні блокування плюс одне шестикратне прискорення на шляху до односекундних VoIP-дзвінків у Telegram.

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

Проєктування чергувань — що ми зрозуміли, поки робили своє
Шість правил, до яких ми дійшли після двох років чергувань командою з 4 інженерів — передачі першої/другої лінії, довжина зміни на вихідних, пастка «follow the sun» і як її обійти.