Funções do Dialplan do Asterisk 21
Descrição:A função `EVAL_SUB` executa um trecho do dialplan em um contexto, extensão e prioridade específicos, com argumentos opcionais, e retorna o conteúdo da instrução `Return`. Os argumentos para `EVAL_SUB` são exatamente os mesmos que para o aplicativo `Gosub`.
Esta função é complementar a `EVAL_EXTEN`, mas é mais poderosa, pois permite executar dialplans arbitrários e capturar um resultado como o valor de retorno de uma função do dialplan. Isso possibilita o uso em diversos cenários que não permitem a execução direta do dialplan, mas permitem o uso de variáveis e funções, e onde usar `EVAL_EXTEN` seria difícil ou impossível.
Consequentemente, esta função também permite implementar suas próprias funções arbitrárias no dialplan, que podem então ser encapsuladas usando a interface de funções do Asterisk com `EVAL_SUB`.
Embora esta função seja primariamente destinada a ser usada para executar rotinas `Gosub` que sejam rápidas e não interajam com o canal, é seguro executar dialplans arbitrários, mesmo bloqueantes, na sub-rotina chamada. No entanto, esse tipo de uso não é recomendado.
Esta função sempre retornará, mesmo que o canal seja desligado.
Exemplo: Registrar se uma chamada da PSTN é local [islocal]
exten => _X!,1,ExecIf($[${LEN(${EXTEN})}
[outgoing]exten => _1NXXNXXXXXX,1,Set(CDR(toll)=${IF($["${EVAL_SUB(islocal,${EXTEN},1)}"="Y"]?0:1)})
same => n,Dial(DAHDI/1/${EXTEN})
same => n,Hangup()
O exemplo acima, é claro, não requer o uso desta função, pois poderia ter sido invocado usando o aplicativo `Gosub` diretamente. No entanto, se restrito a usar apenas variáveis ou funções, `EVAL_SUB` seria necessário.
EVAL_SUB(context,extensions,priority)context extensions priorityFunções do Dialplan
EVAL_EXTEN Aplicativos do Dialplan
Return