[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