Mike Minha ideia é fazer funcionar esse script simples para poder evoluir. Mas pretendo fazer scripts mais complexos com PHP (linguagem que já trabalho). Pretendo aperfeiçoar uma ferramenta de relatório que já criei e creio que com o phpagi será mais viável(além de mais fácil) para produção.
Mais enfim, consegui fazer funcionar, não sei se era isso, mais La vai; Eu não sabia que tinha que ser criado o arquivo phpagi-asmanager.php, ai peguei todos os arquivos que vem junto quando baixa o agiphp e jogeui dentro do mesmo diretório. Ai mudei o arquivo portabilidade.php #!/usr/bin/php -q <?php require_once("phpagi.php"); $agi = new AGI(); $numero=$argv[1]; $agi->set_variable("NUMERO",$numero); exit(); ?> O retorno no CLI foi este: -- Executing [99719420@contexto-ramais-voip:3] AGI("SIP/1003-00000073", "portabilidade.php, 99719420") in new stack -- Launched AGI Script /var/lib/asterisk/agi-bin/portabilidade.php <SIP/1003-00000073>AGI Tx >> agi_request: portabilidade.php <SIP/1003-00000073>AGI Tx >> agi_channel: SIP/1003-00000073 <SIP/1003-00000073>AGI Tx >> agi_language: en <SIP/1003-00000073>AGI Tx >> agi_type: SIP <SIP/1003-00000073>AGI Tx >> agi_uniqueid: 1345480934.158 <SIP/1003-00000073>AGI Tx >> agi_version: 1.6.2.20 <SIP/1003-00000073>AGI Tx >> agi_callerid: 1003 <SIP/1003-00000073>AGI Tx >> agi_calleridname: 1003 <SIP/1003-00000073>AGI Tx >> agi_callingpres: 0 <SIP/1003-00000073>AGI Tx >> agi_callingani2: 0 <SIP/1003-00000073>AGI Tx >> agi_callington: 0 <SIP/1003-00000073>AGI Tx >> agi_callingtns: 0 <SIP/1003-00000073>AGI Tx >> agi_dnid: 99719420 <SIP/1003-00000073>AGI Tx >> agi_rdnis: unknown <SIP/1003-00000073>AGI Tx >> agi_context: contexto-ramais-voip <SIP/1003-00000073>AGI Tx >> agi_extension: 99719420 <SIP/1003-00000073>AGI Tx >> agi_priority: 3 <SIP/1003-00000073>AGI Tx >> agi_enhanced: 0.0 <SIP/1003-00000073>AGI Tx >> agi_accountcode: <SIP/1003-00000073>AGI Tx >> agi_threadid: 89213840 <SIP/1003-00000073>AGI Tx >> agi_arg_1: 99719420 <SIP/1003-00000073>AGI Tx >> <SIP/1003-00000073>AGI Rx << <SIP/1003-00000073>AGI Tx >> 510 Invalid or unknown command <SIP/1003-00000073>AGI Rx << SET VARIABLE NUMERO " 99719420" <SIP/1003-00000073>AGI Tx >> 200 result=1 -- <SIP/1003-00000073>AGI Script portabilidade.php completed, returning 0 -- Executing [99719420@contexto-ramais-voip:4] NoOp("SIP/1003-00000073", "---> O Numero discado foi 99719420 <---") in new stack Desculpem pela minha burrice, mais realmente achava que só adicionando a classe phpagi.php já resolveria o problema, estou á algum tempo tentando fazer funcionar e nunca achei nenhum aviso disto. Agora irei criar meu script de portabilidade onde, além de direcionar as ligações para a operadora desejada, também fará gravação no banco para relatórios futuros, como por exemplo, que operadora é mais utilizada, entre outras coisas. Obrigado a todos pela imensa ajuda, e quando o script estiver pronto e funcionado, posto para quem quiser utilizar, apesar de a maioria já ter algum rodando...rsrs att Danilo Ricardo de Almeida Engenharia e Desenvolvimento / Engineering and Development GRUPO G1 TELECOMUNICAÇÕES LTDA. Rua: Ponta Grossa, n°587 – Jardim Dom Bosco CEP: 86060-450 - Londrina - PR CFone/Fax: +55 43 3028-1120 / +55 43 3028-1170 /E-mail: danilo.alme...@g1telecom.com.br MSN: danilo.alme...@g1telecom.com.br .Suporte: supo...@g1telecom.com.br .Site: www.g1telecom.com.br “VOCÊ PRECISA MESMO IMPRIMIR?” -----Mensagem original----- De: asteriskbrasil-boun...@listas.asteriskbrasil.org [mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] Em nome de Mike Tesliuk Enviada em: Monday, August 20, 2012 12:58 PM Para: asteriskbrasil@listas.asteriskbrasil.org Assunto: Re: [AsteriskBrasil] RES: RES: Agi com PHP Você tentou setar o debug no phpagi.conf ? Se a sua ideia é fazer algo tão simples como você demonstrou ai não seria mais pratico usar em bash então ? A vantagem de se usar php ou perl é o fato de se ter a biblioteca pronta para facilitar o trabalho além de usar os recursos da linguagem para tratar string e etc... , se você não vai usar estes recursos então a utilização do bash se torna viável. http://www.mail-archive.com/asteriskbrasil@listas.asteriskbrasil.org/msg58933.html Em 20-08-2012 12:15, Danilo Almeida escreveu: > Pessoal, fiz uma alteração no script do Ronaldo e funcionou > > No lugar de aspas simples coloquei duplas; > > #!/usr/bin/php -q > <?php > $numero='123456789'; > echo "set variable NUMERO $numero \n"; exit(); ?> > > -- Executing [91538563@contexto-ramais-voip:4] AGI("SIP/5001-00000050", > "portabilidade_teste.php") in new stack > -- Launched AGI Script /var/lib/asterisk/agi-bin/portabilidade_teste.php > -- <SIP/5001-00000050>AGI Script portabilidade_teste.php completed, > returning 0 > -- Executing [91538563@contexto-ramais-voip:5] > NoOp("SIP/5001-00000050", "---> O Numero discado foi 123456789 <---") > in new stack > > Só que queria trabalhar com a classe Agi, pois esse script simples > ficará um pouco mais complexo > > Obrigado pela Ajuda pessoal > > att > > Danilo Ricardo de Almeida > Engenharia e Desenvolvimento / Engineering and Development > > GRUPO G1 TELECOMUNICAÇÕES LTDA. > > Rua: Ponta Grossa, n°587 – Jardim Dom Bosco > CEP: 86060-450 - Londrina - PR > CFone/Fax: +55 43 3028-1120 / +55 43 3028-1170 > /E-mail: danilo.alme...@g1telecom.com.br > MSN: danilo.alme...@g1telecom.com.br > .Suporte: supo...@g1telecom.com.br > .Site: www.g1telecom.com.br > > P “VOCÊ PRECISA MESMO IMPRIMIR?” > > > -----Mensagem original----- > De: asteriskbrasil-boun...@listas.asteriskbrasil.org > [mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] Em nome de > Danilo Almeida Enviada em: Monday, August 20, 2012 12:01 PM > Para: asteriskbrasil@listas.asteriskbrasil.org > Assunto: [AsteriskBrasil] RES: Agi com PHP > > Também não estou conseguindo responder o antigo, segue respostas neste. > > Mike > > Obrigado pela respostas você como sempre ajudando o pessoal na lista. > Mais o meu problema é que, não estou conseguindo capturar o valor da variável > no asterisk, sendo que com o mesmo script, nosso amigo SkFogo conseguiu > resultar e obteve êxito. > E como pode ver nos posts anteriores, mesmo inserindo um valor a variável > manualmente não consigo setar o valor com o método set_variable() para pegar > no asterisk. > > .................................................. > > SkFogo > > Não utilizo o Gtalk, mais segue as infoirmações que me pediu > > Versaão do phpagi: 2.14 (já utlizei a versão 2.20 e também não > funcionou) Versão do php: 5.1.6 > > Utilizo o skype no trablho, se tiver posso te add. > > Obrigado > > ................................................... > > Ronaldo > > Já testei também e nada de funfar a parada..rsrs > > Obrigado > > Att > > Danilo Ricardo de Almeida > > -----Mensagem original----- > De: asteriskbrasil-boun...@listas.asteriskbrasil.org > [mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] Em nome de > Mike Tesliuk Enviada em: Monday, August 20, 2012 11:21 AM > Para: asteriskbrasil@listas.asteriskbrasil.org > Assunto: [AsteriskBrasil] Agi com PHP > > Olá Senhores, > > Não sei se os moderadores colocaram algum limite de resposta no topico ou > algo assim mas a mensagem não quer chegar, então estou alterando o assunto > para que vocês possam conferir. > > > Deixem me dar uns pitacos. > > Não costumo trabalhar com agi em php mas sim com perl, mas vamos la. > > Olhando o phpagi.php , ao procurar sobre get_variable ele traz > > /** > * Fetch the value of a variable. > * > * Does not work with global variables. Does not work with some > variables that are generated by modules. > * > * @link http://www.voip-info.org/wiki-get+variable > * @link http://www.voip-info.org/wiki-Asterisk+variables > * @param string $variable name > * @return array, see evaluate for return information. ['result'] is 0 > if variable hasn't been set, 1 if it has. ['data'] holds the value. > */ > function get_variable($variable) > { > return $this->evaluate("GET VARIABLE $variable"); > > > > isso significa, que se utilizar $meunumero = $AGI->get_variable("NUMERO"); > ele deverá trazer a variavel. > > Ao iniciar a classe AGI, ele ja inicia os seguintes valores > > * agi_request - name of agi script > * agi_channel - current channel > * agi_language - current language > * agi_type - channel type (SIP, ZAP, IAX, ...) > * agi_uniqueid - unique id based on unix time > * agi_callerid - callerID string > * agi_dnid - dialed number id > * agi_rdnis - referring DNIS number > * agi_context - current context > * agi_extension - extension dialed > * agi_priority - current priority > * agi_enhanced - value is 1.0 if started as an EAGI script > * agi_accountcode - set by SetAccount in the dialplan > * agi_network - value is yes if this is a fastagi > * agi_network_script - name of the script to execute > > > , ou seja, ali voce ja tem qual o extension que você ta rodando, qual o > callerid e etc... > > > > > , ou seja, pra testar realizei a criação de um pequeno script. > > No meu extension: > > > exten => 441,1,Answer() > exten => 441,n,Set(TESTEVAR="123456") > exten => 441,n,AGI(teste.php) > exten => 441,n,NoOp(${TESTEVAR2}) > exten => 441,n,Hangup() > > > > > No meu script > #!/usr/bin/php > <?php > include_once("phpagi.php"); > > // Instanciando o AGI > $agi = new AGI(); > > $testevar = $agi->get_variable("TESTEVAR"); > > $agi->exec("NOOP", "VALOR\ DE\ TESTEVAR:\ $testevar[data]"); > > //Se quiser fazer debug da variavel utilize o parametro abaixo > // e defina o debug=true no arquivo /etc/asterisk/phpagi.conf > //foreach($testevar as $i => $value){ > //$agi->conlog("VALOR[$i] $testevar[$i]"); > //} > > $agi->set_variable("TESTEVAR2", "MIKE TESTOU"); > > ?> > > > > > Minha execução > > > -- Executing [441@interno:1] Answer("SIP/114-00000680", "") in new stack > -- Executing [441@interno:2] Set("SIP/114-00000680", > "TESTEVAR="123456"") in new stack > -- Executing [441@interno:3] AGI("SIP/114-00000680", "teste.php") in > new stack > -- Launched AGI Script /var/lib/asterisk/agi-bin/teste.php > -- AGI Script Executing Application: (NOOP) Options: (VALOR DE > TESTEVAR: 123456) > -- <SIP/114-00000680>AGI Script teste.php completed, returning 0 > -- Executing [441@interno:4] NoOp("SIP/114-00000680", "MIKE > TESTOU") in new stack > -- Executing [441@interno:5] Hangup("SIP/114-00000680", "") in > new stack > > > > > > Como podem ver, defini uma variavel no dialplan, recuperei no agi, > defini uma no agi, e recuperei no dialplan > > > > _______________________________________________ > KHOMP Inovação: External Board Series > Módulos de 1/2 rack e 1U para todas as interfaces e soluções Asterisk e > FreeSWITCH. > Tenha a External Series Experience na sua aplicação. Visite > 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 ________ > YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do > mercado. > email: yeal...@commlogik.com.br | www.commlogik.com.br | (11) > 5503-1011 ______________________________________________ > Para remover seu email desta lista, basta enviar um email em branco > para asteriskbrasil-unsubscr...@listas.asteriskbrasil.org > > _______________________________________________ > KHOMP Inovação: External Board Series > Módulos de 1/2 rack e 1U para todas as interfaces e soluções Asterisk e > FreeSWITCH. > Tenha a External Series Experience na sua aplicação. Visite > 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 ________ > YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do > mercado. > email: yeal...@commlogik.com.br | www.commlogik.com.br | (11) > 5503-1011 ______________________________________________ > Para remover seu email desta lista, basta enviar um email em branco > para asteriskbrasil-unsubscr...@listas.asteriskbrasil.org > > _______________________________________________ > KHOMP Inovação: External Board Series > Módulos de 1/2 rack e 1U para todas as interfaces e soluções Asterisk e > FreeSWITCH. > Tenha a External Series Experience na sua aplicação. Visite > 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 ________ > YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do > mercado. > email: yeal...@commlogik.com.br | www.commlogik.com.br | (11) > 5503-1011 ______________________________________________ > Para remover seu email desta lista, basta enviar um email em branco > para asteriskbrasil-unsubscr...@listas.asteriskbrasil.org _______________________________________________ KHOMP Inovação: External Board Series Módulos de 1/2 rack e 1U para todas as interfaces e soluções Asterisk e FreeSWITCH. Tenha a External Series Experience na sua aplicação. Visite 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 ________ YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do mercado. email: yeal...@commlogik.com.br | www.commlogik.com.br | (11) 5503-1011 ______________________________________________ Para remover seu email desta lista, basta enviar um email em branco para asteriskbrasil-unsubscr...@listas.asteriskbrasil.org _______________________________________________ KHOMP Inovação: External Board Series Módulos de 1/2 rack e 1U para todas as interfaces e soluções Asterisk e FreeSWITCH. Tenha a External Series Experience na sua aplicação. Visite 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 ________ YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do mercado. email: yeal...@commlogik.com.br | www.commlogik.com.br | (11) 5503-1011 ______________________________________________ Para remover seu email desta lista, basta enviar um email em branco para asteriskbrasil-unsubscr...@listas.asteriskbrasil.org