You are on page 1of 22

CURSO ASTERISK AGI y PHPAGI Modulo 2

IRONTEC - http://www.irontec.com

Asterisk AGI PHPAGI

1
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

ndice
ndice de Contenidos

Introduccin a Asterisk AGI. PGPAGI. Ejemplos.

2
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

Introduccin a Asterisk AGI


AGI (Asterisk Gateway Interface) Interfaz para que nuestros programas puedan comunicarse con Asterisk. AGI es parecido a CGI:

La comunicacin de AGI con Asterisk es va stdin/stdout.

AGI, EAGI (audio), FastAGI (remoto), DeadAGI. Los scripts AGI pueden ser escritos en cualquier lenguaje. (Perl, Python, PHP, C, ... )

3
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

Introduccin a Asterisk AGI


Asterisk PBX
Asterisk Switching Core Asterisk Channel Interface TDM E 1 ANALOG SIP IAX2 MGCP

Asterisk AGI Module STDIN/STDOUT Database AGI Script WWW Coffee Maker

4
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

Introduccin a Asterisk AGI


Comunicacin AGI <--> Asterisk STDOUT Para enviar algo a Asterisk el script AGI escribe algo en stdout.
NO TA :L os c oma ndo s deb en ac ab ar en ( \n ) .

STDIN Para recibir informacin de Asterisk el script AGI usa el stdin.


NO TA :L as r esp ues ta sd e Ast er isk t ien en e sta fo rm a: 200 R esu lt =<n um ero > 510 I nva li do r unk now c omm an d.

STDERR Para escribir informacin de DEBUG en el CLI el script usa stderr.


NO TA :a gi d ebu g 5
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

Introduccin a Asterisk AGI


Scripts AGI

Directorio por defecto:


/u sr /sh ar e/ ast eri sk /ag i bin Nota:Podemosguardarlosdondequeramos,pero deberemosindicarlarutacompleta.

Debe de ser ejecutable:


ch mo da +x a gi. php

6
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

Introduccin a Asterisk AGI

Invocarla desde el dialplan:


.. . ex te n= > 12 34, n, a gi( he llo Wo rld .p hp) .. . No mb re co mp let o!! ! (co n ext en si n)

Paso de parmetros
.. . ex te n= > 12 34, n, S ET Nu m= 1 ; ex te n= > 12 34, n,a gi (ag i. php |$ {NU M} | ${ CA LLE RI D} ) .. .

Deben existir en la extensin actual:


Variables dadas por el entorno Asterisk Definidas por nosotros mismos 7 ... Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

Comandos en AGI
answer channelstatus databasedel databasedeltree databaseget databaseput exec getdata getfullvariable getvariable getoption hangup noop receivechar receivetext recordfile sayalpha saydigits saynumber Answerchannel Returnsstatusoftheconnectedchannel Removesdatabasekey/value Removesdatabasekeytree/value Getsdatabasevalue Adds/updatesdatabasevalue ExecutesagivenApplication PromptsforDTMFonachannel Evaluatesachannelexpression Getsachannelvariable Streamfile,promptforDTMF,withtimeout Hangupthecurrentchannel Doesnothing Receivesonecharacterfromchannelssupportingit Receivestextfromchannelssupportingit Recordstoagivenfile Saysagivencharacterstring Saysagivendigittring Saysagivennumber

Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

Comandos en AGI

sayphonetic saydate saytime saydatetime sendimage sendtext setautohangup setcallerid setcontext setextension setmusic setpriority setvariable streamfiles controlstreamfile tddmode verbose waitfordigit

Saysagivencharacterstringwithphonetics Saysagivendate Saysagiventime Saysagiventimeasspecfiedbytheformatgiven Sendsimagestochannelssupportingit Sendstexttochannelssupportingit Autohangupchannelinsometime Setscalleridforthecurrentchannel Setschannelcontext Changeschannelextension Enable/DisableMusiconholdgenerator Setchanneldialplanpriority Setsachannelvariable endsaudiofileonchannel Sendsaudiofileonchannelandallowsthelistnertocontrolthestream TogglesTDDmode(forthedeaf) Logsamessagetotheasteriskverboselog Waitsforadigittobepressed

9
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

Primer script AGI


Un ejemplo: script (ejemplo.php) :
#! /u sr/ lo ca l/b in/ ph p5 <? ph p // L eer c ab ece ras wh il e( fg et s(S TDI N) != \n ); ec ho S AY N UMB ER 42 \n ; $r es ult = f get s(S TD IN) ; ?>

Dialplan ( extensions.conf ) :
.. . ex te n= > 12 34, n, a gi( ej emp lo .ph p) .. .

10
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

Primer script AGI

Cabeceras:
As te ris k en va a ls cr ipt u na ser ie de ca be cer as : [a gi _r equ es t] => ej em1 .p hp [a gi _c han ne l] => SI P/i ro nus er [a gi _l ang ua ge] => e n [a gi _c all er id] => " iro nu ser " <50 0> [a gi _d nid ] => 500 [a gi _r dni s] => un kn own [a gi _c ont ex t] => in ter na l [a gi _e xte ns ion ]= > 500 [a gi _p rio ri ty] => 1

11
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

PHPAGI
Para qu?

Se encarga de las cabeceras Posee la mayora de los comandos AGI Posee wrappers para las funciones text2wave => festival Nota: Instalar festival en castellano.
apt ge ti ns tal lf es tiv al f est vo x ka ll pc 16k

12
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

Instalacin

Descargar: Web: http://phpagi.sourceforge.net/ Seccin Descargas. Descargar phpagi-2.14.tgz Ejemplos phpagi-examples-2.14.tgz

NO TA (P ar a ser vid or es si nX ): wg et ht tp :// do wn loa ds. so urc ef org e. net /p hpa gi /p hpa gi 2. 14. wg et ht tp :// do wn loa ds. so urc ef org e. net /p hpa gi / ph pa gi ex am ple s2 .1 4.t gz

13
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

Instalacin

Descomprimir en el directorio de agi:


mv p hpa gi 2 .14 .tg z /va r/ lib /a ste ri sk/ ag i bi n/ ta r zx vf p hpa gi 2. 14. tg z

Dar permisos:
cd p hpa gi 2 .14 ch mo da +x * .ph p

Copiar phpagi.conf al directorio de configuracin de Asterisk.


mv / var /l ib /as ter is k/a gi bi n/ php ag i 2. 14 /do cs /p hpa gi. ex amp le .co nf /e tc /as te ri sk/ php ag i.c on f

14
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

PHPAGI
Un ejemplo sencillo.

Pasos: Incluir la librera.


require'phpagi.php';

Crear un objeto AGI.

$agi=newAGI(); $agi= newA GI();

Llamar a sus funciones.

$agi>answer();

15
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

PHPAGI
Un ejemplo sencillo.

script (ejemplo.php) :
#!/usr/bin/php5 <?php require('phpagi2.14/phpagi.php') $agi=newAGI(); $agi>answer(); $agi>playback("HelloWorld"); $agi>hangup(); ?>

16
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

PHPAGI
Como funciona?.

Cuando un mtodo es invocado el resultado se guarda en un array de variables. Depende del mtodo a veces el resultado esta en la posicin indicada por 'result' o por 'key'.

NOTA:Consultarsiempreelcdigofuentedephpagi.php paraconocerelcomando(olaayudagenerada). http://phpagi.sourceforge.net/phpagi2/docs/

17
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

PHPAGI Asterisk Manager


Asterisk Manager

El asterisk Manager Interface es un servidor TCP, capaz de comunicarse con Asterisk, haciendo posible que aplicaciones remotas enven comandos a Asterisk
Mana ge r.c on f [adm in ] secr et = te st read =s yst em ,ca ll, lo g,v er bos e, co mma nd ,ag en t,u ser, co nfi g writ e= sys te m,c all ,l og, ve rbo se ,c omm an d,a ge nt, user ,c onf ig

PHPAGI incluye una librera capaz de manejar este sistema phpagi_AsteriskManager

18

Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

PHPAGI Asterisk Manager


Asterisk Manager (II)

Configurar en phpagi.conf
[a sm an age r] se rv er =lo ca lho st po rt =5 038 us er na me= na me se cr et =pa ss

Y en nuestro script:
$a sm = $a gi >n ew_ As ter is kMa na ger () ; $p ee r =$ as m> com ma nd( "s ip sh ow pe er $p ee r") ; $a sm > dis co nne ct( );

19
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

Consejos

Consejos: No hay que hacer todo con AGI, el dialplan sigue estando ah :)

Usa en la medida de lo posible las variables del canal.

Es u na ma ne ra el eg ant e de p asa r var ia bl es en tr ed is ti nto ss cr ipt s.

Hacer los scripts AGI modulares.

Ca da sc ri pt ti ene u na fu nci n ,n o int en ta r me te rt od o nue str o cd ig oe n un so lo AG I.

Si el AGI crece demasiado --> refactoring


20
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

Referencias
Bibliografa

Asterisk, The Future of Telephony. Jim Van Meggelen, Jared Smith & Leif Madsen O' Reilly

Sitios Web

Voip-info: http://www.voip-info.org Web PHPAGI: http://phpagi.sourceforge.net/

21
Gorka Gorrotxategi David Santamara

CURSO ASTERISK AGI y PHPAGI Modulo 2

Licencia

Co py rig ht 20 07 Ir ont ec <c on tac to @ir on te c.c om>

Detalles de la licencia http://creativecommons.org/licenses/by/2.5/es/de ed.es


22
Gorka Gorrotxategi David Santamara

You might also like