Axivox Guia do utilizador
Voltar ao site

Switch / Case

Direciona a chamada segundo o valor de uma variável. Cada caso declarado cria a sua própria saída, por igualdade exata ou segundo um modelo, e Predefinição recolhe o resto.

Em resumo

Saídasuma por caso declarado, mais Predefinição
Rótulo de uma saídao valor do caso, precedido de ~ quando Regex está marcado
CamposExpressão a testar, depois uma tabela Valor do caso com uma caixa Regex
Comparação predefinidaigualdade exata, maiúsculas e espaços incluídos
Número de casosilimitado
Ordemo primeiro caso que corresponder vence; os seguintes não são avaliados

O texto de ajuda mostrado na janela é: «Cada caso cria uma saída; «Predefinição» é utilizada se nenhum caso corresponder. Marque «Regex» para tratar o valor como uma expressão regular (ex. ^\+251, ^0[1-9][0-9]{7}$). Caso contrário, igualdade exata.»

Como funciona

O módulo calcula primeiro a expressão a testar, em geral uma variável escrita {{minha_variavel}}. Obtém, portanto, um texto, o que a variável contém no momento da passagem da chamada.

Percorre depois os casos de cima para baixo e para no primeiro que corresponder. Se nenhum corresponder, utiliza Predefinição.

Igualdade exata

Sem a caixa Regex, um caso corresponde quando o valor é rigorosamente idêntico: Premium e premium são dois valores diferentes, e um espaço a mais basta para a comparação falhar.

Modelo, ou expressão regular

Uma expressão regular é uma descrição de forma em vez de um valor. Em vez de listar os milhares de números que começam por 02, descreve-se «começa por 02, depois algarismos».

Alguns sinais bastam para cobrir quase todas as necessidades:

EscritaO que significa
^o início do valor
$o fim do valor
\dum algarismo
[0-9]um algarismo, outra escrita
[1-9]um algarismo de 1 a 9
+o sinal anterior, uma vez ou mais
*o sinal anterior, zero vezes ou mais
{7}o sinal anterior, exatamente sete vezes

Os dois exemplos da interface leem-se assim: ^\+251 corresponde a qualquer valor que comece por +251, e ^0[1-9][0-9]{7}$ a um valor de nove algarismos que começa com um zero seguido de um algarismo de 1 a 9.

Escreva o modelo sozinho, sem o cercar de barras. ^02 está correto, /^02/ não corresponderá a nada.

O que preencher

CampoO que é esperadoSe o deixar vazio
Expressão a testaruma variável, por exemplo {{idioma}}, ou um texto que a contenhao valor testado é vazio, e só um caso vazio ou Predefinição pode ser utilizado
Valor do casoo valor esperado, ou o modelo se Regex estiver marcadosem Regex, o caso só corresponde a um valor ele mesmo vazio; com Regex, corresponde a tudo e capta todas as chamadas
Regexmarcada, o valor passa a modelocomparação por igualdade exata

O botão Adicionar cria uma linha de caso, Eliminar remove a da linha. Guardar fecha a janela, e as saídas do módulo são reetiquetadas de imediato.

Passo a passo

  1. Coloque o módulo Switch / Case e ligue o nó anterior à sua entrada.
  2. Abra-o e preencha a Expressão a testar, copiando a variável do painel Variáveis disponíveis em vez de a reescrever.
  3. Clique em Adicionar e indique o Valor do caso. Repita para cada valor que quiser distinguir.
  4. Marque Regex apenas nas linhas onde descreve uma forma, e não um valor preciso.
  5. Ordene os casos do mais preciso ao mais geral: o primeiro que corresponder vence.
  6. Clique em Guardar. O módulo mostra agora uma saída por caso, mais Predefinição.
  7. Ligue cada saída ao seu destino, Predefinição incluída: uma saída acionada que não leva a lado nenhum desliga a chamada.
  8. Coloque um módulo Depuração imediatamente antes, com a variável testada como mensagem. Vai ler-se o valor realmente comparado.
  9. Clique em Guardar, depois em Aplicar as alterações na faixa superior.
  10. Ligue para o número provocando cada um dos casos, e verifique que a chamada segue mesmo para onde se espera.

Se não funcionar

Todas as chamadas seguem para Predefinição. Leia primeiro o valor realmente testado, com uma Depuração colocada imediatamente antes. Nove em cada dez vezes está vazio, porque o módulo que define a variável não foi atravessado, ou porque o nome escrito entre chavetas não corresponde.

O meu valor é o certo mas o caso não é utilizado. A comparação é exata: Premium não é premium, e um espaço no fim do valor conta. Marque Regex e descreva a forma, por exemplo ^[Pp]remium$.

O meu modelo nunca corresponde. Escreva-o sem barras à volta: ^02\d+ e não /^02\d+/. Verifique em seguida que um modelo malformado não passa despercebido: nunca corresponde e não mostra nenhum erro.

É sempre o mesmo caso que vence, quando dois poderiam corresponder. É o comportamento esperado. Suba o caso mais preciso acima do mais geral, ou restrinja o modelo do mais geral.

A chamada é cortada mesmo quando um caso corresponde bem. A saída desse caso não está ligada a nada. Verifique cada saída do módulo, Predefinição incluída, depois de adicionar ou eliminar um caso: as saídas renumeram-se.

Como se constrói o plano de chamadas, explicado em imagens

Ver a página Planos de numeração