Asterisk Gateway Interface

Slides:



Advertisements
Presentaciones similares
Introducción a la programación
Advertisements

Manejo de archivos.
Registro de llamadas y logs
Fernando Alonso Blázquez Formularios en lenguaje HTML 26 de Febrero de 2004.
ZOPE CI-2413 Desarrollo de aplicaciones para Internet.
Alta disponibilidad en VoIP
Asterisk Configuración Canales SIP/IAX 1.
Asterisk Instalación 1 1.
Asterisk Administración 1 1.
Correo de Voz (voic ) Asterisk Configuración del Correo de Voz (voic ) 1.
Asterisk Introducción 1 1.
Asterisk Configuración Sala de conferencias 1.
Asterisk Interconexion PBX 1.
Asterisk CLI.
Asterisk Conceptos de Asterisk 1.
Asterisk Configuración básica Primeros Pasos 1.
WALC 2010 Track 5 Telefonía IP.
Asterisk Configuración Manejo de variables condicionales 1.
Asterisk Configuración Plan de Numeración 1.
Configuración Discado automatico Manejo de Colas
Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch
Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch
Configuración Avanzada
Enlaces con variables en la URL en PHP Programación en Internet II.
CGI I La mayor parte de los elementos HTML de que disponemos permite al visitante visualizar los contenidos de un sitio, pero no interactuar con él. Dicho.
Introducción a la Programación
Expositores: Andrea Freire Eduardo López
Expositores: Sandra Pineda Obando Patricio Aguirre Sanabria
Presentada por: Ma. Fernanda Molina M. Luis Sánchez L.
Presentado por: Lenin Isaías Escobar Mendoza
CGI Common Gateway Interface (interfaz de pasarela común)
SERVER SIDE INCLUDES MANUEL BUTRÓN BLANES
Curso de PHP Tema 6: Seguridad.
Tema 2: Lenguaje PHP básico
Entornos de programación
Servidor.pl #!/usr/local/bin/perl use Socket; ($port) $port = 2345 unless $port; Empleamos el módulo Socket, equivalente a las definiciones que.
¿Para qué se utiliza el PSEINT?
Asterisk Manager Interface
Al término de la clase, el alumno reconoce las ventajas de usar JAVASCRIPT para un proyecto web.
Tecnologías para el desarrollo de aplicaciones Web
Archivos Programación.
Ingeniero Anyelo Quintero
Unidad 4 Universidad Nacional de Jujuy–Cátedra de Comunicaciones–Redes de Datos de Banda Ancha Aplicaciones multimedia VOIP  Transmisión de la Voz convertida.
Informática Ingeniería en Electrónica y Automática Industrial
INTRODUCCIÓN A LA PROGRAMACIÓN WEB
Curso de Creación aplicaciones dinámicas web con PHP y MySQL Continuamos.
Instalación y Configuración
Prof. José T. Cadenas. Aplicación Web La Internet y la Web hacen que sea fácil y atractivo poner toda la información en el cyberespacio, y la hace accesible.
Diseño de Aplicaciones Web * En las aplicaciones web el diseño es muy diferente de las aplicaciones tradicionales dado que hay que dividir la aplicación.
OBJETOS DISTRIBUIDOS E INVOCACIÓN REMOTA ING. MARISCAL.
Eloísa Orozco Bueno Alvaro Padilla Vilema
Alcance Dinámico La Asociación Actual para un Nombre dado es el encontrado recientemente durante la ejecución, y no a sido destruido aun por el retornado.
“SERVLETS”. Paola Rojas Contreras Juan Villarroel Leiva José Miguel Perez V. Departamento de Electrónica.
Primer Foro Universitario de Software Libre 6, 7, 8 y 9 de Mayo de 2013 Proyecto GNU FreeBSD Linux Experiencias con Asterisk 1.8 Cert Dr. Ismael Esquivel.
Introducción a Procesos.  Contexto de ejecución: Conjunto de variables y parámetros, que tiene independencia de otro procesos.  Contexto de E/S ◦ Descriptores.
Presentado por: Laura Patricia Pinto Prieto Ingeniera de Sistemas.
CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
PEDRO ALBERTO ARIAS QUINTERO. El shell es un intérprete de órdenes, los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como.
Ihr Logo PHP Parte 2 “php toma muchas sintaxis de lenguajes de alto nivel conocidos para poder trabajar”
Computación I. CI-2125 Tema VIII
Práctica Profesional PHP.
Asterisk Configuración.
Asterisk Conceptos de Asterisk. Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch2 Canal (channel) Es una conexión que conduce una llamada.
WALC 2008 Track 5 Telefonia IP. Asterisk Conceptos de telefonía: conceptos básicos sobre telefonía tradicional.
Manual PHP Básico Camilo Cartagena.
Administración de Sitios Web Introducción al Lenguaje PHP
REGLAS PARA ELABORAR SEUDOCODIGOS Y DIAGRAMA DE FLUJO
Servicios Web Conjunto de aplicaciones o de tecnologías con capacidad para interoperar en la Web. Estas aplicaciones o tecnologías intercambian datos entre.
Interfaz de programación de aplicación 5R1221. Las API’s API es la abreviatura de Aplication Programming Interface. Un API no es más que una serie de.
Transcripción de la presentación:

Asterisk Gateway Interface

AGI La AGI (o Asterisk Gateway Interface) provee una interfaz estándar para que programas externos puedan controlar el plan de marcación. Generalmente, los scripts AGI se utilizan para realizar lógica avanzada, comunicarse con base de datos relacionales, etc. Los lenguajes más comunes de programación de scripts AGI son: PHP, Python y Perl, aunque se puede utilizar cualquier otro lenguaje. Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 2

AGI El intercambio de información del script con Asterisk se realiza vía los canales de comunicación: STDIN, STDOUT y STDERR. Lee desde STDIN para obtener información. Escribe en STDOUT para enviar información. Escribe en STDERR para enviar información de debugging. El script AGI envía comandos a Asterisk escribiendo en el STDOUT. Seguidamente Asterisk envía una respuesta por cada uno de ellos que es leída por el script. Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 3

AGI <code> result=<result> [data] donde La respuesta del servidor Asterisk ante un pedido es de la sig forma:   <code> result=<result> [data] donde code es un código de respuesta similar a HTTP (200 en caso de éxito, 5XX en caso de error). result es el resultado del comando (los valores más convencionales son -1 para errores, 0 si fue exitosa la ejecución) data es un conjunto de datos adicionales que pueden ser enviados por comando específicos (por ej, “timeout” para un comando temporizado) Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 4 4 4

AGI Cuando Asterisk comienza la llamada al script, envía un conjunto de variables relacionadas con el canal en el STDIN. Por ejemplo: agi_request: nombre del script agi_channel: nombre del canal agi_language: lenguaje del canal (en, es) agi_type: tipo de canal (sip, iax, etc.) etc. Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 5 5 5

AGI Algunos ejemplos de comandos son: ANSWER: atiende. HANGUP: cuelga. SAY [NUMBER | DIGITS | ALPHA | PHONETICS]: dice un número, dígito, caracter o un cadena fonéticamente. SET [CONTEXT | EXTENSION | PRIORITY]: establece un nuevo contexto, extensión o prioridad luego de finalizada la ejecución de script. VERBOSE: imprime un mensaje en el log. WAIT FOR DIGIT: espera que se presione un dígito. [SET | GET] VARIABLE: asigna u obtiene el valor de una variable del plan de marcación. Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 6

AGI El programa debe: Cómo llamar al script desde el dialplan: Tener derechos de ejecución y presentar un intérprete válido Ej yum –y install php; chmod 755 mi_script.php Estar localizado por defecto en /var/lib/asterisk/agi- bin Cómo llamar al script desde el dialplan: exten => 123,1,Answer() exten => 123,2,AGI(mi_script.php,arg1,..,argn) Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 7

AGI: ejemplo en PHP El siguiente script está escrito en PHP y dicta los números que se encuentran en el archivo que se le pasa como parámetro: #!/usr/bin/php -q <?php // Esta línea es para que que haga no mantenga en un buffer el output ob_implicit_flush(true); set_time_limit(60); error_reporting(0); // Se abren los diferentes archivos (STDIN, STDOUT y un archivo de log del AGI) $in = fopen("php://stdin","r"); $out = fopen("php://stdout","w"); $stdlog = fopen("/var/log/asterisk/my_agi.log", “a"); // Si debug es true, escribe en el archivo de log definido anteriormente $debug = true; Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 8

AGI: ejemplo en PHP // Toma el nombre del archivo con los números a dictar del primer parámetro $archivo = $argv[1]; // Define la funcion read, que lee el input del STDIN function read() { global $in, $debug, $stdlog; $input = str_replace("\n", "", fgets($in, 4096)); if ($debug) fputs($stdlog, "read: $input\n"); return $input; } // Define la funcion write, que escribe el output en el STDOUT function write($line) { global $debug, $stdlog, $out; if ($debug) fputs($stdlog, "write: $line\n"); fputs($out,$line."\n"); fflush($out); Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 9

AGI: ejemplo en PHP // Parsea los headers del AGI (variables de entorno, etc) while ($env=read()) { $s = split(": ",$env); $agi[str_replace("agi_","",$s[0])] = trim($s[1]); if (($env == "") || ($env == "\n")) { break; } // Lee el archivo que se paso como parametro $lines = file($archivo); Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 10

AGI: ejemplo en PHP // Reproduce los digitos contenidos en cada linea del mismo // informando en el log del Asterisk la accion realizada foreach ($lines as $line) { $line=trim($line); for ($i=0;$i<strlen($line);$i++) { write("VERBOSE \"REPRODUCIENDO DIGITO $line[$i]\""); read(); write("SAY DIGITS $line[$i] \"\""); sleep(1); } // Se cierran todos los handlers de archivos fclose($in); fclose($out); fclose($stdlog); exit; Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 11 11 11

AGI: ejemplo en PHP Por ejemplo, si se quiere asociar el script a la extensión 200, se debe agregar al dialplan: exten => 200,1,Answer(); exten => 200,2,AGI(dicta.php,/tmp/numeros.txt) exten => 200,3,Hangup() Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 12

AGI: CLI Los siguientes comandos pueden ser ejecutados en la CLI para obtener información sobre la AGI: agi show commands topic <command>: muestra información sobre el comando <command> del AGI. agi show commands: lista todos los comandos del agi agi set debug on/off: activa/desactiva el debugging de la ejecución de scripts vía la AGI Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 13 13 13

Ejercicio 10: AGI Implementar una funcionalidad en Asterisk utilizando AGI Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 14

Curso elaborado por Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch y Antonio Lobo julian@dunayevich.com lazaro.baca@gmail.com abrassara@gmail.com salberch@gmail.com antoniwolf@gmail.com Detalles de la licencia: http://creativecommons.org/licenses/by-nc-sa/2.5/deed.es_AR Autores: Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo (cc) Creative Commons - Attribute Non-Commercial Share-Alike 2.5 Basándose en: Irontec: contacto@irontec.com (CC) Asterisk, The Future of Telephony, Jim Meggelen, Jared Smith, and Leif Madsen, O´REILLY, 2005 Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo