[AsteriskBrasil] RES: Agi com PHP

Danilo Almeida danilo.almeida em g1telecom.com.br
Segunda Agosto 20 12:00:31 BRT 2012


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-bounces em listas.asteriskbrasil.org [mailto:asteriskbrasil-bounces em listas.asteriskbrasil.org] Em nome de Mike Tesliuk
Enviada em: Monday, August 20, 2012 11:21 AM
Para: asteriskbrasil em 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 em interno:1] Answer("SIP/114-00000680", "") in new 
stack
     -- Executing [441 em interno:2] Set("SIP/114-00000680", 
"TESTEVAR="123456"") in new stack
     -- Executing [441 em 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 em interno:4] NoOp("SIP/114-00000680", "MIKE 
TESTOU") in new stack
     -- Executing [441 em 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: yealink em commlogik.com.br | www.commlogik.com.br | (11) 5503-1011
______________________________________________
Para remover seu email desta lista, basta enviar um email em branco para asteriskbrasil-unsubscribe em listas.asteriskbrasil.org



Mais detalhes sobre a lista de discussão AsteriskBrasil