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
- Gebruiker voert telefoonnummer in
- API initieert flash-oproep
- Het gesprek wordt beëindigd na 1-2 belsignalen
- App legt beller-ID vast
- Beller-ID geverifieerd op basis van patroon
- 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
- Berichten verzenden - Begin met het verzenden van trapsgewijze berichten
- Berichtvariabelen - Personaliseer berichten
- SMSBAT API - Ontdek SMSBAT-functies