Encuentro Nacional                de Linux 2012Desarrollo de Aplicaciones de Telefonía                     Sobre la Plataf...
¿Qué es Asterisk ?●    Asterisk es una plataforma de Telefonía IP Profesional desarrollada en 1999    por la empresa Digiu...
Diferencia entre VozIP &                     Telefonía IP●    VoIP           –   Se refiere a la transmisión de voz a trav...
¿Cómo de desarrollanaplicaciones en Asterisk ?
¿Cómo de desarrollan        aplicaciones en Asterisk ?●    C : De forma nativa se pueden programar módulos que se integren...
¿Cómo puedo desarrollar    aplicaciones en Asterisk sin perder              mi vida social ?●    En Asterisk existen 2 int...
Asterisk Manager Interface●    AMI es un protocolo interno de Asterisk que nos permite    controlar, administrar, conocer ...
Asterisk Manager Interface●    Conocer cuantas llamadas se están realizando y el detalle de cada    una de ellas.    El fu...
Ejemplos de Asterisk Manager              Interface●    Tarificadores telefónicos: que verifiquen en tiempo real cuánto ti...
Asterisk Gateway Interface●   Es un módulo integrado en el core de Asterisk que nos    permitirá ejecutar una acción en al...
Ejemplo de Asterisk Gateway              Interface●   Ejemplo de AGI en el dialplan de Asterisk cuando se ejecute una llam...
Ejemplos de uso de Asterisk           Gateway Interface    El Asterisk Gateway Interface se ejecuta al marcar una extensió...
Ejemplo de uso de Asterisk           Gateway Interface●    Se incorporen robots Text to Speech & Speech To Text que    per...
Casos de Exito●   Integración de un sistema para Localización GPS de Flotillas de    Camiones●   Información sobre el serv...
Ejemplo de AGI: Requisitos●   Una instalación de Asterisk●   Librerías de PHPAGI●   Acceso de root a la consola del servid...
Idea●   Un sistema de encuestas de preferencias    electorales que liste los candidatos a la    presidencia, capture la op...
Editamos el AGI●   Por default todos los AGIs deben estar en    /var/lib/asterisk/agi-bin con permisos de    ejecución    ...
Implementando●    En el dialplan de Asterisk editamos el archivo    /etc/asterisk/extensions_custom.conf (usamos freePBX, ...
●   $agi->answer();●          Código del AGI en PHP●   #$agi->text2wav("En base a la reglamentacion    del ife y las campa...
Creamos la base de datos en                sqlite3●    CREATE TABLE numeros( numero varchar(40) not null ,    nirserie var...
Ejecutamos el AGI●   Entramos a la consola de Asterisk       –   asterisk -rvvv●   Marcamos la extensión 1002 del AGI●   G...
¿ Preguntas ?●   Más info: http://www.asterisk.org           ●   http://blog.oaxrom.com
Próxima SlideShare
Cargando en…5
×

Charla sobre Desarrollo de Aplicaciones en Asterisk con AGI para el ENLI 2012

7.921 visualizaciones

Publicado el

Publicado en: Tecnología
0 comentarios
1 recomendación
Estadísticas
Notas
  • Sé el primero en comentar

Sin descargas
Visualizaciones
Visualizaciones totales
7.921
En SlideShare
0
De insertados
0
Número de insertados
1.461
Acciones
Compartido
0
Descargas
143
Comentarios
0
Recomendaciones
1
Insertados 0
No insertados

No hay notas en la diapositiva.

Charla sobre Desarrollo de Aplicaciones en Asterisk con AGI para el ENLI 2012

  1. 1. Encuentro Nacional de Linux 2012Desarrollo de Aplicaciones de Telefonía Sobre la Plataforma Asterisk Filein Rommel León Blog: http://blog.oaxrom.com
  2. 2. ¿Qué es Asterisk ?● Asterisk es una plataforma de Telefonía IP Profesional desarrollada en 1999 por la empresa Digium [ http://www.digium.com ] a través del inicial líder del proyecto Mark Spencer.● El objetivo inicial de Asterisk es funcionar como centralita telefónica que permitiera conmutar redes de voz a través de Software & Hardware Abierto para sustituir a conmutadores de circuitos tradicionales que ten ían un precio alto.● Actualmente Asterisk puede conectarse a cualquier red de telefon ía p ública ya sea Troncales Analogicas, Troncales Digitales E1 ISDN & R2, Troncales GSM, SS7, Troncales SIP, IAX2, H323, SCCP, MGCP, etc.● Asterisk es un proyecto completamente libre y puede descargarse en www.asterisk.org para su uso, modificación, ejecución, distribución y estudio.
  3. 3. Diferencia entre VozIP & Telefonía IP● VoIP – Se refiere a la transmisión de voz a través de redes de datos. Es un proceso simple que convierte la voz a paquete de datos a través de un medio de entrada como un micrófono y lo convierte en paquete de dato haciendo uso de un códec y viceversa para su decodificación.● Telefonía IP: – Hace uso de VoIP pero le brinda un uso al tratamiento de la VoIP para generar aplicaciones cómo lo puede ser un sistema de cobro automatizado vía telefónica, un menú interactivo o un robot que envíe información “hablada” en base a las petición del que llama.
  4. 4. ¿Cómo de desarrollanaplicaciones en Asterisk ?
  5. 5. ¿Cómo de desarrollan aplicaciones en Asterisk ?● C : De forma nativa se pueden programar módulos que se integren al core de Asterisk y funcionen internamente esto mediante el lenguaje de programación C, que es sobre el cuál el más del 93% de Asterisk está desarrollado. PHP no más de 100 líneas que no representa ni el 0.02% del código de Asterisk. Por ejemplo aplicaciones nativas integradas en Asterisk: Grabación de llamadas, correos de voz, sms, followme, monitoreo, marcado, etc.● Las aplicaciones nativas se recomiendan usar para aumentar la eficiencia de la ejecución del app de Asterisk.
  6. 6. ¿Cómo puedo desarrollar aplicaciones en Asterisk sin perder mi vida social ?● En Asterisk existen 2 interfaces para programar aplicaciones e integrar bases de datos, lenguajes de programación con la plataforma de telefonía. – AMI : Asterisk Manager Interface – AGI : Asterisk Gateway Interface
  7. 7. Asterisk Manager Interface● AMI es un protocolo interno de Asterisk que nos permite controlar, administrar, conocer e interactuar en tiempo real con todo lo que sucede dentro de Asterisk. Por ejemplo:● Saber desde una aplicación externa el tiempo de duración de una llamada.● Colgar una llamada.● Lanzar una llamada de forma automática.● Transferir una llamada
  8. 8. Asterisk Manager Interface● Conocer cuantas llamadas se están realizando y el detalle de cada una de ellas. El funcionamiento de AMI es a través de un puerto TCP a dónde nos conectamos y mediante con comandos internos de AMI podemos interactuar con el servidor de Telefonía IP● Generalmente este puerto es 5038 y puede ser accedido desde un Telnet o mediante una aplicación con sockets externamente en cualquier momento sin necesidad que se tenga que marcar una extensión.
  9. 9. Ejemplos de Asterisk Manager Interface● Tarificadores telefónicos: que verifiquen en tiempo real cuánto tiempo lleva un usuario llamando y a que destino en caso de sobrepasar el crédito cortar la llamada.● Click to Call: Colocar un campo de texto en una página web donde introduzcan su número telefónico y automáticamente un script marque a una extensión del conmutador y enlace con el número del cliente. Lo usa la sección Amarilla.● Marcador automatizado: En base a una base de datos que marque y enlace a una extensión cuándo la llamada se establezca.● Caller ID Popup: Script que abre una página pasando como parámetro el Caller ID de quien llama para que alguna aplicación web muestre toda la información del cliente en automático.
  10. 10. Asterisk Gateway Interface● Es un módulo integrado en el core de Asterisk que nos permitirá ejecutar una acción en algún lenguaje de programación cuándo se origine una llamada a la extensión dónde esté definido el AGI; Ejecución en el dialplan de Asterisk.● Los AGI pueden ser programados en cualquier lenguaje de programación que funcione con STDOUT(Audio), STDIN(Voz, Tonos DTMF) & STDERR(Mensajes en consola).
  11. 11. Ejemplo de Asterisk Gateway Interface● Ejemplo de AGI en el dialplan de Asterisk cuando se ejecute una llamada a celular: [valida044] – exten=>_04XXXXXXXXXXX,1,Set(NUMERO=${EXTEN}) – exten=>_04XXXXXXXXXXX,n,AGI(validaPermitido044_045.php) – exten=>_04XXXXXXXXXXX,n,verbose(${PERMITIDO}) – ;exten=>_04XXXXXXXXXXX,n,gotoif($["${PERMITIDO}"="NOP"]? cuelga:outrt-5,${NUMERO},1) – exten=>_04XXXXXXXXXXX,n,gotoif($["${PERMITIDO}"="NOP"]? cuelga:marca) – exten=>_04XXXXXXXXXXX,n(marca),verbose(${PERMITIDO}) – exten=>_04XXXXXXXXXXX,n,DIAL(DAHDI/g0/$ {NUMERO},30,tTwW) – exten=>_04XXXXXXXXXXX,n(cuelga),hangup –
  12. 12. Ejemplos de uso de Asterisk Gateway Interface El Asterisk Gateway Interface se ejecuta al marcar una extensión del conmutador, por lo que un disparador es una llamada desde un teléfono.● Integrar Asterisk con hardware de domótica de tal forma que cuando se marque una extensión prenda o apague luces, abra cortinas, etc.● Al marcar una extensión se ejecute el respaldo de una base de datos.
  13. 13. Ejemplo de uso de Asterisk Gateway Interface● Se incorporen robots Text to Speech & Speech To Text que permitan al hablante reconocer su voz y en base a la información introducida regresar una respuesta por voz con algún sintetizador de voz automatizado.● Hacer un cobro vía tarjeta de crédito en base a los valores introducidos por el hablante mediante los tonos DTMF (Teclas presionadas en el teléfono del usuario) .● Encuestas Telefónicas.
  14. 14. Casos de Exito● Integración de un sistema para Localización GPS de Flotillas de Camiones● Información sobre el servicio técnico de equipos en garantía a fabricante de electrodomésticos.● Tarificador Telefónico prepago & postpago a empresa de Teléfonos Públicos.● Encuestador automático para empresa de Marketing.● Marcador automático customizado a base de datos de empresa de cobro de deudas.● Aplicación de Reconocimiento de voz para Campaña Política.
  15. 15. Ejemplo de AGI: Requisitos● Una instalación de Asterisk● Librerías de PHPAGI● Acceso de root a la consola del servidor● Una base de datos SQLite puede funcionar● Un editor de textos básico: nano● Conocimientos básicos de PHP● Una pizza & una Pepsi..
  16. 16. Idea● Un sistema de encuestas de preferencias electorales que liste los candidatos a la presidencia, capture la opción del que llama y lo guarde en una base de datos.● Si vuelve a llamar el usuario que lo identifique por caller id y no le premita votar una segunda vez, solo que le liste el porcentaje de la votación capturada.
  17. 17. Editamos el AGI● Por default todos los AGIs deben estar en /var/lib/asterisk/agi-bin con permisos de ejecución nano /var/lib/asterisk/agi-bin/votoTelefonico.php
  18. 18. Implementando● En el dialplan de Asterisk editamos el archivo /etc/asterisk/extensions_custom.conf (usamos freePBX, si es asterisk puro solo /etc/asterisk/extensions.conf ). [voto-telefonico] exten=>1002,1,Answer exten=>1002,2,agi(votoTelefonico.php) exten=>1002,3,Hangup [from-internal-custom] include=>voto-telefonico
  19. 19. ● $agi->answer();● Código del AGI en PHP● #$agi->text2wav("En base a la reglamentacion del ife y las campanias politicas se ha desactivado el sistema de encuesta telefonica. Se ha publicado el codigo fuente de la aplicacion en blog punto oaxrom punto com. Gracias.");●● #exit(0);●● $saludo = (date("H")<6)?"madrugada": ( (date("H")<12)?"buenosdias": ((date("H")<19)?"buenastardes":"buenasnoche
  20. 20. Creamos la base de datos en sqlite3● CREATE TABLE numeros( numero varchar(40) not null , nirserie varchar(6) not null default , id_candidato integer(2) default , fecha datetime, primary key(numero) );● CREATE TABLE candidatos( id_candidato integer not null , nombre varchar(100) not null default , observaciones text default , partido varchar(40) not null default , primary key(id_candidato) );● CREATE TABLE votos( id_candidato integer not null, votos double default 0, primary key(id_candidato) );
  21. 21. Ejecutamos el AGI● Entramos a la consola de Asterisk – asterisk -rvvv● Marcamos la extensión 1002 del AGI● Gestionamos en la consola el comportamiento del AGI
  22. 22. ¿ Preguntas ?● Más info: http://www.asterisk.org ● http://blog.oaxrom.com

×