Відправлення Каскадних Повідомлень
Надсилайте повідомлення через безліч каналів одним-єдиним запитом до API. Cascade автоматично маршрутизує ваше повідомлення через Telegram Bot, Viber Bot, Business Viber, RCS та SMS.
Ендпоінти
Стандартний Каскад
Маршрутизує повідомлення через усі доступні та вказані канали по черзі.
Пріоритет Telegram-Viber
Надає найвищий пріоритет ботам Telegram та Viber для найшвидшої доставки.
Авторизація
Cascade API приймає три типи заголовків авторизації. У запиті має бути щонайменше один з них:
| Заголовок | Опис |
|---|---|
X-Authorization-Key |
SMSBAT API ключ (рекомендовано) |
X-Viber-Auth-Token |
Токен Viber бота |
X-Tg-Bot-Key |
Токен Telegram бота |
Структура Запиту
Заголовки (Headers)
Content-Type: application/json
X-Authorization-Key: ваш-smsbat-api-ключ
X-Viber-Auth-Token: ваш-viber-token
X-Tg-Bot-Key: ваш-telegram-key
Тіло (Body)
API приймає масив із об'єктами повідомлень:
[
{
"id": "unic-id-for-tracking",
"fromName": "YourBrand",
"toPhone": "+380XXXXXXXXX",
"messageType": "transaction",
"text": "Ваше замовлення #12345 підтверджено",
"ttl": 3600,
"scheduledSent": "2025-01-25T10:00:00Z"
}
]
Параметри
| Параметр | Тип | Обов'язково | Опис |
|---|---|---|---|
id |
string | Так | Ваш зовнішній трекінг ідентифікатор |
fromName |
string | Так | Ім'я відправника (Альфа-ім'я) |
toPhone |
string | Так | Телефон отримувача у форматі E.164 |
messageType |
string | Так | Тип повідомлення: transaction, promo, viber_survey, flashcall |
text |
string | Так* | Основний текст контенту (*обов'язково для більшості типів) |
ttl |
integer | Ні | Час життя (Time-to-live) у секундах |
scheduledSent |
string | Ні | ISO 8601 дата та час відкладеної відправки |
Типи повідомлень
Transaction (Транзакційні)
Важливі сповіщення, такі як підтвердження замовлень чи зміни акаунту:
{
"id": "order-12345",
"fromName": "YourStore",
"toPhone": "+380XXXXXXXXX",
"messageType": "transaction",
"text": "Ваше замовлення #12345 укомплектовано і прибуде завтра.",
"ttl": 86400
}
Promo (Промоційні)
Маркетингові кампанії з графікою або інтерактивними елементами:
{
"id": "promo-summer-sale",
"fromName": "YourBrand",
"toPhone": "+380XXXXXXXXX",
"messageType": "promo",
"text": "Літній Сейл! Знижки до -50%. Відвідайте: https://example.com/sale",
"ttl": 259200
}
Viber Survey (Опитування)
Інтерактивні голосування з 2-5 опціями відповіді:
{
"id": "survey-satisfaction",
"fromName": "YourBrand",
"toPhone": "+380XXXXXXXXX",
"messageType": "viber_survey",
"text": "Наскільки ви задоволені нашим обслуговуванням?",
"surveyOptions": [
"Дуже задоволений",
"Задоволений",
"Нейтрально",
"Не задоволений",
"Вкрай не задоволений"
],
"ttl": 604800
}
Максимальна довжина тексту питання: 85 символів.
Flash Call (Флеш кол)
Телефонна аутентифікація шляхом короткого автоматичного дзвінка (код у номері або просто розпізнавання номера):
{
"id": "verify-user-123",
"fromName": "YourApp",
"toPhone": "+380XXXXXXXXX",
"messageType": "flashcall",
"ttl": 300
}
Приклади
Стандартна транзакція
curl -X POST https://restapi.smsbat.com/api/CascadeMessage/send_message/async \
-H "Content-Type: application/json" \
-H "X-Authorization-Key: your-api-key" \
-d '[
{
"id": "tx-001",
"fromName": "YourBank",
"toPhone": "+380XXXXXXXXX",
"messageType": "transaction",
"text": "Платіж на суму 2000 грн виконано успішно. ID: ABC123"
}
]'
Відкладене Промо
curl -X POST https://restapi.smsbat.com/api/CascadeMessage/send_message/async \
-H "Content-Type: application/json" \
-H "X-Authorization-Key: your-api-key" \
-d '[
{
"id": "promo-001",
"fromName": "YourStore",
"toPhone": "+380XXXXXXXXX",
"messageType": "promo",
"text": "Чорна п'ятниця через годину! Завітай: https://example.com",
"scheduledSent": "2025-01-25T09:00:00Z",
"ttl": 3600
}
]'
Масове відправлення (Bulk)
curl -X POST https://restapi.smsbat.com/api/CascadeMessage/send_message/async \
-H "Content-Type: application/json" \
-H "X-Authorization-Key: your-api-key" \
-d '[
{
"id": "bulk-001",
"fromName": "YourBrand",
"toPhone": "+380111111111",
"messageType": "transaction",
"text": "Повідомлення 1"
},
{
"id": "bulk-002",
"fromName": "YourBrand",
"toPhone": "+380222222222",
"messageType": "transaction",
"text": "Повідомлення 2"
},
{
"id": "bulk-003",
"fromName": "YourBrand",
"toPhone": "+380333333333",
"messageType": "transaction",
"text": "Повідомлення 3"
}
]'
Відповідь (Response)
Успішна Відповідь
[
{
"messageId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"trackinId": "tx-001"
},
{
"messageId": "8b2f1e9a-4c6d-4e2a-9f8b-1a3d5c7e9f0b",
"trackinId": "tx-002"
}
]
Значення Полів Відповіді
| Поле | Тип | Опис |
|---|---|---|
messageId |
string (UUID) | Внутрішній ідентифікатор повідомлення в системі |
trackinId |
string | Ваш трекінг ідентифікатор (переданий у запиті) |
Використовуйте messageId для перевірки статусу (webhook/status API), а trackinId – для логічної кореляції з вашою бекенд-системою.
Best Practices (Кращі Практики)
Номери телефонів
Завжди передавайте номери у форматі E.164:
- ✅ +380XXXXXXXXX
- ❌ 380XXXXXXXXX
- ❌ 0XXXXXXXXX
Трекінгові ID (id / trackinId)
- Контролюйте унікальність кожного ID.
- Додавайте інформаційний префікс (наприклад
order-12345,promo-summer-2025). - Максимальна довжина – 255 символів.
- Уникайте пробілів та спецсимволів.
Час життя (TTL)
Рекомендовані значення TTL в залежності від типу повідомлення:
- Підтвердження та OTP: 300-600 секунд (5-10 хвилин)
- Транзакційні: 3600-86400 секунд (1-24 години)
- Промоційні (Маркетинг): 86400-259200 секунд (1-3 дні)
- Опитування (Survey): 604800 секунд (7 днів)
Заплановані відправки (Scheduled)
- Завжди надсилайте час у часовому поясі UTC (
Zв кінці, ISO8601). - Не відкладайте доставку більше ніж на 30 днів.
Масові запити (Bulk Batching)
- Надсилайте пакети по 100-1000 повідомлень в одному JSON масиві.
- Реалізуйте власні ліміти та бекофи на випадок 429 Too Many Requests.
- Зберігайте обробку помилок на вашій стороні.
Обробка помилок (Error Handling)
HTTP Статуси
| Код | Опис |
|---|---|
| 200 | Успішно створено та поставлено в чергу (Success) |
| 400 | Некоректний запит (Bad request) – помилкові параметри чи формат |
| 401 | Не авторизовано (Unauthorized) – ключ неправильний чи застарілий |
| 429 | Забагато запитів (Too many requests) – перевищено ліміт платформи |
| 500 | Внутрішня помилка сервера (Server error) |
Структура Помилки в тілі відповіді
{
"error": {
"code": "INVALID_PHONE",
"message": "Invalid phone number format",
"field": "toPhone"
}
}
Наступні кроки
- Змінні всередині тексту - Працюйте з динамічним контентом та підстановкою параметрів
- Типи повідомлень - Детально вивчіть структуру різних повідомлень
- Отримання статусів доставки - Налаштуйте вебхуки та логування статусів