Ramais SIP do asterisk no MySQL

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:

  1. Criação de uma tabela no banco, onde conterá os ramais SIP
  2. Configuração do asterisk no arquivo extconfig.conf
  3. Configuração do asterisk no arquivo res_config_mysql.conf
  4. 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.

Ronaldo Sacco
Sócio Co-Fundador da SaperX. Diretor Técnico. Especialista em SIP, Asterisk e programação de alto desempenho. O cara que faz a vaca voar.
Post criado 23

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Posts Relacionados

Comece a digitar sua pesquisa acima e pressione Enter para pesquisar. Pressione ESC para cancelar.

De volta ao topo