segunda-feira, 27 de setembro de 2010

Asterisk + BusyTone (TOM de Ocupado)

Pelo amor hein,

Este blog ta mais parado que imóvel abandonado. Bom faz tempo que não posto mesmo, estou numa correria danada e quando da tempo eu acabo mesmo é jogando um PES 2010 pra relaxar e agora que vou voltar a jogar um futebol o tempo vai encurtar mais um pouco.

Vamos lá, peguei um problema que me deu um pouco de dor de cabeça no asterisk.
Quando fazia uma ligação e a operadora retornava o SIP CODE 483 "Busy here" que significa que o assinante B está ocupado o asterisk simplesmente dava um HangUp, como eu não possuía um ATA nesse local e sim uma placa de E1 ela não liberava o sinal de OCUPADO e pro cliente ficava mudo dando a impressão que a ligação não completava. Depois de ler vários tutoriais e após vários testes nada de funcionar, até com o pessoal da lista do asteriskbrasil não rolou pois eles postaram o mesmo que mostravam no tutorial.
Ficou a dúvida: Com todos funcionam menos comigo?

Acabei procurando de outra forma no google e VUALA (ahahahah sei la como escreve essa porra) e cai num cara que abriu um bug no site do asterisk com a mesma duvida.

E a resposta foi simples: coloque um Progress() antes de tudo e vai se lasca porque era só isso. Como eu já comecei na versão 1.6 e uso a 1.6.2.9 ninguém tinha isso e não sei porque parece que todo mundo parou no tempo com a versao 1.4. Mas beleza segue o dialplan funcionando pra parar de encher linguiça.

Um exemplo com ligações locais, pro resto basta modificar:

exten => _[2-9]XXXXXXX,1,Dial(SIP/XXXXX/XXXXXX)
exten => _[2-9]XXXXXXX,n,Goto(discagem-${DIALSTATUS})

exten => _[2-9]XXXXXXX,n(discagem-BUSY),Progress()
exten => _[2-9]XXXXXXX,n,PlayTones(busy)
exten => _[2-9]XXXXXXX,n,Wait(6)
exten => _[2-9]XXXXXXX,n,StopPlayTones()
exten => _[2-9]XXXXXXX,n,Hangup()

Já era.

Fui