jun 222010
 

Olá!

Os dois últimos how-to’s foram sobre o asterisk.

Primeiro, instalamos um servidor asterisk. Depois, fizemos um ATA SPA400-NA interagir com nosso servidor.

Se você “brincou” no asterisk, provavelmente já criou regras de ligação sainte e entrante, utilizando o ATA. OK, mas “eu quero mais” 😛

“Eu quero poder escolher por qual das linhas do ATA a ligação vai sair”

Para isto, o ATA obrigatoriamente tem que estar com o firmware atualizado! (leia o how-to anterior!)

Digamos que você criou uma regra (provavelmente utilizando o asterisk-gui) dizendo que o código para efetuar uma ligação sainte pelo ATA seja “100”.

Editando o arquivo /etc/asterisk/extensions.conf, localizado no servidor asterisk, provavelmente sua regra deve ser parecida com esta (o nome do tronco do ATA, no asterisk, seria “ATALinhas”):

exten = _100X.,1,Macro(trunkdial-failover-0.3,${ATALinhas}/${EXTEN:3},,ATALinhas,)

Bom, é só alterar a regra adicionando “LX” (onde “X” é o número da linha pela qual a ligação deve sair) imediatamente antes do número a ser discado. A regra ficaria assim (por exemplo, saindo pela linha 2 do ATA):

exten = _100X.,1,Macro(trunkdial-failover-0.3,${ATALinhas}/L2${EXTEN:3},,ATALinhas,)

Viu que fácil? 🙂

É só criar as regras que quiser ou precisar, e adicionar o respectivo “LX” em cada uma.

Obs.: não é possível adicionar o “LX” pelo asterisk-gui, pois ele não reconhece o “L”… Isto é específico do ATA, então tem que ser adicionado diretamente pelo arquivo 😉

“OK, agora eu escolho por qual linha sair… Mas como escolho quem atende cada linha?”

Inicialmente, crie uma regra de ligação entrante pelo asterisk-gui. Depois, edite o arquivo /etc/asterisk/extensions.conf localizado no servidor, para alterarmos a regra manualmente.

Para o exemplo abaixo, itens entre “<>” devem ser substituídos pelo seu significado (retirando-se os “<>”).

Este é o exemplo mais complexo possível, pois para cada linha iremos direcionar a ligação para um ramal diferente.

Linhas que iniciam por “;” são comentários sobre a linha imediatamente abaixo, e não são necessárias para a regra.

O “ID da porta …” a que me refiro, é o mesmo que configuramos no how-to anterior, na configuração do próprio ATA.

A regra final fica:

exten = ATALinhas,1,NOOP(${SIP_HEADER(TO)})
;DST será = ID da porta que está chamando no ATA
exten = ATALinhas,n,SET(DST=${CUT(CUT(${SIP_HEADER(TO)},@,1),:,2)})
;Se for o ID da porta 1, executa a próxima linha, senão vai para “n(SegundaLinha)”
exten = ATALinhas,n,Gotoif($[${DST} = <ID da porta 1>]?:SegundaLinha)
;Chama o ramal definido
exten = ATALinhas,n,Goto(default,<Ramal que atenderá a linha 1>,1)
;Se for o ID da porta 2, executa a próxima linha, senão vai para “n(TerceiraLinha)”
exten = ATALinhas,n(SegundaLinha),Gotoif($[${DST} = <ID da porta 2>]?:TerceiraLinha)
;Chama o ramal definido
exten = ATALinhas,n,Goto(default,<Ramal que atenderá a linha 2>,1)
;Se for o ID da porta 3, executa a próxima linha, senão vai para “n(QuartaLinha)”
exten = ATALinhas,n(TerceiraLinha),Gotoif($[${DST} = <ID da porta 3>]?:QuartaLinha)
;Chama o ramal definido
exten = ATALinhas,n,Goto(default,<Ramal que atenderá a linha 3>,1)
;Chama o ramal definido
exten = ATALinhas,n(QuartaLinha),Goto(default,<Ramal que atenderá a linha 4>,1)

Pronto! 🙂

Lembrando que após alterar e salvar o arquivo, você deve executar um “/etc/rc.d/asterisk reload” para ativar as novas configurações.

Até a próxima!

[]’s

 Posted by at 21:56

  41 Responses to “Gerenciamento avançado de linhas do ATA SPA400-NA no asterisk”

  1. E ai Huff, beleza?
    Deixa eu ver se eu entendi, esse artigo seria para configurar o Asterisk, para que uma pessoa na Empresa X, por exemplo, tenha uma linha só para ela. Ou seja, quando ligar para a linha 3632 5555, vai tocar somente naquele ramal, e quando ele ligar, vai sair somente nessa linha, isso?
    Então isso não seria necessário se fosse pedido agrupamento de linhas, certo?

    Valeu.

  2. Opa.

    O agrupamento só vai fazer com que uma ligação entrante caia em linhas auxiliares caso a linha principal esteja ocupada…
    Por exemplo, tua linha principal seria a 3632 5555 e você tem mais duas linhas auxiliares com agrupamento (3632 5556 e 3632 5557). Supondo que todas as linhas estão desocupadas, o primeiro que ligar ocupa o próprio número principal. O segundo que ligar (se o primeiro ainda estiver falando) vai ser redirecionado para a 3632 5556, por exemplo, apesar dele ter ligado pro teu número principal (isso é feito pela operadora! isso é o que o agrupamento te proporciona).

    Se você quiser mandar todas as ligações para a mesma pessoa, não precisaria criar regras específicas como neste post, pode criar uma “genérica” que mande todas 😉
    Você tem que criar as regras para fazer o que você quiser 😛

    []’s

  3. Li sim este post me ajudou muito mas tenho que fazer com que digitando 0|. o asterisk pegue a linha 1 ou linha 2 do spa400 e a linha 3 seria o porteiro e pegaria com 90|. …. to aprendendo estas regras de discagem mas to com bastante dificuldade ….. as chamadas entrantes criei umas regras mas também ta osso de funcionar … abaixo segue a regra deve ter algo errado vejo a chamada sendo recebiba mas nao toca o ramal 130

    [ext-did-0002]
    include => ext-did-0002-custom
    exten => spa400,1,NOOP(${SIP_HEADER(TO)})
    exten => spa400,n,SET(TMP2=${SIP_HEADER(TO)})
    exten => spa400,n,SET(TMP1=${CUT(TMP2,@,1)})
    exten => spa400,n,SET(DST=${CUT(TMP1,:,2)})
    exten => spa400,n,GotoIf($[${DST=linha01]?from-did-direct,130,1)
    exten => spa400,n,GotoIf($[${DST}=linha02]?from-did-direct,130,1)
    exten => spa400,n,GotoIf($[${DST}=linha03]?from-did-direct,130,1)

    ; end of [ext-did-0002]

  4. tenho esta saida na gui do asterisk

    == Using SIP RTP CoS mark 5
    — Executing [spa400@from-pstn:1] NoOp(“SIP/spa400-00000029”, “”) in new stack
    — Executing [spa400@from-pstn:2] Set(“SIP/spa400-00000029”, “TMP2=”) in new stack
    — Executing [spa400@from-pstn:3] Set(“SIP/spa400-00000029”, “TMP1=<sip:linha01") in new stack
    — Executing [spa400@from-pstn:4] Set("SIP/spa400-00000029", "DST=linha01") in new stack
    — Executing [spa400@from-pstn:5] GotoIf("SIP/spa400-00000029", "?from-did-direct,130,1") in new stack
    — Executing [spa400@from-pstn:6] GotoIf("SIP/spa400-00000029", "0?from-did-direct,130,1") in new stack
    — Executing [spa400@from-pstn:7] GotoIf("SIP/spa400-00000029", "0?from-did-direct,130,1") in new stack
    — Executing [spa400@from-pstn:8] GotoIf("SIP/spa400-00000029", "0?from-did-direct,130,1") in new stack
    — Auto fallthrough, channel 'SIP/spa400-00000029' status is 'UNKNOWN'
    — Executing [h@from-pstn:1] Hangup("SIP/spa400-00000029", "") in new stack
    == Spawn extension (from-pstn, h, 1) exited non-zero on 'SIP/spa400-00000029'
    == Using SIP RTP TOS bits 184

    não sei o que ta errado
    pode me ajudar

  5. Olá Joao!

    Todas as linhas serão atendidas pelo ramal 130? E “ext-did-0002” é o contexto de ligações entrantes do teu SPA-400?
    Se sim, a regra é bem simples!

    [ext-did-0002]
    ; nao sei o que a linha baixo (“include”) esta adicionando! talvez seja melhor remover? removi…
    ; include => ext-did-0002-custom
    exten = spa400,1,Goto(default,130,1)
    ; end of [ext-did-0002]

    Pronto, todas as ligações entrantes do SPA-400 vão para o ramal 130.

    Quanto à ligação sainte, discando 0 pega a linha 1, e se ela estiver ocupada pega a linha 2. Discando 90 pega a linha 3:

    exten = _0X.,1,Macro(trunkdial-failover-0.3,${spa400}/L1${EXTEN:1},${spa400}/L2${EXTEN:1},spa400,spa400)
    exten = _90X.,1,Macro(trunkdial-failover-0.3,${spa400}/L3${EXTEN:2},,spa400,)

    Lembre-se de que o firmware do SPA-400 tem que estar na versão certa (1.1.2.2), e de que você não pode adicionar estas regras pelo asterisk-gui!
    Também estou considerando que você seguiu meus how-to’s anteriores, sobre o asterisk! (veja no início deste post)

    Acho que é isto :).

    []’s
    Huff

  6. Boa noite, quero agradecer a ajuda deste blog no meu empreendimento com o asterisk.

    Muito obrigado Huff, 🙂

    eu estou com um problema que parece ser simples, segui o esquema do recebimento de chamadas pelo SPA400 conforme está no site e funciona perfeitamente, porém eu estou tentando modificar o codigo para p.ex quando a ligações entrante na linha 01 do sp400 tocar, ele chamar apenas o ramal 221 , se a ligação for na linha 2 ele chamar apenas o ramal 222 , pois são duas linhas de pessoas diferentes e de forma alguma podem se cruzar … se puder me mostrar um exemplo eu agradeço ,

  7. Boa noite Samuel!

    De nada! 😀 Que bom que achastes os posts úteis! 🙂
    O funcionamento que você comentou está descrito neste post mesmo (“Gerenciamento avançado de linhas…”).
    Na parte final do post inclusive mostro um exemplo de regra. Mas vamos lá! 🙂

    Acesse o site de gerenciamento do teu SAP400, e acesse a guia “Setup” / “SPA9000 Interface”.
    Abaixo do campo “User ID” terão mais quatro campos, que são utilizados para identificar cada uma das linhas.
    Vamos supor que você configurou os identifucadores como “IDLinha1”, “IDLinha2”, “IDLinha3” e “IDLinha4”.

    Aqui está o exemplo de como mandar a linha 1 para o ramal 221, a linha 2 para o ramal 222, a linha 3 para o ramal 223, e a linha 4 para o ramal 224:

    ;—- Inicio das regras
    exten = ATALinhas,1,NOOP(${SIP_HEADER(TO)})
    ;—- A variável “DST” será = ID da porta que está chamando no ATA
    exten = ATALinhas,n,SET(DST=${CUT(CUT(${SIP_HEADER(TO)},@,1),:,2)})
    ;—- Se for o ID da porta 1, executa a próxima linha, senão vai para “n(SegundaLinha)”
    exten = ATALinhas,n,Gotoif($[${DST} = IDLinha1]?:SegundaLinha)
    ;—- Chama o ramal 221
    exten = ATALinhas,n,Goto(default,221,1)
    ;—- Se for o ID da porta 2, executa a próxima linha, senão vai para “n(TerceiraLinha)”
    exten = ATALinhas,n(SegundaLinha),Gotoif($[${DST} = IDLinha2]?:TerceiraLinha)
    ;—- Chama o ramal 222
    exten = ATALinhas,n,Goto(default,222,1)
    ;—- Se for o ID da porta 3, executa a próxima linha, senão vai para “n(QuartaLinha)”
    exten = ATALinhas,n(TerceiraLinha),Gotoif($[${DST} = IDLinha3]?:QuartaLinha)
    ;—- Chama o ramal 223
    exten = ATALinhas,n,Goto(default,223,1)
    ;—– Chama o ramal 224, pois a linha que está chamando só pode ser a “IDLinha4”
    exten = ATALinhas,n(QuartaLinha),Goto(default,224,1)

    Espero que tenha ajudado!
    []’s
    Huff

  8. Melhor impossível ,
    muito obrigado , funcionou 100% , agora esta redondo !!

    Vou me esforçar mais em ler e tentar entender a logica desses planos de discagem , por que pelo que vi existem muitas possibilidades que podem ser feitas , tornando o asterisk uma ferramenta muito atrativa para meus clientes.

    Mais uma vez obrigado !!
    te desejo sucesso ,
    grande abraço , t+

  9. Olá Samuel,

    De nada! 🙂
    E é verdade: é possível fazer “tudo” com os planos de discagem!

    []’s
    Huff

  10. Bom Dia!

    Tenho um SPA400 para receber ligações em um Asterisk/Elastix porém, as ligações demoram entre 3 a 5 toques para atender , será que há alguma configuração no SPA que tenha que alterar? eu já tentei inverter a polaridade da linha e não adiantou. Desde já obrigado!

  11. Olá Luciano!

    Não conheço este “Asterisk/Elastix”. Eu utilizava o Asterisk “puro”, instalado em um Linux.
    No teu Asterisk, você tem como coletar logs mais detalhados? Se aumentas o nível do log, o que acontece quando ligas para uma linha no SPA400? Logo que chama, você vê o “ring” no log do teu Asterisk?

    []’s
    Huff

  12. Bom dia,
    O meu spa400 também espera algo em torno de 3 toques antes de passar para o tronco SIP, não que isso seja um problema é que parece que o cliente nunca está satisfeito e volte e meia alguns me ligam dizendo : “pow Samuel demora um tempão para o povo atender lá” , rs , eu notei isso também num taitell.

    Huff, aquelas regras de que falamos acima elas mudam alguma coisa se forem aplicadas no asterisk versão 10.x.x ? apareceu alguns erros de sintaxe no script acima… procede esse informação ou será burrice minha mesmo ? rs

    abç , Samuel.

  13. Olá Samuel,

    A questão dos 3 toques talvez seja relacionada ao SPA400/Taitell, e não ao asterisk, então. Como são dois equipamentos diferentes, talvez o que ocorre é um “delay” entre a chamada ser recebida e o equipamento notificar o asterisk. Mesmo assim, postem o log detalhado para darmos uma olhada! 🙂

    Quanto às regras, faz um tempo que não mexo mais com o asterisk, não sei se mudou algo nas versões mais recentes. Podes postar as regras e o erro?

    []’s
    Huff

  14. Então acho que ele não está pegando a variavél “dst

    == Using SIP RTP CoS mark 5
    -- Executing [9000@DID_9000:1] NoOp("SIP/9000-0000001b", "") in new stack
    -- Executing [9000@DID_9000:2] Set("SIP/9000-0000001b", "DST=") in new stack
    [Feb 6 23:18:46] WARNING[1772]: ast_expr2.fl:468 ast_yyerror: ast_yyerror(): syntax error: syntax error, unexpected '=', expecting $end; Input:
    =ID1
    ^
    [Feb 6 23:18:46] WARNING[1772]: ast_expr2.fl:472 ast_yyerror: If you have questions, please refer to https://wiki.asterisk.org/wiki/display/AST/Channel+Variables
    -- Executing [9000@DID_9000:3] GotoIf("SIP/9000-0000001b", "?:SegundaLinha") in new stack

    nesse caso ele executa a ultima linha corretamente, pois qualquer ramal que eu configurar na ultima linha ele chama
    exten = ATALinhas,n(QuartaLinha),Goto(default,224,1)
    independente do ID da linha ele chama esse ramal ou qualquer outro que configurar aqui .

    a versão do asterisk é 10.12.0

    att Samuel.

  15. completando o post Anterior , desculpe faltou essa parte
    ==========================================================================

    == Using SIP RTP CoS mark 5
    — Executing [9000@DID_9000:1] NoOp(“SIP/9000-00000019”, “” ) in new stack
    — Executing [9000@DID_9000:2] Set(“SIP/9000-00000019”, “DST=”) in new stack
    [Feb 6 23:16:53] WARNING[2635]: ast_expr2.fl:468 ast_yyerror: ast_yyerror(): syntax error: syntax error, unexpected ‘=’, expecting $end; Input:
    =ID1

    ========================================================================

  16. Olá Samuel!

    Só confirmando: este SPA400 também está com o firmware atualizado (pelo menos versão 1.1.2.2)? E você também cadastrou os “IDs” das linhas, no site de gerenciamento do SPA400, guia “Setup” / “SPA9000 Interface”? Se sim, o problema pode estar em qualquer uma destas duas linhas:

    exten = ATALinhas,1,NOOP(${SIP_HEADER(TO)})
    exten = ATALinhas,n,SET(DST=${CUT(CUT(${SIP_HEADER(TO)},@,1),:,2)})

    Tente substituir estas duas linhas por estas aqui:

    exten => ATALinhas,1,NOOP(${SIP_HEADER(TO)})
    exten => ATALinhas,n,SET(TMP2=${SIP_HEADER(TO)})
    exten => ATALinhas,n,SET(TMP1=${CUT(TMP2,@,1)})
    exten => ATALinhas,n,SET(DST=${CUT(TMP1,:,2)})

    E poste o novo log, por favor.
    []’s
    Huff

  17. Olá amigo, tudo bem?

    Estou com um SPA400 em funcionamento mas estou com um problema, quando ligo para meu telefone analogico o SPA400 demora uns 4 toques para identificar a chamada. Quem está ligando tem impressão de que não estamos querendo atender o telefone. Sabe como resolver isso?

  18. Olá Huff, tudo bem?

    Com eu uso asterisk puro e minha aplicação é relativamente simples, os exemplos acabaram ficando muito nebulosos para mim.

    Eu configurei meu SPA400 conforme o post anterior, colocando as portas como IDPorta1, IDPorta2, etc…

    Para fins de teste criei a extensão 4321 para chamar para meu telefone celular (0000-0000)
    exten=> 4321,1,Dial(SIP/00000000@spa400,60,tT)

    Funcionar perfeitamente, mas neste exemplo eu não escolho nenhuma porta. Ele automaticamente pega a primeira porta (única com linha ligada no SPA400).

    Não sei como mudar esta linha para indicar exatamente qual canal do SPA400 eu quero usar.

    Espero que possa me ajudar, e muito obrigado pelos tutoriais, estão ótimos.

  19. Olá Marllon,

    Tudo! E com você? 🙂

    Se você aumenta o nível de log do asterisk, e monitora ele enquanto faz uma chamada de teste, você percebe que o asterisk demora a receber a chamada?
    Se sim, pode ser algo na rede entre o ATA e o asterisk, ou algo no ATA mesmo…

    []’s
    Huff

  20. Olá Marllon,

    hmmm tente assim:

    exten=> 4321,1,Dial(SIP/LX00000000@spa400,60,tT)

    * mas substitua o “X” pelo número da porta do ATA que você quer utilizar

    Só tem um detalhe: se o ATA só tem uma porta com linha, como você diz, acredito que a única regra que funcionaria seria com “L1” (já que apenas a porta 1 do ATA possui linha), pois ao escolher outras portas a ligação falharia ao chegar no ATA, uma vez que o ATA não conseguirá efetuar a ligação, pois não há linha nas outras portas…

    []’s
    Huff

  21. Olá Huff, tudo bem?

    Obrigado por responder minhas dúvidas.

    Eu fiz o que me indicou, usei:
    exten=> 4321,1,Dial(SIP/LX00000000@spa400,60,tT)

    Quando uso X = 1 funciona perfeitamente.
    Quando uso X = 2 recebo mensagem de busy/congested

    Obs.: Instalei linha telefônica nas portas 1 e 2 do SPA400.

    Tem alguma ideia do que estou errando?

  22. Olá Marllon,

    Tudo bem, e com você? 🙂

    hmmmm, quando você tenta com “L1”, a ligação sai corretamente pela linha 1 do ATA?

    E se você liga um telefone diretamente na linha 2, esta nova linha está funcionando normalmente?
    Quando você compara as configurações das linha 1 e 2, no próprio ATA, ambas estão iguais (com exceção do ID de cada uma, claro ;))?

    []’s
    Huff

  23. Olá Huff.

    Pois é, realmente a linha não estava funcionando! Tinham acabado de instalar o modem da NET com 2 linhas de telefone, mas eles cometeram algum erro e a linha 2 não está funcionando.

    Fiz os testes que me pediu, e realmente funciona perfeitamente apenas colocando L1 e L2 na frente.

    Bom, mas agora estou com outro problema, espero que possa me ajudar.

    Eu configurei o plano de discagem e consigo efetuar ligações, porém tem 2 problemas:
    1) Está ocorrendo muito ruído, dá pra ouvir e falar, mas está ruim
    2) Depois de uns 30 segundos, a chamada cai. No lado do asterisk fica um ruído robotizado, e no lado de fora fica mudo,

    Você tem idéia porque pode estar ocorrendo isto?

  24. Olá Marllon!

    Que bom, uma dúvida a menos :D.

    Ruído e linha caindo… E se você testa diretamente com um telefone? 🙂
    Não me parece algo por causa do Asterisk ou do ATA.

    []’s
    Huff

  25. Oi Huff.

    Se eu ligo um aparelho de telefone direto na linha ela funciona perfeitamente. Inclusive testei com outra linha da GVT e deu o mesmo problema.

    Marllon

  26. Olá Marllon,

    Estranho. Normalmente, ruídos são por causa da linha, cabos ou conectores.
    Você alterou alguma configuração no ATA, além do que é necessário para fazê-lo se comunicar com o Asterisk?

    Se outras linhas também apresentam o problema, tens que tentar isolar a origem do problema. Tens outro ATA para testar?

    []’s
    Huff

  27. Bom dia,

    Muito bom o seu tutorial, me ajudou bastante, mas estou com um problema na ROTA DE SAIDA, pois não consigo selecionar a porta no SPA400.
    Minhas duvidas:
    exten => _7X.,1,Macro(trunkdial-failover-0.3,${spa400}/L3${EXTEN:3},,spa400,)
    exten => _9X.,1,Macro(trunkdial-failover-0.3,${spa400}/L2${EXTEN:3},,spa400,)

    Esse codigo, onde vc colocou no extensions.conf ? vc criou um context para essa instrução? Esse codigo sabe me dizer se funciona com elastix?

    Desde ja agradeço.

  28. Olá Junior,

    Que bom que o tutorial ajudou :).

    Seria no context onde você já possui rotas de saída.
    Você pode inclusive criar a rota pelo asterisk-gui, inicialmente (mas sem incluir o número da porta – “L1”, “L2”, “L3”, “L4”), e depois só editar o extensions.conf e adicionar o número da porta na regra.

    Nunca utilizei o elastix, então não sei se funcionaria. Se conseguires testar, por favor, poste os resultados!

    []’s
    Huff

  29. Boa tarde,

    Então, vou descrever meu cenário:

    Criei um tronco no elastix chamado 9000, criei uma rota de saida que se vc dicar 9|X. sairia pelo 9000. (isso via interface grafica)
    No extensions.conf, eu criei um context chamado DID_9000:

    [DID_9000]

    exten => _9X.,1,Dial(SIP/L3${EXTEN:3}@9000,30,r)
    exten => 9000,1,Goto(default,1000,1)

    Consigo receber e fazer ligações, meu problema é que não esta selecionando porta, que seria L3 no exemplo acima. Ja fiz varias tentativas e não obtive sucesso! Alguma ideia?

  30. Olá Junior,

    Obrigado pelas informações!
    Como você quer usar apenas “9” para chamar a linha externa, tens que alterar “{EXTEN:3}” para “{EXTEN:1}”. O número indicado significa a quantidade de dígitos a serem removidos, para se chegar ao número que de fato deve ser discado no tronco.

    No meu exemplo utilizai “{EXTEN:3}” porque o código para chamar a linha era “100”.

    Outra coisa importante é a versão do firmware do ATA. Eu só testei isto no SAP400-NA, e só funcionou depois que eu atualizei o firmware.

    Espero ter ajudado!
    []’s
    Huff

  31. Boa tarde.
    Tenho uma situação veja se pode me ajudar.

    Tenho um servidor elastix em uma cidade e na outra um pabx analogico.. pensei em um ramal analogico ligar um ata pap2 e esse acada se conectar com meu servidor elastix.. pois gostaria de que no meu ramal elastix pudesse chamar os ramais analogicos.. e vice e versa.. e possivel? como sugere?

    valeu..

  32. Olá Weder,

    Hmmm, não sou “expert” em telefonia, mas acredito que na central PABX você tem que cadastrar uma linha do PAP2 como tronco, e a outra linha como ramal comum.
    No elastix, teria que configurar cada linha para o oposto (ou seja, a linha ramal no PABX como tronco no elastix; a linha tronco no PABX como ramal no elastix). Talvez tenha até que usar dois PAP2 para isto…

    Depois disso, criar as devidas regras / contextos, para ter algum número que chame o ramal na outra central.

    Espero ter ajudado! E se mais alguém tiver alguma dica, por favor poste aqui nos comentários! 🙂

    []’s
    Huff

  33. Huff to com um cliente que ele quer por o spa400 no elastix. Mas como fazer para criar os troncos para cada linha do spa400. Pois la eu tenho regras para local e interubano. Na TDM410P PCI que ele tinha eu fazia essa separação facil como fazer no spa400??

  34. Olá Eduardo,

    Nunca trabalhei com o elastix… Usei o asterisk “puro” mesmo…
    Tente criar os troncos como estás habituado, e fazer os ajustes baseado neste post…
    Se tiver algum detalhe diferente, e você fizer funcionar, poste aqui! 🙂

    []’s
    Huff

  35. Boa tarde,

    Acho que podes me ajudar, peguei seu codigo para encaminhar ligações para ramais espeficicos usando o spa400.

    exten => 9000,1,NOOP(${SIP_HEADER(TO)})
    exten => 9000,n,SET(TMP2=${SIP_HEADER(TO)})
    exten => 9000,n,SET(TMP1=${CUT(TMP2,@,1)})
    exten => 9000,n,SET(DST=${CUT(TMP1,:,2)})
    exten => 9000,n,Gotoif($[${DST} = XXXXXX]?:SegundaLinha)
    exten => 9000,n,Goto(default,300,1)
    exten => 9000,n(SegundaLinha),Gotoif($[${DST} = XXXXXX]?:TerceiraLinha)
    exten => 9000,n,Goto(default,300,1)
    exten => 9000,n(TerceiraLinha),Gotoif($[${DST} = XXXXXX]?:QuartaLinha)
    exten => 9000,n,Goto(default,400,1)
    exten => 9000,n(QuartaLinha),Goto(default,300,1)

    Do jeito que esta funciona perfeitamente, porem precisaria mandar para um RING GROUP, que ja foi criado “600”, ja substitui o 300 por 600 (que é o ring group) mas não chama nos ramais configurados no grupo. Fiz a seguinte adaptação no codigo alterei para:
    substitui isso: exten => 9000,n,Goto(default,300,1)
    por isto: exten => 9000,n,Dial(local/600@from-internal)

    Assim funciona, mas com essa configuração eu não consigo transferir as ligações que chegam no spa400 utilizando o *2, simplesmente ele não reconhece, a pessoa que esta na linha fica escutando o “bip” que aperta *2. Alguma ideia para adaptar o codigo para chamar 600 que é um ring group?

  36. Olá Junior,

    Não tenho mais acesso ao asterisk, então não consigo fazer testes…
    Acredito que já tenhas testado o ring group de algum outro ramal interno (que não faz parte do ring group), e que funcionou. Correto?
    Se sim, acho que o problema está na tua troca de “Goto” para “Dial”.

    De repente só precisas alterar os valores dentro do “Goto()”. Algo como “exten => 9000,n,Goto(,600,1)”.
    Caso consigas fazer funcionar, poste a resposta aqui! 🙂 E se alguém tiver alguma idéia, é só deixar o comentário ;).

    []’s
    Huff

  37. Ja testei sim e esta OK também, mas resolvi de outra forma o meu problema, vo posta aqui, se alguem precisar de algo parecido ja tem alguma ideia de como fazer.
    Apos apanhar muito consegui deixar do jeito que eu queria:

    ;regras de entrada de ligação

    exten => 9000,1,NOOP(${SIP_HEADER(TO)})
    exten => 9000,n,SET(TMP2=${SIP_HEADER(TO)})
    exten => 9000,n,SET(TMP1=${CUT(TMP2,@,1)})
    exten => 9000,n,SET(DST=${CUT(TMP1,:,2)})
    exten => 9000,n,Gotoif($[${DST} = XXXXXX]?:SegundaLinha)
    exten => 9000,n,Dial(SIP/300,10,t)
    exten => 9000,n,Dial(SIP/301,15,t)
    exten => 9000,n(SegundaLinha),Gotoif($[${DST} = XXXXXX]?:TerceiraLinha)
    exten => 9000,n,Dial(SIP/300,10,t)
    exten => 9000,n,Dial(SIP/301,15,t)
    exten => 9000,n(TerceiraLinha),Gotoif($[${DST} = XXXXXX]?:QuartaLinha)
    exten => 9000,n,Goto(default,400,1)
    exten => 9000,n(QuartaLinha),Background(custom/naorecebe01)
    exten => 9000,n,Hangup

    Vlw pela atenção Huff, seus posts foram muito importantes no meu aprendizado sobre asterisk.

    []s

    Junior

  38. hmmm entendi… Ao invés de chamar o “ring group”, você chamou cada ramal em sequência…
    Legal que conseguistes resolver a questão :).

    Fico feliz que os posts ajudaram! E obrigado por ter postado a solução 😀

    []’s
    Huff

  39. Ola, Junior Feijo, vc conseguiu selecionar a porta de saída na ligação no Elastix?

  40. Estou precisando receber e fazer chamadas de um ramal de uma PABX HDL, ele recebe chamada mas ao sair SIP/L125481991 como exemplo funciona. Fica com o sinal de linha , como se não tivéssemos discado. funcionava antes em uma outra PABX fureca. agora trocaram par esta mais decente com identificador de chamadas, tudo funciona nas chamadas entrante , ao sair é que da o problema.

  41. Olá Bernardo,

    Não conheço esta PABX HDL.
    Sugiro entrarem em contato com o suporte técnico deles.

    Caso alguém poste algum comentário com alguma dica, aprovarei o comentário!

    []’s
    Huff

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.