Preskoči na sadržaj

Vrste poruka

Cascade API podržava četiri vrste poruka, od kojih je svaka optimizirana za različite slučajeve upotrebe i kanale.

Pregled

Upišite Svrha Kanali Interaktivno
transakcija Kritične obavijesti Sve Ne
promocija Marketinške kampanje Sve Da (gumbi)
viber_anketa Ankete i povratne informacije Viber, SMS Da (opcije)
flashcall Telefonska potvrda Telefonski poziv Ne

Transakcijske poruke

Kritične obavijesti poput potvrda narudžbi, ažuriranja računa i upozorenja sustava.

Karakteristike

  • Isporuka visokog prioriteta
  • Nema promotivnih sadržaja
  • Izravno i sažeto
  • Vremenski osjetljiv
  • Usmjereno kroz: Telegram → Viber → RCS → SMS

Slučajevi upotrebe

  • Potvrde narudžbi
  • Obavijesti o plaćanju
  • Obavijesti o računu
  • Sigurnosne obavijesti
  • Ažuriranja isporuke
  • Ponovno postavljanje lozinke

Primjer

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

Najbolji primjeri iz prakse

  • ✅ Držite poruke ispod 160 znakova kada je to moguće
  • ✅ Uključite relevantne detalje transakcije
  • ✅ Navedite veze za praćenje
  • ✅ Koristite jasan, profesionalan jezik
  • ❌ Nemojte uključivati marketinški sadržaj
  • ❌ Nemojte pretjerano koristiti emojije

Primjeri prema slučajevima korištenja

Potvrda narudžbe

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

Obavijest o plaćanju

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

Sigurnosno upozorenje

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

Ažuriranje isporuke

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

Promo poruke

Marketinške i promotivne kampanje s bogatim medijima i interaktivnim elementima.

Karakteristike

  • Podrška za bogate medije
  • Interaktivni gumbi
  • Fokusiran na poziv na akciju
  • Duži TTL prihvatljiv
  • Usmjereno kroz: Telegram → Viber → RCS → SMS

Slučajevi upotrebe

  • Lansiranje proizvoda
  • Oglasi o prodaji
  • Pozivnice za događaje
  • Newsletter kampanje
  • Posebne ponude
  • Svijest o robnoj marki

Primjer

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

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

Najbolji primjeri iz prakse

  • ✅ Uključite jasan poziv na radnju
  • ✅ Koristite zanimljiv jezik
  • ✅ URL-ovima dodajte parametre za praćenje
  • ✅ Personalizirajte s varijablama
  • ✅ Testirajte na više kanala
  • ❌ Ne šaljite neželjenu poštu korisnicima
  • ❌ Nemojte koristiti obmanjujući sadržaj
  • ❌ Nemojte prekoračiti ograničenje broja znakova

Primjeri prema slučajevima korištenja

Lansiranje proizvoda

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

Brza rasprodaja

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

Pozivnica za događaj

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

Napuštena kolica

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

Viber Anketa

Interaktivne ankete i ankete za prikupljanje povratnih informacija od kupaca.

Karakteristike

  • 2-5 opcija odgovora
  • Tekst ograničen na 85 znakova
  • Interaktivno sučelje na Viberu
  • Povratak na SMS (bez interaktivnosti)
  • Format jednog pitanja

Slučajevi upotrebe

  • Ankete o zadovoljstvu kupaca
  • Povratne informacije o proizvodu
  • Ocjene kvalitete usluge
  • Istraživanje tržišta
  • Povratne informacije o događaju
  • Neto rezultat promotora (NPS)

Primjer

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

Ograničenja

  • Tekst: Maksimalno 85 znakova
  • Opcije: 2-5 izbora
  • Opcija duljine: Neka svaki ne bude kraći od 30 znakova
  • TTL: Preporučeno 7-30 dana

Najbolji primjeri iz prakse

  • ✅ Postavite jedno jasno pitanje
  • ✅ Pružite uravnotežene opcije
  • ✅ Koristite jednostavan jezik
  • ✅ Neka opcije budu sažete
  • ✅ Postavite odgovarajući TTL (7+ dana)
  • ❌ Ne postavljajte više pitanja
  • ❌ Nemojte koristiti tehnički žargon
  • ❌ Nemojte pristrasno odgovarati

Primjeri prema slučajevima korištenja

Zadovoljstvo korisnika (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"
  ]
}

Povratne informacije o proizvodu

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

Kvaliteta usluge

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

Povratne informacije o događaju

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

Brzi poziv

Telefonska provjera pomoću automatskih poziva umjesto SMS kodova.

Karakteristike

  • Isplativa verifikacija
  • Brže od SMS-a (1-3 sekunde)
  • Nema vidljivog koda u obavijestima
  • Otporan na napade zamjene SIM kartice
  • Samo telefonski poziv (bez Telegrama/Vibera)

Slučajevi upotrebe

  • Registracija korisnika
  • Provjera prijave
  • Provjera telefonskog broja
  • Dvostruka autentifikacija
  • Oporavak računa
  • Potvrda transakcije

Primjer

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

Kako to radi

  1. Korisnik upisuje broj telefona
  2. API pokreće flash poziv
  3. Poziv se prekida nakon 1-2 zvona
  4. Aplikacija bilježi ID pozivatelja
  5. ID pozivatelja potvrđen prema uzorku
  6. Ovjeren korisnik

Najbolji primjeri iz prakse

  • ✅ Postavite kratki TTL (60-300 sekundi)
  • ✅ Implementirajte detekciju ID-a pozivatelja
  • ✅ Omogućite rezervni SMS
  • ✅ Obrada zahtjeva za dopuštenje
  • ✅ Pokažite jasne upute
  • ❌ Ne koristiti u promotivne svrhe
  • ❌ Ne postavljajte dugi TTL

Primjer s rezervnim

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

Odabir prave vrste

Stablo odlučivanja

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)

Matrica usporedbe

Značajka Transakcija Promo Anketa Flash poziv
Bogati mediji
Interaktivno
Personalizacija
Tipični TTL Sati Dana Tjedan Zapisnik
Trošak Srednje Srednje Srednje Niska
Brzina isporuke Brzo Brzo Brzo Najbrži

Primjer implementacije

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

Sljedeći koraci