Gå til indholdet

Meddelelsestyper

Cascade API understøtter fire meddelelsestyper, der hver er optimeret til forskellige brugssager og kanaler.

Oversigt

Skriv Formål Kanaler Interaktiv
transaktion Kritiske meddelelser Alle Nej
promo Marketingkampagner Alle Ja (knapper)
viber_survey Afstemninger og feedback Viber, SMS Ja (valgmuligheder)
flashcall Telefonbekræftelse Telefonopkald Nej

Transaktionsmeddelelser

Kritiske meddelelser som ordrebekræftelser, kontoopdateringer og systemadvarsler.

Karakteristika

  • Høj prioritet levering
  • Intet salgsfremmende indhold
  • Direkte og kortfattet
  • Tidsfølsom
  • Rutet gennem: Telegram → Viber → RCS → SMS

Use Cases

  • Ordrebekræftelser
  • Betalingsmeddelelser
  • Kontoadvarsler
  • Sikkerhedsmeddelelser
  • Leveringsopdateringer
  • Nulstilling af adgangskode

Eksempel

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

Bedste praksis

  • ✅ Hold beskeder under 160 tegn, når det er muligt
  • ✅ Inkluder relevante transaktionsdetaljer
  • ✅ Levere sporingslinks
  • ✅ Brug et klart, professionelt sprog
  • ❌ Inkluder ikke markedsføringsindhold
  • ❌ Brug ikke emojis overdrevent

Eksempler efter brug

Ordrebekræftelse

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

Betalingsmeddelelse

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

Sikkerhedsadvarsel

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

Leveringsopdatering

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

Kampagnebeskeder

Marketing- og salgsfremmende kampagner med rich media og interaktive elementer.

Karakteristika

  • Rich media support
  • Interaktive knapper
  • Call-to-action fokuseret
  • Længere TTL acceptabelt
  • Rutet gennem: Telegram → Viber → RCS → SMS

Use Cases

  • Produktlanceringer
  • Salgsmeddelelser
  • Begivenhedsinvitationer
  • Nyhedsbrevskampagner
  • Særlige tilbud
  • Brand awareness

Eksempel

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

Bedste praksis

  • ✅ Inkluder tydelig opfordring til handling
  • ✅ Brug engagerende sprog
  • ✅ Tilføj sporingsparametre til URL'er
  • ✅ Tilpas med variabler
  • ✅ Test på flere kanaler
  • ❌ Spam ikke kunder
  • ❌ Brug ikke vildledende indhold
  • ❌ Overskrid ikke tegngrænser

Eksempler efter brug

Produktlancering

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

Flash-udsalg

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

Begivenhedsinvitation

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

Forladt vogn

{
  "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øgelse

Interaktive afstemninger og undersøgelser til indsamling af kundefeedback.

Karakteristika

  • 2-5 svarmuligheder
  • Tekst begrænset til 85 tegn
  • Interaktiv grænseflade på Viber
  • Fallback til SMS (uden interaktivitet)
  • Enkeltspørgsmålsformat

Use Cases

  • Kundetilfredshedsundersøgelser
  • Produktfeedback
  • Servicekvalitetsvurderinger
  • Markedsundersøgelser
  • Begivenhedsfeedback
  • Net Promoter Score (NPS)

Eksempel

{
  "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ænsninger

  • Tekst: Maksimalt 85 tegn
  • Valgmuligheder: 2-5 valg
  • Længde på valgmuligheder: Hold under 30 tegn hver
  • TTL: Anbefalet 7-30 dage

Bedste praksis

  • ✅ Stil et klart spørgsmål
  • ✅ Give afbalancerede muligheder
  • ✅ Brug simpelt sprog
  • ✅ Hold mulighederne kortfattede
  • ✅ Indstil passende TTL (7+ dage)
  • ❌ Stil ikke flere spørgsmål
  • ❌ Brug ikke teknisk jargon
  • ❌ Vær ikke fordomsfulde svar

Eksempler efter brug

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

Begivenhedsfeedback

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

Flash-opkald

Telefonbekræftelse ved hjælp af automatiske opkald i stedet for SMS-koder.

Karakteristika

  • Omkostningseffektiv verifikation
  • Hurtigere end SMS (1-3 sekunder)
  • Ingen synlig kode i meddelelser
  • Modstandsdygtig over for SIM-bytteangreb
  • Kun telefonopkald (ingen Telegram/Viber)

Use Cases

  • Brugerregistrering
  • Login bekræftelse
  • Telefonnummervalidering
  • To-faktor autentificering
  • Kontogendannelse
  • Transaktionsbekræftelse

Eksempel

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

Sådan fungerer det

  1. Bruger indtaster telefonnummer
  2. API starter flash-kald
  3. Opkaldet afsluttes efter 1-2 ring
  4. App fanger opkalds-id
  5. Opkalds-id bekræftet i forhold til mønster
  6. Brugergodkendt

Bedste praksis

  • ✅ Indstil kort TTL (60-300 sekunder)
  • ✅ Implementer opkalds-id-detektion
  • ✅ Give SMS-faldback
  • ✅ Håndter anmodninger om tilladelse
  • ✅ Vis klare instruktioner
  • ❌ Brug ikke til salgsfremmende formål
  • ❌ Indstil ikke lang TTL

Eksempel med Fallback

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

Valg af den rigtige type

Beslutningstræ

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)

Sammenligningsmatrix

| Funktion | Transaktion | Kampagne | Undersøgelse | Flash Call | |--------|------------------------| | Rich Media | ❌ | ✅ | ❌ | ❌ | | Interaktiv | ❌ | ✅ | ✅ | ❌ | | Personalisering | ✅ | ✅ | ✅ | ❌ | | Typisk TTL | Timer | dage | Uge | Referat | | Omkostninger | Medium | Medium | Medium | Lav | | Leveringshastighed | Hurtigt | Hurtigt | Hurtigt | Hurtigste |

Implementeringseksempel

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æste trin