Asterisk Trick nº 1: GotoIf
Dica do dia para o Asterisk. A aplicação GotoIf tem uma sintaxe que pode ser considerada pegadinha de newbie. Veja:
exten => _X.,1,GotoIf($["${VARIAVEL}"=""]?labeltrue:labelfalse)
exten => _X.,n(labeltrue),Noop(Acao a ser executada caso true)
exten => _X.,n(labelfalse),Noop(Acao a ser executada caso false)
Observe que é muito parecido com um operador ternário da maioria das linguagens de programação. Dicas:
- Não coloque nenhum espaço separando as condicionais, ? e : do contrário ele não lerá “labeltrue” mas “(ESPAÇO)labeltrue(ESPAÇO)”
- Em nenhuma hipotese coloque a variavel sem as ” (aspas duplas) caso a variável seja nula ou não definida você ganha um erro do interpretador e não será levado ao labelfalse
- Perceba que $[] delimita que ali está ocorrendo uma comparação ou qualquer operação que retornará 1 ou 0, true ou false.
- No lugar das labels “labeltrue” e “labelfalse” você pode colocar o índice da prioridade sem problema nenhum, nesse caso 2 e 3 respectivamente. Eu prefiro usar label já que ela move junto com minhas edições. E é bem mais legível.
Dica adicional: “Sempre escreva seu código como se o cara que vai dar manutenção é um maníaco homicida que sabe onde você mora” – Dicas do Visual Studio