Asterisk - Configurando Ramais, Plano de Discagem e URA Simples

Neste artigo realizaremos a criação de ramais no Asterisk utilizando o protocolo SIP. Posteriormente, adicionaremos um plano de discagem abordando o conceito de máscaras ou coringas e por fim, criaremos uma URA simples.

[ Hits: 16.388 ]

Por: Robson Leite em 06/04/2021 | Blog: https://www.linkedin.com/in/robson-leite-308bb9143/


Introdução



Requisitos e Criação dos Ramais

Para esse artigo, partimos da premissa de que o Asterisk já esteja instalado.

Caso ainda não o tenha instalado no sistema, recomendo o artigo de nosso amigo Bruno Ricci, link abaixo:
Seguindo o padrão de diretórios do Linux, devemos navegar até a pasta /etc/asterisk para encontrarmos os arquivos de configuração do mesmo.

Com o editor de sua preferência, edite o arquivo "sip.conf" com o texto abaixo:

[general]
bindaddr=0.0.0.0
bindport=5060
context=ramais
disallow=all
allow=gsm
allow=alaw

[4000]
callerid=ramal1<4000>
canreinvite=no
dtmfmode=rfc2833
host=dynamic
type=friend
secret=4000

[4001]
callerid=ramal2<4001>
canreinvite=no
dtmfmode=rfc2833
host=dynamic
type=friend
secret=4001

Salve e feche o arquivo.

Entre na CLI do Asterisk com o comando:

# asterisk -rvvvvvv

... e execute o comando:

# sip reload

Após isso execute o comando sip show peers para ver os ramais criados.

Detalhando o código no arquivo "sip.conf":
  1. O campo [general] indica a seção geral ou seja, são as definições gerais de comunicação;
  2. bindaddr=0.0.0.0 indica ao Asterisk que as contas SIP irão se a associar por qualquer equipamento, telefones IP;
  3. context é o contexto que será usado posteriormente no plano de discagem;
  4. disallow indica ao Asterisk que serão utilizados Codecs;
  5. allow indica ao Asterisk quais Codecs serão utilizados;
  6. mais abaixo temos a criação dos ramais 4000 e 4001;
  7. callerid indica o texto que será binado no ramal que receber as ligações;
  8. canreinvite indica ao Asterisk que uma vez estabelecida a chamada os ramais podem continuar trocando pacotes porém não através do Asterisk mas sim através do canal entre eles;
  9. dtmfmode indica ao Asterisk o padrão de DTMF que será utilizado;
  10. host indica o IP associado ao ramal, no caso definido como dinâmico;
  11. type, tipo do ramal user, peer ou friend;
  12. secret senha para autenticação do ramal.

Plano de discagem

Agora iremos realizar a criação do plano de discagem para nossos ramais.

No diretório /etc/asterisk acesse arquivo "extensions.conf" com seu editor de texto preferido e adicione o código abaixo:

[general]

[globals]

[ramais]
exten => 4000,1,Dial(SIP/${EXTEN})
exten => 4000,2,HangUP();

exten => 4001,1,Dial(SIP/${EXTEN})
exten => 4001,2,HangUP();

Salve e feche o arquivo.

Acesse a CLI do Asterisk e aplique o comando:

# dialplan reload

Pronto, já é possível realizar ligações para 4000 e 4001.

Agora, imagine um ambiente onde precisamos criar 200 ramais, programar o plano de discagem da maneira que fizemos mais acima é inviável. Para otimizar a criação do plano, podemos utilizar máscaras ou coringas, onde os valores numéricos são substituídos por letras e cada letra representa um range de numérico.

Abaixo, equivalência do range numérico das letras:
  • X - pode representar qualquer digito entre 0 e 9
  • Z - pode representar qualquer digito entre 1 e 9
  • N - pode representar qualquer digito entre 2 e 9
  • [2-6] - pode representar qualquer número de 2 a 6

Exemplo de plano de discagem para 500 ramais utilizando o range de 4000 a 4499:

exten => _4[0-4]XX,1,Dial(SIP/${EXTEN})
exten => _4[0-4]XX,2,HangUP();

Também é possível utilizar coringas para a extensão, exemplo abaixo:

exten => _4[0-4]XX,1,Dial(SIP/${EXTEN})
same =>        2,HangUP();

Detalhando o código no arquivo "extensions.conf":
  1. A sessão [globals] declarar variáveis globais dentro do plano de discagem;
  2. [ramais] é no nome do contexto que criamos para nossos ramais no arquivo "sip.conf";
  3. A aplicação Dial conecta dois canais de comunicação, sua sintaxe é a seguinte Dial(protocolo/identificação[,timeout,opções]);
  4. A aplicação HangUP encerra um canal de comunicação.

Criação da URA

Por fim, iremos criar uma URA "Unidade de Resposta Audível"

Dentro do diretório /etc/asterisk, acesse com seu editor de textos preferido o arquivo "extensions.conf". Dentro do contexto ramais, abaixo do plano de discagem adicione os códigos abaixo:

exten => 800,1,Goto(UraSimples,s,1)

[UraSimples]
exten => s,1,Answer()
same =>    n,Background(urasimples)
same =>    n,WaitExten(10)

exten => 1,1,Dial(SIP/4000)
same =>    n,HangUP()

exten => 2,1,Dial(SIP/4001)
same =>    n,HangUP()

exten => i,1,Playback(opc-invalida)
same =>   n,Goto(UraSimples,s,1)

exten => t,1,Playback(tempo-esgotado)
same =>   n,Goto(UraSimples,s,1)

Detalhando o código acima:
  • Ao discar 800, a ligação será direcionada para [UraSimples];
  • A aplicação Answer "atende" a ligação;
  • A aplicação "Background" executa o áudio urasimples, lembrando que o áudio deve estar no diretório /var/spool/asterisk/sounds;
  • A aplicação WaitExten aguarda por 10 segundos o usuário digitar alguma tecla;
  • Caso digite 1, a ligação será entregue ao ramal 4000;
  • Caso digite 2, a ligação será entregue ao ramal 4001;
  • Caso seja digitada alguma opção inválida, executa o áudio "opc-invalida" e a ligação retornará ao inicio da URA;
  • Caso o tempo se esgote sem que nenhuma tecla seja digitada, executa o áudio "tempo-esgotado" e a ligação retornará a inicio da URA.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Plano de discagem
   3. Criação da URA
Outros artigos deste autor

Asterisk - Definindo variáveis e manipulando fluxo de dados

VOIP - Interceptando tráfego de pacotes

Explorando o Network Manager

Inicializando servidor Ubuntu na AWS e rodando apache em Container

Leitura recomendada

Gravação de CD's com o NeroLINUX

Gerando pacotes no Slack com o checkinstall

VNC no GNU/Linux

Nagios + MySQL no Debian

Ansible AWX

  
Comentários
[1] Comentário enviado por maurixnovatrento em 06/04/2021 - 10:01h


Bem que você podia definir o que é esse serviço, pois tenho certeza que muita gente não sabe do que se trata.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]

[2] Comentário enviado por Carlos_Cunha em 07/04/2021 - 11:31h


[1] Comentário enviado por mauricio123 em 06/04/2021 - 10:01h


Bem que você podia definir o que é esse serviço, pois tenho certeza que muita gente não sabe do que se trata.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]


Acredito que ele já aborta isso na primeira frase do texto.
"Para esse artigo, partimos da premissa de que o Asterisk já esteja instalado."

No Mais Ótima dica!!!

[3] Comentário enviado por maurixnovatrento em 07/04/2021 - 16:30h


Achei esse artigo muito bom. Dando uma pesquisada, para quem não sabe, o Asterisk é um software específico para implementação de servidores de comunicação telefônica, como VoIP (Voice over Internet Protocol), PBX (Private Branch eXchange) e PABX (Private Automatic Branch eXchange) virtual. Foi isso que eu achei.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]

[4] Comentário enviado por robsonleite em 07/04/2021 - 18:10h


[1] Comentário enviado por mauricio123 em 06/04/2021 - 10:01h


Bem que você podia definir o que é esse serviço, pois tenho certeza que muita gente não sabe do que se trata.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]


Olá Mauricio,

Peço desculpas pela demora.

Realmente acabei não me atentando a esse detalhe.

Pra quem tiver a curiosidade despertada pelo artigo, indico o video abaixo:
https://youtu.be/CapdqjBhD2w

[5] Comentário enviado por maurixnovatrento em 07/04/2021 - 20:31h


Beleza.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]

[6] Comentário enviado por _lucasg13info em 13/04/2021 - 13:46h

Ótimo artigo! Me ajudou muito!

[7] Comentário enviado por Etheridge74 em 08/05/2021 - 05:08h

I definitely enjoyed reading it, you’re a great author.

https://www.mybalancenow.review/

[8] Comentário enviado por robsonleite em 30/10/2021 - 14:57h


[7] Comentário enviado por Etheridge74 em 08/05/2021 - 05:08h

I definitely enjoyed reading it, you’re a great author.

https://www.mybalancenow.review/


Hi Etheridge74,

Thanks for the compliment.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts