Envía tu primer SMS
Escribe código real contra el SDK simulado mx y observa el ciclo enviado → entregado.
Basta de teoría. En este capítulo vas a enviar mensajes con el SDK mx, una réplica fiel —pero simulada— de lo que encontrarás en cualquier proveedor. El código se ejecuta en tu navegador, en un Web Worker aislado: sin red, sin cuentas, sin costos.
Anatomía de una llamada de envío
Una llamada de envío necesita, como mínimo, un destinatario en E.164 y un texto. La función devuelve una promesa que se resuelve cuando el proveedor acepta el mensaje, con un id que usarás para correlacionar los estados posteriores.
const res = await mx.sms.send({
to: "+56912345678",
text: "Tu pedido fue despachado",
});
// res → { id: "msg_1", status: "sent" }Pruébalo
Edita el código: cambia el texto, agrega un segundo envío o imprime el objeto completo. Cada vez que dejas de escribir por medio segundo, el playground vuelve a ejecutar el script. Observa cómo la burbuja pasa de sent ✓ a delivered un instante después: eso simula el webhook de estado que llega desde el operador.
// Envía tu primer SMS con el SDK simulado
const res = await mx.sms.send({
to: "+56912345678",
text: "Hola desde nvíame 👋 Tu código de bienvenida es NV-2026",
});
console.log("id:", res.id, "· estado:", res.status);
// Prueba: envía a un segundo destinatario
await mx.sms.send({ to: "+5215512345678", text: "Recordatorio: tu cita es mañana 10:00" });Errores de validación
Intenta llamar mx.sms.send({ text: "hola" }) sin destinatario. El SDK lanza una excepción antes de enviar nada, igual que un proveedor real devolvería un 400 Bad Request. Valida siempre en tu lado: cada rechazo del proveedor es una ida y vuelta de red desperdiciada.
Cuando el envío falla
Prueba a borrar el signo más del número o a dejar el texto vacío. El SDK lanza un error síncrono antes de enviar nada, y el playground lo muestra en rojo. Esa es la primera línea de defensa: validar en tu código lo que el proveedor de todas formas rechazaría, para no pagar una petición de red por un error predecible.
En producción distinguirás tres familias de fallas: errores de validación (4xx, no reintentar), errores transitorios del proveedor (5xx o timeouts, reintentar con backoff) y fallas de entrega reportadas después por webhook (el operador no pudo entregar). Cada familia exige una reacción distinta, y mezclarlas produce duplicados o mensajes perdidos.