Switch / Case
Encamina la llamada según el valor de una variable. Cada caso declarado crea su propia salida, por igualdad exacta o según un patrón, y Defecto recoge el resto.
En resumen
| Salidas | una por caso declarado, más Defecto |
| Etiqueta de una salida | el valor del caso, precedido de ~ cuando Regex está marcado |
| Campos | Expresión a comprobar, y luego una tabla Valor del caso con una casilla Regex |
| Comparación por defecto | igualdad exacta, mayúsculas y espacios incluidos |
| Número de casos | ilimitado |
| Orden | gana el primer caso que coincide; los siguientes no se evalúan |
El texto de ayuda mostrado en la ventana es: «Cada caso crea una salida; "Defecto" se toma si ningún caso coincide. Marque "Regex" para tratar el valor como una expresión regular (ej. ^\+251, ^0[1-9][0-9]{7}$). Si no, igualdad exacta.»
Cómo funciona
El módulo calcula primero la expresión a comprobar, en general una variable escrita {{mi_variable}}. Obtiene así un texto, el que porta la variable en el momento del paso de la llamada.
Recorre después sus casos de arriba abajo y se detiene en el primero que coincide. Si ninguno coincide, toma Defecto.
Igualdad exacta
Sin la casilla Regex, un caso coincide cuando el valor es rigurosamente idéntico: Premium y premium son dos valores distintos, y un espacio de más basta para que la comparación falle.
Patrón, o expresión regular
Una expresión regular es una descripción de forma más que un valor. En lugar de enumerar los miles de números que empiezan por 02, describe «empieza por 02, luego cifras».
Bastan unos pocos signos para cubrir casi todas las necesidades:
| Escritura | Qué significa |
|---|---|
^ | el principio del valor |
$ | el final del valor |
\d | un dígito |
[0-9] | un dígito, otra escritura |
[1-9] | un dígito del 1 al 9 |
+ | el signo anterior, una vez o más |
* | el signo anterior, cero veces o más |
{7} | el signo anterior, exactamente siete veces |
Los dos ejemplos de la interfaz se leen así: ^\+251 corresponde a cualquier valor que empiece por +251, y ^0[1-9][0-9]{7}$ a un valor de nueve dígitos que empieza por un cero seguido de un dígito del 1 al 9.
Escriba el patrón solo, sin encerrarlo entre barras. ^02 es correcto, /^02/ no coincidirá con nada.
Qué hay que indicar
| Campo | Qué se espera | Si lo deja vacío |
|---|---|---|
| Expresión a comprobar | una variable, por ejemplo {{idioma}}, o un texto que la contenga | el valor comprobado está vacío, y solo un caso vacío o Defecto puede tomarse |
| Valor del caso | el valor esperado, o el patrón si Regex está marcado | sin Regex, el caso solo coincide con un valor él mismo vacío; con Regex, coincide con todo y captura todas las llamadas |
| Regex | marcada, el valor se convierte en un patrón | comparación por igualdad exacta |
El botón Añadir crea una línea de caso, Eliminar retira la de la línea. Guardar cierra la ventana, y las salidas del módulo se reetiquetan de inmediato.
Procedimiento
- Coloque el módulo Switch / Case y conecte el nodo anterior a su entrada.
- Ábralo y rellene la Expresión a comprobar, copiando la variable desde el panel Variables disponibles en lugar de volver a escribirla.
- Haga clic en Añadir e indique el Valor del caso. Repita para cada valor que quiera distinguir.
- Marque Regex únicamente en las líneas donde describe una forma, y no un valor preciso.
- Ordene sus casos del más preciso al más general: gana el primero que coincide.
- Haga clic en Guardar. El módulo muestra ahora una salida por caso, más Defecto.
- Conecte cada salida a su destino, Defecto incluida: una salida tomada que no lleva a ninguna parte cuelga la llamada.
- Coloque un módulo Depuración justo antes, con la variable comprobada como mensaje. Leerá el valor realmente comparado.
- Haga clic en Guardar, y luego en Aplicar los cambios en la barra superior.
- Llame a su número provocando cada uno de los casos, y compruebe que la llamada sale efectivamente donde la espera.
Si no funciona
Todas las llamadas van a Defecto. Lea primero el valor realmente comprobado, con una Depuración colocada justo antes. Nueve de cada diez veces está vacío, porque el módulo que fija la variable no se ha atravesado, o porque el nombre escrito entre llaves no corresponde.
Mi valor es el correcto pero el caso no se toma. La comparación es exacta: Premium no es premium, y un espacio al final del valor cuenta. Marque Regex y describa la forma, por ejemplo ^[Pp]remium$.
Mi patrón nunca coincide. Escríbalo sin barras alrededor: ^02\d+ y no /^02\d+/. Compruebe después que un patrón mal formado no pasa desapercibido: nunca coincide y no muestra ningún error.
Siempre gana el mismo caso, aunque dos podrían coincidir. Es el comportamiento esperado. Suba el caso más preciso por encima del más general, o restrinja el patrón del más general.
La llamada se corta aunque un caso coincide correctamente. La salida de ese caso no está conectada a nada. Compruebe cada salida del módulo, Defecto incluida, después de añadir o eliminar un caso: las salidas se renumeran.
Cómo se construye el plan de llamadas, explicado con imágenes
Ver la página Planes de numeración