Help Center tipos de mensajes

tipos de mensajes

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

Descripción general

TipoPropósitoCanalesInteractivo
transacciónNotificaciones críticasTodoNo
promociónCampañas de marketingTodoSí (botones)
viber_encuestaEncuestas y comentariosViber, SMSSí (opciones)
llamada flashVerificación telefónicaLlamada telefónicaNo

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ísticaTransacciónPromociónEncuestaLlamada flash
Medios enriquecidos
Interactivo
Personalización
TTL típicoHorasDíasSemanaMinutos
CostoMedioMedioMedioBajo
Velocidad de entregaRápidoRápidoRápidoMá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