You are on page 1of 11

Lab-7

Asterisk AGI
Laboratorio 7.1
Descripcin: Crear un agi que consulte una tabla de datos y que mediante el ingreso de un cdigo,
este retorne y reproduzca el nmero de cdula asociado, dgito a dgito.
Objetio: !racticar la creacin de "#$, %amiliarizarse con las %unciones &'()"* +$,), #)' D"'",
&"- D$#$'& e implementar una consulta b.sica a una base de datos.
'iempo *./imo: 01 minutos.
$nstrucciones:
l $ngrese a la consola de su )lasti/ como usuario root.
l )l primer paso es crear la base de datos agi2test, para este propsito escribimos:
mysqladmin -u root -p create agi_test
Nota: usted necesitar. ingresar la contrase3a del usuario root de mysql.
l 4ecesitamos crear el arc5io db.sql con el siguiente contenido:
vim db.sql
l ')6':
USE agi_test
CREATE TABLE IF NOT EXISTS `numbers` (
`ID` int(11) NOT NULL auto_increment,
`NUMBER` int(10) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
INSERT INTO `numbers` (`ID`, `NUMBER`) VALUES
(1, 2223456),
(2, 7778764),
(3, 8787878),
(4, 34534234);
Lab-7
l 7na ez que el arc5io est. creado llenaremos la base de datos 8agi2test9 con el siguiente comando:
cat db.sql | mysql -u root -p
Nota: usted necesitar. ingresar la contrase3a del usuario root de mysql.
l Cree el arc5io ectagi.p5p en :ar:lib:asteris;:agi<bin:
cd /var/lib/asterisk/agi-bin/
vim ectagi.php
')6' para ectagi.p5p:
#!/usr/bin/php -q
<?php
$pass='YOURPASSWORD';
require ('phpagi.php') ;
$agiwrapper = new AGI() ;
ob_implicit_flush(true) ;
set_time_limit(30) ;
$id = $_SERVER['argv'][1];
$link = mysql_connect('localhost','root',$pass) or die("DB Connection Error");
mysql_select_db("agi_test") or die(mysqlerror()."Error: Cannot open database");
$query = 'SELECT * FROM numbers WHERE ID = '.$id.' LIMIT 0, 30 ';
$result = mysql_query($query) or die(mysql_error());
mysql_close($link);
$row = mysql_fetch_array( $result );
if($row != NULL)
{
$number = $row[1];
}
else
{
$number = "00000";
}
$agiwrapper->say_digits($number) ;
exit();
?>
Nota de edicin: en la lnea 0 cambie el alor de =pass >-O7(!"&&?O(D@ con su contrase3a del
usuario root de mysql.
Lab-7
l #rabar y salir >)sc A :wq@
Cambie los permisos y usuario
chmod 755 ectagi.php
chown asterisk:asterisk ectagi.php
l "3ada el siguiente conte/to al arc5io :etc:asteris;:e/tensions2custom266666.con%.
[ect-agi]
exten => 4010,1,Answer
exten => 4010,2,Read(number,speed-enternumber,3,,,2)
exten => 4010,3,AGI(ectagi.php,${number})
exten => 4010,4,Hangup()
l #rabar y salir >)sc A :wq@
l $ncluya el conte/to Bect<agiC en el conte/to B%rom<internal<customC localizado en el arc5io
:etc:asteris;:e/tensions2custom.con%
vim extensions_custom.conf
&inta/is: include => ect-agi
l #rabar y salir >)sc A :wq@
l (ecargue asteris;: [root@elastix asterisk]# asterisk -rx reload
l !ruebe el "#$ marcando DEFE, deberamos marcar el id de cada nmero en la base de datos:
>F, 000GD1H@,
>0, IIIJIHD@,
>G, JIJIJIJ@,
>D, GD1GD0GD@K
l )jemplo: marque DEFE, presione F, presione LK usted debera escuc5ar: 0, 0, 0, G, D, 1, H y la llamada
culminar..
l &i usted marca un nmero que no e/iste, ejemplo F0, usted obtendr. una respuesta de E, E, E, E, E
Lab-7
Asterisk AGI
Laboratorio 7.2
Descripcin: (ealizar el debugging del "#$ creado en la pr.ctica anterior y eri%icar las ariables eniadas
desde y 5acia un "#$.
Objetio: 7sar los comandos de debug de un "#$ y entender la salida mostrada en la consola de asteris;.
'iempo *./imo: F1 minutos.
$nstrucciones:
l $ngrese al "steris; C,$
l Mabilite debugging de "#$ con el comando 8agi set debug on9.
l Desde una e/tensin marque DEFE, presione F y L
l Obseraremos una salida donde las ariables de ectagi.p5p son mostradas, y la comunicacin 5acia y
desde el "#$.
-- Executing [500@from-internal:3] AGI("SIP/200-00000059", "ectagi.php,1") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/ectagi.php
<SIP/200-00000059>AGI Tx >> agi_request: ectagi.php
<SIP/200-00000059>AGI Tx >> agi_channel: SIP/200-00000059
<SIP/200-00000059>AGI Tx >> agi_language: en
<SIP/200-00000059>AGI Tx >> agi_type: SIP
<SIP/200-00000059>AGI Tx >> agi_uniqueid: 1327877045.89
<SIP/200-00000059>AGI Tx >> agi_version: 1.8.7.0
<SIP/200-00000059>AGI Tx >> agi_callerid: 200
<SIP/200-00000059>AGI Tx >> agi_calleridname: device
<SIP/200-00000059>AGI Tx >> agi_callingpres: 0
<SIP/200-00000059>AGI Tx >> agi_callingani2: 0
<SIP/200-00000059>AGI Tx >> agi_callington: 0
<SIP/200-00000059>AGI Tx >> agi_callingtns: 0
<SIP/200-00000059>AGI Tx >> agi_dnid: 500
<SIP/200-00000059>AGI Tx >> agi_rdnis: unknown
<SIP/200-00000059>AGI Tx >> agi_context: from-internal
<SIP/200-00000059>AGI Tx >> agi_extension: 500
<SIP/200-00000059>AGI Tx >> agi_priority: 3
<SIP/200-00000059>AGI Tx >> agi_enhanced: 0.0
<SIP/200-00000059>AGI Tx >> agi_accountcode:
<SIP/200-00000059>AGI Tx >> agi_threadid: -1221964912
<SIP/200-00000059>AGI Tx >> agi_arg_1: 1
<SIP/200-00000059>AGI Tx >>
<SIP/200-00000059>AGI Rx << SAY DIGITS 2223456 ""
-- <SIP/200-00000059> Playing 'digits/2.gsm' (language 'en')
-- <SIP/200-00000059> Playing 'digits/2.gsm' (language 'en')
-- <SIP/200-00000059> Playing 'digits/2.gsm' (language 'en')
-- <SIP/200-00000059> Playing 'digits/3.gsm' (language 'en')
-- <SIP/200-00000059> Playing 'digits/4.gsm' (language 'en')
-- <SIP/200-00000059> Playing 'digits/5.gsm' (language 'en')
-- <SIP/200-00000059> Playing 'digits/6.gsm' (language 'en')
<SIP/200-00000059>AGI Tx >> 200 result=0
-- <SIP/200-00000059>AGI Script ectagi.php completed, returning 0
Lab-7
l !ara des5abilitar el debugging en "#$, use el comando 8agi set debug o%%9.
Lab-7
Asterisk AMI
Laboratorio 7.3
Descripcin: Conectarse a '),4)' con "*$, eniar el comando ,O#$4 y eniar el comando
,O#O++
Objetio: +amiliarizarse con la cone/in con "*$ y ejecutar comandos b.sicos y er la respuesta
obtenida.
'iempo *./imo: FE minutos.
$nstrucciones:
l !rimero debemos obtener la contrase3a de la inter%az de administracin de "steris; : "*$
l )n la consola escriba el siguiente comando:
cat /etc/asterisk/manager.conf | grep secret
)l ejemplo arroj la contrase3a 8palosanto9. )s posible que usted 5aya ingresado una di%erente cuando
instal )lasti/.
LOGIN
l Conctese a "*$ a tras de telnet como se indica: telnet 127.0.0.1 5038
l !ara ingresar usted debe escribir los siguientes comandos >es muy til tenerlos escritos en un bloc de
notas antes de ingresar a telnet@:
Action: Login
Username: admin
Secret: password < >en este ejemplo palosanto@
l Despus presione )nter.
Lab-7
LOGOUT
l !ara salir de "*$ debemos ejecutar el comando 8,ogo%%9
l Nota: 4o olide presionar 8)nter9 al %inal de cada eento.
Lab-7
Lab-7
Asterisk AMI
Laboratorio 7.4 !r"ctica reco#endada$
Descripcin: Conectarse a '),4)' con "*$, y ejecutar la accin 8Originate9 para realizar una
llamada a otra e/tensin.
Objetio: +amiliarizarse con la cone/in con "*$ y ejecutar comandos b.sicos y er la respuesta
obtenida.
'iempo *./imo: FE minutos.
$nstrucciones:
l Conctese a "*$ a tras de telnet:
telnet 127.0.0.1 5038
l Maga login con:
Action: Login
Username: admin
Secret: password < >la misma contrase3a que el laboratorio anterior@
l 7tilice la accin 8Originate9 en la sesin y reciba una llamada a la e/tensin especi%icada:
Action: Originate
Channel: SIP/200 < >)l canal de la e/tensin@
Exten: 200 < >)l nmero de la e/tensin@
Priority: 1
Timeout: 300000 < >acerca de GE segundos@
Context: from-internal
l 7sted recibir. una llamada a la e/tensin 0EE.
l )jecute el comando ,ogo%%.
l Nota: 4o olide presionar 8)nter9 al %inal de cada eento.
Lab-7
Asterisk AGI-AMI
Laboratorio 7.%
Descripcin: Construya un "#$ que permita conectar una llamada entre dos e/tensiones, usando
la librera 8p5p<asmanager.p5p9 y la %uncin Originate.
Objetio: 7sar la librera 8p5p<asmanager.p5p9 y la %uncin Originate para la creacin de
%uncionalidad usando "#$ y "*$.
'iempo *./imo: FE minutos.
$nstrucciones:
l Cree un arc5io :ar:lib:asteris;:agi<bin:my%ile.agi:
cd /var/lib/asterisk/agi-bin/
vim myfile.agi
l "3ada las siguientes lneas al arc5io my%ile.agi:
#!/usr/bin/php -q
<?php
require_once "/var/lib/asterisk/agi-bin/phpagi-asmanager.php";
$astman = new AGI_AsteriskManager();
$resultado= $astman->connect("127.0.0.1", "admin", "AMIPASSWORD");
$salida = $astman->Originate("SIP/200","201","from-internal","1");
$astman->disconnect();
?>
Nota: ,a contrase3a "*$ >"*$!"&&?O(D@ es la misma que en laboratorios preios. )n este caso
8palosanto9, no olide reemplazarla en el arc5io de te/to p5p.
l #rabar y salir >)sc A :wq@
l Cambie los permisos y usuario del arc5io my%ile.agi
chmod 777 myfile.agi
chown asterisk:asterisk myfile.agi
l )jecute el siguiente comando desde la consola.
[root@elastix agi-bin]# php myfile.agi
l 7sted debera recibir una llamada en la e/tensin 0EE, y antes de que usted conteste )lasti/ conectar.
la llamada con la e/tensin 0EF. )ste es el cl.sico ejemplo de 8Clic to Call9.
Lab-7

You might also like