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)