Ga naar inhoud

Berichttypen

Cascade API ondersteunt vier berichttypen, elk geoptimaliseerd voor verschillende gebruiksscenario's en kanalen.

Overzicht

Typ Doel Kanalen Interactief
transactie Kritieke meldingen Alles Nee
promo Marketingcampagnes Alles Ja (knoppen)
viber_enquête Opiniepeilingen en feedback Viber, sms Ja (opties)
flitsoproep Telefoonverificatie Telefoontje Nee

Transactieberichten

Kritieke meldingen zoals orderbevestigingen, accountupdates en systeemwaarschuwingen.

Kenmerken

  • Levering met hoge prioriteit
  • Geen promotionele inhoud
  • Direct en beknopt
  • Tijdgevoelig
  • Gerouteerd via: Telegram → Viber → RCS → SMS

Gebruiksscenario's

  • Orderbevestigingen
  • Betalingsmeldingen
  • Accountwaarschuwingen
  • Beveiligingsmeldingen
  • Leveringsupdates
  • Wachtwoord opnieuw instellen

Voorbeeld

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

Beste praktijken

  • ✅ Houd berichten indien mogelijk onder de 160 tekens
  • ✅ Voeg relevante transactiegegevens toe
  • ✅ Zorg voor trackinglinks
  • ✅ Gebruik duidelijke, professionele taal
  • ❌ Neem geen marketinginhoud op
  • ❌ Gebruik emoji's niet overmatig

Voorbeelden per gebruiksscenario

Orderbevestiging

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

Betalingsmelding

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

Beveiligingswaarschuwing

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

Leveringsupdate

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

Promoberichten

Marketing- en promotiecampagnes met rijke media en interactieve elementen.

Kenmerken

  • Rich media-ondersteuning
  • Interactieve knoppen
  • Call-to-action gericht
  • Langere TTL acceptabel
  • Gerouteerd via: Telegram → Viber → RCS → SMS

Gebruiksscenario's

  • Productlanceringen
  • Verkoopaankondigingen
  • Uitnodigingen voor evenementen
  • Nieuwsbriefcampagnes
  • Speciale aanbiedingen
  • Merkbekendheid

Voorbeeld

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

Met variabelen

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

Beste praktijken

  • ✅ Voeg een duidelijke call-to-action toe
  • ✅ Gebruik boeiende taal
  • ✅ Voeg trackingparameters toe aan URL's
  • ✅ Personaliseer met variabelen
  • ✅ Test op meerdere kanalen
  • ❌ Spam geen klanten
  • ❌ Gebruik geen misleidende inhoud
  • ❌ Overschrijd de tekenlimieten niet

Voorbeelden per gebruiksscenario

Productlancering

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

Flash-uitverkoop

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

Uitnodiging voor evenement

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

Verlaten winkelwagen

{
  "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-enquête

Interactieve opiniepeilingen en enquêtes voor het verzamelen van klantfeedback.

Kenmerken

  • 2-5 antwoordopties
  • Tekst beperkt tot 85 tekens
  • Interactieve interface op Viber
  • Terugval op sms (zonder interactiviteit)
  • Formaat met één vraag

Gebruiksscenario's

  • Klanttevredenheidsonderzoeken
  • Productfeedback
  • Servicekwaliteitsbeoordelingen
  • Marktonderzoek
  • Feedback over evenementen
  • Net Promoter Score (NPS)

Voorbeeld

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

Beperkingen

  • Tekst: Maximaal 85 tekens
  • Opties: 2-5 keuzes
  • Optielengte: houd elk minder dan 30 tekens
  • TTL: Aanbevolen 7-30 dagen

Beste praktijken

  • ✅Stel één duidelijke vraag
  • ✅ Zorg voor evenwichtige opties
  • ✅Gebruik eenvoudige taal
  • ✅Houd opties beknopt
  • ✅ Stel de juiste TTL in (7+ dagen)
  • ❌ Stel niet meerdere vragen
  • ❌Gebruik geen technisch jargon
  • ❌ Geef geen vooringenomen reacties

Voorbeelden per gebruiksscenario

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

Productfeedback

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

Servicekwaliteit

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

Feedback over evenementen

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

Flitsoproep

Telefoonverificatie met behulp van geautomatiseerde oproepen in plaats van sms-codes.

Kenmerken

  • Kosteneffectieve verificatie
  • Sneller dan sms (1-3 seconden)
  • Geen zichtbare code in meldingen
  • Bestand tegen SIM-swap-aanvallen
  • Alleen bellen (geen Telegram/Viber)

Gebruiksscenario's

  • Gebruikersregistratie
  • Loginverificatie
  • Telefoonnummervalidatie
  • Tweefactorauthenticatie
  • Accountherstel
  • Transactiebevestiging

Voorbeeld

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

Hoe het werkt

  1. Gebruiker voert telefoonnummer in
  2. API initieert flash-oproep
  3. Het gesprek wordt beëindigd na 1-2 belsignalen
  4. App legt beller-ID vast
  5. Beller-ID geverifieerd op basis van patroon
  6. Gebruiker geverifieerd

Beste praktijken

  • ✅ Korte TTL instellen (60-300 seconden)
  • ✅ Implementeer nummerherkenning
  • ✅ Zorg voor terugval via sms
  • ✅ Toestemmingsverzoeken afhandelen
  • ✅ Toon duidelijke instructies
  • ❌ Niet gebruiken voor promotionele doeleinden
  • ❌ Stel geen lange TTL in

Voorbeeld met terugval

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

Het juiste type kiezen

Beslisboom

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)

Vergelijkingsmatrix

Kenmerk Transactie Promo Enquête Flitsoproep
Rijke media
Interactief
Personalisatie
Typische TTL Uren Dagen week Minuten
Kosten Middel Middel Middel Laag
Leveringssnelheid Snel Snel Snel Snelste

Implementatievoorbeeld

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

Volgende stappen