Hyppää sisältöön

Viestityypit

Cascade API tukee neljää viestityyppiä, joista jokainen on optimoitu erilaisille käyttötapauksille ja kanaville.

Yleiskatsaus

Tyyppi Tarkoitus Kanavat Interaktiivinen
"tapahtuma" Kriittiset ilmoitukset Kaikki Ei
"promo" Markkinointikampanjat Kaikki Kyllä (painikkeet)
viber_survey Kyselyt ja palaute Viber, SMS Kyllä (vaihtoehdot)
"flashcall" Puhelimen vahvistus Puhelinsoitto Ei

Tapahtumaviestit

Tärkeät ilmoitukset, kuten tilausvahvistukset, tilipäivitykset ja järjestelmähälytykset.

Ominaisuudet

  • Ensisijainen toimitus
  • Ei mainossisältöä
  • Suora ja ytimekäs
  • Aikaherkkä
  • Reititetty: Telegram → Viber → RCS → SMS

Käyttötapaukset

  • Tilausvahvistukset
  • Maksuilmoitukset
  • Tilin hälytykset
  • Turvailmoitukset
  • Toimituspäivitykset
  • Salasana nollautuu

Esimerkki

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

Parhaat käytännöt

  • ✅ Säilytä viestit alle 160 merkkiä, jos mahdollista
  • ✅ Sisällytä asiaankuuluvat tapahtumatiedot
  • ✅ Tarjoa seurantalinkkejä
  • ✅ Käytä selkeää, ammattimaista kieltä
  • ❌ Älä sisällytä markkinointisisältöä
  • ❌ Älä käytä emojia liikaa

Esimerkkejä käyttötapauksista

Tilausvahvistus

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

Maksuilmoitus

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

Turvahälytys

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

Toimituspäivitys

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

Promoviestit

Markkinointi- ja myynninedistämiskampanjat multimedian ja interaktiivisten elementtien avulla.

Ominaisuudet

  • Multimedian tuki
  • Interaktiiviset painikkeet
  • Toimintakehotuksiin keskittynyt
  • Pidempi TTL hyväksyttävä
  • Reititetty kautta: Telegram → Viber → RCS → SMS

Käyttötapaukset

  • Tuotelanseeraukset
  • Myynti-ilmoitukset
  • Tapahtumakutsut
  • Uutiskirjekampanjat
  • Erikoistarjoukset
  • Bränditietoisuus

Esimerkki

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

Muuttujien kanssa

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

Parhaat käytännöt

  • ✅ Sisällytä selkeä toimintakehotus
  • ✅ Käytä kiinnostavaa kieltä
  • ✅ Lisää seurantaparametreja URL-osoitteisiin
  • ✅ Mukauta muuttujilla
  • ✅ Testaa useilla kanavilla
  • ❌ Älä lähetä roskapostia asiakkaille
  • ❌ Älä käytä harhaanjohtavaa sisältöä
  • ❌ Älä ylitä merkkirajoituksia

Esimerkkejä käyttötapauksista

Tuotteen lanseeraus

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

Flash-ale

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

Tapahtumakutsu

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

Hylätty kori

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

Interaktiiviset gallupit ja kyselyt asiakaspalautteen keräämiseen.

Ominaisuudet

  • 2-5 vastausvaihtoehtoa
  • Tekstin enimmäispituus on 85 merkkiä
  • Interaktiivinen käyttöliittymä Viberissä
  • Takaisin tekstiviestiin (ilman interaktiivisuutta)
  • Yhden kysymyksen muoto

Käyttötapaukset

  • Asiakastyytyväisyystutkimukset
  • Tuotepalaute
  • Palvelun laatuluokitukset
  • Markkinatutkimus
  • Palaute tapahtumista
  • Net Promoter Score (NPS)

Esimerkki

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

Rajoitukset

  • Teksti: Enintään 85 merkkiä
  • Vaihtoehdot: 2-5 vaihtoehtoa
  • Vaihtoehtojen pituus: Kussakin on oltava alle 30 merkkiä
  • TTL: Suositus 7–30 päivää

Parhaat käytännöt

  • ✅ Esitä yksi selkeä kysymys
  • ✅ Tarjoa tasapainoisia vaihtoehtoja
  • ✅ Käytä yksinkertaista kieltä
  • ✅ Pidä vaihtoehdot tiiviinä
  • ✅ Aseta sopiva TTL (7+ päivää)
  • ❌ Älä kysy useita kysymyksiä
  • ❌ Älä käytä teknistä ammattikieltä
  • ❌ Älä vääristä vastauksia

Esimerkkejä käyttötapauksista

Asiakastyytyväisyys (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"
  ]
}

Tuotepalaute

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

Palvelun laatu

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

Tapahtumapalaute

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

Flash Call

Puhelinvahvistus automaattisilla puheluilla tekstiviestikoodien sijaan.

Ominaisuudet

  • Kustannustehokas todentaminen
  • Nopeampi kuin tekstiviesti (1-3 sekuntia)
  • Ilmoituksissa ei ole näkyvää koodia
  • Kestää SIM-swap-hyökkäyksiä
  • Vain puhelinsoitto (ei Telegram/Viber)

Käyttötapaukset

  • Käyttäjän rekisteröinti
  • Kirjautumisen vahvistus
  • Puhelinnumeron vahvistus
  • Kaksivaiheinen todennus
  • Tilin palautus
  • Tapahtuman vahvistus

Esimerkki

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

Kuinka se toimii

  1. Käyttäjä syöttää puhelinnumeron
  2. API aloittaa flash-puhelun
  3. Puhelu päättyy 1-2 soiton jälkeen
  4. Sovellus tallentaa soittajan tunnuksen
  5. Soittajan tunnus varmistettu mallia vastaan
  6. Käyttäjä todennettu

Parhaat käytännöt

  • ✅ Aseta lyhyt TTL (60-300 sekuntia)
  • ✅ Ota käyttöön soittajan tunnistus
  • ✅ Tarjoa varatekstiviesti
  • ✅ Käsittele lupapyynnöt
  • ✅ Näytä selkeät ohjeet
  • ❌ Älä käytä mainostarkoituksiin
  • ❌ Älä aseta pitkää TTL:ää

Esimerkki varmistuksesta

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

Oikean tyypin valitseminen

Päätöspuu

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)

Vertailumatriisi

Ominaisuus Kauppa Promo Kysely Flash Call
Interaktiivinen media
Interaktiivinen
Personointi
Tyypillinen TTL Tuntia Päiviä Viikko Minuuttia
Kustannukset Keskikokoinen Keskikokoinen Keskikokoinen Matala
Toimitusnopeus Nopea Nopea Nopea Nopein

Toteutusesimerkki

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

Seuraavat vaiheet