Introdução à Telefonia por IP utilizando Asterisk/Extensões
Extensão
Uma extensão é uma instrução que o Asterisk irá seguir e é incluída dentro de cada contexto. A extensão é acionada por uma chamada de entrada ou por dígitos sendo discados em um canal. Então as extensões especificam o que acontece às chamadas enquanto seguem seu caminho pelo dialplan.
A sintaxe para uma extensão é a palavra exten seguida por uma seta: exten =>
São três os tipos de extensões: Literal, predefinida e padrão.
Extensões literais podem conter em seu nome: números (0-9) ou todas as letras (a-z).
Extensões predefinidas possui os nomes: i - inválido, s - inicia, h - Desligar, t - Timeout, T – Absoluto Timeout, o - Operador. Se o nome começa com extensão ‘-’ considera-se como padrão alguns caracteres com um significado especial: X - qualquer dígito de 0-9; Z – qualquer dígito 1-9, N - qualquer dígito 2-9; [12679] - qualquer dígito no brakets.
Uma extensão completa é formada pelos seguintes componentes: O nome (ou número) da extensão; A prioridade, na qual cada extensão pode incluir vários passos a ser executado na chamada; Aplicação (ou comando) que executa alguma ação na chamada. Esses três componentes são separados por vírgulas, da seguinte forma: exten => nome,prioridade,aplicação().
Um simples exemplo: exten => 123,1,Answer() Neste exemplo, o nome da extensão é 123, a prioridade é 1 e a aplicação é Answer().
Prioridades
Cada extensão pode ter vários passos, chamados de prioridades. Cada prioridade é numerada seqüencialmente e cada uma executa uma aplicação específica. Por exemplo, a seguinte extensão pode responder a uma chamada (na prioridade 1) e então desligar (na prioridade 2): exten => 123,1,Answer()
exten => 123,2,Hangup()
Atenção as prioridades devem iniciar em 1 e são numeradas consecutivamente. Caso uma prioridade fique fora de ordem numérica o Asterisk não continua depois dela.
As versões mais recentes do Asterisk, a partir da 1.2, é possível usar um truque para enumerar as prioridades, como por exemplo usar o “n” que indica a próxima, ou seja, cada vez que o Asterisk achar um “n” ele pega o número da prioridade anterior e acrescenta mais 1. Por exemplo:
exten => 123,1,Answer()
exten => 123,n,faça alguma coisa
exten => 123,n,faça outra coisa
exten => 123,n,Hangup()
--Gleicieny Dias de Souza (discussão) 21h26min de 14 de abril de 2013 (UTC)