Чому телефонні дзвінки надійніші за email для критичних сповіщень
Коли сервер падає о 2-й ночі, email залишається непрочитаним. Телефонний дзвінок — ні. Розповідаємо, як побудувати систему гарантованих сповіщень через Automated Calls API.
Проблема тихих сповіщень
2:17 ночі. Сервіс обробки платежів кидає критичну помилку. Email прилітає у скриньку чергового інженера — поряд з 47 іншими сповіщеннями за минулий тиждень. Інцидент розростається. Вранці — втрачені транзакції та репутація.
Email і push-сповіщення підводять у найгірший момент: коли відповідальна людина спить, відійшла від комп’ютера або на нараді з вимкненим телефоном. Телефонний дзвінок пробивається крізь усе.
Коли потрібна гарантована доставка
Деякі сповіщення просто не можна пропустити:
- Виробничі інциденти — база даних впала, платіжний шлюз не відповідає, порушення безпеки
- Дедлайни по комплаєнсу — підписання договорів, подання звітів сьогодні
- Термінові підтвердження — банківські перекази, медична згода, видача доступів
- Ескалації — тікет відкритий 4 години, ніхто не відповів
Для таких сценаріїв потрібен рівень доставки 95%+. Телефонні дзвінки це забезпечують. Email — ні.
Гарантований дзвінок через API
Мінімальний API-запит, щоб підняти чергового інженера:
POST /api/calls
{
"destination": "0501234567",
"when": "now",
"retries": 10,
"text": "Критичний збій: платіжний сервіс недоступний. Відмова підключення до бази даних. Необхідні негайні дії.",
"language": "uk",
"webhook": "https://mysite.com/notifications/done?destination=0501234567"
}
Розберемо кожне поле.
destination — кому телефонувати
Номер телефону у будь-якому стандартному форматі. Також можна передати масив номерів для ланцюжка ескалації — спочатку дзвонимо основному контакту, якщо недоступний — переходимо до резервного.
when — зараз або за розкладом
"now" запускає дзвінок протягом секунд. Можна передати ISO 8601 timestamp для відкладеного виклику:
"when": "2026-03-15T08:00:00Z"
Відкладені дзвінки ідеальні для передачі чергування, ранкових брифінгів або нагадувань про SLA — доставляються точно в момент початку робочого дня.
retries — ключ до гарантованої доставки
Саме це робить телефонні дзвінки справді надійними. При "retries": 10 система:
- Робить дзвінок негайно
- Якщо немає відповіді або зайнято — чекає і повторює
- Повторює до 10 разів через налаштований інтервал
- Зупиняється, щойно дзвінок прийнято і повідомлення відтворено до кінця
Без повторних спроб — один неприйнятий дзвінок означає пропущене сповіщення. З 10 повторами ви додзвонитесь, навіть якщо людина на кілька хвилин відійшла.
Поведінка повторних спроб налаштовується — можна встановити інтервал між спробами (наприклад, кожні 2 хвилини) і зупинити повтори після першої успішної доставки.
text і language — синтез мови
Попередньо записані аудіофайли не потрібні. Передайте звичайний текст і код мови — система перетворить його на природне мовлення перед дзвінком.
Підтримувані мови: uk, en, es та інші. Текст може бути динамічним — вставляйте змінні дані безпосередньо в повідомлення:
"text": "Увага: замовлення {{order_id}} позначено для перевірки. Клієнт {{customer_name}} очікує.",
"language": "uk"
Це означає, що ваша система сповіщень може містити конкретний, дієвий контекст — а не просто «щось пішло не так».
webhook — підтвердження доставки
URL вебхука отримає POST-запит одразу після обробки дзвінка:
{
"destination": "0501234567",
"status": "answered",
"duration_seconds": 18,
"attempts": 3,
"delivered_at": "2026-03-14T02:19:43Z"
}
Використовуйте це, щоб:
- Позначити сповіщення як отримане у вашій системі моніторингу
- Зафіксувати підтвердження доставки для аудиту
- Запустити наступний крок ланцюжка ескалації (припинити дзвонити основному, перейти до менеджера)
Платите тільки за оброблені дзвінки
На відміну від традиційного тарифікування, де платять за кожну спробу виклику, ми знімаємо оплату лише коли дзвінок фактично оброблено — тобто аудіо відтворено абоненту.
Що це означає на практиці:
- Зайнято на спробі 1, відповідь на спробі 3: платите за один оброблений дзвінок
- Усі 10 спроб без відповіді: нічого не платите
- Дзвінок прийнято, людина поклала трубку через 2 секунди: платите за один оброблений дзвінок
Ця модель прив’язує витрати до реальної доставки. Ви не переплачуєте за недоступні номери або мережеві проблеми.
Практична ескалація на прикладі
Ланцюжок ескалації чергових через API:
// Запускається системою моніторингу
async function escalate(incident) {
const call = await automatedCalls.create({
destination: oncall.primary.phone,
when: 'now',
retries: 5,
text: `Виробничий інцидент: ${incident.title}. Рівень критичності: ${incident.severity}. Перевірте дашборд негайно.`,
language: 'uk',
webhook: `https://ops.mycompany.com/webhooks/call-delivered?incident=${incident.id}&tier=primary`
});
// Обробник вебхука ескалює до резервного, якщо основний не підтвердив інцидент протягом 10 хвилин
}
Обробник вебхука перевіряє, чи підтвердив основний контакт інцидент у вашій системі управління. Якщо ні — запускає другий дзвінок резервному контакту, потім менеджеру. Ескалація відбувається автоматично з повним журналом доставки.
Синтез мови vs. записане аудіо
| Синтез мови | Записане аудіо | |
|---|---|---|
| Динамічний контент | Так — вставка змінних | Ні — фіксоване повідомлення |
| Час налаштування | Нуль | Потрібна сесія запису |
| Мови | Перемикання для кожного дзвінка | Одна мова на файл |
| Природність | Дуже хороша (нейронний TTS) | Залежить від якості запису |
| Найкраще для | Операційні сповіщення, персоналізовані повідомлення | Маркетингові кампанії |
Для критичних сповіщень синтез мови виграє, бо повідомлення має бути конкретним і актуальним. «Сервер впав» менш корисне, ніж «Відставання репліки бази даних перевищило 30 секунд на db-prod-02».
Висновок
Коли щось ламається о 2-й ночі, відповідальна людина має знати про це протягом хвилин — а не коли перевірить пошту о 9-й ранку. Телефонні дзвінки з повторними спробами — єдиний механізм сповіщень, що забезпечує таку гарантію.
API простий: отримувач, повідомлення, кількість повторів і вебхук. Синтез мови включено, оплата лише за фактично доставлені дзвінки, підтвердження доставки через вебхук.
Отримайте ранній доступ і зробіть перший тестовий дзвінок на свій номер — без кредитної картки.