Laboratorio simulado
Pruebe failover sin riesgo
Fuerce un error en el adaptador de voz y observe cómo Router-Z intenta el siguiente canal, con evidencia registrada por cada intento.
Serie 01 · Build a Tiny CPaaS · Capítulo 3 de 5 · Routing
Aprenda a separar la decisión de enrutamiento de la ejecución del canal. El router evalúa la política, verifica la firma y delega a un adaptador. Cada decisión produce una evidencia auditable para medición y multitenencia. Plataforma Mobiconnect: Business API y AI sobre Open Telco, Open API, CAMARA y GSMA Open Gateway.
01 · Objetivos
Al finalizar, usted distinguirá tres responsabilidades: decidir, ejecutar y registrar. Esta separación permite cambiar de canal sin reescribir la lógica de negocio y facilita la auditoría por tenant.
| Política | Comportamiento | Uso |
|---|---|---|
| verified-only | Solo enruta si la firma, el antirrepetición, el tenant y el canal se verifican correctamente. En caso contrario, registra el rechazo y no ejecuta. | Por defecto. Recomendada. |
| least-cost | Ordena los canales por coste configurado y prueba uno a la vez, en orden. | Coste [por validar] en sandbox. |
| failover | Si el adaptador probado devuelve error, intenta el siguiente canal disponible. Cada intento queda registrado; solo puede haber un resultado exitoso por mensaje. | Requiere evidencia por intento. |
02 · Diagrama
El mensaje ingresa una sola vez. Router-Z evalúa la política, verifica firma, antirrepetición, tenant y canal; después, un adaptador ejecuta por intento. En modo failover puede haber varios intentos sucesivos, pero solo uno puede resultar exitoso. El ledger y la medición observan, no deciden.
03 · Pseudocódigo de referencia
Tres funciones, un contrato. El bloque siguiente describe el comportamiento evaluado en los ejercicios de esta lección como referencia conceptual; no corresponde a código ejecutado en el navegador.
// router.pseudo — contrato de referencia, no ejecutado en esta página
const route = router.route(msg, {
tenant: "tenant-demo",
channels: ["voice", "messaging", "qod"],
policy: "verified-only"
});
for (const intento of route.intentos) {
ledger.append(intento.evidencia); // se registra cada intento
if (intento.verified) {
adapter.execute(intento.channel, msg);
break; // un único intento exitoso posible
}
}
| Campo | Contenido |
|---|---|
| tenant | Identificador del tenant de ejemplo. Sin datos personales. |
| channel | Canal probado en este intento: voz, mensajería o QoD simulado. |
| policy | Política aplicada y orden de evaluación. |
| verified | Resultado booleano de la verificación de firma, antirrepetición, tenant y canal. |
| rejection | Motivo registrado cuando verified es falso. |
04 · Ejercicios calificados
Lea el caso, seleccione una opción, redacte su justificación y compruebe su criterio con la solución. El resultado no se envía a ningún servidor; contenido y solución visibles sin JavaScript.
Respuesta correcta: A. Con failover, Router-Z prueba los canales en el orden declarado tras cada fallo. Mensajería es el siguiente canal en la lista y no se ha agotado. La opción B viola el contrato de un intento por canal antes de avanzar. La opción C omite el orden declarado sin justificación de política.
05 · Siguiente paso
Practique el mismo contrato con fallos de adaptador en el laboratorio simulado, o revise el catálogo completo.
Laboratorio simulado
Fuerce un error en el adaptador de voz y observe cómo Router-Z intenta el siguiente canal, con evidencia registrada por cada intento.
Capítulo 4 de 5
Convierta la evidencia de esta lección en cargos auditables con límites configurables mediante Entitlements.
Producto
Explore cómo el mismo contrato de Router-Z se traslada al producto de Mobiconnect, con Entitlements configurables por tenant.