Dialplan – Plano de Discagem

O arquivo de configuração extensions.conf é seguramente o mais importante para colocar nossa central para funcionar. É nele que se define tudo o que esta relacionado com o plano de discagem. Qualquer número digitado através de uma extensão será processado dentro deste arquivo. Vamos dividir essa documentação em três blocos:

  • A chave [general] onde se configuram alguns parametros gerais
  • A chave  [globals] onde se define as varaiáveis gloabais utilizadas por nossa central
  • E a última parte onde está todas as configurações do plano de discagem

A chave [general]

/etc/asterisk/extensions.conf

[general]
static=yes ; se static é yes e writeprotect é no, para salvar as configurações feitas é necessário digitar na console do asterisk o comando dialplan reload
writeprotect=no ;  Em caso contrário se atualizará automaticamente mas perderá todos os comentários presentes dentro do arquivo
autofallthrough=yes ; se yes quando alguma chamada por algum motivo sai do plano ela será terminada
priorityjumping=yes ; Algumas aplicações e ou funções tem a capacidade de em algumas circunstâncias pular a prioridade que se encontra para uma prioridade que normalmente é n=+101(veremos mas abaixo) , onde n é a linha que está executando . Se está como yes poderá pular  senão não.

A chave [globals]

[globals]
RECEPCAO= SIP/6100
FILIAL-RJ=02140041234
TRONCO-VONO= SIP/vono

Em [globals] configuramos as variáveis que usaremos no plano de discagem(Dialplan), por exemplo se queremos chamar o ramal da recepcionista mas para isso  utilizaremos uma sigla ao invés do próprio número do ramal é nessa parte do arquivo que podemos fazer. Eu criei 3 variáveis para apresentar 3 casos destintos. Para chamar a recepcionista no ramal 6100(configurado no sip.conf) podemos utilizar a variável RECEPCAO, se quero chamar a filial do Rio de Janeiro sem utilizar sua numeração podemos utilizar a variável FILIAL-RJ, para fazer chamadas saintes utilizando o provedor vono podemos utilizar a variável TRONCO-VONO(também configurada no sip.conf)

Dialplan

É na terceira parte que iremos configurar nosso plano de discagem. O plano de discagem é composto por contextos e dentro de cada contexto extensões e prioridades. Para começar, podemos definir 2 contextos: um para chamadas externas e outro para chamadas internas.

[internas] ; esta chave indica que tudo que aparecer a partir desta linha é considerado parte do contexto internas

exten => 5000,1,Aswer()

todas as linhas de configuração estão estruturadas da seguinte maneira: exten => em cada linha. 5000 é o número da extensão (quando digitarmos esse número no nosso telefone IP – hardware ou Software) o Asterisk processara a chamada começando por essa linha. 1 é a prioridade. O Asterisk processa as linhas sequencialmente, do menor número para o maior. Answer é a aplicação que permite atender a chamada. Seguimos:

todas las líneas de configuración están estructuradas de la siguiente manera. exten => en cada línea. 123 es el numero de extensión (cuando marcaremos este numero desde nuestros teléfonos IP, hardware o software, asterisk procesará la llamada empezando por esta línea). 1 es la prioridad. Asterisk procesa las líneas secuencialmente, del numero más bajo al más alto. Aswer es la aplicación que permite contestar la llamada. Seguimos

exten => 5000, 2,Playback(hello-world)

esta é a segunda linha a ser processada, uma vez que a prioridade é 2. Playback é a aplicação que permite o Asterisk executar um conteúdo de audio de um arquivo, nesse caso o arquivo de audio é hello-world que faz parte das locuções que vem com a central.

exten => 5000,3,Hangup

esta é a terceira linha com prioridade 3. Hangup é a aplicação que permite desligar a chamada.

Se chamamos o número 5000 o Asterisk criará um canal para a prioridade (Answer) depois escutaremos uma voz dizendo “Hello World” e logo a chamada será desconectada

[internas]
exten => 5000,1,Answer()
exten => 5000,2,Playback(hello-world)
exten => 5000,3,Hangup()

Podemos também escrever assim:

[internas]
exten => 5000,1,Answer()
exten => 5000,n,Playback(hello-world)
exten => 5000,n,Hangup()

Na segunda e terceira linha o número da prioridade aparece como n que significa next(próximo) e serve para não ter que escrever cada linha um número progressivo de prioridade. Isso é muito comodo quando se modifica o plano de discagem, caso queira adicionar uma nova linha não precisará ficar remanejando a prioridade de todas as outras uma vez que elas estão com a letra n.

Agora vamos configurar o contexto para as chamadas saintes.

[externas]

exten => _011.,1,Dial(${TRONCO-VONO}/${EXTEN})

a primeira linha diz ao Asterisk que todos os números que iniciam com 011 deverá usar essa parte do plano de discagem. O _ se coloca quando não indicamos o número exato e sim somente uma parte. O . indica que depois do 011 podem haver qualquer número. Dial é a aplicação utilizada para fazer a chamada. Em outro artigo explicaremos os parametros que essa aplicação utiliza. Por hora nos interessa saber que ${TRONCO-VOIP} É a variável que configuramos na chave [global] e corresponde ao nosso provedor de chamadas Voip(no caso a vono).  ${EXTEN} é uma variável interna do Asterisk onde a central guarda o número digitado.

exten => _011.,n,Playback(all-outgoing-lines-unavailable)

se por algum motivo a chamada não é completada devido a um problema no provedor ou na sua internet o Asterisk executará a segunda linha onde uma mensagem de voz informará que todas as linhas estão ocupadas ou indisponiveis.

exten => _011.,n,Hangup()

A terceira linha desconecta a chamada.

Agora podemos definir dois contextos: uma para os ramais que tem acesso as linhas externas e um para aqueles que só podem fazer chamadas internas. Esses contextos devem ser definidos na configuração de cada extensão(veja sip.conf) para definir quem tem acesso a que.

[apenas-internas]

include => internas

Com isso dizemos ao Asterisk que todas as extensões configuradas com o contexto apenas-internas terão acesso somenta ao conteúdo que está abaixo da chave [internas]

[todas]

include => internas

include => externas

Com isso dizemos ao Asterisk que todas as extensões configuradas com o contexto todas terão acesso somenta ao conteúdo que está abaixo da chave [internas] x [externas]

Como se pode ver, isto é muito útil para a criação de grupos distintos de extensões e que níveis de acessos elas terão.

Resumindo, nosso dialplan será assim:

[general]
static=yes
writeprotect=no
autofallthrough=yes
priorityjumping=yes

[globals]
RECEPCAO = SIP/6100
FILIAL-RJ = SIP/02140041234
TRONCO-VONO = SIP/vono

[internas]
exten => 5000,1,Answer()
exten => 5000,2,Playback(hello-world)
exten => 5000,3,Hangup()

[externas]
exten => _011.,1,Dial(${TRONCO-VONO}/${EXTEN})
exten => _011.,n,Playback(all-outgoing-lines-unavailable)
exten => _011.,n,Hangup()

[solo-internas]
include => internas

[todas]
include => internas
include => externas

Para atualizar a configuração entraremos na console do Aterisk

asterisk -rvvvvvvvvvv

e executamos o comando

CLI> dialplan reload

para ter uma idéia dos comando que podemos usar com o dialplan podemos escrever:

CLI> help dialplan

dialplan add extension Add new extension into context
dialplan add ignorepat Add new ignore pattern
dialplan add include Include context in other context
dialplan reload Reload extensions and *only* extensions
dialplan remove extension Remove a specified extension
dialplan remove ignorepat Remove ignore pattern from context
dialplan remove include Remove a specified include from context
dialplan set extenpatternmatch Use the Old extension pattern matching algorithm.
dialplan set extenpatternmatch Use the New extension pattern matching algorithm.
dialplan show Show dialplan

Espero que eu não tenha sido confuso.

Sugestões?

Related Posts with Thumbnails

14 Comentarios para “Configuração Asterisk 1.6.X – extensions.conf”

  1. Mestre,

    contratei um provedor voip (smartvoip) e ja configurei o mesmo e ta tranquilo;
    mas me tira uma duvida:
    como eu crio uma URA para as ligações ”vindo do telefone atraves da interface FXO” para quando bater chegar no asterisk poder digitar a opção para o ramal desejado? e tb quando for ligar escolher se quer ”sair pelo provedor voip” ou pela telefonia convencional?
    eu criei mais ou menos assim:

    [default]
    exten => 0,1,dial(DAHDI/1,20,r)
    exten => s,2,Goto(ura)
    exten => s,3,Dial(sip/41202,20,tT)

    exten => 41202,1,Dial(SIP/41202,20,tT)
    exten => 41202,2,Voicemail(41202@default)
    exten => 41202,3,Hangup()

    [ura]
    exten => s,1,Answer
    exten => s,n,NoOp(Chamada em processo de redirecionamento)
    exten => s,n,NoOp(Digitando o ramal)
    exten => s,n,WaitExten(5)

    exten => 1,1,NoOp(Chamada redirecionada para Fulado de tal)
    exten => 1,2,Dial(sip/41200)

    exten => 2,1,NoOp(Chamada redirecionada para Robson Gomes)
    exten => 2,2,Dial(sip/41202)

    exten => 3,1,NoOp(Chamada redirecionada para Ramal sem fio)
    exten => 3,2,Dial(sip/41203)

    exten => t,1,NoOp(Tempo esgotado)
    exten => t,2,NoOp(Redirecionando…)
    exten => t,3,Dial(SIP/41200)
    exten => t,4,Hangup

    só q ele funciona…da erro, poderia me ajudar?
    nao consigo colocara musica de fundo tb(tipo aquela da Oi quando liga..rs)
    se bem q pensando que a mais ou menos dois meses não sabia nadinha de asterisk, graças ao curso aqui to aprendendo….muito obrigado!!

  2. e tb gostaria de adicionar nessa duvida que quando ligam para o meu telefone smarvoip nao consigo antender aqui..to enrolado..rs

  3. Enemy,

    No arquivo chan_dahdi.conf, onde configurou sua placa FXO você deve colocar um contexto. Ex: from-fxo e depois cria-lo no arquivo extensions.conf.
    Ficaria mais ou menos assim seu extensions.conf

    [default]; procure criar seus ramais com 3 ou 4 digitos e para facilitar, não coloque cada ramal extamente, utilize dessa maneira:
    exten=> _41[2-3]XX,1,Dial(SIP/${EXTEN},20,Tt) ; onde 41 é o inicio do ramal, [2-3] significa que o terceiro digito so pode estar 2 e 3 e XX qualquer coisa.
    exten=> _41[2-3]XX,n,Voicemail(41202@default)
    exten=> _41[2-3]XX,n,Hangup()

    [from-fxo]; se você colocou esse nome de contexto nas configurações do FXO localizadas no chan_dahdi.conf as chamadas serão direcionadas para cá.
    exten=> s,1,goto(ura,s,1) ; quando chegar a chamada sera direcionada para ura.

    [ura]
    exten => s,1,Answer
    exten => s,n,NoOp(Chamada em processo de redirecionamento)
    exten => s,n,NoOp(Digitando o ramal)
    exten => s,n,Playback(bem-vindo) ; Bem Vindo a URA do enemy
    exten => s,n,Background(menu-principal) ; digite 1 para ….. 2 para…. e etc
    exten => s,n,WaitExten(5)
    include=>default; com isso a pessoa poderá digitar o ramal desejado que esta no contexto default.

    exten => 1,1,NoOp(Chamada redirecionada para Fulado de tal)
    exten => 1,2,Dial(sip/41200)

    exten => 2,1,NoOp(Chamada redirecionada para Robson Gomes)
    exten => 2,2,Dial(sip/41202)

    exten => 3,1,NoOp(Chamada redirecionada para Ramal sem fio)
    exten => 3,2,Dial(sip/41203)

    exten => t,1,NoOp(Tempo esgotado)
    exten => t,2,NoOp(Redirecionando…)
    exten => t,3,Dial(SIP/41200)
    exten => t,4,Hangup

  4. ficou show de bola, Mestre, o uso de Macros no asterisk é necessario em que situação? porque ele aumenta suas linhas no extension.conf ,mas onde há realmente a otimização?
    no conexto acima estou estudando uma forma de criar algum tipo de ”if” para cair no voicemail da extensão em andamento. Você poderia mostrar para gente em algum artigo futuro como trabalhar com macros?

  5. fabio alfaya says:

    configurei um computador com elastix,, tenho um digitronco embratel entrando numa placa E1 digivoice, já falo de ramal para ramal, já recebo ligaçoes pelo digitronco, mas não consigo fazer ligações externas. dá uma mensagem em inglês que não decifro, ou diz que todas as linhas estão ocupadas para eu tentar novamente. Vc pode de dar uma luz????

    Antecipadamente agradeço,

    Fabio Alfaya

  6. Boas,

    Necessito de criar uma extensão em asterisk, que depois de marcar xxx (exemplo), o asterisk devolva uma mensagem y(exemplo).

    Thanks

Trackbacks/Pingbacks

  1. Configuração Asterisk 1.6.X – agents.conf | Mestre Asterisk - [...] Para o agente se logar temos que escrever as seguintes linhas no plano de discagem(extensions.conf): [...]

Deixe um comentario