Funções do Dialplan do Asterisk 22
Descrição:A função
EVAL_SUB executa uma localização no plano de discagem (dialplan) por
context,extension,priority, com argumentos opcionais, e retorna o conteúdo da instrução
Return. Os argumentos para
EVAL_SUB são exatamente os mesmos utilizados com
Gosub.
Esta função é complementar à
EVAL_EXTEN. No entanto, é mais poderosa, pois permite executar um dialplan arbitrário e capturar algum resultado como valor de retorno de uma função do dialplan, permitindo que seja utilizada em uma variedade de cenários que não permitem executar o dialplan diretamente, mas permitem o uso de variáveis e funções, e onde o uso de
EVAL_EXTEN seria difícil ou impossível.
Consequentemente, esta função também permite que você implemente suas próprias funções arbitrárias no dialplan, que podem então ser encapsuladas usando a interface de função do Asterisk através do
EVAL_SUB.
Embora esta função tenha como finalidade principal ser utilizada para executar rotinas de
Gosub rápidas e que não interajam com o canal, é seguro executar um dialplan arbitrário, inclusive bloqueante, na sub-rotina chamada. Dito isto, esse tipo de uso não é recomendado.
Esta função sempre retornará, mesmo que o canal seja desconectado.
Exemplo: Registrar se uma chamada PSTN é local
exten => _X!,1,ExecIf($[${LEN(${EXTEN})}O exemplo acima, é claro, não exige o uso desta função, pois poderia ter sido invocado diretamente usando o aplicativo
Gosub. No entanto, se limitado apenas ao uso de variáveis ou funções,
EVAL_SUB seria necessário.
Sintaxe:
EVAL_SUB(context,extensions,priority)