[AsteriskBrasil] AGI

Alexandre Cavalcante Alencar alexandre.alencar em gmail.com
Domingo Março 18 01:04:59 BRT 2007


Olá,

Você pode usar o

 GET DATA <audiofile> <timeout> <maxdigits>

Para obter as informações. Lhe será retornado algo como

	200 result=<digitos informados pelo usuário>

Se precisar passar instruções, use o 

  STREAM FILE <audiofile> <escape>

Você pode usar a PHP AGI [0] para agilizar seu trabalho. Recomendo antes
ler a documentação dos comandos AGI [1].

Nas minhas horas vagas estou fazendo uma classe em C++ para abstração do
AGI, futuramente FastAGI, falta acertar alguns métodos e documentação.
Quando estiver usável, disponibilizo.

--- este código não vai funcionar como está ---

#!/usr/local/bin/php -q

<?php
  set_time_limit(30);
  require('phpagi.php');
  error_reporting(E_ALL);

  $agi = new AGI();

  $identificacao = $agi->parse_callerid();

  $resultado = $agi->get_data('beep', 3000, 20);
  $cliente = $resultado['result'];

?>

--- este código não vai funcionar como está ---

[0] http://phpagi.sf.net

[1] http://www.google.com.br/search?q=AGI
+Docs&ie=utf-8&oe=utf-8&aq=t&rls=org.debian:en-US:unofficial&client=firefox-a


Em Wed, 2007-03-14 às 13:05 -0300, Ma escreveu:
> Pessoal,
>  
> Existe alguma forma de resgatar o que foi digitado na URA, e jogar em
> uma variavel em PHP (Agi)???
> Alguem conhece algum exemplo de sintaxe ou algo do tipo?
>  
> Eu tenho uma rota, e dentro dela, ao digitar 5 eu chamo o phpagi.
> Dentro do script eu executo um SOM, STREAM FILE menu, e apos isso, eu
> queria receber o que a pessoa digitou, jogando em uma variavel em php.
>  
> Colo abaixo o script.
> #!/usr/bin/php -q
> <?
> //--------------
> //usar um depurador mais detalhando
> ob_implicit_flush(true);
> set_time_limit(6);
> $in=fopen("php://stdin","r");
> $stdlog=fopen("/var/lib/asterisk/agi-bin/log/meu_agi.log","w");
>  
> $num = 37;
> $dig = 123;
> $som = "z6-digite";
> $debug = false;
> //definir a funcao antes de iniciar o ciclo principal
> function read(){
>     global $in, $debug, $stdlog;
>     $input = str_replace("\n","",fgets($in,4096));
>     if ($debug) fputs($stdlog,"read: $input\n");
>         return $input;
> }
>  
> function errlog($line){
>     global $err;
>     echo "VERBOSE \"$line\"\n";
> }
>  
> function write($line){
>     global $debug, $stdlog;
>     if ($debug) fputs($stdlog,"write: $line\n");
>         echo $line."\n";
> }
>  
> while ($env=read()){
>     $s = split(": ",$env);
>     $agi[str_replace("agi_","",$s[(0)])] = trim($s[1]);
>     if (($env == "") || ($env == "\n")){
>         break;
>     }
> }
>  
> //main program
> echo "VERBOSE \"Aqui vamos nos!\" \n";
> read();
> errlog("Call from ".$agi['channel']." - Chamando o telefone.");
> read();
> write("STREAM FILE $som X");
> read();
> write("SAY DIGITS $s X");
> read();
> //write("SAY DIGITS $dig X");
> //read();
> //write("SAY NUMBER $num X");
> //read();
>  
> fclose($in);
> fclose($stdlog);
>  
> exit;
> ?>
>  
>  
> Abraco
> Marcio
> ----------------------------------------
> Estação VoIP 2006
> 5 e 6 Dezembro
> Curitiba PR
> http://www.estacaovoip.com.br
> 
> _______________________________________________
> LIsta de discussões AsteriskBrasil.org
> AsteriskBrasil em listas.asteriskbrasil.org
> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
> 
> _______________________________________________
> Acesse o  wiki AsteriskBrasil.org:
> http://www.asteriskbrasil.org
-- 
+-----------------------------------------+
| Alexandre Cavalcante Alencar (Skarmeth) |
|  http://people.debian-ce.org/skarmeth/  |
| GNU/Linux User #260571 GNUPG 0x77EA9FF8 |
|   Debian-BR-CE PSL-CE SABUGOSA SCYLLA   |
|           Fortaleza CE Brazil           |
+-----------------------------------------+



Mais detalhes sobre a lista de discussão AsteriskBrasil