La AGI (Asterisk Gateway Interface) provee una interfaz para que programas externos controlen el plan de marcación de Asterisk. Los scripts AGI se comunican con Asterisk a través de STDIN, STDOUT y STDERR y permiten agregar lógica avanzada y comunicarse con bases de datos. Los lenguajes más usados son PHP, Python y Perl.
Extendiendo Elastix: AGIs para encuestas y consultas de datosPaloSanto Solutions
Este documento explica cómo extender las capacidades de Elastix mediante el uso de Asterisk Gateway Interfaces (AGIs). Los AGIs permiten ejecutar scripts en diferentes lenguajes para automatizar tareas como encuestas, consultas de saldos y pagos. El documento describe cómo invocar AGIs desde el dialplan de Elastix, las variables disponibles y los pasos básicos para programar un AGI como la conexión a una base de datos.
The document discusses three different ways to perform CRUD (create, read, update, delete) operations on a database using ADO.NET in Visual Basic.NET. It includes code examples showing how to connect to a SQL Server database, retrieve data from a table into a DataSet, display the data in a DataGridView, and search or filter the data. The examples demonstrate using DataAdapters, DataSets, DataViews and SqlDataReaders to connect to the database and perform queries to retrieve and manipulate the data.
Conectando visual basic 6.0 a bases de datosRafaelAponte16
Este documento describe cómo conectar una aplicación de Visual Basic 6.0 a bases de datos de Microsoft SQL Server y Microsoft Access. Explica los pasos para activar las referencias necesarias, crear un módulo de conexión, generar la cadena de conexión, y programar funciones para establecer y comprobar la conexión a la base de datos antes de iniciar el proyecto.
코틀린이 제공하는 직렬화 라이브러리인 kotlinx.serialization를 소개하고, 왜 만들었는지 그리고 어떤 특징을 가지고 있는지 공유합니다.
슬라이드 내 예제 코드는 github 에 공개되어 있습니다.
https://github.com/arawn/kotlinx-serialization-overview
This document provides an overview of indexing in MySQL. It begins with definitions of terminology like B-Trees, keys, indexes, and clustering. It then covers topics like primary keys, compound indexes, and optimization techniques. Use cases are presented to demonstrate how to design indexes for different querying needs, such as normalization, geospatial queries, and pagination. The document aims to explain indexing concepts and help the reader design efficient indexes.
Este documento proporciona varios ejemplos de cómo configurar y pasar parámetros a procedimientos almacenados desde VB.NET a SQL, incluyendo el uso de parámetros individuales, tablas y arrays. También incluye notas sobre consultas básicas, tablas temporales y conexiones a bases de datos.
Expanding the control over the operating system from the databaseBernardo Damele A. G.
Using a database, either via a SQL injection or via direct connection, as a stepping stone to control the underlying operating system can be achieved.
There is much to say on operating system control by owning a database server: Windows registry access, anti-forensics technique to establish an out-of-band stealth connection, buffer overflow exploitation with memory protections bypass and custom user-defined function injection.
These slides have been presented at SOURCE Conference in Barcelona on September 21, 2009.
Time based CAPTCHA protected SQL injection through SOAP-webserviceFrans Rosén
Frans Rosén of detectify discusses SQL injection techniques through a SOAP webservice. He provides steps to create a proof of concept attack with as few requests as possible to find vulnerable storefronts. Examples are given of time-based SQL injection payloads using substring, ascii, and sleep functions to retrieve the username and potentially other information about the target host. A link is also provided to a paper on SQL injection optimization and obfuscation techniques.
Extendiendo Elastix: AGIs para encuestas y consultas de datosPaloSanto Solutions
Este documento explica cómo extender las capacidades de Elastix mediante el uso de Asterisk Gateway Interfaces (AGIs). Los AGIs permiten ejecutar scripts en diferentes lenguajes para automatizar tareas como encuestas, consultas de saldos y pagos. El documento describe cómo invocar AGIs desde el dialplan de Elastix, las variables disponibles y los pasos básicos para programar un AGI como la conexión a una base de datos.
The document discusses three different ways to perform CRUD (create, read, update, delete) operations on a database using ADO.NET in Visual Basic.NET. It includes code examples showing how to connect to a SQL Server database, retrieve data from a table into a DataSet, display the data in a DataGridView, and search or filter the data. The examples demonstrate using DataAdapters, DataSets, DataViews and SqlDataReaders to connect to the database and perform queries to retrieve and manipulate the data.
Conectando visual basic 6.0 a bases de datosRafaelAponte16
Este documento describe cómo conectar una aplicación de Visual Basic 6.0 a bases de datos de Microsoft SQL Server y Microsoft Access. Explica los pasos para activar las referencias necesarias, crear un módulo de conexión, generar la cadena de conexión, y programar funciones para establecer y comprobar la conexión a la base de datos antes de iniciar el proyecto.
코틀린이 제공하는 직렬화 라이브러리인 kotlinx.serialization를 소개하고, 왜 만들었는지 그리고 어떤 특징을 가지고 있는지 공유합니다.
슬라이드 내 예제 코드는 github 에 공개되어 있습니다.
https://github.com/arawn/kotlinx-serialization-overview
This document provides an overview of indexing in MySQL. It begins with definitions of terminology like B-Trees, keys, indexes, and clustering. It then covers topics like primary keys, compound indexes, and optimization techniques. Use cases are presented to demonstrate how to design indexes for different querying needs, such as normalization, geospatial queries, and pagination. The document aims to explain indexing concepts and help the reader design efficient indexes.
Este documento proporciona varios ejemplos de cómo configurar y pasar parámetros a procedimientos almacenados desde VB.NET a SQL, incluyendo el uso de parámetros individuales, tablas y arrays. También incluye notas sobre consultas básicas, tablas temporales y conexiones a bases de datos.
Expanding the control over the operating system from the databaseBernardo Damele A. G.
Using a database, either via a SQL injection or via direct connection, as a stepping stone to control the underlying operating system can be achieved.
There is much to say on operating system control by owning a database server: Windows registry access, anti-forensics technique to establish an out-of-band stealth connection, buffer overflow exploitation with memory protections bypass and custom user-defined function injection.
These slides have been presented at SOURCE Conference in Barcelona on September 21, 2009.
Time based CAPTCHA protected SQL injection through SOAP-webserviceFrans Rosén
Frans Rosén of detectify discusses SQL injection techniques through a SOAP webservice. He provides steps to create a proof of concept attack with as few requests as possible to find vulnerable storefronts. Examples are given of time-based SQL injection payloads using substring, ascii, and sleep functions to retrieve the username and potentially other information about the target host. A link is also provided to a paper on SQL injection optimization and obfuscation techniques.
Fight Club was produced by several companies and distributed primarily by 20th Century Fox corporation and its parent company 20th Century Fox Entertainment. Smaller distribution companies were also involved. 20th Century Fox is a major film studio and distributor that focuses on large, mainstream blockbuster films. While an independent film like a student project would require a smaller, low-budget distributor, occasionally small independent films are successful enough to be picked up by a major studio for wider release, like City of God. Shutter Island was produced by Paramount Pictures and Phoenix Pictures and distributed mainly by Paramount Pictures, a privately owned major studio known for blockbuster action, horror and comedy films. Both studios primarily handle large films due to their resources
Este documento fornece informações sobre cursos de qualificação profissional oferecidos pelo Centro de Educação Tecnológica do Amazonas. Nele é informado que cada candidato receberá uma senha para se inscrever em até dois cursos e que é necessário comprovar a conclusão de cursos básicos para se inscrever em cursos avançados. Também são listadas as áreas dos cursos de qualificação, informática e idiomas.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms.
This document summarizes a study on consumption and saving patterns among households in an urban area of Kochi, India, with a focus on fishermen communities. It acknowledges contributions from researchers and thanks local officials for their support. The study reviewed literature showing that consumption has shifted from traditional to processed foods and from low to high-value goods. Savings are mostly held in physical assets like land and buildings rather than financial assets. The study aims to explore if these trends hold for fishermen communities. A methodology involving primary surveys in three wards was used, with teams examining consumption behaviors and savings patterns.
Integrating specification in to BIM process and delivery | Empowering you in ...The NBS
Slides from a presentation by Stefan Mordue at the Empowering you in a BIM world event from NBS in June 2016.
Stefan Mordue is a chartered architect, construction project manager, writer and NBS consultant. He is co-author of a number of publications, including ‘BIM for Construction Health & Safety’ and ‘BIM for Dummies’ and was part of the team that delivered a joint project for NBS and UK BIM Task Group to produce a BIM toolkit in preparation for the government’s BIM mandate. Stefan is a visiting lecturer at Heriot-Watt University in Edinburgh, and he sits on a number of industry and technical standard committees, including the British Standards Institute Occupational Health & Safety Management and the Architects Council of Europe BIM working group. He was a founding member of the CIC BIM2050 working group.
In diesem Vortrag werden verschiedene Möglichkeiten beschrieben, Zugriffe auf Daten in einer Datenbank zu protokollieren. Es werden Möglichkeiten aufgezeigt, die gesammelten Daten auszuwerten. Der Schwerpunkt liegt auf der Beschreibung von Oracle Audit Vault. Audit Vault bietet eine Plattform, Auditdaten zentral zu sammeln, zu schützen und auszuwerten.
The document discusses principles, phases, and strategies of trade negotiations. It outlines five principles of negotiation: separate the people from the problem, focus on interests not position, invent options for mutual gain, insist on objective criteria, and focus on interests not position. It describes the three phases of negotiations as the pre-negotiation, negotiation, and post-negotiation phases. Finally, it discusses four common negotiation strategies: integrative, competitive, flexibility, and passivity strategies.
The Purpose of this document is to share the common market practice being used for delivery of IBOR information by service providers for asset managers and introduce a comprehensive and practical framework to make information delivery as a Competitive Advantage.
The document summarizes key aspects of India's new Foreign Trade Policy for 2015-2020, which was announced on April 1, 2015. Some of the main points include:
- It introduces two new schemes, the Merchandise Exports from India Scheme (MEIS) and Services Exports from India Scheme (SEIS), which provide rewards/duty credits for exporting specified goods and services.
- It aims to boost exports and ease of doing business through various incentives and simplification of processes. Special focus is given to sectors like defense, hi-tech, and MSME clusters.
- Export benefits are now extended to units located in Special Economic Zones. Self-certification is enabled for manufacturers to qualify
By Segments – EHR, Wireless, Mobile; By Type – Applications, Sensor, Functionality, End-Use; By Region – North America, Latin America, Europe, APAC, RoW; By Country; Company Profiles, Recommendations
BIM Through The Project Timeline | Ecobuild 2016The NBS
Level-2 BIM will be mandated in the UK in 2016. The document discusses how BIM can be used throughout a project timeline, including standards like PAS 1192 and classification systems to organize building information. It also outlines practical BIM tools within the specification, design, and coordination processes like template specifications, generic objects for design, and reports to check for broken links. Consideration of these tools can help provide information throughout a BIM project.
Este documento describe tres prácticas relacionadas con Asterisk Gateway Interface (AGI). La Parte I explica cómo crear un script PHP para leer números de un archivo de texto y reproducirlos mediante AGI. La Parte II instruye cómo crear una extensión para llamar a un script AGI sin parámetros que reproduzca dos archivos de audio. La Parte III instruye cómo configurar un cable T1 cruzado para una práctica de troncales digitales.
El documento presenta una introducción al shell scripting en Linux. Explica que el shell provee una interfaz para administrar comandos y programas, y funciona como un lenguaje de programación. Luego describe conceptos como variables, estructuras condicionales como if/then, ciclos for/while, y operadores para realizar comparaciones y manipular archivos y cadenas. Finalmente recomienda recursos adicionales para ampliar conocimientos sobre shell scripting.
Slides del taller "The Linux Shell. Shell Scripting desde 0" presentado durante las actividades de la BugCon Security Conferences efectuado en la Escuela Superior de Computo -ESCOM- en el D.F., México, del 13 al 15 de febrero del 2013.
Este documento introduce la sintaxis básica de PHP y MySQL. Explica cómo insertar código PHP en una página web, los tipos de datos soportados como cadenas, enteros y booleanos, y estructuras de control como if/else y while. También cubre temas como variables, constantes, funciones y arrays.
Este documento describe conceptos básicos de bases de datos, archivos y flujos de entrada y salida. Explica la jerarquía de datos desde bases de datos hasta campos y caracteres, y cómo los flujos permiten la entrada y salida de datos. Además, detalla funciones como get y put para leer y escribir caracteres, y el uso de operadores como >> y << para E/S con archivos de manera análoga a la entrada y salida estándar.
El documento presenta una lista de herramientas para construir compiladores y analizadores léxicos y sintácticos. Luego describe brevemente a Flex y Bison, indicando que Flex genera analizadores léxicos y Bison analizadores sintácticos a partir de una gramática. Finalmente, ofrece un ejemplo de cómo crear un compilador simple para una calculadora usando Flex y Bison.
en la siguiente diapositiva les brindamos información acerca de lenguaje ensamblador, sus características, instrucciones, registros y las ventajas y desventajas que este posee
Semana 9 entradas salidas estandar y pipesvictdiazm
Este documento explica los conceptos de entrada y salida estándar, error estándar y tuberías en Linux. Describe cómo la entrada estándar (stdin) suele estar conectada al teclado y la salida estándar (stdout) a la pantalla. Explica cómo redirigir stdin, stdout y stderr a archivos y cómo conectar la salida de un programa a la entrada de otro usando tuberías.
El documento proporciona información sobre lenguajes de programación. Explica que un lenguaje de programación está diseñado para expresar procesos y crear programas, y consiste en símbolos y reglas que definen su estructura y significado. También presenta ejemplos de código en C++ y C.
Fight Club was produced by several companies and distributed primarily by 20th Century Fox corporation and its parent company 20th Century Fox Entertainment. Smaller distribution companies were also involved. 20th Century Fox is a major film studio and distributor that focuses on large, mainstream blockbuster films. While an independent film like a student project would require a smaller, low-budget distributor, occasionally small independent films are successful enough to be picked up by a major studio for wider release, like City of God. Shutter Island was produced by Paramount Pictures and Phoenix Pictures and distributed mainly by Paramount Pictures, a privately owned major studio known for blockbuster action, horror and comedy films. Both studios primarily handle large films due to their resources
Este documento fornece informações sobre cursos de qualificação profissional oferecidos pelo Centro de Educação Tecnológica do Amazonas. Nele é informado que cada candidato receberá uma senha para se inscrever em até dois cursos e que é necessário comprovar a conclusão de cursos básicos para se inscrever em cursos avançados. Também são listadas as áreas dos cursos de qualificação, informática e idiomas.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms.
This document summarizes a study on consumption and saving patterns among households in an urban area of Kochi, India, with a focus on fishermen communities. It acknowledges contributions from researchers and thanks local officials for their support. The study reviewed literature showing that consumption has shifted from traditional to processed foods and from low to high-value goods. Savings are mostly held in physical assets like land and buildings rather than financial assets. The study aims to explore if these trends hold for fishermen communities. A methodology involving primary surveys in three wards was used, with teams examining consumption behaviors and savings patterns.
Integrating specification in to BIM process and delivery | Empowering you in ...The NBS
Slides from a presentation by Stefan Mordue at the Empowering you in a BIM world event from NBS in June 2016.
Stefan Mordue is a chartered architect, construction project manager, writer and NBS consultant. He is co-author of a number of publications, including ‘BIM for Construction Health & Safety’ and ‘BIM for Dummies’ and was part of the team that delivered a joint project for NBS and UK BIM Task Group to produce a BIM toolkit in preparation for the government’s BIM mandate. Stefan is a visiting lecturer at Heriot-Watt University in Edinburgh, and he sits on a number of industry and technical standard committees, including the British Standards Institute Occupational Health & Safety Management and the Architects Council of Europe BIM working group. He was a founding member of the CIC BIM2050 working group.
In diesem Vortrag werden verschiedene Möglichkeiten beschrieben, Zugriffe auf Daten in einer Datenbank zu protokollieren. Es werden Möglichkeiten aufgezeigt, die gesammelten Daten auszuwerten. Der Schwerpunkt liegt auf der Beschreibung von Oracle Audit Vault. Audit Vault bietet eine Plattform, Auditdaten zentral zu sammeln, zu schützen und auszuwerten.
The document discusses principles, phases, and strategies of trade negotiations. It outlines five principles of negotiation: separate the people from the problem, focus on interests not position, invent options for mutual gain, insist on objective criteria, and focus on interests not position. It describes the three phases of negotiations as the pre-negotiation, negotiation, and post-negotiation phases. Finally, it discusses four common negotiation strategies: integrative, competitive, flexibility, and passivity strategies.
The Purpose of this document is to share the common market practice being used for delivery of IBOR information by service providers for asset managers and introduce a comprehensive and practical framework to make information delivery as a Competitive Advantage.
The document summarizes key aspects of India's new Foreign Trade Policy for 2015-2020, which was announced on April 1, 2015. Some of the main points include:
- It introduces two new schemes, the Merchandise Exports from India Scheme (MEIS) and Services Exports from India Scheme (SEIS), which provide rewards/duty credits for exporting specified goods and services.
- It aims to boost exports and ease of doing business through various incentives and simplification of processes. Special focus is given to sectors like defense, hi-tech, and MSME clusters.
- Export benefits are now extended to units located in Special Economic Zones. Self-certification is enabled for manufacturers to qualify
By Segments – EHR, Wireless, Mobile; By Type – Applications, Sensor, Functionality, End-Use; By Region – North America, Latin America, Europe, APAC, RoW; By Country; Company Profiles, Recommendations
BIM Through The Project Timeline | Ecobuild 2016The NBS
Level-2 BIM will be mandated in the UK in 2016. The document discusses how BIM can be used throughout a project timeline, including standards like PAS 1192 and classification systems to organize building information. It also outlines practical BIM tools within the specification, design, and coordination processes like template specifications, generic objects for design, and reports to check for broken links. Consideration of these tools can help provide information throughout a BIM project.
Este documento describe tres prácticas relacionadas con Asterisk Gateway Interface (AGI). La Parte I explica cómo crear un script PHP para leer números de un archivo de texto y reproducirlos mediante AGI. La Parte II instruye cómo crear una extensión para llamar a un script AGI sin parámetros que reproduzca dos archivos de audio. La Parte III instruye cómo configurar un cable T1 cruzado para una práctica de troncales digitales.
El documento presenta una introducción al shell scripting en Linux. Explica que el shell provee una interfaz para administrar comandos y programas, y funciona como un lenguaje de programación. Luego describe conceptos como variables, estructuras condicionales como if/then, ciclos for/while, y operadores para realizar comparaciones y manipular archivos y cadenas. Finalmente recomienda recursos adicionales para ampliar conocimientos sobre shell scripting.
Slides del taller "The Linux Shell. Shell Scripting desde 0" presentado durante las actividades de la BugCon Security Conferences efectuado en la Escuela Superior de Computo -ESCOM- en el D.F., México, del 13 al 15 de febrero del 2013.
Este documento introduce la sintaxis básica de PHP y MySQL. Explica cómo insertar código PHP en una página web, los tipos de datos soportados como cadenas, enteros y booleanos, y estructuras de control como if/else y while. También cubre temas como variables, constantes, funciones y arrays.
Este documento describe conceptos básicos de bases de datos, archivos y flujos de entrada y salida. Explica la jerarquía de datos desde bases de datos hasta campos y caracteres, y cómo los flujos permiten la entrada y salida de datos. Además, detalla funciones como get y put para leer y escribir caracteres, y el uso de operadores como >> y << para E/S con archivos de manera análoga a la entrada y salida estándar.
El documento presenta una lista de herramientas para construir compiladores y analizadores léxicos y sintácticos. Luego describe brevemente a Flex y Bison, indicando que Flex genera analizadores léxicos y Bison analizadores sintácticos a partir de una gramática. Finalmente, ofrece un ejemplo de cómo crear un compilador simple para una calculadora usando Flex y Bison.
en la siguiente diapositiva les brindamos información acerca de lenguaje ensamblador, sus características, instrucciones, registros y las ventajas y desventajas que este posee
Semana 9 entradas salidas estandar y pipesvictdiazm
Este documento explica los conceptos de entrada y salida estándar, error estándar y tuberías en Linux. Describe cómo la entrada estándar (stdin) suele estar conectada al teclado y la salida estándar (stdout) a la pantalla. Explica cómo redirigir stdin, stdout y stderr a archivos y cómo conectar la salida de un programa a la entrada de otro usando tuberías.
El documento proporciona información sobre lenguajes de programación. Explica que un lenguaje de programación está diseñado para expresar procesos y crear programas, y consiste en símbolos y reglas que definen su estructura y significado. También presenta ejemplos de código en C++ y C.
La estructura de un compilador está dividida en cuatro módulos principales: el preprocesador, la compilación, el ensamblado y el enlazado. El preprocesador transforma el código fuente original en código puro. La compilación analiza el código sintáctica y semánticamente y genera código intermedio. El ensamblado convierte el código intermedio en código binario no enlazado. El enlazado produce el código binario final enlazado con librerías.
Este documento describe cómo instalar y configurar Asterisk, un sistema de telefonía IP de código abierto. Explica cómo instalar las dependencias de Asterisk en un sistema Linux, agregar los repositorios de Asterisk e instalar el software. También resume brevemente qué es Asterisk, incluyendo que es software de código abierto para telefonía sobre IP que se ejecuta en sistemas Linux y soporta protocolos como SIP, IAX y canalizaciones.
Este documento resume los componentes básicos del lenguaje C++, incluyendo tipos de datos, constantes y variables, operadores, instrucciones de control, funciones, arreglos, apuntadores, objetos, archivos de entrada y salida. Explica conceptos como tipos de datos primitivos, cadenas, manipulación de archivos, flujos de entrada y salida, y el operador de resolución de ámbito.
Este documento explica los scripts de Linux, incluyendo que un script es un proceso por lotes que permite automatizar tareas repetitivas, que se crean usando un editor de texto y se ejecutan a través de la línea de comandos, y que utilizan variables, condicionales y bucles para controlar el flujo de ejecución.
Python fue creado a finales de los 80's por Guido van Rossum en los Países Bajos. Es un lenguaje de código abierto administrado por la Python Software Foundation. Python alcanzó la versión 1.0 en 1994 e introdujo herramientas de programación funcional como lambda, reduce, filter y map.
Este documento resume la tercera parte de una presentación sobre la administración básica de Ubuntu Server. Explica el lenguaje de scripts Shell, incluyendo variables, sentencias echo, read, expresiones y control de flujo. También cubre la gestión de aplicaciones mediante apt, aptitude y dpkg, explicando cómo funcionan y cómo instalar, actualizar y eliminar paquetes. Finalmente, introduce conceptos como procesos, programación de tareas con cron, comandos de red y arranque de servicios.
El documento describe las operaciones de entrada/salida en Perl, incluyendo la lectura de entrada estándar, la apertura y lectura/escritura de archivos, y el uso del selector por defecto. Explica cómo el operador <STDIN> lee líneas de entrada, mientras que <> lee líneas de múltiples archivos especificados como argumentos. También cubre temas como control de errores, buffering y almacenamiento de manejadores en variables escalares.
Este documento presenta una introducción al lenguaje de programación C. Explica que C es un lenguaje estructurado desarrollado en 1972 para sistemas operativos como UNIX. Incluye ejemplos de código C básico como "Hola Mundo" y discute conceptos como variables, constantes, funciones, estructuras de datos y operadores lógicos. El objetivo general es proporcionar una guía para principiantes en la programación en C.
Este documento presenta una introducción al lenguaje de programación C. C fue desarrollado en 1972 y es un lenguaje estructurado que permite programar a bajo y alto nivel. Explica conceptos básicos como variables, constantes, funciones, estructuras de datos y cómo escribir programas simples "Hola Mundo".
Mapa conceptuales de proyectos social y productivo.pdfYudetxybethNieto
Los proyectos socio productivos constituyen una variante de formación laboral de incalculable valor formativo, que propician la participación activa, protagónica y participativa de los escolares, de conjunto con miembros de la familia y la comunidad.
2. 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
Julián Dunayevich, Lázaro Baca,
Andrés Brassara, Santiago Alberch,
Antonio Lobo
3. 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
Julián Dunayevich, Lázaro Baca,
Andrés Brassara, Santiago Alberch,
Antonio Lobo
4. AGI
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)
4
Julián Dunayevich, Lázaro Baca,
Andrés Brassara, Santiago Alberch,
Antonio Lobo
5. 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
Julián Dunayevich, Lázaro Baca,
Andrés Brassara, Santiago Alberch,
Antonio Lobo
6. 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.
6
Julián Dunayevich, Lázaro Baca,
Andrés Brassara, Santiago Alberch,
Antonio Lobo
7. 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/agi-
bin
Cómo llamar al script desde el dialplan:
exten => 123,1,Answer()
exten => 123,2,AGI(mi_script.php,arg1,..,argn)
7
Julián Dunayevich, Lázaro Baca,
Andrés Brassara, Santiago Alberch,
Antonio Lobo
8. 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
Julián Dunayevich, Lázaro Baca,
Andrés Brassara, Santiago Alberch,
Antonio Lobo
9. 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: $inputn");
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: $linen");
fputs($out,$line."n");
fflush($out);
}
9
Julián Dunayevich, Lázaro Baca,
Andrés Brassara, Santiago Alberch,
Antonio Lobo
10. 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
Julián Dunayevich, Lázaro Baca,
Andrés Brassara, Santiago Alberch,
Antonio Lobo
11. 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
Julián Dunayevich, Lázaro Baca,
Andrés Brassara, Santiago Alberch,
Antonio Lobo
12. 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
Julián Dunayevich, Lázaro Baca,
Andrés Brassara, Santiago Alberch,
Antonio Lobo
13. 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
13
Julián Dunayevich, Lázaro Baca,
Andrés Brassara, Santiago Alberch,
Antonio Lobo
14. Ejercicio 10: AGI
Implementar una funcionalidad en
Asterisk utilizando AGI
14
Julián Dunayevich, Lázaro Baca,
Andrés Brassara, Santiago Alberch,
Antonio Lobo
15. Curso elaborado por
Julián Dunayevich, Lázaro Baca, Andrés Brassara,
Santiago Alberch y Antonio Lobo
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, SantiagoAutores: Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago
Alberch, Antonio LoboAlberch, Antonio Lobo
(cc) Creative Commons - Attribute Non-Commercial Share-Alike 2.5(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
julian@dunayevich.com
lazaro.baca@gmail.com
abrassara@gmail.com
salberch@gmail.com
antoniwolf@gmail.com
15
Julián Dunayevich, Lázaro Baca,
Andrés Brassara, Santiago Alberch,
Antonio Lobo