[AsteriskBrasil] RES: AGI

Eder Souza eder.souza em bsd.com.br
Quarta Novembro 18 13:40:00 BRST 2009


#!/usr/bin/perl
#    _
#   |_)\_/
#   |_) |
#
#
#    ___    _              _       ___
#   | __|__| |___ _ _   __| |___  / __| ___ _  _ _____ _
#   | _|/ _` / -_) '_| / _` / -_) \__ \/ _ \ || |_ / _` |
#   |___\__,_\___|_|   \__,_\___| |___/\___/\_,_/__\__,_|



use DBI;
use Asterisk::AGI;



my $AGI = new Asterisk::AGI;
my %input = $AGI->ReadParse();
my $dbh;
my $teclado;
my $callerid = $input{'callerid'};


$dbh = DBI->connect('DBI:mysql:dbname=bancoo:10.5.120.23', 'user', 'senha');
if ($dbh) {

        $AGI->exec("NoOp"," binei $callerid");
        #aqui a variavel "teclado" pega o q for digitado pelo usuario
        $teclado = $AGI->get_data ('MsgDigite', -1, 1);

        $AGI->exec("NoOp"," teclado $teclado");
        #fazendo um simples update no banco mude para insert por exemplo
        my $query = "UPDATE Tabela SET Teclado = '$teclado' WHERE ID =
'55'";
        my $query_handle = $dbh->prepare($query);
        # EXECUTE THE QUERY
        $query_handle->execute();
        $AGI->exec('Background','MesgObrigado');
        $AGI->hangup();

        }

}


Ae um exemplo mysql + ura Perfeito para vc


Att,


Eng Eder de Souza

2009/11/18 Andre Emerich <aemerich em gmail.com>

> Eder,
>
> Você tem uma URA em AGI para que eu possa usar de exemplo?
>
>
> 2009/11/18 Eder Souza <eder.souza em bsd.com.br>
>
>> André faça uma URA em AGI e o seu problema acaba hehehe
>>
>> em qual ponto vc está enroscado ?
>>
>>   2009/11/18 Andre Emerich <aemerich em gmail.com>
>>
>>> Quanto aos TXT's, posso usar a variavel UNIQUEID para colocar o TXT e não
>>> ter problema..
>>> Isso é o de menos..
>>>
>>> 2009/11/18 Daviramos Roussenq Fortunato <daviramosrf em gmail.com>
>>>
>>>> "repare q tudo é colocado dentro de *.txt" Com AGI terá o mesmo problema
>>>> de "inconsistencia" se o mesmo não for Tratado.
>>>>
>>>> Se você ler o problemas inicial verá que ele não precisara mais do TXT.
>>>>
>>>>
>>>> 2009/11/18 Eder Souza <eder.souza em bsd.com.br>
>>>>
>>>>> Daviramos só que isso gera um problema mt grave que é inconsistencia se
>>>>> isso não for Gambiarra então nao sei mais o que é essa palavra !!!
>>>>>
>>>>> repare q tudo é colocado dentro de *.txt se duas pessoas ligarem ao
>>>>> mesmo tempo ?
>>>>>
>>>>> os valores serão sobrepostos "inconsistencia" !!
>>>>>
>>>>> Tudo bem o Asterisk tem suporte, mas quem disse que é para ser
>>>>> realmente usado dessa maneira ?
>>>>>
>>>>> []'s
>>>>>
>>>>> Eng Eder de Souza
>>>>>
>>>>>
>>>>>
>>>>> 2009/11/18 Daviramos Roussenq Fortunato <daviramosrf em gmail.com>
>>>>>
>>>>>> Se fosse gambiarra, o próprio Asterisk não teria suporte ao mesmo.
>>>>>>
>>>>>> "bagunça no plano de discagem" só se você não souber contrui um bom
>>>>>> plano de discagem.
>>>>>>
>>>>>> Particularmente também prefiro AGI. Mas para um simples SELECT, pra
>>>>>> que está começando e mais facil no plano de discagem mesmo.
>>>>>>
>>>>>>  2009/11/18 Eder Souza <eder.souza em bsd.com.br>
>>>>>>
>>>>>>> Meu Deus pq você fez isso huahua ....
>>>>>>>
>>>>>>> Trofeu Gambiarra huahuahua !!
>>>>>>>
>>>>>>> Brincadeira a parte mas olha só um simples AGI feito em em sua
>>>>>>> linguagem preferida mataria essa sua bagunça no plano de discagem, dentro
>>>>>>> dele seria só inserir uma rotina de consultas no banco de dados e depois
>>>>>>> dentro deste mesmo agi contruir sua URA, tenho várias destas rodando aqui,
>>>>>>> se precisar da um grito !!!
>>>>>>>
>>>>>>> Eng Eder de Souza
>>>>>>>
>>>>>>> 2009/11/18 Daviramos Roussenq Fortunato <daviramosrf em gmail.com>
>>>>>>>
>>>>>>> Porque não faz o Select direto no MySQL pelo Asterisk sem o AGI?
>>>>>>>> Pode usar o ODBC e fazer em qualquer banco, com a func_odbc.
>>>>>>>>
>>>>>>>> http://www.voip-info.org/wiki/view/Asterisk+func+func_odbc
>>>>>>>>
>>>>>>>>
>>>>>>>> 2009/11/18 Andre Emerich <aemerich em gmail.com>
>>>>>>>>
>>>>>>>> Itamar,
>>>>>>>>> Se eu tivesse achado no Google algo que tivesse entendido, não
>>>>>>>>> teria postado aqui pedindo ajuda..
>>>>>>>>>
>>>>>>>>> André,
>>>>>>>>> Segue..
>>>>>>>>>
>>>>>>>>> [URA_BD]
>>>>>>>>> exten => s,1,Answer
>>>>>>>>> exten => s,n,Playback(custom/BD/BD_INFO_boatarde)
>>>>>>>>> exten => s,n,Playback(custom/BD/BD_INFO_bv)
>>>>>>>>> exten => s,n,Read(CODE,,,,,5)
>>>>>>>>> exten => s,n,Noop( ## ${CODE} ## )
>>>>>>>>> exten => s,n,System(echo "SELECT codigo FROM clientes WHERE codigo
>>>>>>>>> = \'${CODE}\' LIMIT 1" > /var/lib/asterisk/agi-bin/BDINFO/select.sql)
>>>>>>>>> exten => s,n,System(mysql bd_info -u root -ppassword <
>>>>>>>>> /var/lib/asterisk/agi-bin/BDINFO/select.sql >
>>>>>>>>> /var/lib/asterisk/agi-bin/BDINFO/resultado.txt)
>>>>>>>>> exten => s,n,Noop( ## ${STATUS} ##)
>>>>>>>>> exten => s,n,GotoIf($[${STATUS}!=""]?20:60)
>>>>>>>>> exten => s,20,Playback(custom/BD/BD_INFO_senha)
>>>>>>>>> exten => s,n,Read(SENHA,,,,,5)
>>>>>>>>> exten => s,n,Noop( ## ${SENHA} ## )
>>>>>>>>> exten => s,n,System(echo "SELECT saldo FROM clientes WHERE codigo =
>>>>>>>>> \'${CODE}\' AND senha = \'${SENHA}\' LIMIT 1" >
>>>>>>>>> /var/lib/asterisk/agi-bin/BDINFO/select_senha.sql)
>>>>>>>>> exten => s,n,System(mysql bd_info -u root -ppassword <
>>>>>>>>> /var/lib/asterisk/agi-bin/BDINFO/select_senha.sql >
>>>>>>>>> /var/lib/asterisk/agi-bin/BDINFO/resultado_senha.txt)
>>>>>>>>> exten => s,n,System(grep -n .
>>>>>>>>> /var/lib/asterisk/agi-bin/BDINFO/resultado_senha.txt | grep ^2: | cut -f2
>>>>>>>>> -d":"  > /var/lib/asterisk/agi-bin/BDINFO/status_senha.txt)
>>>>>>>>> exten =>
>>>>>>>>> s,n,ReadFile(STATUS_SENHA=/var/lib/asterisk/agi-bin/BDINFO/status_senha.txt,1)
>>>>>>>>> exten => s,n,Noop( ## ${STATUS_SENHA} ##)
>>>>>>>>> exten => s,n,GotoIf($[${STATUS_SENHA}!=""]?80:60)
>>>>>>>>> exten => s,n,Hangup()
>>>>>>>>> exten => s,60,Playback(vm-goodbye)
>>>>>>>>> exten => s,n,Hangup()
>>>>>>>>> exten => s,80,Playback(custom/BD/BD_INFO_saldo)
>>>>>>>>> exten => s,n,Saydigits(${STATUS_SENHA})
>>>>>>>>> exten => s,n,Set(TIMEOUT=10)
>>>>>>>>> exten => s,83,Background(custom/BD/BD_INFO_opcoes)
>>>>>>>>> exten => s,n,WaitExten(5)
>>>>>>>>> exten => 1,1,Goto(URA_BD_CONSULTA,s,1)
>>>>>>>>> exten => 4,1,Noop(DISCA PARA ATENDIMENTO)
>>>>>>>>> exten => t,1,Goto(URA_BD,s,83)
>>>>>>>>> exten => i,1,Goto(URA_BD,s,83)
>>>>>>>>> exten => s,n,Hangup()
>>>>>>>>>
>>>>>>>>> [URA_BD_CONSULTA]
>>>>>>>>> exten => s,1,Playback(custom/BD/BD_INFO_CPF_CNPJ)
>>>>>>>>> exten => s,n,Read(CPF_CNPJ,,,,,5)
>>>>>>>>> exten => s,n,Noop( ## ${CPF_CNPJ} ## )
>>>>>>>>> exten => s,n,System(echo "SELECT cpf FROM base_consulta WHERE cpf =
>>>>>>>>> \'${CPF_CNPJ}\' LIMIT 1" >
>>>>>>>>> /var/lib/asterisk/agi-bin/BDINFO/select_cpfcnpj.sql)
>>>>>>>>> exten => s,n,System(mysql bd_info -u root -ppassword <
>>>>>>>>> /var/lib/asterisk/agi-bin/BDINFO/select_cpfcnpj.sql >
>>>>>>>>> /var/lib/asterisk/agi-bin/BDINFO/resultado_cpfcnpj.txt)
>>>>>>>>> exten => s,n,System(grep -n .
>>>>>>>>> /var/lib/asterisk/agi-bin/BDINFO/resultado_cpfcnpj.txt | grep ^2: | cut -f2
>>>>>>>>> -d":" | cut -f1 -d"\ " >
>>>>>>>>> /var/lib/asterisk/agi-bin/BDINFO/status_cpfcnpj.txt)
>>>>>>>>> exten =>
>>>>>>>>> s,n,ReadFile(STATUS_CPF_CNPJ=/var/lib/asterisk/agi-bin/BDINFO/status_cpfcnpj.txt)
>>>>>>>>> exten => s,n,Noop( ## STATUS CPF ${STATUS_CPF_CNPJ} ## )
>>>>>>>>> ;exten => s,n,Agi(BDINFO/consulta_cpf.php|${CPF_CNPJ})
>>>>>>>>> ;exten => s,n,Noop(${stdout})
>>>>>>>>> exten => s,n,GotoIf($[${STATUS_CPF_CNPJ}!=""]?20:60)
>>>>>>>>> exten => s,20,Playback(beep)
>>>>>>>>> exten => s,n,Hangup()
>>>>>>>>> exten => s,60,Playback(vm-goodbye)
>>>>>>>>> exten => s,n,Hangup()
>>>>>>>>>
>>>>>>>>> A parte do AGI está comentado, pois como não veio o resultado
>>>>>>>>> esperado, não estou usando..
>>>>>>>>>
>>>>>>>>> Valeu..
>>>>>>>>>
>>>>>>>>> 2009/11/17 andre <andre em sertelinfo.com.br>
>>>>>>>>>
>>>>>>>>>>    André
>>>>>>>>>>
>>>>>>>>>> Eu utilizo um script em agi que faz isso que deseja...
>>>>>>>>>>
>>>>>>>>>> Me passe os dados que crio e coloco aqui explicando pra você..
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> *De:* asteriskbrasil-bounces em listas.asteriskbrasil.org [mailto:
>>>>>>>>>> asteriskbrasil-bounces em listas.asteriskbrasil.org] *Em nome de *Andre
>>>>>>>>>> Emerich
>>>>>>>>>> *Enviada em:* terça-feira, 17 de novembro de 2009 20:54
>>>>>>>>>> *Para:* asteriskbrasil em listas.asteriskbrasil.org
>>>>>>>>>> *Assunto:* [AsteriskBrasil] AGI
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Pessoal,
>>>>>>>>>>
>>>>>>>>>> Preciso de uma ajuda com AGI.
>>>>>>>>>> Tenho um Select que faço num MySql.
>>>>>>>>>> O resultado, tenho que ler em uma variavel..
>>>>>>>>>> Estava fazendo isto com o System (para dar um echo num txt com a
>>>>>>>>>> instrução SQL, para executar o SELECT, para dar um GREP e ler somente a
>>>>>>>>>> segunda linha do arquivo) e uso o ReadFile para ler o resultado.
>>>>>>>>>> Porém se sempre voltasse a mesma quantidade de digitos, eu poderia
>>>>>>>>>> colocar a quantidade de caracteres como opção no ReadFile.
>>>>>>>>>> Porém, como é variavel, eu preciso arrumar alguma outra forma..
>>>>>>>>>>
>>>>>>>>>> Comecei a usar o AGI com PHP.
>>>>>>>>>> Já consigo fazer o SELECT, mas não consigo passar o resultado para
>>>>>>>>>> o Asterisk.
>>>>>>>>>> Li algo sobre STDIN e STDOUT, mas não tive progresso..
>>>>>>>>>>
>>>>>>>>>> Como eu poderia fazer?
>>>>>>>>>> Alguém tem alguma idéia?
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> André Emerich
>>>>>>>>>> MSN - aemerich em gmail.com
>>>>>>>>>> (51) 8122-6423
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>>         http://www.voipmania.com.br
>>>>>>>>>> Telefone IP sem fio Gigaset A580IP por 6 x R$59,90.
>>>>>>>>>>         Promoção por tempo limitado!
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Lista de discussões AsteriskBrasil.org
>>>>>>>>>> AsteriskBrasil em listas.asteriskbrasil.org
>>>>>>>>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>>  André Emerich
>>>>>>>>> MSN - aemerich em gmail.com
>>>>>>>>> (51) 8122-6423
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>>         http://www.voipmania.com.br
>>>>>>>>> Telefone IP sem fio Gigaset A580IP por 6 x R$59,90.
>>>>>>>>>         Promoção por tempo limitado!
>>>>>>>>> _______________________________________________
>>>>>>>>> Lista de discussões AsteriskBrasil.org
>>>>>>>>> AsteriskBrasil em listas.asteriskbrasil.org
>>>>>>>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Atenciosamente
>>>>>>>> Daviramos Roussenq Fortunato
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>>         http://www.voipmania.com.br
>>>>>>>> Telefone IP sem fio Gigaset A580IP por 6 x R$59,90.
>>>>>>>>         Promoção por tempo limitado!
>>>>>>>> _______________________________________________
>>>>>>>> Lista de discussões AsteriskBrasil.org
>>>>>>>> AsteriskBrasil em listas.asteriskbrasil.org
>>>>>>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>>         http://www.voipmania.com.br
>>>>>>> Telefone IP sem fio Gigaset A580IP por 6 x R$59,90.
>>>>>>>         Promoção por tempo limitado!
>>>>>>> _______________________________________________
>>>>>>> Lista de discussões AsteriskBrasil.org
>>>>>>> AsteriskBrasil em listas.asteriskbrasil.org
>>>>>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Atenciosamente
>>>>>> Daviramos Roussenq Fortunato
>>>>>>
>>>>>> _______________________________________________
>>>>>>         http://www.voipmania.com.br
>>>>>> Telefone IP sem fio Gigaset A580IP por 6 x R$59,90.
>>>>>>         Promoção por tempo limitado!
>>>>>> _______________________________________________
>>>>>> Lista de discussões AsteriskBrasil.org
>>>>>> AsteriskBrasil em listas.asteriskbrasil.org
>>>>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>>         http://www.voipmania.com.br
>>>>> Telefone IP sem fio Gigaset A580IP por 6 x R$59,90.
>>>>>         Promoção por tempo limitado!
>>>>> _______________________________________________
>>>>> Lista de discussões AsteriskBrasil.org
>>>>> AsteriskBrasil em listas.asteriskbrasil.org
>>>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Atenciosamente
>>>> Daviramos Roussenq Fortunato
>>>>
>>>> _______________________________________________
>>>>         http://www.voipmania.com.br
>>>> Telefone IP sem fio Gigaset A580IP por 6 x R$59,90.
>>>>         Promoção por tempo limitado!
>>>> _______________________________________________
>>>> Lista de discussões AsteriskBrasil.org
>>>> AsteriskBrasil em listas.asteriskbrasil.org
>>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>>>>
>>>
>>>
>>>
>>> --
>>> André Emerich
>>> MSN - aemerich em gmail.com
>>> (51) 8122-6423
>>>
>>> _______________________________________________
>>>         http://www.voipmania.com.br
>>> Telefone IP sem fio Gigaset A580IP por 6 x R$59,90.
>>>         Promoção por tempo limitado!
>>> _______________________________________________
>>> Lista de discussões AsteriskBrasil.org
>>> AsteriskBrasil em listas.asteriskbrasil.org
>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>>>
>>
>>
>> _______________________________________________
>>         http://www.voipmania.com.br
>> Telefone IP sem fio Gigaset A580IP por 6 x R$59,90.
>>         Promoção por tempo limitado!
>> _______________________________________________
>> Lista de discussões AsteriskBrasil.org
>> AsteriskBrasil em listas.asteriskbrasil.org
>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>>
>
>
>
> --
> André Emerich
> MSN - aemerich em gmail.com
> (51) 8122-6423
>
> _______________________________________________
>         http://www.voipmania.com.br
> Telefone IP sem fio Gigaset A580IP por 6 x R$59,90.
>         Promoção por tempo limitado!
> _______________________________________________
> Lista de discussões AsteriskBrasil.org
> AsteriskBrasil em listas.asteriskbrasil.org
> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20091118/1949dac5/attachment-0001.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil