[AsteriskBrasil] ATA FXO

Tiago Durante tiagodurante em gmail.com
Quinta Maio 8 15:30:45 BRT 2008


Olá Raniere,

Realmente ficou meio longo o texto. Mas na verdade eu preciso de ajuda
em um ponto simples...

Como eu faço para verificar se um ramal SIP está BUSY usando variáveis
do Asterisk? Ou comandos tb, tanto faz...

Porque hoje eu verifico usado o call-limit. Mas isso só me fala se tem
uma chamada [ou não] no canal, a porcaria é que as vezes, não sei pq
ainda, a linha no ATA fica ocupada depois de ser desligada. Por
exemplo, eu faço uma ligação para um ramal, falo 5 min e desligo. Se
eu jogar uma chamada pra esse ramal ele da BUSY, porém a variavel do
call-limit diz que não tem nenhuma chamada na linha.

Eu até tentei outras coisas mas não tive sucesso.

Alguém conhece bem essas variáveis de canal [SIP] para esse tipo de coisa?

=)


Mais resumido agora.. hehe



ps.: Acho que isso vai acabar sendo um POGzinho de qualquer jeito... heheheh

Abraços!



-- 
Tiago Durante

,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,
Perseverance is the hard work you do after you
get tired of doing the hard work you already did.
-- Newt Gingrich



2008/5/8 Raniere <raniere.ee em gmail.com>:
> Cara...eu até posso te ajudar...mas esse seu texto tá meio grande e assim
> fica complicado...saca só...faz uma figura qualquer , mesmo que seja no
> "dia" de como tah suas conexões fisicas. E ai sim com a explicação fica mais
> fácil visualizar e te propor uma solução mais fácil e que não seja POG.
>
> Blza.
>
> 2008/5/8 Tiago Durante <tiagodurante em gmail.com>:
>>
>> Nenhum comentário? rs...
>>
>>
>>
>> []s
>>
>> 2008/5/7 Tiago Durante <tiagodurante em gmail.com>:
>> > Olá senhores,
>> >
>> > Eu comecei a fazer essa gambiarra nível 5 essa semana... hehehe, então
>> > o que vou postar aqui ainda tem um pequeno defeito, que eu explico.
>> > Mas já funciona!!
>> >
>> > Vou explicar meu ambiente:
>> >
>> > Temos alguns Asterisks na empresa que trabalho, todos interligados via
>> > IAX/DUNDi. Para os sites onde temos Asterisk, beleza! Tá todo mundo
>> > falando via RAMAL e podendo ligar para o ramal direto.
>> >
>> > O problema está nos sites que ainda temos PBX comuns. Nesses sites
>> > temos ATAs conectados a portas FXO do PBX. Quando uma pessoa desse
>> > site FAZ uma ligação, beleza! Ela disca o ramal de destino e o ATA se
>> > vira com o Asterisk e entrega a chamada. A cagada está quando alguem
>> > de fora quer ligar para um ramal neste site. Ela não consegue, ou
>> > melhor, não conseguia, ligar diretamente. A chamada era atendida pela
>> > URA do site e ai o camarada entrava com o ramal.
>> >
>> > Antes eu usava QUEUE para entregar as chamadas nesses ramais
>> > conectados aos PBX comuns. Por exemplo, no PBX eu tenho conectado 2
>> > ATAs com um total de 4 ramais, esses ramais sempre começam no XXX99 e
>> > vão descendo. Sendo assim se os ramais desse site são 455XX, os dois
>> > ATAs teriam os ramais: 45599, 45598, 45597 e 45596. Eu colocava uma
>> > regra no dialplan que se o camarada chama 45599 o Asterisk jogava a
>> > chamada para a QUEUE com os 4 ramais e entregava em qquer um livre.
>> >
>> > LEGAL! Agora começa o POG (http://desciclo.pedia.ws/wiki/POG)
>> >
>> > =)
>> >
>> > Eu vi que não poderia usar fila, pois dependo da função M (macro) do
>> > comando DIAL. Mas eu preciso verificar se as linhas estão com aptas a
>> > receber uma ligação antes de jogar a chamada pro ATA. Confesso que
>> > preciso de ajuda exatamente nessa parte. Vou explicar o que fiz hoje.
>> >
>> > Cada linha no ATA pode ter uma ligação por vez (jura?). Então já
>> > defini isso no SIP.CONF com a opção call-limit=1. Isso é vital para o
>> > funcionamento do MACRO. Também deixo o qualify sempre ativo para esses
>> > ATAs, com isso eu posso verificar se ele está no ar e se já existe
>> > alguma chamada dentro dele. A macro verificar esses dois valores em
>> > todas a linhas, começando na primeira que eu passo para ele, por
>> > exemplo 45596, e terminando na ultima que sempre termina em 99, no
>> > caso 45599.
>> >
>> >
>> > Esse exemplo é de uma chamada que VAI PARA A URA:
>> > exten => 45599,1,Answer()
>> > exten => 45599,n,Macro(check-ata,45596,0,${EXTEN:1})
>> >
>> > check-ata é a minha macro
>> > 45596 é o primeiro ATA conectado ao PBX
>> > 0 é o valor que indica que ele vai para a URA, não jogando DTMF na linha
>> > ${EXTEN:1} é o ramal local no PBX, que nesse caso nem será usado, eu
>> > tiro o primeiro digito pq nos PBXs comuns nao existe esse 4, isso é um
>> > padrão nosso para localização geografica do ramal
>> >
>> >
>> > Exemplo jogando DTMF na linha com PBX
>> > exten => _455XX,1,Answer()
>> > exten => _455XX,n,Macro(check-ata,45596,1,${EXTEN:1})
>> >
>> > check-ata é a minha macro
>> > 45596 é o primeiro ATA conectado ao PBX
>> > 1 indica que tem DTMF para ser jogado na linha
>> > ${EXTEN:1} agora sim esse cara vai ser usado.
>> >
>> > Bom, agora que vc viu como chamar a macro, vamos ver o código.. que
>> > precisa ser melhorado:
>> >
>> > [macro-check-ata]
>> > ; Primeiro passo: Atende o canal e transforma as informacoes dos PEERS
>> > SIP
>> > ;                 em variaveis. Vamos usar o STATUS do canal, se ele
>> > esta
>> > ;                 conectado ou nao, e se existe uma CALL dentro desse
>> > canal.
>> > exten => s,1,Answer()
>> > exten => s,n,Set(channel=${ARG1})
>> > exten => s,n,Set(continue=yes)
>> > exten => s,n,Set(calls=${SIPPEER(${channel}:curcalls)})
>> > exten => s,n,Set(status=${SIPPEER(${channel}:status)})
>> > exten => s,n,Set(status=${CUT(status, ,1)})
>> > exten => s,n,NoOp(MACRO CHECK == Calls: ${calls} / Status: ${status})
>> > ; Segundo passo: Caso o canal este OK e o numero de CALLs dentro desse
>> > canal
>> > ;                seja igual a zero, se sim ele joga a chamada para o
>> > GOTOIF
>> > ;                da posicao 13, se nao vai um para baixo. No verificador
>> > de
>> > ;                baixo ele olha se pode seguir pela variavel CONTINUE.
>> > exten => s,n,GoToIf($[$["${STATUS}" = "OK"] & $["${calls}" = "0"]]?13:9)
>> > exten => s,n,GoToIf($["${continue}" = "yes"]?10:102)
>> > ; Terceiro passo: Sendo possivel continuar ele soma 1 ao numero do
>> > ramal,
>> > ;                 isso eh feito porque os ramais de ATA terminam sempre
>> > ;                 no ramal numero 99, esse eh o controlador para saber a
>> > ;                 hora que acabam os canais. Depois verifica se o valor
>> > ;                 do proximo canal eh 99, se sim avisa que eh a ultima
>> > ;                 volta do loop setando CONTINUE como NO.
>> > exten => s,n,Set(channel=$[${channel} + 1])
>> > exten => s,n,Set(continue=${IF($[${channel:3} = 99]?no:yes)})
>> > exten => s,n,GoTo(s,4)
>> > ; Quarto passo: Se a chamada eh possivel ele ve se deve joga-la com o
>> > DTMF
>> > ;               ou se a chamada deve realmente cair na URA/Telefonista.
>> > exten => s,n,GoToIf($["${ARG2}" = "0"]?14:17)
>> > exten => s,n,Dial(SIP/${channel},40,D)
>> > exten => s,n,Congestion(5)
>> > exten => s,n,HangUp()
>> > exten => s,n,Dial(SIP/${channel},40,DM(dial-ata,${ARG3}))
>> > exten => s,n,Congestion(5)
>> > exten => s,n,HangUp()
>> > ; Quinto passo: Nao sendo possivel jogar a chamada em nenhum canal,
>> > BUSY.
>> > exten => s,102,Congestion(5)
>> > exten => s,103,HangUp()
>> > exten => t,1,HangUp()
>> > exten => i,1,HangUp()
>> >
>> >
>> > O segredo do negocio está aqui:
>> > exten => s,n,Dial(SIP/${channel},40,DM(dial-ata,${ARG3}))
>> >
>> > Quando a chamada vai com DTMF para ser jogado na linha ele chama a
>> > macro dial-ata que é extremamente simples:
>> >
>> > [macro-dial-ata]
>> > ; Joga DTMF dentro de canal para forcar ATA a realizar chamada para
>> > dentro do PABX
>> > exten => s,1,NoOp(MACRO - Dial ATA)
>> > exten => s,n,Wait(4)
>> > exten => s,n,SendDTMF(${ARG1})
>> > exten => s,102,HangUp()
>> >
>> >
>> >
>> > PRONTO! Simples assim...
>> >
>> >
>> > AGORA, qual é o problema?
>> >
>> > As vezes os ATAs ficam busy... E isso não aparece nas variveis que eu
>> > verifico antes de jogar a chamada pra linha X do ATA. Isso faz com que
>> > quem disca tenha tom de ocupado imediatamente. Bom, como fiz essa
>> > parada na segunda-feira... acho até tá prestando bem... mas quero só
>> > arrumar esse detalhe... ae fica coisa linda!
>> >
>> > Se alguem tiver dicas!
>> >
>> > Espero ter ajudado! =)
>> >
>> >
>> > Abraços,
>> >
>> >
>> >
>> >
>> > --
>> > Tiago Durante
>> >
>> > ,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,
>> > Perseverance is the hard work you do after you
>> > get tired of doing the hard work you already did.
>> > -- Newt Gingrich
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > 2008/5/6 Halley Souza <aiccomti em gmail.com>:
>> >> Tiago, gostaria de receber seu exemplo também, pois até hoje não
>> >> consegui
>> >> fazer isto com o meu gateway.
>> >>
>> >> Abs
>> >>
>> >> Halley
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> 2008/5/6 Rafael Puga <rad.puga em gmail.com>:
>> >>
>> >> > Estou no aguardo, obrigado =)
>> >> >
>> >> >
>> >> > 2008/5/6 Tiago Durante <tiagodurante em gmail.com>:
>> >> >
>> >> >
>> >> >
>> >> > > Rafael, estou fazendo a mesma coisa aqui e já funcionou...
>> >> > >  Não estou com tempo agora, mas depois te passo como fiz.
>> >> > >  É bem simples, usei MACRO no DIAL e o comando SendDTMF
>> >> > >
>> >> > >
>> >> > >  Abraços,
>> >> > >
>> >> > >
>> >> > >  2008/5/6 Rafael Puga <rad.puga em gmail.com>:
>> >> > >
>> >> > >
>> >> > > > Olá pessoal, estou com um ATA FXO e para efetuar uma ligação, é
>> >> > >  >  necessário chamar o ramal logado na linha analógica PSTN, assim
>> >> > >  >  obtenho a linha e faço a chamada. Mas gostaria de abstrair isso
>> >> > > ao
>> >> > >  >  usuário, pra ele não ter que ficar chamando um dos 4 ramais e
>> >> > > assim
>> >> > >  >  efetuar a ligação. Para isso, fiz algo do tipo:
>> >> > >  >
>> >> > >  >  exten => _[7-9]XX.,1,Dial(SIP/RAMAL_DO_ATA,45,Tt,D(${EXTEN})
>> >> > >  >
>> >> > >  >  Fiz isso, pois é apenas para ligações para celular. usei a
>> >> > > opção "D"
>> >> > >  >  do Dial() para que ele enviasse os digitos em DTMF assim que
>> >> > > abrisse
>> >> o
>> >> > >  >  canal em que obtenho a linha, porém não funcionou. Estou usando
>> >> > >  >  Asterisk 1.4.19, alguém já fez isso e poderia me dar uma
>> >> > > ajuda...
>> >> > >  >
>> >> > >  >
>> >> > >  >  --
>> >> > >  >  Grato,
>> >> > >  >  Rafael Puga
>> >> > >  >
>> >> > >
>> >> > >
>> >> > >  --
>> >> > >  Tiago Durante
>> >> > >
>> >> > >
>> >> > >  ,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,
>> >> > >  Perseverance is the hard work you do after you
>> >> > >  get tired of doing the hard work you already did.
>> >> > >  -- Newt Gingrich
>> >> > >  _______________________________________________
>> >> > >  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
>> >> > >
>> >> >
>> >> >
>> >> >
>> >> > --
>> >> >
>> >> >
>> >> >
>> >> > Grato,
>> >> > Rafael Puga
>> >> >
>> >> > "Dados olhos suficientes, todos os erros são triviais."
>> >> > _______________________________________________
>> >> > Compre uma camiseta da AsteriskBrasil.org!
>> >> >            http://www.voipmania.com.br
>> >> >                == VoIPMania.com.br ==
>> >
>>
>>
>>
>> --
>> Tiago Durante
>>
>> ,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,
>> Perseverance is the hard work you do after you
>> get tired of doing the hard work you already did.
>> -- Newt Gingrich
>> _______________________________________________
>> 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
>
>
>
> --
> Raniere dos Santos Machado
> Engenheiro Eletricista
> Intechne - Tecnologia da Informação
> Tel : 55 98 32468182
> Cel: 55 98 81633180
> MSN: rsmraniere em yahoo.com.br
> _______________________________________________
> 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
>


More information about the AsteriskBrasil mailing list