Asterisk. Asterisk Gateway Interface

Documentos relacionados
Asterisk. Configuración Avanzada

Asterisk. Asterisk Manager Interface

Asterisk. Configuración Discado automatico Manejo de Colas

Asterisk. Administración. Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch 1

Asterisk. Registro de llamadas y logs

Alta disponibilidad. Alta Disponibilidad

Asterisk. Configuración del Correo de Voz

TICAR TALLER VOIP: Asterisk, como lo hacemos. Foro de Responsables de TICS de las Universidades Nacionales

Universidad del Azuay. Facultad de Ciencias de la Administración

Asterisk. Qué es Asterisk. Qué es Asterisk. Historia de Asterisk. Introducción 07/03/2013

ASTERISK AGI: DESARROLLO PARA VOZ IP V JORNADA DE SOFTWARE LIBRE

Asterisk - NIVEL 1. Descripción General del Seminario

Asterisk. Introducción

Asterisk. Introducción. Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch 1

Apartir de esto podemos decir que en corazón de asterisk (*) es el dialpan que se define en el archivo extension.conf.

Al finalizar, se podrán instalar Asterisk, crear usuario y extensiones. Requisitos del lector, para llevar acabo las tareas citadas en este manual

Arquitecturas Distribuidas. TEMA 3. Tecnologías de la web dinámica

Asterisk. Trixbox. Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch 1

Introducción a Sistemas Operativos: Ficheros

Programación de páginas web dinámicas con CGIs

PROGRAMACIÓN EN PHP. 1. Identificar las características y modalidad de programación bajo PHP.

TEMARIO Asterisk Básico-Intermedio-Avanzado

Dialplan: El cerebro de Asterisk. Iñaki Baz Castillo

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

PHP. Introducción (1) Introducción (3) Introducción (2) PHP 1

Es la estructura que permite ejecutar los comandos solamente si se cumple una determinada condición. La sintaxis más usual:

Asterisk. Instalación. Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch 1

Cultura empresarial MISIÓN VISIÓN VALORES

Introducción a Asterisk y la telefonía IP. Loris Santamaria

Taller de programación shell

LA REVOLUCIÓN SE LLAMA ASTERISK

Programando con Pl/Python

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

Anexo B. Configuraciones del Archivo extensions.conf

" Diseño e implementación de un sistema de envío de mensajes de texto bajo demanda utilizando Asterisk y Chan mobile "

CURSO ONLINE INSTALACIÓN Y ADMINISTRACIÓN DE CENTRALITAS VoIP ASTERISK

PHP Básico. PHP para principiantes

Seguridad en VoIP. Seguridad

VoIP (Asterix) Escuela de Ingeniería de Sistemas y Computación Administración de Redes y Servidores Febrero Junio 2008

PHP 7 Desarrollar un sitio web dinámico e interactivo

Programación shell-scripts 1 LA SHELL

Programación páginas web con PHP

Los mejores trucos de Asterisk

Desarrollo y servicios web

Como monitorear Asterisk utilizando NRPE de Nagios

Temario Curso Asterisk Intensivo Niveles básico, intermedio y avanzado Duración total del curso: 40 horas

Manual rápido de configuración de Salas de Conferencias para dispositivos de las serie SmartNode de Patton Electronics

Introducción a Python. Cecilia Manzino

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

Scripting en el cliente: Javascript. Tecnologías Web

INTRODUCCIÓN A PHP. Javier Enciso

Contenido y programación del Entrenamiento Oficial Avanzado de Asterisk

Ruteador de Llamadas en PHP (4 Horas) Moisés Silva

FreePBX for Fun & Profit

Anexo: Lenguajes de Scripting

Asterisk - NIVEL 2. Este seminario lo entrenara para configurar aplicaciones Avanzadas en Asterisk.

Centro de Capacitación en Tecnologías de la Información

Creacion de Script. Que es un Script?

CONFIGURACIÓN DE GRUPOS, COLAS DE LLAMADAS, AGENTES Y DISTRIBUCIÓN AUTOMÁTICA DE LLAMADAS EN ASTERISK

Taller de Sistemas Operativos. System Calls 2012

Fundamentos de la programación

InGRID: Operador Virtual de Nodo GRID. Alberto Lumbreras Francesc Pérez

Escuela de Ingeniería Electrónica CAPITULO 10 LINUX

Soluciones Voz IP con software libre

El servidor Web Tema 2.- Nivel de aplicación en Internet

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

Figura 1. Entrada, salida y error estándar.

CURSO DE PROGRAMACIÓN PHP MySQL

Programación PHP. orientada a formularios DISEÑOS CURRICULARES CON ENFOQUE POR COMPETENCIAS LABORALES

Presentación del Curso Virtual PROGRAMACIÓN WEB PHP CON MYSQL BÁSICO

TICAR 2015 ASTERISK DEVELOPER. Ing. Fernando A. Gonzalez

CAPITULO VI ANEXOS 6.1. ANEXO 1: CRONOGRAMA DE ACTIVADES. Gráfico 31 Cronograma de Actividades Parte1

Manual de Administración Draft - Noviembre 17 de 2010

Programación shell en Unix/Linux sh, ksh, bash (con ejercicios corregidos) (3ª edición)

Informática Ingeniería en Electrónica y Automática Industrial

Configuración y uso de fetchmail

Programación Básica. Martin Méndez Facultad de Ciencias Universidad Autónoma de San Luis Potosí

Diseño e Implementación de un Sistema de Distribución Automática de Llamadas Entrantes (ACD) para un Callcenter

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior. Trabajo Final

Fundamentos de la programación

Introducción rápida a la programación (estructurada ) con C++

Tema: Asterisk. Universidad Católica Nuestra Señora de la Asunción. Teoría y Aplicaciones de la Informática II. Profesor: Ing.

Instalación de Cacti. Marco Antonio Álvarez Iglesias

Descripción y Contenido del Curso VoIP basado en Asterisk PBX

MANUAL DE USUARIO. Webservice simple para la exportación rápida de información proveniente de una base de datos. Versión 0,1,1

Paso 1. Instalar Apache

Curso PHP & MYSQL PARA JOOMLA

Que es PHP? Que se puede hacer con PHP? Sintaxis del lenguaje. Variables. Operadores básicos. Condicionales. Ciclos.

LockerRoom MANUAL DE USUARIO

Tecnologías de Servidor

Objetivos y Temario CURSO MySQL 5

Asterisk. The Open Source PBX. Pau Oliva Fora

Se guardan en archivos con extencion c y los cabezales con extension h

APRENDE A CREAR UNA PÁGINA WEB CON HTML

Asterisk. Configuración

Programación shell en Unix/Linux ksh, bash, sh (con ejercicios corregidos) (4ª edición)

PHP 5.6 Desarrollar un sitio web dinámico e interactivo

Transcripción:

Asterisk 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. 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. 3

AGI La respuesta del servidor Asterisk ante un pedido es de la sig forma: donde <code> result=<result> [data] 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) 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. 5

AGI Algunos ejemplos de comandos son: ANSWER: atiende. HANGUP: cuelga. SAY [NUMBER DIGITS ALPHA PHONETICS]: dice un número, dígito, caracter o una 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. 6

AGI El programa debe: 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/agibin Cómo llamar al script desde el dialplan: exten => 123,1,Answer() exten => 123,2,AGI(mi_script.php,arg1,..,argn) 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; 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); } 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); 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] \"\""); read(); sleep(1); } } // Se cierran todos los handlers de archivos fclose($in); fclose($out); fclose($stdlog); exit; 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() 12

AGI: CLI Los siguientes comandos pueden ser ejecutados en la CLI para obtener información sobre la AGI: agi show command 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 13

Ejercicio 10: AGI Implementar una funcionalidad en Asterisk utilizando AGI 14

Curso elaborado por Andrés Brassara, Santiago Alberch y 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: Andrés Brassara, Santiago Alberch, (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 15