Discador para Asterisk - Integrado com banco de dados

Umas das funções mais interessantes do Asterisk é a de discador automático. Através dos arquivos *.call colocados no diretório /var/spool/asterisk/outgoing, sempre que é criado/colocado um arquivo com esta extensão(.call) neste diretório (logicamente, dentro dos padrões exigidos), o Asterisk gera uma chamada através do canal especificado lá dentro.


Maiores detalhes sobre o padrão dos ditos arquivos podem ser encontrados no Voip-Info.org, detalhadamente e com vários exemplos.

Quanto à utilidade, aí vai da necessidade de cada um, pode ser desde apenas rodar uma mensagem para quem atendeu, realizar uma pesquisa, encaminhar para uma fila de atendimento...

A proposta do script que vou apresentar é fazer a função de um discador, que trabalha full-time buscando registros de uma tabela e realizando chamadas para aqueles números que ainda não foram discados, ou seja, sempre que um número for adicionado à tabela e o Asterisk não estiver com o limite de canais ocupados que definimos na variável CHANNLIMIT, vai ser gerada a chamada para ele:



Fique a vontade para alterar conforme a sua necessidade, há muito pra ser melhorado ainda. Se encontrar algum erro, por favor, reporte nos comentários.

Foi testado no CentOS 6.5 com Asterisk 11.

5 comentários:

Contato Site disse...

Rafael, parabéns pela dedicação e por compartilhar o conhecimento.

Unknown disse...

Rafael, parabéns pelo código e principalmente por compartilhar o mesmo. Se não for pedir demais teria como mandar o conteúdo da tabela ?

Rafael Saraiva disse...

A ideia na realidade, é utilizar alguma tabela já existente de algum CRM ou um gerenciador de contatos.
Você só precisa de uma tabela com as colunas number e used. Segue um exemplo:
CREATE TABLE contatos(
id int auto_increment,
number varchar(50) not null,
used enum('0','1') not null) engine=innodb;

Abraços.

Unknown disse...

Muito bom o código. Parabéns. ajudou bastante aqui. :)

Leandro Silva disse...

Olá, excelente script e obrigado por compartilhar, sou novo na área, poderia me ajudar, aonde e/ou como devo configurar meu asterisk para que funcione corretamente?

Postar um comentário