logomarca lojamundi
Contatos
61 99137 5620

11 2666 4242
21 2169 8855
31 4042 1799
Outros Telefones
logomarca lojamundi
botão minha contabotão entrarbotão cadastro
botão servicosbotão blogbotão contato
Manuais

Funções do Dialplan do Asterisk 22
Comando:

EVAL_SUB()


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)
Sintaxe:
[islocal]
exten => _X!,1,ExecIf($[${LEN(${EXTEN})}<10]?Return(1))
same => n,Set(LOCAL(npanxx)=${EXTEN:-10:6})
same => n,ReturnIf(${EXISTS(${DB(localcall/${npanxx})})}?${DB(localcall/${npanxx})})
same => n,Set(LOCAL(islocal)=${SHELL(curl "https://example.com/islocal?npanxx=${EXTEN:-10:6}")})
same => n,Set(LOCAL(islocal)=${FILTER(A-Z,${islocal})})
same => n,Set(DB(localcall/${npanxx})=${islocal})
same => n,Return(${islocal})
[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()
EVAL_SUB(context,extensions,priority)
Fonte: Asterisk Wiki
Divisor Triangular
POR QUE A LOJAMUNDI É CONFIÁVEL?
selo de verificação reclame aqui da lojamundiselo google site seguroselo reclame aqui com link de acessoselo https seguroselo let's encrypt

ENTRE EM CONTATO COM A LOJAMUNDI.

Assine nossa Newsletter! É gratuito!

Cadastre seu nome e email para receber novidades e materiais gratuitos da Lojamundi.