Configuração do ASTERISK
[INBOUND]
// FORA->DENTRO com condições no horário
include=> a_trabalhar|9:00-17:30|mon-fri include=> a_n_trabalhar
[a_trabalhar]
// quem liga de FORA vem para aqui
exten=>0,1,Dial(ZAP/1,20) exten=>0,2,Goto(menu,s,1)
//se !operadora por menu
[a_n_trabalhar] exten=>s,1,Playback(estamos fechados) //o playback obriga a ouvir exten=>0,2,Goto(menu,s,1)
[menu] exten=>s,1,Background(menu) exten=>1,1,Goto(interno) exten=>0,1,Wait(20) exten=>0,1,Hangup
//o background não obriga a ouvir //se n escolherem nada, desligamos
[menu_in] exten=>s,1,Background(menu_in) //apresentar menu exten=>1,1,Goto(extern,s,1) // ir para o contexto ligar para fora exten=>2,1,Dial(Zap/1,20) // ligar outro número (tipo vendas,etc..) exten=>3,1,Goto(cria_conferencia) // criar conferencia dinamicamente exten=>0,1,Wait(20) exten=>0,1,Hangup
[extern] exten=>s,1,Background(extwhat) //apresentar menu de escolha exten=>1,1,Goto(local) exten=>2,1,Goto(international) exten=>3,1,Goto(interno) exten=>4,1,Goto(directdial)
[directdial] exten=>0,1,Dial(Zap/g2/) exten=>0,2,Congestion
//marca qualquer coisa que o user puser
[international] include=>international_VOIP include=>international_PT
[international_VOIP] exten=>_3512XNXXXXXX,1,Dial(Zap/g2/${EXTEN:1}) // “internacional PT” exten=>_3512XXXXXXXX,2,Congestion
[international_PT] exten=>_003512XNXXXXXX,1,Dial(Iax/crit_uk/${EXTEN}) exten=>_003512XNXXXXXX,2,Dial(Zap/g2/${EXTEN:1}) exten=>_003512XXXXXXXX,3,Congestion
[interno] exten=>_1XXX,1,Dial(Zap/g2/${EXTEN:1}) exten=>_1XXX,2,Congestion
// 4 digitos sendo o 1º 1 // avisar se não conseguir
[local] include=>local_VOIP include=>local_PT
[local_VOIP] exten=>_239XXXXXX,1,Dial(Zap/g2/${EXTEN:1}) exten=>_239XXXXXX,2,Congestion
[local_PT] exten=>_239XXXXXX,1,Dial(Iax/crit_LX/${EXTEN}) exten=>_239XXXXXX,2,Dial(Zap/g2,${EXTEN:2}) exten=>_239XXXXXX,3,Congestion
[voicemail] //vê quem telefona, e dp só lhe pede exten=> 9999,1,VoicemailMain(s${CALLERIDNUM}) exten=> 9999,2,Hangup
[cria_conferencia] exten=>0000,1,Wait(1) exten=>0000,2,MeetMe(|MDi) //http://www.voip-info.org/wiki-Asterisk+cmd+MeetMe
[INTERNAL]
// DENTRO->DENTRO
include=>interno exten=>9,1,Dial(ZAP/1,20) exten=>112,1,Goto(nineoneone,s,1)
[globals] EMERGENCY=0 EMERGENCY_TRUNK=Zap/17 EMERGENCY_NUM=112
[nineoneone] exten exten exten exten exten exten exten exten exten exten exten exten exten
=> => => => => => => => => => => => =>
s,1,SetVar(SET_EMERG_FLAG=0) s,n(checkavail),ChanIsAvail(${EMERGENCY_TRUNK}) s,n,SetGlobalVar(EMERGENCY=1) s,n,SetVar(SET_EMERG_FLAG=1) s,n(dial),Dial(${EMERGENCY_TRUNK}/${EMERGENCY_NUM}) s,s+2(trunkbusy),GotoIf($[${EMERGENCY} = 1]?inprogress) s,n,SoftHangup(${EMERGENCY_TRUNK}-1) s,n,Wait(12) s,n,Goto(checkavail) s,s+2(inprogress),Congestion s,checkavail+101(notavail),Goto(trunkbusy) h,1,GotoIf($[${SET_EMERG_FLAG} = 1]?3) h,3,SetGlobalVar(EMERGENCY=0)
Configurações no voicemail.conf: format=wav49|gsm|wav servermail=asterisk attach=yes maxmessage=180 minmessage=3 charset=ISO-8859-1 pbxskip=no fromstring=Edgebox's PBX emailsubject=... emailbody=... [default]
// de quem é que vem o e-mail(user) // se o voicemail vai junto do e-mail de notificação ou não // tamanho máximo das mensagens em segundos // tamanho minimo das mensagens em segundos // será que queremos usar UTF-8 para dar para toda a gente? // deverá aparecer [PBX] no subject do e-mail? // de quem é que vem o mail // string a definir o subject do e-mail // dá para definir o corpo do e-mail usando-se algumas variáveis
// este 9999 seria criado com o comando addmailbox
9999 => 1234,
,
Configurações no sip.conf: context=default // ter em atenção como vai ficar definido o INCOMING tos=lowdelay // lowdelay,throughput,reliability,mincost,none videosupport=yes // vamos suportar isto? register => 1234:[email protected] // registar-se num SIP proxy
Configurações no cdr_manager.conf: enabled=yes
// vamos fazer billing? (este módulo tem que estar carregado: cdr_csv.so)
Configurações no cdr_pgsql.conf: [global] hostname=localhost port=5432 dbname=asterisk password=password user=postgres
// vamos dar a hipótese de logar noutro sítio que não nosso?
Configurações no extensions.conf: atenção que este ficheiro é que leva aquelas definições todas que andam lá por cima
Configurações no parking.conf: [general] parkext => 700 parkpos => 701-720 parkingtime => 45 original toca de novo) adsipark = yes pickupexten = *8
// que número é que se marca para fazer o park // entre que extenções é que ficam as chamadas paradas (dá para 19 aqui) // tempo máximo para uma chamada ficar em park em segundos (depois o // avisa-se via ADSI sobre os parks? // configurar a extensão para se returnar do park
Configurações no meetme.conf: conf => num_da_conf,PIN
// não é necessário se usarmos criação dinâmica
Configurações no musiconhold.conf:
// o Asterisk precisa de levar reload
[classes] default => quietmp3:/var/lib/asterisk/mohmp3
Notas: ●
Directory
Também é possível a utilização de uma lista telefónica (Directory), valerá a pena investir já nisto nesta fase inicial? ●
Configuração com CISCO clients
http://www.voip-info.org/wiki-Asterisk+config+skinny.conf
●
MeetME Control
http://www.areski.net/asterisk-meetme/about.php?s=0
●
Audio Os
vários
sons
utilizados
pelo
sistema
encontram-se
normalmente
em
/var/lib/asterisk/sounds e utilizam o formato GSM. Para que se possam implementar
outras linguas, devem-se seguir os seguintes critérios:
●
●
/var/lib/asterisk/sounds/pt digits/pt letters/pt etc
● ●
definir-se a lingua ou via variável language=pt ou via a função SetLanguage() neste momento existem cerca de 922 sons
Telefones (syntaxe) [phone1] type=friend // seria peer se isto se tratasse de um proxy host=dynamic defaultip=192.168.1.4 username=blah secret=blah // podem usar-se aqui hashes md5 (md5secret=) dtmfmode=rfc2833 ; Choices are inband, rfc2833, or info mailbox=9999 ; Mailbox for message waiting indicator context=sip // todos os telefones, pelo menos inicialmente devem estar no mm callerid="Me" <2124>
●
Firewall Portas que devem passar conforme a necessidade: ● ● ● ● ●
●
5060 (tcp/udp) 4569 (udp) 5036 (udp) 10000:20000 (udp) 2727 (udp)
[SIP (alguns só usam a udp)] [IAX .v2] [IAX] [media stream] [media gateway protocol]
Algumas considerações relativamente à segurança
Um dos mecanismos que aumentam a segurança, é a hipótese de não se ter que correr o asterisk com a conta de um utilizador com permissões elevadas (eg. root). Um pequeno tutorial sobre como se por a correr o Asterisk a correr com um utilizador mais limitado encontra-se no seguinte endereço: http://www.voip-info.org/wiki-Asterisk+non-root. Deve-se também ter em conta que o algoritmo de encriptação durante a autenticação via protocolo SIP é o MD5, que apesar de não ser o mais seguro, já fornece uma boa camada de confidencialidade e protecção. Aquando a implementação do sistema não se sistema a consulta de um documento da Cisco (http://www.cisco.com/en/US/tech/tk652/tk701/technologies_white_paper09186a00800ae41c.shtml ) onde são descritas implementações práticas de sistemas VOIP. Nos contextos deve-se também ter em conta que não pode ser possível aos utilizadores que ligam de fora possam utilizar a conta da empresa para fazer chamadas à custa da mesma.