Перейти до змісту

Відправлення Каскадних Повідомлень

Надсилайте повідомлення через безліч каналів одним-єдиним запитом до API. Cascade автоматично маршрутизує ваше повідомлення через Telegram Bot, Viber Bot, Business Viber, RCS та SMS.

Ендпоінти

Стандартний Каскад

POST /api/CascadeMessage/send_message/async

Маршрутизує повідомлення через усі доступні та вказані канали по черзі.

Пріоритет Telegram-Viber

POST /api/CascadeMessage/send_message/tg-viber/async

Надає найвищий пріоритет ботам 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"
  }
}

Наступні кроки