Aplicações do Dialplan do Asterisk 18
Comando:
WaitForCondition()
Sinopse:
Aguarda (dorme) até que a condição especificada seja verdadeira.
Descrição:WaitForCondition() aguarda até que uma expressão seja avaliada como verdadeira, verificando a cada intervalo de segundos por até um tempo limite definido. Por padrão, a expressão é avaliada a cada 50 milissegundos sem tempo limite.
Este comando é útil para sincronizar o dialplan com eventos externos ou com o resultado de outras operações, permitindo que o fluxo de chamadas espere por uma condição específica antes de prosseguir.
Exemplo: Aguarda até que a variável/função do dialplan
condition se torne '1' por até 40 segundos, verificando a cada 500ms:
same => n,WaitForCondition(#,#["#{condition}"="1"],40,0.5)Status de Retorno de WaitForCondition():TRUE - A condição foi avaliada como verdadeira antes do tempo limite expirar.FAILURE - Argumento inválido.TIMEOUT - O tempo limite expirou sem que a condição se tornasse verdadeira.HANGUP - O canal foi desligado antes que a condição se tornasse verdadeira.
Sintaxe:WaitForCondition(replacementchar,expression,[timeout,[interval]])
replacementchar - Especifica o caractere na expressão usado para substituir o caractere '$'. Este caractere não deve ser usado em nenhum lugar na própria expressão.expression - Uma expressão lógica modificada com os caracteres '$' substituídos por replacementchar. Isso é necessário para passar a expressão em si para a aplicação, em vez de sua avaliação inicial.timeout - A quantidade máxima de tempo, em segundos, que esta aplicação deve esperar que uma condição se torne verdadeira antes que a execução do dialplan continue automaticamente para a próxima prioridade. Por padrão, não há tempo limite.interval - A frequência, em segundos, de polling da condição, que pode ser ajustada dependendo da sensibilidade ao tempo da execução. Por padrão, é 0,05.
Sintaxe:
same => n,WaitForCondition(#,#["#{condition}"="1"],40,0.5)
WaitForCondition(replacementchar,expression,[timeout,[interval]])
Fonte: Asterisk Wiki