Lab-7
Asterisk AGI Laboratorio 7.1 Descripción: Crear un agi que consulte una tabla de datos y que mediante el ingreso de un código, este retorne y reproduzca el número de cédula asociado, dígito a dígito. Objetio: !racticar la creación de "#$, %amiliarizarse con las %unciones &'()"* +$), #)' D"'", &"- D$#$'& e implementar una consulta bsica a una base de datos. 'iempo */imo: 01 minutos. $nstrucciones:
$ngrese a la consola de su )lasti/ como usuario root.
)l primer paso es crear la base de datos agi2test, para este propósito escribimos: mysqladmin -u root -p create agi_test
Nota: usted necesitar ingresar la contrase3a del usuario root de mysql.
4ecesitamos crear el arc5io db.sql con el siguiente contenido: vim db.sql
')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
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.
Cree el arc5io ectagi.p5p en arlibasteris;agi
')6' para ectagi.p5p: #!/usr/bin/php -q
$_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 edición: en la línea 0 cambie el alor de =pass >-O7(!"&&?O(D@ con su contrase3a del
usuario root de mysql.
Lab-7
#rabar y salir >)sc A
:wq @
Cambie los permisos y usuario chmod 755 ectagi.php chown asterisk:asterisk ectagi.php
"3ada el siguiente conte/to al arc5io etcasteris;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()
#rabar y salir >)sc A :wq@
$ncluya el conte/to Bect
vim extensions_custom.conf
&inta/is: include => ect-agi
#rabar y salir >)sc A :wq@
(ecargue asteris;: [root@elastix asterisk]# asterisk -rx “reload”
!ruebe el "#$ marcando EFE, deberíamos marcar el id de cada número en la base de datos: >F, >0, >G, >,
000G1H@, IIIJIH@, JIJIJIJ@, G1G0G@K
)jemplo: marque EFE, presione F, presione LK usted debería escuc5ar: 0, 0, 0, G, , 1, H y la llamada culminar.
&i usted marca un número que no e/iste, ejemplo F0, usted obtendr una respuesta de E, E, E, E, E
Lab-7
Asterisk AGI Laboratorio 7.2 Descripción: (ealizar el debugging del "#$ creado en la prctica 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:
$ngrese al "steris; C$
Mabilite debugging de "#$ con el comando 8agi set debug on9.
Desde una e/tensión marque EFE, presione F y L
Obseraremos una salida donde las ariables de ectagi.p5p son mostradas, y la comunicación 5acia y desde el "#$.
-- Executing [500@from-internal:3] AGI("SIP/200-00000059", "ectagi.php,1") in new stack -- Launched AGI Script /var/lib/aster isk/agi-bin/ecta gi.php AGI Tx >> agi_request: ectagi.php AGI Tx >> agi_channel: SIP/200-00000059 AGI Tx >> agi_language: en AGI Tx >> agi_type: SIP AGI Tx >> agi_uniqueid: 1327877045.89 AGI Tx >> agi_version: 1.8.7.0 AGI Tx >> agi_callerid: 200 AGI Tx >> agi_calleridname: device AGI Tx >> agi_callingpres: 0 AGI Tx >> agi_callingani2: 0 AGI Tx >> agi_callington: 0 AGI Tx >> agi_callingtns: 0 AGI Tx >> agi_dnid: 500 AGI Tx >> agi_rdnis: unknown AGI Tx >> agi_context: from-internal AGI Tx >> agi_extension: 500 AGI Tx >> agi_priority: 3 AGI Tx >> agi_enhanced: 0.0 AGI Tx >> agi_accountcode: AGI Tx >> agi_threadid: -1221964912 AGI Tx >> agi_arg_1: 1 AGI Tx >> AGI Rx << SAY DIGITS 2223456 "" -- Playing 'digits/2.gsm' (language 'en') -- Playing 'digits/2.gsm' (language 'en') -- Playing 'digits/2.gsm' (language 'en') -- Playing 'digits/3.gsm' (language 'en') -- Playing 'digits/4.gsm' (language 'en') -- Playing 'digits/5.gsm' (language 'en') -- Playing 'digits/6.gsm' (language 'en') AGI Tx >> 200 result=0 -- AGI Script ectagi.php completed, returning 0
Lab-7
!ara des5abilitar el debugging en "#$, use el comando 8agi set debug o%%9.
Lab-7
Asterisk AMI Laboratorio 7.3 Descripción: Conectarse ía ')4)' con "*$, eniar el comando O#$4 y eniar el comando O#O++ Objetio: +amiliarizarse con la cone/ión con "*$ y ejecutar comandos bsicos y er la respuesta obtenida. 'iempo */imo: FE minutos. $nstrucciones:
!rimero debemos obtener la contrase3a de la inter%az de administración de "steris; "*$
)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
Conéctese a "*$ a traés de telnet como se indica: telnet 127.0.0.1 5038
!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@
Después presione )nter.
Lab-7
LOGOUT
!ara salir de "*$ debemos ejecutar el comando 8ogo%%9
Nota: 4o olide presionar 8)nter9 al %inal de cada eento.
Lab-7
Lab-7
Asterisk AMI Laboratorio 7.4 !r"ctica reco#endada$ Descripción: Conectarse ía ')4)' con "*$, y ejecutar la acción 8Originate9 para realizar una llamada a otra e/tensión. Objetio: +amiliarizarse con la cone/ión con "*$ y ejecutar comandos bsicos y er la respuesta obtenida. 'iempo */imo: FE minutos. $nstrucciones:
Conéctese a "*$ a traés de telnet:
telnet 127.0.0.1 5038
Maga login con: Action: Login Username: admin Secret: password < >la misma contrase3a que el laboratorio anterior@
7tilice la acción 8Originate9 en la sesión y reciba una llamada a la e/tensión especi%icada: Action: Originate Channel: SIP/200 Exten: 200
< >)l canal de la e/tensión@ < >)l número de la e/tensión@
Priority: 1 Timeout: 300000
< >acerca de GE segundos@
Context: from-internal
7sted recibir una llamada a la e/tensión 0EE.
)jecute el comando ogo%%.
Nota: 4o olide presionar 8)nter9 al %inal de cada eento.
Lab-7
Asterisk AGI-AMI Laboratorio 7.% Descripción: Construya un "#$ que permita conectar una llamada entre dos e/tensiones, usando la librería 8p5p
Cree un arc5io arlibasteris;agi
"3ada las siguientes líneas al arc5io my%ile.agi: #!/usr/bin/php -q 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.
#rabar y salir >)sc A
:wq @
Cambie los permisos y usuario del arc5io my%ile.agi chmod 777 myfile.agi chown asterisk:asterisk myfile.agi
)jecute el siguiente comando desde la consola. [root@elastix agi-bin]# php myfile.agi
7sted debería recibir una llamada en la e/tensión 0EE, y antes de que usted conteste )lasti/ conectar la llamada con la e/tensión 0EF. )ste es el clsico ejemplo de 8Clic to Call9.
Lab-7