Aller au contenu

Types de messages

L'API Cascade prend en charge quatre types de messages, chacun optimisé pour différents cas d'utilisation et canaux.

Aperçu

Tapez Objectif Chaînes Interactif
transaction Notifications critiques Tout Non
promo Campagnes marketing Tout Oui (boutons)
viber_survey Sondages et commentaires Viber, SMS Oui (options)
appel flash Vérification du téléphone Appel téléphonique Non

Messages de transactions

Notifications critiques telles que les confirmations de commande, les mises à jour de compte et les alertes système.

Caractéristiques

  • Livraison haute priorité
  • Aucun contenu promotionnel
  • Direct et concis
  • Sensible au temps
  • Acheminé via : Télégramme → Viber → RCS → SMS

Cas d'utilisation

  • Confirmations de commande
  • Notifications de paiement
  • Alertes de compte
  • Notifications de sécurité
  • Mises à jour de livraison
  • Réinitialisation du mot de passe

Exemple

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

Bonnes pratiques

  • ✅ Gardez les messages de moins de 160 caractères lorsque cela est possible
  • ✅ Inclure les détails de la transaction pertinents
  • ✅ Fournir des liens de suivi
  • ✅ Utiliser un langage clair et professionnel
  • ❌ Ne pas inclure de contenu marketing
  • ❌ N'utilisez pas d'émojis de manière excessive

Exemples par cas d'utilisation

Confirmation de commande

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

Notification de paiement

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

Alerte de sécurité

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

Mise à jour de livraison

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

Messages promotionnels

Campagnes de marketing et de promotion avec des médias riches et des éléments interactifs.

Caractéristiques

  • Prise en charge des médias riches
  • Boutons interactifs
  • Axé sur l'appel à l'action
  • TTL plus long acceptable
  • Acheminé via : Télégramme → Viber → RCS → SMS

Cas d'utilisation

  • Lancements de produits
  • Annonces de ventes
  • Invitations à des événements
  • Campagnes de newsletter
  • Offres spéciales
  • Notoriété de la marque

Exemple

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

Avec des variables

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

Bonnes pratiques

  • ✅ Incluez un appel à l'action clair
  • ✅ Utilisez un langage engageant
  • ✅ Ajouter des paramètres de suivi aux URL
  • ✅ Personnaliser avec des variables
  • ✅ Test sur plusieurs canaux
  • ❌ Ne spammez pas les clients
  • ❌ N'utilisez pas de contenu trompeur
  • ❌ Ne dépassez pas les limites de caractères

Exemples par cas d'utilisation

Lancement du produit

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

Vente Flash

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

Invitation à un événement

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

Panier abandonné

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

Enquête Viber

Sondages et enquêtes interactifs pour recueillir les commentaires des clients.

Caractéristiques

  • 2 à 5 options de réponse
  • Texte limité à 85 caractères
  • Interface interactive sur Viber
  • Repli sur SMS (sans interactivité)
  • Format d'une seule question

Cas d'utilisation

  • Enquêtes de satisfaction clients
  • Commentaires sur les produits
  • Évaluations de la qualité du service
  • Etude de marché
  • Commentaires sur l'événement
  • Score net de promoteur (NPS)

Exemple

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

Contraintes

  • Texte : 85 caractères maximum
  • Options : 2 à 5 choix
  • Longueur de l'option : gardez moins de 30 caractères chacun
  • TTL : 7 à 30 jours recommandés

Bonnes pratiques

  • ✅ Posez une question claire
  • ✅ Proposer des options équilibrées
  • ✅ Utilisez un langage simple
  • ✅ Gardez les options concises
  • ✅ Définir le TTL approprié (7+ jours)
  • ❌Ne posez pas plusieurs questions
  • ❌ N'utilisez pas de jargon technique
  • ❌ Ne biaisez pas les réponses

Exemples par cas d'utilisation

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

Commentaires sur les produits

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

Qualité des services

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

Commentaires sur l'événement

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

Appel Flash

Vérification téléphonique à l'aide d'appels automatisés au lieu de codes SMS.

Caractéristiques

  • Vérification rentable
  • Plus rapide que les SMS (1 à 3 secondes)
  • Aucun code visible dans les notifications
  • Résistant aux attaques d'échange de carte SIM
  • Appel téléphonique uniquement (pas de Telegram/Viber)

Cas d'utilisation

  • Inscription des utilisateurs
  • Vérification de connexion
  • Validation du numéro de téléphone
  • Authentification à deux facteurs
  • Récupération de compte -Confirmation de transaction

Exemple

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

Comment ça marche

  1. L'utilisateur saisit le numéro de téléphone
  2. L'API lance un appel flash
  3. L'appel se termine après 1 à 2 sonneries
  4. L'application capture l'identification de l'appelant
  5. Identification de l'appelant vérifiée par rapport au modèle
  6. Utilisateur authentifié

Bonnes pratiques

  • ✅ Régler un TTL court (60-300 secondes)
  • ✅ Mettre en œuvre la détection de l'identification de l'appelant
  • ✅ Fournir une solution de secours SMS
  • ✅ Gérer les demandes d'autorisation
  • ✅ Afficher des instructions claires
  • ❌ Ne pas utiliser à des fins promotionnelles
  • ❌ Ne définissez pas de long TTL

Exemple avec repli

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

Choisir le bon type

Arbre de décision

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)

Matrice de comparaison

Fonctionnalité Transaction Promo Enquête Appel éclair
Médias riches
Interactif
Personnalisation
TTL typique Horaires Jours Semaine Procès-verbal
Coût Moyen Moyen Moyen Faible
Vitesse de livraison Rapide Rapide Rapide Le plus rapide

Exemple d'implémentation

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

Prochaines étapes