Já pensou em ter um sistema próprio para gerenciar os ramais SIP do Asterisk diretamente em um banco de dados, ao invés de cadastrar todos os ramais no arquivo sip.conf?
Gerenciar ramais sip nunca foi tão fácil após ler este post! Aqui mostrarei como realizar este procedimento de forma simples, rápida, fácil e descomplicada.
Para uma boa compreensão, considerarei que você já possua:
- MySQL instalado
- Asterisk instalado
- Conhecimento básico em SQL e MySQL
- Conhecimento básico em Asterisk
O pior de seguir uma “receita de bolo” é não saber o que se está fazendo. Então, para você se achar, basicamente seguirei os passos abaixo:
- Criação de uma tabela no banco, onde conterá os ramais SIP
- Configuração do asterisk no arquivo extconfig.conf
- Configuração do asterisk no arquivo res_config_mysql.conf
- Testes
Passo 01:
Acesse o MySQL:
mysql -u root -p
Crie uma database chamada asterisk
create database asterisk;
Acesse a database:
use asterisk;
Crie a tabela chamada ramais_sip
CREATE TABLE `ramais_sip` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(80) NOT NULL DEFAULT '', `context` varchar(80) DEFAULT 'clientes', `secret` varchar(80) DEFAULT NULL, `host` varchar(31) NOT NULL DEFAULT 'dynamic', `nat` varchar(5) NOT NULL DEFAULT 'yes', `type` enum('user','peer','friend') NOT NULL DEFAULT 'friend', `callerid` varchar(80) DEFAULT NULL, `qualify` char(3) DEFAULT 'yes', `rtptimeout` char(10) DEFAULT NULL, `username` varchar(80) NOT NULL DEFAULT '', `lastms` int(11) NOT NULL, `regseconds` int(11) NOT NULL DEFAULT '0', `useragent` varchar(50) NOT NULL DEFAULT '', `ipaddr` varchar(45) DEFAULT NULL, `port` int(5) DEFAULT NULL, `fullcontact` varchar(35) DEFAULT NULL, `regserver` varchar(20) DEFAULT NULL, `deny` varchar(40) DEFAULT NULL, `disallow` text, `insecure` text, `fromuser` text, `permit` varchar(40) DEFAULT NULL, `callbackextension` varchar(40) DEFAULT NULL, `dtmfmode` enum('rfc2833','info','shortinfo','inband','auto') DEFAULT NULL, `ip` varchar(15) DEFAULT NULL, `status` varchar(30) DEFAULT NULL, `defaultuser` varchar(10) DEFAULT NULL, `call-limit` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `name` (`name`) );
Não se preocupe com o tamanho da tabela! Provavelmente você não usará todos estes campos.
Agora irei mostrar como você insere um ramal “20”, com a senha “hads9xadS”, no contexto “interno”:
INSERT INTO ramais_sip SET name='20', context='interno', secret='hads9xadS';
Simples, não?
PASSO 02:
Agora vamos para a configuração do asterisk. Abra o arquivo extconfig.conf. Na última linha do arquivo, adicione:
sippeers => mysql,local,ramais_sip
Com isso você está dizendo para o Asterisk procurar os ramais SIP, usando uma conexão MySQL, com a conta “local”, e a tabela “ramais_sip”. No passo a seguir, configuraremos esta conta “local”.
PASSO 03:
Abra o arquivo res_config_mysql.conf. Apague absolutamente todo o arquivo, e insira as informações abaixo, completando com os dados de acesso do seu banco MySQL:
[local] dbhost=127.0.0.1 dbname=asterisk dbuser=INSERIR_AQUI_O_USUARIO_DO_BANCO (Ex: root) dbpass=INSERIR_AQUI_A_SENHA_DO_BANCO dbport=3306 requirements=warn
Salve o arquivo, e vamos rebootar o asterisk:
asterisk -rx "core restart now"
PASSO 04:
Chegamos na hora de testar!
Se todos os passos acima foram realizados corretamente, então nesta hora tudo já deve estar funcionando. Para testar, basta registrar o ramal SIP no IP do seu servidor, com a conta 20 e senha “hads9xadS” (sem aspas). Deverá conectar normalmente.
Ah, importante! É bom lembrar que, inicialmente, os ramais que estão no banco de dados não aparecerão na console do Asterisk com o comando “sip show peers”. Eles aparecerão somente após alguma atividade ocorrer entre servidor-ramal como, por exemplo, um registro do ramal.