Funções do Dialplan do Asterisk 21
Comando:
TONE_DETECT()
Sinopse:
Detecta um tom de forma assíncrona.
Descrição:A função
TONE_DETECT detecta um tom de frequência única e acompanha o número de vezes que o tom foi detectado.
Ao ler esta função (em vez de escrever), forneça 'tx' para obter o número de vezes que um tom foi detectado na direção TX e 'rx' para obter o número de vezes que um tom foi detectado na direção RX.
Esta função é útil para interceptar tons específicos durante uma chamada, como tons de ocupado, de discagem ou tons DTMF, permitindo que o dialplan reaja de acordo. Pode ser usada para desligar chamadas em caso de sinal de ocupado, redirecionar a chamada ao detectar um tom específico ou simplesmente monitorar a presença de um tom.
Exemplo:
intercept2600same => n,Set(TONE_DETECT(2600,1000,g(got-2600,s,1))=) ; detecta 2600 Hz
same => n,Wait(15)
same => n,NoOp(${TONE_DETECT(rx)})
Exemplo:
dropondialtonesame => n,Set(TONE_DETECT(0,,bg(my-hangup,s,1))=) ; desconecta a chamada se ouvirmos um sinal de ocupado
same => n,Goto(somewhere-else)
same => n(myhangup),Hangup()
Exemplo:
removedetectorsame => n,Set(TONE_DETECT(0,,x)=) ; remove o detector do canal
TONE_DETECT(freq[,duration_ms,options])- freq - Frequência do tom a ser detectado. Para desabilitar completamente a detecção de frequência (por exemplo, para detecção de sinal apenas), especifique 0 para a frequência.
- duration_ms - Duração mínima do tom, em ms. O padrão é 500ms. Usar uma duração mínima inferior a 50ms provavelmente não produzirá resultados precisos.
- options
- a - Corresponde imediatamente a Tons de Informação Especial, em vez de ou além de uma frequência específica.
- b - Corresponde imediatamente a um sinal de ocupado, em vez de ou além de uma frequência específica.
- c - Corresponde imediatamente a um tom de discagem, em vez de ou além de uma frequência específica.
- d - Limiar de decibéis personalizado a ser usado. O padrão é 16.
- e - Encerra automaticamente a detecção após o número desejado de acertos (conforme especificado na opção 'n').
- g - Vai para o contexto, extensão e prioridade especificados se o tom for recebido neste canal. A detecção não terminará automaticamente, a menos que a opção 'e' também seja especificada.
- h - Vai para o contexto, extensão e prioridade especificados se o tom for transmitido neste canal. A detecção não terminará automaticamente, a menos que a opção 'e' também seja especificada.
- n - Número de vezes que o tom deve ser detectado (sujeito ao tempo limite fornecido) antes de ir para o destino fornecido nas opções 'g' ou 'h'. O padrão é 1.
- p - Corresponde imediatamente a um tom de retorno de chamada audível, em vez de ou além de uma frequência específica.
- r - Aplica-se apenas a quadros recebidos. O padrão é ambas as direções.
- s - Suprime o tom.
- t - Aplica-se apenas a quadros transmitidos. O padrão é ambas as direções.
- x - Destrói o detector (interrompe a detecção).
Sintaxe:
same => n,Set(TONE_DETECT(2600,1000,g(got-2600,s,1))=) ; detect 2600 Hz
same => n,Wait(15)
same => n,NoOp(${TONE_DETECT(rx)})
same => n,Set(TONE_DETECT(0,,bg(my-hangup,s,1))=) ; disconnect a call if we hear a busy signal
same => n,Goto(somewhere-else)
same => n(myhangup),Hangup()
same => n,Set(TONE_DETECT(0,,x)=) ; remove the detector from the channel
TONE_DETECT(freq[,duration_ms,options])
Fonte: Asterisk Wiki