• Nenhum resultado encontrado

Definindo extensões

No documento Livro Asterisk Curso Completo (páginas 197-200)

Visão geral do plano de discagem

8.8 Definindo extensões

Ao contrário de um PABX tradicional, onde as extensões estão associadas com telefones, interfaces, menus e assim por diante, no Asterisk uma extensão é definida como uma lista de comandos a executar. Os comandos são geralmente executados na ordem definida pela sua etiqueta de prioridade, por outro lado, alguns comandos como o “Dial” e o “Gotoif” tem a capacidade de redirecionar para outro lugar baseado em alguma condição.

Quando uma extensão é discada, o comando etiquetado com prioridade de 1 é executado, seguido pelo comando com prioridade 2 e assim por diante. Isto ocorre até a chamada ser desligada, ou um comando retornar com código de resultado 1 (indicando falha) ou até nenhum comando de maior prioridade existir ou a chamada ser roteada para uma nova extensão.

Em cada contexto você pode definir uma ou mais extensões. Para cada extensão, você define um conjunto de comandos. Para cada comando é dada uma linha separada no seguinte formato:

exten=>extension,priority,command(parameters)

extension é o nome da extensão, ou o nome literal da extensão ou um padrão. Você repete exatamente o mesmo nome para cada comando para a extensão

Priority é um número interior. Chamá-lo prioridade não é totalmente correto, é apenas o número do comando, usado para numerar os comandos relacionados à uma extensão. O Asterisk irá começar a execução na prioridade 1, se não existir uma linha com prioridade 1, então a extensão não irá bater nenhum número discado. Após executar o comando de prioridade 1, o Asterisk irá executar o comando definido com prioridade 2. Se não existir comando definido com prioridade 2, então o asterisk termina o processamento para esta extensão, mesmo se existir outro comando com prioridade 3 ou mais. Entretanto, alguns comandos, quando executados, fazem o Asterisk pular para uma nova prioridade ao invés de ir para a próxima, dependendo da pró

command é o nome do comando (também chamado aplicação) para se executar.

parameters Os parâmetros dependem do comando. Alguns comandos não têm parâmetros. Exemplo: exten=>123,1,Answer exten=>123,2,Playback(tt-weasels) exten=>123,3,Voicemail(44) exten=>123,4,Hangup

Esta é a definição de uma extensão com o nome “123”. Quando uma chamada é feita para a extensão 123, o Asterisk irá responder a chamada ele mesmo, tocar um arquivo de áudio chamado tt-weasels, dar ao usuário a oportunidade de deixar uma mensagem de voz para a caixa 44 e então desligar.

Note que o Asterisk não se importa com a ordem em que você coloca as linhas no arquivo extensions.conf. Você pode misturar as linhas em uma ordem diferente como no seguinte exemplo, e isto não diferença porque o Asterisk usa a prioridade de cada linha para determinar a ordem de execução.

exten=>123,1,Answer

exten=>123,2,Playback(tt-weasels) exten=>123,3,Voicemail(44) exten=>123,4,Hangup

Outras opções para definir extensões incluem a opção normalmente chamada de lógica ex-namorada. A lógica irá bater a extensão discada vindo de fora ou de dentro, baseado na identificação de chamada (callerid) da pessoa que está chamando. Por exemplo:

exten=>123/100,1,Answer()

exten=>123/100,2,Playback(tt-weasels) exten=>123/100,3,Voicemail(123) exten=>123/100,4,Hangup()

Isto irá bater na extensão 123 e executar as seguintes opções somente se o identificador de chamada do usuário é 100. Isto também pode ser feito com um padrão ao invés de um literal.

exten=>1234/_256NXXXXXX,1,Answer()

Isto irá bater no 1234 se o CallerID é algo começando com 256. Isto é muito útil para evitar que usuários locais liguem para o seu 0800 e você tenha de pagar por isto.

Um ponto importante a ser entendido é que cada canal VoIP (SIP, H323) ou PSTN (Zap, ISDN) é configurado dentro de um contexto. Portanto, cada canal pertence à um único contexto. Que extensões ou serviços este canal vai poder usar depender das instruções contidas no plano de discagem para aquele contexto.

8.8.1 Contextos baseados em horário

Na figura acima temos um plano de discagem feito de vários contextos. Quando uma chamada está entrando, ela vem por um canal. Este canal pertence à um contexto. No caso acima o canal pertence ao contexto “menuprincipal”. Dentro do contexto menuprincipal, temos dois contextos que foram incluídos “foradoexpediente” e “expediente”. Estes dois contextos foram incluídos usando o comando:

include => context|<times>|<weekdays>|<mdays>|<months>

Por exemplo:

; Este é o horário de expediente

; Este é o horário fora de expediente

include=>foradeexpediente|18:00-23:59|*|*|* include=>foradeexpediente|00:00-08:00|*|*|* include=>foradeexpediente|*|sat-sun|*|*|*

De forma que um dos dois vai ter a estensão s (Start) eles vão tocar a chamada apropriada e transferir para o menuprincipal. Após o anuncio do menu principal o sistema irá esperar pela discagem de 1 dígito, podendo transferir para vendas ou para qualquer ramal no contexto default. Note que não é possível transferir para uma linha externa, pois o contexto discar externo, não está incluído no contexto menu principal.

Por outro lado se analisarmos a saída de chamadas, vamos imaginar que um canal tenha sido colocado no contexto [discarexterno] (Muito semelhante as classes de ramais nos PABX convencionais), ele pode discar um número externo, e também discar qualquer ramal no contexto default que também foi incluído no contexto [discarexterno]. É importante entender que o que define o contexto de um canal não é a entrada “exten=>”no arquivo extensions.conf, o que define o contexto de um canal é a configuração do canal (sip.conf ou zapata.conf dependendo do tipo de canal). Por isto um canal que tenha sido definido como contexto default pode discar apenas os outros ramais e um que tenha sido definido como [discarexterno], pode discar externamente e também para todos os ramais, pois o contexto default foi incluído no contexto discarexterno.

8.8.2 Discando 0 para pegar a linha externa.

Sempre é bom manter em um PABX novo a mesma experiência que em um PABX anterior. Quando você disca 0 no seu PABX atual, ele dá o tom da linha externa. Quando você disca 0 no Asterisk, ele fica mudo esperando você discar todo o resto. Para resolver esta “encrenquinha” tem um comando muito útil, a instrução ignorepat.

[directdial] ignorepat => 0 exten => 0,1,Dial(Zap/g2/) exten => 0,2,Congestion [international] ignorepat => 0 exten => _00.,1,Dial(Zap/g2/${EXTEN:1}) exten => _00.,2,Congestion include => longdistance

No documento Livro Asterisk Curso Completo (páginas 197-200)

Documentos relacionados