[AsteriskBrasil] Detectar fim de chamada
Luis Antonio Prata Barbosa
luispratalistas em gmail.com
Sexta Outubro 5 15:59:45 BRT 2007
Gilberto,
O Hangup com busy detect acontece quando o sinal de ocupado for detectado no
audio da linha.
Ou seja, quando o asterisk detectar algo como "tu, tu, tu, tu".
O asterisk não se importa com a frequencia do tom, apenas conta quanto tempo
houve "tom" e quanto tempo houve "silencio". Depois compara isso com o
padrao apresentado.
Com uma pabx intelbras o padrão que permitiu a detecção foi
busypattern=140,60 ... que é um sinal de ocupado bem rapido. 160
milisegundos de tom e 40 de silencio. Detalhe: o padrão minimo aceitavel era
de 70, então tive que mudar no codigo fonte para que aceitasse 40.
Com a utilização de uma linha da Brasil Telecom, tive um outro problema.
Ouvindo o sinal de ocupado percebi que 3 beeps eram mais curtos, ai havia
um levemente mais longo e assim repetidamente... A dificuldade é que a
detecao de hangup nao esta preparada para detectar padroes assim...
Alterando o código fonte do dsp.c foi possivel fazer uma adaptação para que
esse tipo de padrão fosse detectado.
Outro fator muito importante aqui é o echo !!! Na pabx da intelbras por
exemplo ( usando o fxotune versao patcheada ) eu medi o echo em 70% ... o
que é muuuuito alto. Dessa forma se a URA estiver tocando uma mensagem, essa
mensagem sera recebida de volta e pode mascarar o padrao de ocupado. Ainda
não testei caceladores de echo de melhor desempenho, mas esse deve ser o
proximo passo.
Luis.
Em 05/10/07, Gilberto Nunes <gilbertonunes em yahoo.com.br> escreveu:
> Pessoal
>
> Estou enfrentando o seguinte problema:
>
> Tenho a seguinte URA configurada no asterisk:
>
> ;URA
>
> exten => s, 1, Wait,10
> exten => s, 2, Answer()
> exten => s, 3, Set(CALLFILENAME=/var/spool/asterisk/monitor/entrada/)
> exten => s, 4,
> Monitor(wav,${CALLFILENAME}/${STRFTIME(${EPOCH},,%d%m%Y-%H:%M:
> %S)}-${EXTEN},m)
> exten => s, 5, Wait,1
> exten => s, 6, Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5sec
> exten => s, 7, Set(TIMEOUT(response)=10) ; Set Response Timeout to 10sec
> exten => s, 8, Background(bemvindo)
>
> exten => 1, 1, Goto(loja,s,1)
> exten => 2, 1, Goto(assistencia,s,1)
>
> ;exten => s, 9, Wait,2
> exten => s, 9, Queue(8500||||20)
>
> exten => i, 1, Playback(invalid)
> exten => i, 2, Wait,2
> exten => i, 3, Goto(s,8)
>
> exten => s, 10, HangUp()
>
>
> [loja]
> exten => s, 1, Queue(8600||||20)
>
> [assistencia]
> exten => s, 1, Queue(8500||||20)
>
> Acontece que se a pessoa que ligou desliga antes ou durante a URA, a
> ligação
> continua até ser redirecionada para o destino final, ou seja, a ligação
> continua.
>
> Tenho uma placa VB0408-PCI.
>
> Já coloquei o seguinte no zapata.conf:
>
> busydetect=yes
> busycount=4
> busypattern=500,500
> answeronpolarityswitch=yes
> hanguponpolarityswitch=yes
>
> e no digivoice.conf
>
> busydetect=yes
> busycount=4
> busypattern=500,500
> answeronpolarityswitch=yes
> hanguponpolarityswitch=yes
>
>
> Como posso resolver esse problema?
> Já vasculhei o google e achei a solução com o busydetect, mas parece que
> com a
> placa da Digivoice não funciona ou eu estou fazendo alguma configuração
> errada.
>
> Obrigado
> --
> Gilberto Nunes
> BitMix Tecnologia
> Itajaí - SC
> _______________________________________________
> Compre uma camiseta da AsteriskBrasil.org!
> http://www.voipmania.com.br
> == VoIPMania.com.br ==
>
> _______________________________________________
> LIsta de discussões AsteriskBrasil.org
> AsteriskBrasil em listas.asteriskbrasil.org
> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20071005/0e3c9e55/attachment.htm
Mais detalhes sobre a lista de discussão AsteriskBrasil