Gå till innehållet

Meddelandetyper

Cascade API stöder fyra meddelandetyper, var och en optimerad för olika användningsfall och kanaler.

Översikt

Skriv Syfte Kanaler Interaktiv
transaktion Kritiska meddelanden Alla Nej
promo Marknadsföringskampanjer Alla Ja (knappar)
viber_survey Omröstningar och feedback Viber, SMS Ja (alternativ)
flashcall Telefonverifiering Telefonsamtal Nej

Transaktionsmeddelanden

Kritiska meddelanden som orderbekräftelser, kontouppdateringar och systemvarningar.

Egenskaper

  • Högprioriterad leverans
  • Inget reklaminnehåll
  • Direkt och kortfattad
  • Tidskänslig
  • Leds genom: Telegram → Viber → RCS → SMS

Användningsfall

  • Orderbekräftelser
  • Betalningsmeddelanden
  • Kontovarningar
  • Säkerhetsmeddelanden
  • Leveransuppdateringar
  • Lösenordsåterställs

Exempel

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

Bästa metoder

  • ✅ Behåll meddelanden under 160 tecken när det är möjligt
  • ✅ Inkludera relevant transaktionsinformation
  • ✅ Tillhandahålla spårningslänkar
  • ✅ Använd ett tydligt, professionellt språk
  • ❌ Inkludera inte marknadsföringsinnehåll
  • ❌ Använd inte emojis överdrivet

Exempel efter användningsfall

Orderbekräftelse

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

Betalningsmeddelande

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

Säkerhetslarm

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

Leveransuppdatering

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

Kampanjmeddelanden

Marknadsförings- och reklamkampanjer med rich media och interaktiva element.

Egenskaper

  • Stöd för rik media
  • Interaktiva knappar
  • Fokuserad på uppmaning
  • Längre TTL acceptabelt
  • Leds genom: Telegram → Viber → RCS → SMS

Användningsfall

  • Produktlanseringar
  • Försäljningsmeddelanden
  • Eventinbjudningar
  • Nyhetsbrevskampanjer
  • Specialerbjudanden
  • Varumärkeskännedom

Exempel

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

Med variabler

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

Bästa metoder

  • ✅ Inkludera tydlig uppmaning
  • ✅ Använd ett engagerande språk
  • ✅ Lägg till spårningsparametrar till webbadresser
  • ✅ Anpassa med variabler
  • ✅ Testa på flera kanaler
  • ❌ Spamma inte kunder
  • ❌ Använd inte vilseledande innehåll
  • ❌ Överskrid inte teckengränserna

Exempel efter användningsfall

Produktlansering

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

Flash försäljning

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

Eventinbjudan

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

Övergiven vagn

{
  "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-undersökning

Interaktiva omröstningar och undersökningar för att samla in kundfeedback.

Egenskaper

  • 2-5 svarsalternativ
  • Texten är begränsad till 85 tecken
  • Interaktivt gränssnitt på Viber
  • Fallback till SMS (utan interaktivitet)
  • Enfrågeformat

Användningsfall

  • Kundnöjdhetsundersökningar
  • Produktfeedback
  • Servicekvalitetsbetyg
  • Marknadsundersökningar
  • Event feedback
  • Net Promoter Score (NPS)

Exempel

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

Begränsningar

  • Text: Högst 85 tecken
  • Alternativ: 2-5 val
  • Alternativets längd: Behåll under 30 tecken vardera
  • TTL: Rekommenderad 7-30 dagar

Bästa metoder

  • ✅ Ställ en tydlig fråga
  • ✅ Ge balanserade alternativ
  • ✅ Använd enkelt språk
  • ✅ Håll alternativen kortfattade
  • ✅ Ställ in lämplig TTL (7+ dagar)
  • ❌ Ställ inte flera frågor
  • ❌ Använd inte teknisk jargong
  • ❌ Var inte fördomsfulla svar

Exempel efter användningsfall

Kundnöjdhet (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"
  ]
}

Produktfeedback

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

Servicekvalitet

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

Event Feedback

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

Flash Call

Telefonverifiering med automatiska samtal istället för SMS-koder.

Egenskaper

  • Kostnadseffektiv verifiering
  • Snabbare än SMS (1-3 sekunder)
  • Ingen synlig kod i aviseringar
  • Motståndskraftig mot SIM-bytesattacker
  • Endast telefonsamtal (inget Telegram/Viber)

Användningsfall

  • Användarregistrering
  • Inloggningsverifiering
  • Validering av telefonnummer
  • Tvåfaktorsautentisering
  • Kontoåterställning
  • Transaktionsbekräftelse

Exempel

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

Hur det fungerar

  1. Användaren anger telefonnummer
  2. API initierar flashanrop
  3. Samtalet avslutas efter 1-2 ringsignaler
  4. App fångar nummerpresentation
  5. Nummerpresentation verifierad mot mönstret
  6. Användare autentiserad

Bästa metoder

  • ✅ Ställ in kort TTL (60-300 sekunder)
  • ✅ Implementera nummerpresentation
  • ✅ Ge SMS-fallback
  • ✅ Hantera tillståndsförfrågningar
  • ✅ Visa tydliga instruktioner
  • ❌ Använd inte i reklamsyfte
  • ❌ Ställ inte in lång TTL

Exempel med reserv

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

Att välja rätt typ

Beslutsträd

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)

Jämförelsematris

Funktion Transaktion Kampanj Undersökning Flash Call
Rich Media
Interaktiv
Personalisering
Typisk TTL Timmar Dagar Vecka Protokoll
Kostnad Medium Medium Medium Låg
Leveranshastighet Snabbt Snabbt Snabbt Snabbast

Implementeringsexempel

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

Nästa steg