[AsteriskBrasil] Dúvidas com Acesso a banco de dados

Guilherme Rezende asterisk em guilherme.eti.br
Sexta Abril 5 09:12:47 BRT 2013


Exemplo 100% funcional.  Esse exemplo consulta se o callerid está no 
banco e em caso de sim, toma uma decisão, que no caso envia um SMS e 
envia a ligação p/ telefonista.
Aconselho e estudar mais a fundo sobre o caso, pois estou postando 
apenas a receita de bolo e se não entender, realmente vai complicar.

DialPlan:
exten => _5199,1,Answer
exten => _5199,2,Wait(1)
exten => _5199,3,AGI(teste.php)
exten => _5199,4,NoOp(Numero=${RETORNO})
exten => _5199,5,NoOp(Consulta=${CONSULTA})
exten => _5199,6,GoToIf($[${CONSULTA} = 1]?9)
exten => _5199,7,Dial(SIP/${EXTEN},40,tTrwWkK)
exten => _5199,8,Hangup
exten => _5199,9,DgSendSMS(r1,02187813860,'Alarme de Ligacao Entrante do 
Numero ${RETORNO} em BlackList !!')
exten => _5199,10,Goto(liberados,5150,1)

código teste.php
#!/usr/local/bin/php
<?php
require('phpagi.php');
$AGI = new AGI();
//$parametro=$argv[1];
$parametro = $AGI->request['agi_callerid'];


         $MYSQL_HOST = 'localhost';
         $MYSQL_PORT = '3306';
         $MYSQL_USER = 'root';
         $MYSQL_PASS = 'simples01';

         // link com banco de dados
         $link = mysql_pconnect("$MYSQL_HOST:$MYSQL_PORT", $MYSQL_USER, 
$MYSQL_PASS);
         if(!$link){
                 echo "Erro ao conectar no servidor mysql 
$MYSQL_HOST:$MYSQL_PORT :" . mysql_error();
                 exit();
         }


$select = "select * from banco1.cbqclientes where telefone = '" . 
$parametro . "'";
$blacklist              = mysql_query($select, $link) or die(mysql_error());
$row_blacklist          = mysql_fetch_assoc($blacklist);
$totalRows_blacklist    = mysql_num_rows($blacklist);

if($totalRows_blacklist > 0){
    $AGI->set_variable("RETORNO", $parametro);
    $AGI->set_variable("CONSULTA", $totalRows_blacklist);
    //$AGI->set_variable("CONSULTA", 'verdade');
    $AGI->exec("NoOp", "verdade");
}else{
    $AGI->set_variable("RETORNO", $parametro);
    $AGI->set_variable("CONSULTA", $totalRows_blacklist);
    //$AGI->set_variable("CONSULTA", 'falso');
    $AGI->exec("NoOp", "falso");
}

?>




Em 05/04/2013 08:25, JefãoKPTA JOKER escreveu:
> Além da ideia do Roger vc pode fazer o Asterisk se conectar ao BD 
> usando funções ODBC, ficaria tipo assim:
>
> exten => _X.,1,Read(validacaodesenha,beep,6)
> same => n,Set(SENHA=${ODBC_PASS(${CALLERID(num)})})
> same => n,GotoIf($[${VALIDACAODESENHA} = ${SENHA}]?ok:errado)
> same => n(ok),Goto(menu1,,1)
> same => n(errado),Playback(errado)
> same => n,Goto(inicio,,1)
>
> Se interessar t mando um tuto dos passos.
>
> Falows
>
> ------------------------------------------------------------------------
> Date: Fri, 5 Apr 2013 01:20:06 -0300
> From: rogerwinter em gmail.com
> To: asteriskbrasil em listas.asteriskbrasil.org
> Subject: Re: [AsteriskBrasil] Dúvidas com Acesso a banco de dados
>
> Daniel,
>
> Acredito que a melhor maneira de implementar esse tipo de 
> funcionaliidade seja utilizando AGI.
> Você, pode optar por fazer com a linguagem que preferir (PHP, PERL, 
> SHELL,..).
> A linguagem fica responsável por fazer a conexão e as consultas na 
> base, voce só precisa mandar os parametros (no seu caso, o CID e a 
> Senha) e retornar valores ou executar comandos conforme a sua necessidade.
>
> Ex:
> exten => _X.,1,Read(validacaodesenha,beep,6)
> same => n,Set(SENHA=123456)
> *same => n,AGI(validarcliente.php,${CALLERID(num)},${SENHA});*
> same => n(ok),Goto(menu1,,1)
> same => n(errado),Playback(errado)
>
>
> Att,
>
>
> Em 5 de abril de 2013 00:28, Daniel Feliciano 
> <danielfelicianoseg em hotmail.com 
> <mailto:danielfelicianoseg em hotmail.com>> escreveu:
>
>     Pessoal gostaria de implantar um sistema simples com consulta ao
>     um BD (poderia ser Mysql mesmo) no Asterisk, mas devido ao pouco
>     conhecimento em BD, teho minhas duvidas. Bom, gostaria de fazer o
>     seguinte.
>
>     1° - Criar 3 usuarios, onde constariam seu n° telefonico + senha
>     2° - O usuario ao ligar para o Asterisk, tem que coincidir a senha
>     com o n° tel. cadastrado, ou seja, pode até digitar a senha certa,
>     mas se estiver em outro tel. nao rola...
>
>     3° - em caso de sucesso, a central acesso o BD e diz qts vezes vc
>     ja ligou
>     OBS: Paralelo a isso, gostaria de futuramente colocar outros tipos
>     de dados, como saldo, dizer o nome do usuario etc
>
>     O que me vem na minha cabeca a nivel de dialplan e isso:
>
>     exten => _X.,1,Read(validacaodesenha,beep,6)
>     same => n,Set(SENHA=123456)
>     same => n,GotoIf($[${VALIDACAODESENHA} = ${SENHA}]?ok:errado)
>     same => n(ok),Goto(menu1,,1)
>     same => n(errado),Playback(errado)
>     same => n,Goto(inicio,,1)
>
>     Nao consigo enxergar onde eu faco o comparativo (faco para me
>     conectar) com o BD para a verificacao do TEL+SENHA cadastrados....
>     e quais seriam os itens de preenchimento essenciais/obrigatorios
>     no Mysql (estou usando o phpmyadmin para facilitar).
>
>     Nessa altura, qualquer tipo de luz ja é valida p/ dar
>     continuidade. Agradeco a atencao de todos.
>     Abs
>
>     _______________________________________________
>     KHOMP: completa linha de placas externas FXO, FXS, GSM e E1;
>     Media Gateways de 1 a 64 E1s para SIP com R2, ISDN e SS7;
>     Intercomunicadores para acesso remoto via rede IP. Conheça em
>     www.Khomp.com <http://www.Khomp.com>.
>     _______________________________________________
>     DIGIVOICE  Fabricante de Placas de Voz e Channel Bank
>     20 anos de experiência com E1(R2/ISDN), FXS, FXO e GSM
>     Centro Treinamento - Curso de PABX IP -  Asterisk  - Site
>     www.digivoice.com.br <http://www.digivoice.com.br>
>     _______________________________________________
>     ALIGERA -- Fabricante nacional de Gateways SIP-E1 para R2, ISDN e SS7.
>     Placas de 1E1, 2E1, 4E1 e 8E1 para PCI ou PCI Express.
>     Channel Bank -- Appliance Asterisk - Acesse www.aligera.com.br
>     <http://www.aligera.com.br>.
>     _______________________________________________
>     Para remover seu email desta lista, basta enviar um email em
>     branco para asteriskbrasil-unsubscribe em listas.asteriskbrasil.org
>     <mailto:asteriskbrasil-unsubscribe em listas.asteriskbrasil.org>
>
>
>
>
> -- 
> --
> Roger Pitigliani
> rogerwinter em gmail.com <mailto:rogerwinter em gmail.com>
> Skype: roger.pitigliani
>
> _______________________________________________ KHOMP: completa linha 
> de placas externas FXO, FXS, GSM e E1; Media Gateways de 1 a 64 E1s 
> para SIP com R2, ISDN e SS7; Intercomunicadores para acesso remoto via 
> rede IP. Conhe?a em www.Khomp.com. 
> _______________________________________________ DIGIVOICE Fabricante 
> de Placas de Voz e Channel Bank 20 anos de experi?ncia com 
> E1(R2/ISDN), FXS, FXO e GSM Centro Treinamento - Curso de PABX IP - 
> Asterisk - Site www.digivoice.com.br 
> _______________________________________________ ALIGERA ? Fabricante 
> nacional de Gateways SIP-E1 para R2, ISDN e SS7. Placas de 1E1, 2E1, 
> 4E1 e 8E1 para PCI ou PCI Express. Channel Bank ? Appliance Asterisk - 
> Acesse www.aligera.com.br. 
> _______________________________________________ Para remover seu email 
> desta lista, basta enviar um email em branco para 
> asteriskbrasil-unsubscribe em listas.asteriskbrasil.org
>
>
> _______________________________________________
> KHOMP: completa linha de placas externas FXO, FXS, GSM e E1;
> Media Gateways de 1 a 64 E1s para SIP com R2, ISDN e SS7;
> Intercomunicadores para acesso remoto via rede IP. Conheça em www.Khomp.com.
> _______________________________________________
> DIGIVOICE  Fabricante de Placas de Voz e Channel Bank
> 20 anos de experiência com E1(R2/ISDN), FXS, FXO e GSM
> Centro Treinamento - Curso de PABX IP -  Asterisk  - Site  www.digivoice.com.br
> _______________________________________________
> ALIGERA -- Fabricante nacional de Gateways SIP-E1 para R2, ISDN e SS7.
> Placas de 1E1, 2E1, 4E1 e 8E1 para PCI ou PCI Express.
> Channel Bank -- Appliance Asterisk - Acesse www.aligera.com.br.
> _______________________________________________
> Para remover seu email desta lista, basta enviar um email em branco para asteriskbrasil-unsubscribe em listas.asteriskbrasil.org

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20130405/db7ccf2e/attachment-0001.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil