Repost do blog antigo.
Bom pessoal, após meu post sobre ligações login vs. senha, eu refleti e cheguei à seguinte conclusão: “Eu tenho um cantinho especial reservado no inferno!”. Quando você for utilizar uns 10 login’s e senhas, até que aquilo lá quebra um galho. Mas e se você possuir 200 login’s para cadastrar? Imagine criar 200 contextos de saída e depois disso incluir tudo no AstDB manualmente… Eu pensei em realizar um upgrade na facilidade. Muitos podem pensar: “Ah, mas tem o A2Billing que faz isso.”; Minha resposta: “Se der problema no A2Billing? Se você quiser personalizar algo para o seu sistema ou para um cliente? E se…? E se…? E se…? What the hell you do?“. Voltando ao foco do post. Vamos fazer algo profissa não é? Que tal se nós utilizarmos um AGI em PHP integrando com uma tabela em PostgreSQL? 😉
O principio segue o mesmo, digita o número desejado, pede login, pede senha, verifica e completa. Vamos começar criando a tabela no PostgreSQL com esse script.
A chave primária login_ast_pk é para prevenir a inserção de valores iguais e nulos, pois o que nós queremos e ter um controle das ligações. Se as pessoas possuírem login’s iguais tudo vai ralo abaixo e login nulo eu não preciso nem explicar… O campo login_id gera um número para identificar o registro, o campo nome é o nome do usuário, o campo login é o seu respectivo login, o campo senha você coloca a senha e o campo contexto você insere o nome do contexto de saída desta pessoa. Como eu não sou um um POGamador from hell mal programador, coloquei um comentário na tabela.
Na saída do comando \d+ você visualiza a tabela login_ast, o comentário e o campo login_id como tipo sequência. Agora iremos inserir alguns registros como exemplo, lembrando que o primeiro campo não é necessário inserir informações, pois ele gera automaticamente o valor.
# touch /var/lib/asterisk/agi-bin/login.agi
# chmod 775 /var/lib/asterisk/agi-bin/login.agi
# vim /var/lib/asterisk/agi-bin/login.agi
Copie e cole este script dentro do arquivo login.agi.
O script AGI acima irá receber do Asterisk o login (primeiro argumento) e a senha (segundo argumento). Modifique a função pg_connect() de acordo com as informações do seu sistema. Copie e cole este contexto em seu dialplan.
Após isso é só inserir no banco os registros e correr para o abraço, lembrando que na coluna contexto do banco você deverá colocar um contexto e no extensions criar o contexto com as ligações que ele deverá realizar. Acredito que esta maneira tenha ficado bem mais prática. Só tem um detalhe, neste post eu segui o principio que vocês possuem um banco do asterisk, o php5 e o postgreSQL instalados junto com seus respectivos módulos e as bibliotecas PHPAGI instaladas. Se você possuírem dúvidas ou dificuldade para realizar as configurações, deixem um comentário!