[AsteriskBrasil] script para realizar ligação no asterisk (AGI)

Kim Delevati kim.delevati em gmail.com
Segunda Março 30 14:44:06 BRT 2009


Ops, respondi no outro, sem ter visto esse antes.

Então, o que você falou é bem simples, depois que você pega o jeito do AGI.

http://www.voip-info.org/wiki/view/Asterisk+AGI+php

Aqui basicamente tem tudo, algumas dicas minhas:

Recomendo baixar a classe phpagi:

http://phpagi.sourceforge.net/

Ela torna bem mais fáceis as funções.

Primeiras linhas do Script tem que ser isso:

#!/usr/bin/php5
<?
require 'phpagi.php';
ob_implicit_flush(false);
set_time_limit(3000);
$stdin = fopen( 'php://stdin', 'r' );
$stdout = fopen('php://stdout', 'w');



Na primeira, tem que modificar, coloque o caminho, e a versão do seu php. A
segunda é aquilo, lembre-se que não pode ter NENHUM espaço em branco entre a
primeira e a segunda, só a nova linha mesmo.
A terceira linha é opcional, caso você queira usar a classe phpagi. Caso
queira, delete todas as linhas seguintes. Caso não queira, delete só ela.

Após isso, se escolheu usar o phpagi, você declara:

$agi = new AGI();

E faz o dial:

$agi->exec("Dial ".$numero."|op1|op2|opetc");

O número seria que nem um normal de Asterisk, ex
SIP/02135674670 em servidorvoip, SIP/2001, ZAP/1/05534500940, etc... nas ops
você pode colocar opções normais do dial, tipo timeoout, etc... qualquer
coisa.

Depois o hangup:

$agi->hangup();



Caso seja sem o phpagi, fica mais ou menos assim:


fwrite($stdout," exec dial ".$numero."|op1|op2|\n");
fflush($stdout);


Mesma coisa o negócio do numero e ops, mas lembre-se que mandando um comando
desse jeito, no final da string é OBRIGATÓRIO o uso do \n, se não o asterisk
se perde.
Depois o hangup:

fwrite($stdout," exec Hangup \n");
fflush($stdout);

Só tenho uma ressalva, esse Hangup aí as vezes não funciona direito...
recomendo usar um exit mesmo.

E pra finalizar, acaba o script:

?>


Era isso, taí um script simples de dial, aí só coloca o numero e liga. Caso
queira que o numero seja passado pelo Asterisk quando chama o AGI, tem que
mandar como opção (pode passar várias), ex:

exten->100,1,AGI(dial.php|numero qualquer|timeout)

depois você pega dentro do script, com argv[1], argv[2], etc:

$numero=$argv[1];
$timeout=$argv[2];

Dá pra pegar muitas variáveis que o Asterisk passa também, e tem um comando
de pegar variáveis de diaplan. Digamos que as opções são quase ilimitadas.


Ficou meio extenso, mas taí.



2009/3/30 Ricardo Guedes de Carvalho <rguedesdecarvalho em gmail.com>

> Boa tarde pessoal,
>
> Estou com algumas dificuldades ao tentar fazer um script em php o qual tem
> a finalidade de ao executá-lo, uma ligação é feita para um
> determinado número configurado em meu sistema asterisk. Na verdade não
> tenho muito idéia de como seria feito isso, sei que o script interage com
> o sistema através do AGI. Não tenho muita familiaridade com desenvolvimento
> de programa, script,etc. Não sei qual seria a linguagem apropriada para esse
> tipo de script, qual seria mais fácil,etc.
>
> Fico grato com a atenção de quem puder me ajudar.
> No aguardo e ancioso.
>
> Att,
>
> --
> Ricardo Guedes
> Suporte Telefonia Voz sobre IP
> IGNISCOM  (19) 3119-2445
>
> _______________________________________________
> Openmoko Freerunner, primeiro telefone open source, disponível no Brasil
> rodando o Android da Google.
> http://www.neodroid.com
>
> Compre uma camiseta da AsteriskBrasil.org!
> http://www.voipmania.com.br
>
> Acesse o canal IRC de discussão sobre Asterisk em Português Brasileiro na
> rede Freenode.net: #asterisk-br
> _______________________________________________
> 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/20090330/37ba37e7/attachment.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil