Funções do Dialplan do Asterisk 20
Comando:
EVAL_EXTEN()
Sinopse:
Avalia o conteúdo de uma extensão do dialplan e retorna como uma string.
Descrição:A função
EVAL_EXTEN() busca uma entrada no dialplan por contexto, extensão e prioridade. Ela avalia o conteúdo de uma instrução
Return para resolver quaisquer referências a variáveis ou funções, e retorna o resultado como uma string.
Você pode usar esta função para criar tabelas de consulta ou funções definidas pelo usuário simples.
Exemplo: Funções de dialplan personalizadas
[call-types]
exten => _1NNN,1,Return(internal)
exten => _NXXNXXXXXX,1,Return(external)
[udf]
exten => calleridlen,1,Return(${LEN(${CALLERID(num)})})
[default]
exten => _X!,1,Verbose(Call type ${EVAL_EXTEN(call-types,${EXTEN},1)} - ${EVAL_EXTEN(udf,calleridlen,1)})
Exemplo: Escolhendo qual prompt usar
same => n,Read(input,${EVAL_EXTEN(prompts,${CALLERID(num)},1)})
[prompts]
exten => _X!,1,Return(default)
exten => _20X,1,Return(welcome)
exten => _2XX,1,Return(${DB(promptsettings/${EXTEN})})
exten => _3XX,1,Return(${ODBC_MYFUNC(${EXTEN})})
Uma limitação desta função é que a aplicação na extensão especificada não é realmente executada, e assim, diferente de um
Gosub, você não pode passar argumentos na função
EVAL_EXTEN(). Se você precisar da capacidade de avaliar lógica mais complexa que não pode ser feita puramente usando funções, veja '
EVAL_SUB'.
Sintaxe:
[call-types]
exten => _1NNN,1,Return(internal)
exten => _NXXNXXXXXX,1,Return(external)
[udf]
exten => calleridlen,1,Return(${LEN(${CALLERID(num)})})
[default]
exten => _X!,1,Verbose(Call type ${EVAL_EXTEN(call-types,${EXTEN},1)} - ${EVAL_EXTEN(udf,calleridlen,1)})
same => n,Read(input,${EVAL_EXTEN(prompts,${CALLERID(num)},1)})
[prompts]
exten => _X!,1,Return(default)
exten => _20X,1,Return(welcome)
exten => _2XX,1,Return(${DB(promptsettings/${EXTEN})})
exten => _3XX,1,Return(${ODBC_MYFUNC(${EXTEN})})
EVAL_EXTEN(context,extensions,priority)
Fonte: Asterisk Wiki