Saltar al contenido
nvíame
Capítulo 2 de 411 min12 oct 2026

Mensajes ricos por chat

Envía mensajes por varios canales IP con mx.chat.send y compara su comportamiento.

Un mensaje rico es un objeto estructurado, no un string. Tiene texto, quizá un medio adjunto, quizá sugerencias de respuesta. Cada canal lo traduce a su formato nativo.

Un modelo neutral de mensaje

const message = {
  text: "Tu pedido #4821 va en camino",
  media: { type: "image", url: "https://cdn.example.com/map.png" },
  suggestions: ["Ver seguimiento", "Hablar con soporte"],
};

Mantén este modelo libre de detalles de canal. El adaptador de RCS lo convierte en una rich card; el de un canal de chat, en un mensaje interactivo; el de SMS, en texto con un enlace corto.

Envía por varios canales

En el playground, mx.chat.send(channel, text) simula un envío por canal IP. Cada burbuja muestra la etiqueta del canal y su estado. Prueba enviar el mismo contenido por rcs, whatsapp e inapp.

// Mensajería IP: el mismo aviso por distintos canales
const aviso = "Tu pedido #4821 va en camino 🚚";

await mx.chat.send("rcs", aviso);
await mx.chat.send("whatsapp", aviso + "\n¿Quieres el seguimiento por aquí?");
await mx.chat.send("inapp", "Ubicación del repartidor actualizada");

console.log("3 mensajes enviados por canales IP");

Plantillas y contenido libre

Muchos canales de chat distinguen entre mensajes iniciados por la empresa, que deben usar plantillas preaprobadas, y respuestas dentro de una ventana de conversación abierta por el usuario, donde el contenido es libre. Diseña tu catálogo de plantillas desde el inicio: cada plantilla tiene variables, un idioma y una categoría.

Los elementos ricos —botones, carruseles, ubicaciones— no se degradan solos. Si el canal no los soporta, tu capa de envío debe traducirlos a texto plano con enlaces o números de opción. Esa traducción es parte del contrato de tu servicio de mensajería, no un detalle de cada equipo.

Se completa automáticamente al leer el 80%.

Comentarios (3)

Diego Fernández12 oct 2026

¿Cómo represento botones si el canal no los soporta?

Equipo nvíameAutor12 oct 2026

Degrada a texto numerado: '1) Confirmar 2) Reprogramar'. Define un modelo de mensaje neutral y deja que cada adaptador de canal lo renderice con sus capacidades.

Sofía Castillo12 oct 2026

Lo apliqué en el proyecto del trabajo. La sección «Mensajes ricos por chat» me ahorró una discusión larga con el equipo: ahora tenemos un criterio compartido.

Valentina Muñoz12 oct 2026

¿Hay alguna diferencia importante si lo implemento en un servicio con varias instancias detrás de un balanceador?

Equipo nvíameAutor12 oct 2026

Sí: todo estado que hoy vive en memoria (contadores, sesiones, claves vistas) debe moverse a un almacén compartido con TTL, como Redis. Si no, cada instancia ve solo una parte de la historia.

Los comentarios se guardan solo en este navegador.