Funções do Dialplan do Asterisk 23
Comando:
EVAL_EXTEN()
Sinopse:
Avalia o conteúdo de uma extensão do plano de discagem e retorna o resultado como uma string.
Descrição:A função
EVAL_EXTEN pesquisa uma entrada do plano de discagem pelo contexto, extensão e prioridade, avalia o conteúdo de uma instrução
Return para resolver quaisquer referências de variáveis ou funções, e retorna o resultado como uma string.
Você pode usar esta função para criar tabelas de pesquisa ou funções definidas pelo usuário de forma simples.
Exemplo: Funções personalizadas no plano de discagem[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 usarsame => 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 o aplicativo na extensão especificada não é realmente executado, e portanto, diferentemente 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 possa ser feita puramente usando funções, consulte
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