Saltar a contenido

tipos de mensajes

Cascade API admite cuatro tipos de mensajes, cada uno optimizado para diferentes casos de uso y canales.

Descripción general

Tipo Propósito Canales Interactivo
transacción Notificaciones críticas Todo No
promoción Campañas de marketing Todo Sí (botones)
viber_encuesta Encuestas y comentarios Viber, SMS Sí (opciones)
llamada flash Verificación telefónica Llamada telefónica No

Mensajes de transacciones

Notificaciones críticas como confirmaciones de pedidos, actualizaciones de cuenta y alertas del sistema.

Características

  • Entrega de alta prioridad
  • Sin contenido promocional
  • Directo y conciso
  • Es urgente
  • Enrutado a través de: Telegram → Viber → RCS → SMS

Casos de uso

  • Confirmaciones de pedidos
  • Notificaciones de pago
  • Alertas de cuenta
  • Notificaciones de seguridad
  • Actualizaciones de entrega
  • Restablecimiento de contraseña

Ejemplo

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

Mejores prácticas

  • ✅ Mantenga los mensajes con menos de 160 caracteres cuando sea posible
  • ✅ Incluir detalles relevantes de la transacción
  • ✅ Proporcionar enlaces de seguimiento
  • ✅ Utilice un lenguaje claro y profesional
  • ❌ No incluyas contenido de marketing.
  • ❌ No uses emojis en exceso

Ejemplos por caso de uso

Confirmación de pedido

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

Notificación de pago

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

Alerta de seguridad

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

Actualización de entrega

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

Mensajes promocionales

Campañas de marketing y promoción con rich media y elementos interactivos.

Características

  • Soporte de medios enriquecidos
  • Botones interactivos
  • Centrado en el llamado a la acción.
  • TTL más largo aceptable
  • Enrutado a través de: Telegram → Viber → RCS → SMS

Casos de uso

  • Lanzamientos de productos
  • Anuncios de ventas
  • Invitaciones a eventos
  • Campañas de boletines
  • Ofertas especiales
  • Conocimiento de la marca

Ejemplo

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

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

Mejores prácticas

  • ✅ Incluir un llamado a la acción claro
  • ✅ Utilice un lenguaje atractivo
  • ✅ Agregar parámetros de seguimiento a las URL
  • ✅ Personalizar con variables
  • ✅ Prueba en múltiples canales
  • ❌ No envíes spam a los clientes
  • ❌ No utilices contenido engañoso
  • ❌ No excedas los límites de caracteres

Ejemplos por caso de uso

Lanzamiento del producto

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

Venta flash

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

Invitación al evento

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

Carro abandonado

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

Encuesta de Viber

Encuestas y sondeos interactivos para recopilar comentarios de los clientes.

Características

  • 2-5 opciones de respuesta
  • Texto limitado a 85 caracteres
  • Interfaz interactiva en Viber
  • Respaldo a SMS (sin interactividad)
  • Formato de pregunta única

Casos de uso

  • Encuestas de satisfacción del cliente
  • Comentarios sobre el producto
  • Calificaciones de calidad del servicio.
  • Investigación de mercado
  • Comentarios del evento
  • Puntuación neta del promotor (NPS)

Ejemplo

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

Restricciones

  • Texto: Máximo 85 caracteres
  • Opciones: 2-5 opciones
  • Longitud de la opción: Mantenga menos de 30 caracteres cada uno
  • TTL: Recomendado 7-30 días

Mejores prácticas

  • ✅ Haz una pregunta clara
  • ✅ Proporcionar opciones equilibradas
  • ✅ Utilice un lenguaje sencillo
  • ✅ Mantenga las opciones concisas
  • ✅ Establecer TTL apropiado (más de 7 días)
  • ❌ No hagas múltiples preguntas
  • ❌ No utilices jerga técnica
  • ❌ No sesgues las respuestas

Ejemplos por caso de uso

Satisfacción del cliente (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"
  ]
}

Comentarios sobre el producto

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

Calidad del servicio

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

Comentarios del evento

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

Llamada rápida

Verificación telefónica mediante llamadas automáticas en lugar de códigos SMS.

Características

  • Verificación rentable
  • Más rápido que SMS (1-3 segundos)
  • No hay código visible en las notificaciones.
  • Resistente a ataques de intercambio de SIM
  • Solo llamada telefónica (no Telegram/Viber)

Casos de uso

  • Registro de usuario
  • Verificación de inicio de sesión
  • Validación de número de teléfono
  • Autenticación de dos factores
  • Recuperación de cuenta
  • Confirmación de transacción

Ejemplo

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

Cómo funciona

  1. El usuario ingresa el número de teléfono
  2. API inicia una llamada flash
  3. La llamada finaliza después de 1 o 2 timbres.
  4. La aplicación captura el identificador de llamadas
  5. Identificador de llamadas verificado según el patrón
  6. Usuario autenticado

Mejores prácticas

  • ✅ Establecer TTL corto (60-300 segundos)
  • ✅ Implementar la detección de identificador de llamadas
  • ✅ Proporcionar respaldo de SMS
  • ✅ Manejar solicitudes de permiso
  • ✅ Mostrar instrucciones claras
  • ❌ No utilizar con fines promocionales.
  • ❌ No establezcas TTL largos

Ejemplo con respaldo

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

Elegir el tipo correcto

Árbol de decisión

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)

Matriz de comparación

Característica Transacción Promoción Encuesta Llamada flash
Medios enriquecidos
Interactivo
Personalización
TTL típico Horas Días Semana Minutos
Costo Medio Medio Medio Bajo
Velocidad de entrega Rápido Rápido Rápido Más rápido

Ejemplo de implementación

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

Próximos pasos