Espressões Matemáticas e Lógicas

Operadores matemáticos que podem ser utilizados:

+ soma
– subtração
* multiplicação
/ divisão
% módulo

Operadores lógicos que podem ser utilizados:

& E
| Ou
= Igual
> Maior
>= Maior ou igual que
< Menor
<= Menor ou igual que
!= Diferente

Para realizar uma operação lógica basta colocala entre $[ ] exemplo:

$[1 + 2]
$[${ARG1} + ${ARG2}]

Atribuindo o valor à uma variável:
Set(VARIÁVE=$[${ARG1} + ${ARG2}])
Expressões / Aplicações Lógicas

GotoIf() É uma estrutura de seleção seguida de um goto, ou seja, vai para determinada parte do extensions.conf caso seja verdadeiro, exemplo
exten => s,n,GotoIf($[4>3]?ura,s,1:ura,i,1) – Caso 4 seja maior que 3, vai para o contexto ura, extension s e prioridade 1, caso seja falso vai para contexto ura, extensão i (invalid) e prioridade 1.

GotoIfTime() – Desvia o contexto caso o horário esteja de acordo com o especificado, exemplo:
exten => s,n,GoIfTime(8:00-12:59,*,*,*?manha,s,1)

ExecIf – Executa algo se a expressão for verdadeira
exten => s,n,ExecIf($[4>3]?SayDigits(4))

ExecIfTime() Executa algo caso a hora seja a hora especificada. Você pode usa-la no horário de almoço por exemplo, tocando um arquivo de audio que diz que a empresa está em seu horário de almoço.
exten => s,n,ExecIfTime(12:00-13:00,*,*,*?PlayBack(almoco))

FONTE: Asterisk na prática – Alexandre Keller – novatec

Transferência e Captura de Chamadas

TRANSFERÊNCIA

Possuimos 2 formas de se fazer a transferência de chamada no asterisk: assistida e as cegas.

vi /etc/asterisk/features.conf
blindxfer = # (as cegas)
atxfer = #2 (assistida)

Reinicie os modulos e pronto
PC-CLI*> module reload res_features.so

CAPTURA

vi /etc/asterisk/sip.conf
callgroup=xx
pickupgroup=xx

Faça a ligação não atenda e de outro ramal digite *8

Para adicionar a captura por ramal é necessário implementar a funcionalidade do dialplan

vi /etc/asterisk/extension.conf
exten => *88ZXXX,1,Pickup(${EXTEN:3})

Música em Espera

Antes de colocarmos a opção de música em  espera em nosso Asterisk devemos se atentar com os direitos autorais, se possuem licença de domínio público e são copyleft.

vi /etc/asterisk/musiconhold.conf
[default]
mode=files
directory=/var/lib/asterisk/moh

vi /etc/asterisk/sip.conf
[general]
musicclass=default

Recarregue os modulos e pronto.

PC*CLI> sip reload
PC*CLI>module reload res_musiconhold.so

DialPlan

Vou mostrar algumas opções para montagem de um dialplan no asterisk (/etc/asterisk/extension.conf)

Z = vai de 1 a 9
X = vai de 0 a 9
N = vai de 2 a 9
. = faz com que “n” digitos faça parte da extensão(inclusive caracteres * e #)
! = faz com que “n” digitos faça parte da extensão
s = Extensão Start
t = tempo de resposta
i = captura qualquer digitação inválida

Mais opções podem serem consultadas na documentação do Asterisk:

PC*CLI> core show functions
PC*CLI> core show functions TIMEOUT
PC*CLI> core show apllications
PC*CLI> core show apllications Dial

Exemplos:
Define Timeout para 30 segundos
exten => s,1,Set(TIMEOUT(response)=30)

FUNÇÕES

SayDigits = função que fala o valor dentro dela.
Ex.: exten => 123,n,SayDigits(1234567890)

NoOp

Vou mostrar a sixtax do aplicativo NoOp para ser utilizado no debug do dialplan (/etc/asterisk/extension.conf).

exten => 123,1,NoOp(Caller-ID: ${CALLERID})
exten => 123,1,NoOp(Caller-ID: ${CALLERID(name)})
exten => 123,1,NoOp(Caller-ID: ${CALLERID(number)})
exten => 123,1,NoOp(Caller-ID: ${SUA_VARIAVEL})

Para visualizar seu retorno é necessario utilizar (verbose 3):

asterisk -vvvr

Monitorar Asterisk com Munin

Vamos instalar e configurar o Munin para obter estatísticas com gráficos do Asterisk.
# aptitude install munin munin-node

Após instalado vamos as configurações
# cd /etc/munin
# vi munin.conf

dbdir /var/lib/munin
htmldir /var/www/munin
logdir /var/log/munin
rundir /var/run/munin

Vamos indicar qual servidor iremos monitorar
[TriboSys]
address 127.0.0.1
use_node_name yes

Podemos ainda configurar para enviar alertas por e-mail porem para isso precisamos o sendmail instalado.
contact.admin.command sendmail -t “Munin notification” admin@tribosys.com.br

Vamos aos plugins
# cd /usr/share/munin/plugins/

Para asterisk 1.6
# wget http://www.magnussolution.com/tmp/munin-asterisk.1.6.tar

Para asterisk 1.4
# wget http://www.magnussolution.com/tmp/munin-asterisk.1.4.tar

Descompactando
# tar xvf munin-asterisk-1.x.tar

Ativar plugins no munin-node
# vi /etc/munin/plugins-conf.d/munin-code
[asterisk_*]
user root

Precisamos configurar nosso asterisk tambem gerar as estatisticas atraves do AMI (Asterisk Manager Interface) para isso adicionaremos o conteudo no fim do arquivo manager.conf

# vi /etc/asterisk/manager.conf
[munin]
secret = munin
write = system,call,log,verbose,command,agent,user
read = system,call,log,verbose,command,agent,user

Após as mudanças precisamos alterar todos plugins de:
my $username = $ENV{‘username’};
my $secret = $ENV{‘secret’};
Para:
my $username = $ENV{‘munin’};
my $secret = $ENV{‘munin’};

Criar os links simbolicos para o munin aceitar os plugins.
# cd /etc/munin/plugins
# ln –s /usr/share/munin/plugins/asterisk_channels asterisk_channels
# ln –s /usr/share/munin/plugins/asterisk_sippeers asterisk_sippeers

Iniciamos munin-node:
/etc/init.d/munin-node start

Continue reading “Monitorar Asterisk com Munin”

Configurando Idioma pt_BR no Asterisk

Vamos configurar seu asterisk para nosso idioma(pt_BR)
com os audios da DISC-OS.

mkdir /linux/asterisk
cd /linux/asterisk
wget -c http://downloads.sourceforge.net/project/
disc-os/Disc-OS%20Sounds/1.0-RELEASE/Disc-OS-Sounds-1.0-pt_BR.tar.gz

tar zxvf Disc-OS-Sounds-1.0-pt_BR.tar.gz
cp -rf sounds/* /var/lib/asterisk/sounds/

#Defina language=pt_BR para os ramais configurados
vi /etc/asterisk/sip.conf
language=pt_BR

# Definir o idioma tambem no seu plano de discagem (extension.conf)
exten => s,n,Set(LANGUAGE()=pt_BR)

Obrigado ao time do Disc-os! Licenciado sobre o CC!!