Aplicações do Dialplan do Asterisk 21
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 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: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]])Parâmetros: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, este valor é 0.05.