Přeskočit obsah

Typy zpráv

Cascade API podporuje čtyři typy zpráv, z nichž každý je optimalizován pro různé případy použití a kanály.

Přehled

Typ Účel Kanály Interaktivní
"transakce" Kritická oznámení Vše Ne
"promo" Marketingové kampaně Vše Ano (tlačítka)
viber_survey Ankety a zpětná vazba Viber, SMS Ano (možnosti)
"flashcall" Telefonické ověření Telefonát Ne

Transakční zprávy

Kritická oznámení, jako jsou potvrzení objednávky, aktualizace účtu a systémová upozornění.

Charakteristiky

  • Dodávka s vysokou prioritou
  • Žádný propagační obsah
  • Přímé a stručné
  • Časově citlivé
  • Směrováno přes: Telegram → Viber → RCS → SMS

Případy použití

  • Potvrzení objednávky
  • Platební oznámení
  • Upozornění na účet
  • Bezpečnostní upozornění
  • Aktualizace dodávek
  • Heslo se resetuje

Příklad

{
  "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
}

Doporučené postupy

  • ✅ Udržujte zprávy kratší než 160 znaků, pokud je to možné
  • ✅ Include relevant transaction details
  • ✅ Provide tracking links
  • ✅ Use clear, professional language
  • ❌ Don't include marketing content
  • ❌ Don't use emojis excessively

Příklady podle případu použití

Potvrzení objednávky

{
  "messageType": "transaction",
  "text": "Order #12345 confirmed. Total: $99.99. Expected delivery: Jan 25."
}

Payment Notification

{
  "messageType": "transaction",
  "text": "Payment of $150.00 to Merchant ABC successful. Transaction ID: TXN789. Balance: $850.00"
}

Bezpečnostní upozornění

{
  "messageType": "transaction",
  "text": "New login detected from iPhone at 10:30 AM. Location: New York. If this wasn't you, secure your account immediately."
}

Aktualizace doručení

{
  "messageType": "transaction",
  "text": "Your package is out for delivery! Expected arrival: 2-4 PM. Track: https://track.example.com/PKG123"
}

Propagační zprávy

Marketingové a propagační kampaně s bohatými médii a interaktivními prvky.

Charakteristiky

  • Podpora multimédií
  • Interaktivní tlačítka
  • Zaměření na výzvu k akci
  • Delší TTL přijatelné
  • Směrováno přes: Telegram → Viber → RCS → SMS

Případy použití

  • Uvedení produktu na trh
  • Oznámení o prodeji
  • Pozvánky na akce
  • Informační kampaně
  • Speciální nabídky
  • Povědomí o značce

Příklad

{
  "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
}

S proměnnými

{
  "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"}
  ]
}

Doporučené postupy

  • ✅ Include clear call-to-action
  • ✅ Use engaging language
  • ✅ Add tracking parameters to URLs
  • ✅ Personalize with variables
  • ✅ Test on multiple channels
  • ❌ Nespamujte zákazníky
  • ❌ Nepoužívejte zavádějící obsah
  • ❌ Don't exceed character limits

Příklady podle případu použití

Uvedení produktu na trh

{
  "messageType": "promo",
  "text": "🎉 NEW ARRIVAL: iPhone 15 Pro now available! Pre-order today and get free shipping. Visit: https://store.com/iphone15"
}

Bleskový výprodej

{
  "messageType": "promo",
  "text": "⚡ FLASH SALE: 2 hours only! Extra 30% off everything. Use code: FLASH30. Shop now: https://store.com/flash"
}

Pozvánka na akci

{
  "messageType": "promo",
  "text": "You're invited! VIP Shopping Event on Jan 25 at 6 PM. Exclusive deals + refreshments. RSVP: https://events.com/vip"
}

Opuštěný košík

{
  "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%"
}

Průzkum Viber

Interaktivní ankety a průzkumy pro shromažďování zpětné vazby od zákazníků.

Charakteristiky

  • 2-5 možností odezvy
  • Text limited to 85 characters
  • Interaktivní rozhraní na Viberu
  • Fallback to SMS (without interactivity)
  • Formát jedné otázky

Případy použití

  • Průzkumy spokojenosti zákazníků
  • Zpětná vazba k produktu
  • Service quality ratings
  • Průzkum trhu
  • Zpětná vazba k události – Net Promoter Score (NPS)

Příklad

{
  "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
}

Omezení

  • Text: Maximálně 85 znaků
  • Možnosti: 2–5 možností
  • Délka možnosti: Každý by měl mít méně než 30 znaků
  • TTL: Doporučeno 7–30 dní

Doporučené postupy

  • ✅ Položte jednu jasnou otázku
  • ✅ Poskytněte vyvážené možnosti
  • ✅ Používejte jednoduchý jazyk
  • ✅ Udržujte možnosti stručné
  • ✅ Nastavte vhodné TTL (7+ dní)
  • ❌ Neptejte se na více otázek
  • ❌ Nepoužívejte technický žargon
  • ❌ Nezkreslujte odpovědi

Příklady podle případu použití

spokojenost zákazníků (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"
  ]
}

Zpětná vazba k produktu

{
  "messageType": "viber_survey",
  "text": "How do you rate our new product?",
  "surveyOptions": [
    "⭐️ Excellent",
    "⭐️ Good",
    "⭐️ Average",
    "⭐️ Poor",
    "⭐️ Very Poor"
  ]
}

Kvalita služeb

{
  "messageType": "viber_survey",
  "text": "Was your support experience helpful?",
  "surveyOptions": [
    "Yes, very helpful",
    "Somewhat helpful",
    "Not helpful"
  ]
}

Zpětná vazba k události

{
  "messageType": "viber_survey",
  "text": "Would you attend our events again?",
  "surveyOptions": [
    "Definitely yes",
    "Probably yes",
    "Not sure",
    "Probably not",
    "Definitely not"
  ]
}

Bleskový hovor

Telefonické ověření pomocí automatických hovorů namísto SMS kódů.

Charakteristiky

  • Cenově efektivní ověřování
  • Rychlejší než SMS (1-3 sekundy)
  • Žádný viditelný kód v oznámeních
  • Odolné vůči útokům s výměnou SIM
  • Pouze telefonní hovor (žádný telegram/Viber)

Případy použití

  • Registrace uživatele
  • Ověření přihlášení
  • Ověření telefonního čísla
  • Dvoufaktorová autentizace
  • Obnovení účtu
  • Potvrzení transakce

Příklad

{
  "id": "verify-user-12345",
  "fromName": "YourApp",
  "toPhone": "+380XXXXXXXXX",
  "messageType": "flashcall",
  "ttl": 300
}

Jak to funguje

  1. Uživatel zadá telefonní číslo
  2. API zahájí flash volání
  3. Hovor se ukončí po 1-2 zazvoněních
  4. Aplikace zachycuje ID volajícího
  5. ID volajícího ověřeno podle vzoru
  6. Uživatel ověřen

Doporučené postupy

  • ✅ Nastavte krátké TTL (60-300 sekund)
  • ✅ Implementujte detekci ID volajícího
  • ✅ Poskytněte záložní SMS
  • ✅ Zpracovat žádosti o povolení
  • ✅ Ukažte jasné pokyny
  • ❌ Nepoužívejte pro propagační účely
  • ❌ Nenastavujte dlouhé TTL

Příklad s Fallback

{
  "id": "verify-001",
  "fromName": "YourApp",
  "toPhone": "+380XXXXXXXXX",
  "messageType": "flashcall",
  "ttl": 300,
  "fallback": {
    "messageType": "transaction",
    "text": "Your verification code: 123456"
  }
}

Výběr správného typu

Rozhodovací strom

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)

Srovnávací matice

Funkce Transakce Promo Průzkum Flash Call
Rich Media
Interaktivní
Personalizace
Typické TTL Hodiny Dny týden minuty
Cena Střední Střední Střední Nízká
Rychlost dodání Rychlý Rychlý Rychlý Nejrychlejší

Příklad implementace

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'
);

Další kroky