Typy wiadomości
Cascade API obsługuje cztery typy wiadomości, każdy zoptymalizowany pod kątem różnych przypadków użycia i kanałów.
Przegląd
| Wpisz | Cel | Kanały | Interaktywny |
|---|---|---|---|
transakcja | Powiadomienia krytyczne | Wszystko | Nie |
promocja | Kampanie marketingowe | Wszystko | Tak (przyciski) |
viber_ankieta | Ankiety i opinie | Viber, SMS-y | Tak (opcje) |
rozmowa błyskawiczna | Weryfikacja telefoniczna | Telefon | Nie |
Wiadomości transakcyjne
Krytyczne powiadomienia, takie jak potwierdzenia zamówień, aktualizacje konta i alerty systemowe.
Charakterystyka
- Dostawa o wysokim priorytecie
- Brak treści promocyjnych
- Bezpośrednie i zwięzłe
- Wrażliwy na czas
- Przekierowane przez: Telegram → Viber → RCS → SMS
Przypadki użycia
- Potwierdzenia zamówień
- Powiadomienia o płatnościach
- Alerty dotyczące konta
- Powiadomienia dotyczące bezpieczeństwa
- Aktualizacje dostaw
- Resetowanie hasła
Przykład
{
"id": "tx-order-12345",
"fromName": "YourStore",
"toPhone": "+380XXXXXXXXX",
"messageType": "transaction",
"text": "Order #12345 confirmed. Total: $99.99. Delivery: Jan 25. Track: https://example.com/track/12345",
"ttl": 86400
}
Najlepsze praktyki
- ✅ Jeśli to możliwe, przechowuj wiadomości krótsze niż 160 znaków
- ✅ Dołącz odpowiednie szczegóły transakcji
- ✅ Podaj linki śledzące
- ✅ Używaj jasnego, profesjonalnego języka
- ❌ Nie zamieszczaj treści marketingowych
- ❌ Nie używaj nadmiernie emoji
Przykłady według przypadków użycia
Potwierdzenie zamówienia
{
"messageType": "transaction",
"text": "Order #12345 confirmed. Total: $99.99. Expected delivery: Jan 25."
}
Powiadomienie o płatności
{
"messageType": "transaction",
"text": "Payment of $150.00 to Merchant ABC successful. Transaction ID: TXN789. Balance: $850.00"
}
Alert bezpieczeństwa
{
"messageType": "transaction",
"text": "New login detected from iPhone at 10:30 AM. Location: New York. If this wasn't you, secure your account immediately."
}
Aktualizacja dostawy
{
"messageType": "transaction",
"text": "Your package is out for delivery! Expected arrival: 2-4 PM. Track: https://track.example.com/PKG123"
}
Wiadomości promocyjne
Kampanie marketingowe i promocyjne z elementami rich media i interaktywnymi.
Charakterystyka
- Bogate wsparcie multimedialne
- Interaktywne przyciski
- Koncentruje się na wezwaniu do działania
- Dłuższy TTL akceptowalny
- Przekierowane przez: Telegram → Viber → RCS → SMS
Przypadki użycia
- Premiery produktów
- Ogłoszenia sprzedaży
- Zaproszenia na wydarzenia
- Kampanie newsletterowe
- Oferty specjalne
- Świadomość marki
Przykład
{
"id": "promo-summer-sale",
"fromName": "YourBrand",
"toPhone": "+380XXXXXXXXX",
"messageType": "promo",
"text": "🌟 Summer Sale! Up to 50% off on selected items. Shop now: https://example.com/sale",
"ttl": 259200
}
Ze zmiennymi
{
"messageType": "promo",
"text": "Hi %name=1%! Exclusive offer: Use code %name=2% for 20% off. Shop: %short_url=1%",
"variables": [
{"id": 1, "type": "name", "value": "John"},
{"id": 2, "type": "name", "value": "VIP20"},
{"id": 1, "type": "short_url", "value": "https://store.com/sale?utm=sms"}
]
}
Najlepsze praktyki
- ✅ Dołącz jasne wezwanie do działania
- ✅ Używaj angażującego języka
- ✅ Dodaj parametry śledzenia do adresów URL
- ✅ Personalizuj za pomocą zmiennych
- ✅ Testuj na wielu kanałach
- ❌ Nie spamuj klientów
- ❌ Nie używaj treści wprowadzających w błąd
- ❌ Nie przekraczaj limitów znaków
Przykłady według przypadków użycia
Wprowadzenie produktu na rynek
{
"messageType": "promo",
"text": "🎉 NEW ARRIVAL: iPhone 15 Pro now available! Pre-order today and get free shipping. Visit: https://store.com/iphone15"
}
Błyskawiczna wyprzedaż
{
"messageType": "promo",
"text": "⚡ FLASH SALE: 2 hours only! Extra 30% off everything. Use code: FLASH30. Shop now: https://store.com/flash"
}
Zaproszenie na wydarzenie
{
"messageType": "promo",
"text": "You're invited! VIP Shopping Event on Jan 25 at 6 PM. Exclusive deals + refreshments. RSVP: https://events.com/vip"
}
Porzucony wózek
{
"messageType": "promo",
"text": "Hi %name=1%! You left items in your cart. Complete purchase now and get 10% off with code CART10: %short_url=1%"
}
Ankieta Vibera
Interaktywne ankiety i ankiety służące do zbierania opinii klientów.
Charakterystyka
- 2-5 opcji odpowiedzi
- Tekst ograniczony do 85 znaków
- Interaktywny interfejs na Viber
- Powrót do SMS-ów (bez interaktywności)
- Format pojedynczego pytania
Przypadki użycia
- Badania satysfakcji klientów
- Opinia o produkcie
- Oceny jakości usług
- Badania rynku
- Informacje zwrotne o wydarzeniu
- Wynik Net Promoter Score (NPS)
Przykład
{
"id": "survey-satisfaction-001",
"fromName": "YourBrand",
"toPhone": "+380XXXXXXXXX",
"messageType": "viber_survey",
"text": "How satisfied are you with our service?",
"surveyOptions": [
"Very Satisfied",
"Satisfied",
"Neutral",
"Dissatisfied",
"Very Dissatisfied"
],
"ttl": 604800
}
Ograniczenia
- Tekst: Maksymalnie 85 znaków
- Opcje: 2-5 opcji
- Długość opcji: nie przekraczaj 30 znaków każdy
- TTL: Zalecane 7–30 dni
Najlepsze praktyki
- ✅ Zadaj jedno jasne pytanie
- ✅ Zapewnij zrównoważone opcje
- ✅ Używaj prostego języka
- ✅ Zachowaj zwięzłość opcji
- ✅ Ustaw odpowiedni TTL (7+ dni)
- ❌ Nie zadawaj wielu pytań
- ❌ Nie używaj technicznego żargonu
- ❌ Nie stronniczość w odpowiedziach
Przykłady według przypadków użycia
Satysfakcja klienta (NPS)
{
"messageType": "viber_survey",
"text": "How likely are you to recommend us to a friend?",
"surveyOptions": [
"0 - Not at all",
"1-6 - Unlikely",
"7-8 - Likely",
"9-10 - Very Likely"
]
}
Opinia o produkcie
{
"messageType": "viber_survey",
"text": "How do you rate our new product?",
"surveyOptions": [
"⭐️ Excellent",
"⭐️ Good",
"⭐️ Average",
"⭐️ Poor",
"⭐️ Very Poor"
]
}
Jakość usług
{
"messageType": "viber_survey",
"text": "Was your support experience helpful?",
"surveyOptions": [
"Yes, very helpful",
"Somewhat helpful",
"Not helpful"
]
}
Opinia o wydarzeniu
{
"messageType": "viber_survey",
"text": "Would you attend our events again?",
"surveyOptions": [
"Definitely yes",
"Probably yes",
"Not sure",
"Probably not",
"Definitely not"
]
}
Połączenie błyskawiczne
Weryfikacja telefoniczna za pomocą automatycznych połączeń zamiast kodów SMS.
Charakterystyka
- Ekonomiczna weryfikacja
- Szybciej niż SMS (1-3 sekundy)
- Brak widocznego kodu w powiadomieniach
- Odporność na ataki typu SIM Swap
- Tylko rozmowa telefoniczna (bez Telegramu/Vibera)
Przypadki użycia
- Rejestracja użytkownika
- Weryfikacja logowania
- Weryfikacja numeru telefonu
- Uwierzytelnianie dwuskładnikowe
- Odzyskiwanie konta
- Potwierdzenie transakcji
Przykład
{
"id": "verify-user-12345",
"fromName": "YourApp",
"toPhone": "+380XXXXXXXXX",
"messageType": "flashcall",
"ttl": 300
}
Jak to działa
- Użytkownik wprowadza numer telefonu
- API inicjuje połączenie flash
- Połączenie kończy się po 1-2 dzwonkach
- Aplikacja przechwytuje identyfikator dzwoniącego
- Identyfikator dzwoniącego zweryfikowany według wzorca
- Użytkownik uwierzytelniony
Najlepsze praktyki
- ✅ Ustaw krótki TTL (60-300 sekund)
- ✅ Wprowadź wykrywanie identyfikatora dzwoniącego
- ✅ Zapewnij awaryjną wiadomość SMS
- ✅ Obsługuj prośby o pozwolenie
- ✅ Pokaż jasne instrukcje
- ❌ Nie używaj w celach promocyjnych
- ❌ Nie ustawiaj długiego TTL
Przykład z awarią
{
"id": "verify-001",
"fromName": "YourApp",
"toPhone": "+380XXXXXXXXX",
"messageType": "flashcall",
"ttl": 300,
"fallback": {
"messageType": "transaction",
"text": "Your verification code: 123456"
}
}
Wybór odpowiedniego typu
Drzewo decyzyjne
Is it time-critical or transactional?
├─ Yes → transaction
└─ No
└─ Is it promotional?
├─ Yes → promo
└─ No
└─ Is it a survey?
├─ Yes → viber_survey
└─ No → Is it for verification?
├─ Yes → flashcall
└─ No → transaction (default)
Matryca porównawcza
| Funkcja | Transakcja | Promocja | Ankieta | Błyskawiczne połączenie |
|---|---|---|---|---|
| Bogate multimedia | ❌ | ✅ | ❌ | ❌ |
| Interaktywny | ❌ | ✅ | ✅ | ❌ |
| Personalizacja | ✅ | ✅ | ✅ | ❌ |
| Typowy TTL | Godziny | Dni | Tydzień | Minuty |
| Koszt | Średni | Średni | Średni | Niski |
| Szybkość dostawy | Szybki | Szybki | Szybki | Najszybszy |
Przykład wdrożenia
class CascadeMessageBuilder {
constructor(apiKey) {
this.apiKey = apiKey;
}
buildTransaction(id, fromName, toPhone, text, ttl = 86400) {
return {
id,
fromName,
toPhone,
messageType: 'transaction',
text,
ttl
};
}
buildPromo(id, fromName, toPhone, text, ttl = 259200) {
return {
id,
fromName,
toPhone,
messageType: 'promo',
text,
ttl
};
}
buildSurvey(id, fromName, toPhone, text, options, ttl = 604800) {
if (text.length > 85) {
throw new Error('Survey text must be under 85 characters');
}
if (options.length < 2 || options.length > 5) {
throw new Error('Survey must have 2-5 options');
}
return {
id,
fromName,
toPhone,
messageType: 'viber_survey',
text,
surveyOptions: options,
ttl
};
}
buildFlashCall(id, fromName, toPhone, ttl = 300) {
return {
id,
fromName,
toPhone,
messageType: 'flashcall',
ttl
};
}
async send(message) {
// Implementation to send message
}
}
// Usage
const builder = new CascadeMessageBuilder('your-api-key');
// Transaction
const transaction = builder.buildTransaction(
'order-123',
'Store',
'+380XXXXXXXXX',
'Order confirmed'
);
// Promo
const promo = builder.buildPromo(
'promo-001',
'Brand',
'+380XXXXXXXXX',
'Sale now on!'
);
// Survey
const survey = builder.buildSurvey(
'survey-001',
'Brand',
'+380XXXXXXXXX',
'Rate our service?',
['Excellent', 'Good', 'Average', 'Poor']
);
// Flash Call
const flashCall = builder.buildFlashCall(
'verify-001',
'App',
'+380XXXXXXXXX'
);
Następne kroki
- Wyślij wiadomości - Rozpocznij wysyłanie wiadomości kaskadowych
- Zmienne wiadomości - Personalizuj wiadomości
- SMSBAT API - Poznaj funkcje SMSBAT