Passo 1 - Instalar Apache, PHP e MySQL (sintaxe para Debian):
# aptitude install apache2 php5 mysql-server-5.0 mysql- client php5-mysql libapache2-mod-php5
Passo 2 - Instalar as bibliotecas de programação e desenvolvimento para o Debian, como GCC (compilador C e C++) e a biblioteca MySQL.
Instalação do GCC (GNU Compiler Collection - chamado usualmente por GCC, é um conjunto de compiladores de linguagens de programação produzido pelo projeto GNU), se dá pelo seguinte comando:
# aptitude install gcc g++ g++-4.1 libmysqlclient15-dev
# aptitude install libedit-dev libedit2 libssl-dev zlib-bin zlib1g-dev mpg123 libnewt0.52 newt-tcl libnewt-dev build-essential perl
Passo 3 - Instalar o Asterisk e seus pacotes, sendo esta a ferramenta principal escolhida para o funcionamento do projeto em VoIP. Criar o diretório Asterisk para armazenamento dos pacotes necessário do Asterisk:
# mkdir -p /usr/src/asterisk
Baixando os pacotes no diretório /usr/src/asterisk. Antes utilizaremos o comando cd para acessar o diretório:
# cd /usr/src/asterisk/
Baixando os pacotes:
asterisk-1.4.26.2.tar.gz - contém aplicações, funções, canais de comunicação e todas as funcionalidades que formam o Asterisk.
# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.26.2.tar.gz
asterisk-addons-1.4.9.tar.gz - são os módulos adicionais, todas as aplicações e funcionalidades que não seguem a licença GPL, como funções de conectividade com os bancos de dados, formato de áudio MP3 e canal de comunicação H.323.
# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-addons-1.4.9.tar.gz
Descompactar os pacotes:
# tar -xvvf asterisk-1.4.26.2.tar.gz
LibPri - Biblioteca responsável pela sinalização ISDN/PRI, só precisa ser compilado e instalado em caso de uso de placa E1/T1.
DAHDI (antigo Zaptel) - Contém drivers para placas de comunicação da Digium ou seus clones. Em 2008, o DAHDI substituiu por problema com patente pelo nome Zaptel.
Passo 4 - Instalar o Asterisk
Após o processo de descompactação do Asterisk será criado o diretório Asterisk-1.4.26.2, acesse esse diretório com o comando cd e siga os passos seguintes.
# cd asterisk-1.4.26.2
# ./configure
# make
# make install
# make samples
Instalar módulos adicionais com funções que não seguem a licença GPL, como exemplo: MySQL, protocolo H323 e MP3 para áudio.
Antes precisaremos descompactar os módulos:
# cd /usr/src/asterisk/
# tar -xvvf asterisk-addons-1.4.9.tar.gz
Instalando os módulos:
# ./configure
# make
# make install
# make samples
Passo 5 - Instalar o aplicativo PhPMyAdmin para gerenciamento do MySQL e criação do banco de ramais para controle de bilhetes. O PhPMyAdmin é um aplicativo que será utilizado via web.
# aptitude install phpmyadmin
Acessando o browser para configurar o Phpmyadmin para gerenciamento do Asterisk.
Abra uma nova pagina web entre com endereço IP conforme abaixo:
http://10.1.1.4/phpmyadmin/
Entre com o usuário root e senha predefinida na instalação do MySQL (senha: Asterisk).
Após criar o banco de dados asterisk com a senha de root "asterisk", criar as tabelas no MySQL.
Criar a tabela CDR (Call Detail Record), execute os comandos abaixo na janela do SQL: CDRs são arquivos para controle de tarifação e bilhetagem.
Estrutura da tabela cdr:
CREATE TABLE IF NOT EXISTS `cdr` (
`id` int(5) NOT NULL auto_increment,
`calldate` datetime NOT NULL default '0000-00-00 00:00:00',
`clid` varchar(80) NOT NULL default '',
`src` varchar(80) NOT NULL default '',
`dst` varchar(80) NOT NULL default '',
`dcontext` varchar(80) NOT NULL default '',
`channel` varchar(80) NOT NULL default '',
`dstchannel` varchar(80) NOT NULL default '',
`lastapp` varchar(80) NOT NULL default '',
`lastdata` varchar(80) NOT NULL default '',
`duration` int(11) NOT NULL default '0',
`billsec` int(11) NOT NULL default '0',
`disposition` varchar(45) NOT NULL default '',
`amaflags` int(11) NOT NULL default '0',
`accountcode` varchar(20) NOT NULL default '',
`uniqueid` varchar(32) NOT NULL default '',
`userfield` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=27950;
Criar a tabela Config_SIP para o funcionamento do SIP com controle do tempo de chamadas.
Estrutura da tabela "config_sip":
CREATE TABLE IF NOT EXISTS `config_sip` (
`id` int(11) NOT NULL auto_increment,
`cat_metric` int(11) NOT NULL default '0',
`var_metric` int(11) NOT NULL default '0',
`commented` int(11) NOT NULL default '0',
`filename` varchar(128) NOT NULL default '',
`category` varchar(128) NOT NULL default 'default',
`var_name` varchar(128) NOT NULL default '',
`var_val` varchar(128) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `filename_comment` (`filename`,`commented`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=148;
Adicionar valores aos campos da tabela config_sip para o funcionamento do SIP:
INSERT INTO `config_sip` (`id`, `cat_metric`, `var_metric`, `commented`, `filename`, `category`, `var_name`, `var_val`) VALUES (126, 0, 0, 0, 'sip.conf', 'general', 'port', '5060'), (127, 0, 1, 0, 'sip.conf', 'general', 'bindaddr', '0.0.0.0'), (128, 0, 2, 0, 'sip.conf', 'general', 'context', 'default'), (129, 0, 3, 0, 'sip.conf', 'general', 'disallow', 'all'), (130, 0, 4, 0, 'sip.conf', 'general', 'allowgest', 'no'), (131, 0, 5, 0, 'sip.conf', 'general', 'videosupport', 'yes'), (132, 0, 6, 0, 'sip.conf', 'general', 'nat', 'yes'), (133, 0, 7, 0, 'sip.conf', 'general', 'externip', '0.0.0.0'), (134, 0, 8, 0, 'sip.conf', 'general', 'LOCALNET', '0.0.0.0/0.0.0.0'), (135, 0, 9, 0, 'sip.conf', 'general', 'pedantic', 'no'), (136, 0, 10, 0, 'sip.conf', 'general', 'rtcachefriends', 'no'), (137, 0, 11, 0, 'sip.conf', 'general', 'echocancel', 'yes'), (138, 0, 12, 0, 'sip.conf', 'general', 'language', 'br');
Criar tabela de ramais sip_buddies, para cadastro e gerenciamento de ramais.
Estrutura da tabela "sip_buddies":
CREATE TABLE IF NOT EXISTS `sip_buddies` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(80) NOT NULL default '',
`accountcode` varchar(20) default NULL,
`amaflags` varchar(7) default NULL,
`callgroup` varchar(10) default '1',
`callerid` varchar(80) default NULL,
`canreinvite` char(3) default 'no',
`context` varchar(80) default 'default',
`defaultip` varchar(15) default NULL,
`dtmfmode` varchar(7) default 'rfc2833',
`fromuser` varchar(80) default NULL,
`fromdomain` varchar(80) default NULL,
`fullcontact` varchar(80) default NULL,
`host` varchar(31) default 'dynamic',
`insecure` varchar(4) default NULL,
`language` char(2) default NULL,
`mailbox` varchar(50) default NULL,
`md5secret` varchar(80) default NULL,
`nat` varchar(5) default 'yes',
`deny` varchar(95) default NULL,
`permit` varchar(95) default NULL,
`mask` varchar(95) default NULL,
`pickupgroup` varchar(10) default '1',
`port` varchar(5) NOT NULL default '',
`qualify` char(3) default NULL,
`restrictcid` char(1) default NULL,
`rtptimeout` char(3) default NULL,
`rtpholdtimeout` char(3) default NULL,
`secret` varchar(80) default NULL,
`type` varchar(6) NOT NULL default 'friend',
`username` varchar(80) NOT NULL default '',
`disallow` varchar(100) default 'all',
`allow` varchar(100) default 'gsm;ulaw;alaw',
`musiconhold` varchar(100) default NULL,
`regseconds` int(11) NOT NULL default '0',
`ipaddr` varchar(15) default NULL,
`regexten` varchar(80) default NULL,
`cancallforward` char(3) default 'yes',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `name_2` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=FIXED AUTO_INCREMENT=96;
Passo 6 - Configurar o arquivo cdr_mysql.conf
Este arquivo é responsável por conectar a tabela CDR do Asterisk ao banco de dados MySQL para arquivamentos de todos as chamadas com seu tempo de duração, ramal de origem e ramal de destino, quantidade de tentativas, chamadas executadas, entre outros.
Acessar o diretório /etc/asterisk (este diretório foi criando automaticamente na instalação do Asterisk) e entrar com os comandos abaixo:
# cd /etc/asterisk/
Note que agora utilizaremos o aplicativo VIM instalado no início do processo de instalação do Asterisk com o comando abaixo:
# vi cdr_mysql.conf
Será aberta uma janela de edição no modo vim, onde será necessário alterá-lo para que fique da seguinte forma:
[global]
hostname=localhost
dbname=asterisk
table=cdr
password=asterisk
user=root
port=3306
sock=/var/run/mysqld/mysqld.sock
userfield=1
Passo 7 - Configurar o arquivo extconfig.conf
Este arquivo faz um link dinâmico ao banco MySQL. Editar o arquivo extconfig.conf:
# vi extconfig.conf
A janela de modo de edição vim abrirá para edição do arquivo extconfig.conf. Adicione as linhas abaixo no final do arquivo.
sipusers => mysql,Asterisk,sip_buddies
sippeers => mysql,Asterisk,sip_buddies
sip.conf => mysql,Asterisk,config_sip
Passo 8 - Configurar o arquivo extension.conf
Este arquivo é responsável pelo plano de discagem do Asterisk.
Deletar arquivo atual extesions.conf:
# rm -f extesions.conf
Crie o arquivo extesions.conf:
# vi extensions.conf
Adicione todo o conteúdo abaixo no novo arquivo extensions.conf:
[general]
static=yes
writeprotect=no
priorityjumping=no
autofallthrough=yes
clearglobalvars=no
[globals]
[default]
exten => _3XX,1,Dial(SIP/${EXTEN},20,tT)
exten => _3XX,n,Hangup()
Passo 9 - Editar o arquivo res_mysql.conf
Arquivo responsável por conectar o Asterisk ao banco MySQL. Edite o arquivo com o comando "vi" e adicione as linhas abaixo:
Editar o arquivo res_mysql.conf:
# vi res_mysql.conf
Editando o arquivo res_mysql.conf, adicionado as linhas para conexão com o banco de dados:
[general]
dbhost = localhost
dbname = asterisk
dbuser = root
dbpass = asterisk
dbport = 3306
dbsock = /var/run/mysqld/mysqld.sock
Passo 10 - Criar ramais no banco MySQL utilizando a aplicação phpmayadmin.
Na página http://10.1.1.4/phpmyadmin, selecionar o banco Asterisk.
Selecione a tabela sip_buddies.
Preencher os campos Name, Context, Secret, Type e Username.
- Name = Número do ramal.
- Context = Contexto do plano de discagem. Preencher com default.
- Secret = Senha que permite o usuário efetuar chamadas, esta senha pode ser configurada conforme requisitos impostos pelo administrador. Para criação de senha automática é necessário criar um script que permita alteração pelo usuário.
- Type = Tipo de permissões que o usuário tem para efetuar ou receber chamadas, existem três tipos disponíveis:
Friend - Permite receber e efetuar chamadas
Peer - Somente efetua chamadas
User - Permissão só para recebimento de chamadas
Passo 11 - Executando o Asterisk
Esta parte tem como propósito verificar se todos os processos do Asterisk estão funcionais.
Verificar se os pacotes do Asterisk estão completos:
# asterisk -vvvvvv
Ativar o Asterisk:
# asterisk -g
Visualizar via console chamadas em tráfego no servidor:
# asterisk -rvvv