SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Encuentro Nacional
                de Linux 2012

Desarrollo de Aplicaciones de Telefonía
                     Sobre la Plataforma Asterisk

                      Filein Rommel León
                    Blog: http://blog.oaxrom.com
¿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.
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.
¿Cómo de desarrollan
aplicaciones en Asterisk ?
¿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.
¿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
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
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.
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.
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).
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
          –
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.
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.
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.
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..
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.
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
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
●   $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
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) );
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
¿ Preguntas ?




●   Más info: http://www.asterisk.org
           ●   http://blog.oaxrom.com

Weitere ähnliche Inhalte

Was ist angesagt?

OpenVPN como solución de Redes Privadas Virtuales Corporativas
OpenVPN como solución de Redes Privadas Virtuales CorporativasOpenVPN como solución de Redes Privadas Virtuales Corporativas
OpenVPN como solución de Redes Privadas Virtuales CorporativasRommel León
 
Profundizando manager
Profundizando managerProfundizando manager
Profundizando managerElio Rojano
 
Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...
Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...
Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...PaloSanto Solutions
 
Seguridad en Asterisk: Un acercamiento detallado
Seguridad en Asterisk: Un acercamiento detalladoSeguridad en Asterisk: Un acercamiento detallado
Seguridad en Asterisk: Un acercamiento detalladoPaloSanto Solutions
 
Curso de introducción a Sphinx | Irontec
Curso de introducción a Sphinx | IrontecCurso de introducción a Sphinx | Irontec
Curso de introducción a Sphinx | IrontecIrontec
 
Integración segura de extensiones remotas con Elastix utilizando Sangoma SBC
Integración segura de extensiones remotas con Elastix utilizando Sangoma SBCIntegración segura de extensiones remotas con Elastix utilizando Sangoma SBC
Integración segura de extensiones remotas con Elastix utilizando Sangoma SBCPaloSanto Solutions
 
El proyecto Elastix
El proyecto ElastixEl proyecto Elastix
El proyecto Elastix0351 Grupo
 
El control de la informacion
El control de la informacionEl control de la informacion
El control de la informacionElio Rojano
 
Sistemas de VoIP con Asterisk: Modulo I
Sistemas de VoIP con Asterisk: Modulo ISistemas de VoIP con Asterisk: Modulo I
Sistemas de VoIP con Asterisk: Modulo IGabriel Astudillo
 
Utilerias 6 e_campos,rivera,parra.
Utilerias 6 e_campos,rivera,parra.Utilerias 6 e_campos,rivera,parra.
Utilerias 6 e_campos,rivera,parra.Alejandra5432
 
Configuración paso a paso centralita PBX Planet IPX300-W
Configuración paso a paso centralita PBX Planet IPX300-WConfiguración paso a paso centralita PBX Planet IPX300-W
Configuración paso a paso centralita PBX Planet IPX300-WElvis Barahona Alvarado
 
VOIP I - Marzo 2010
VOIP I - Marzo 2010VOIP I - Marzo 2010
VOIP I - Marzo 2010Jose Cordova
 
Qué hace tu Asterisk cuando no miras
Qué hace tu Asterisk cuando no mirasQué hace tu Asterisk cuando no miras
Qué hace tu Asterisk cuando no mirasElio Rojano
 
La estructura es fundamental: PBX IP, tarjetas de telefonía y herramientas pa...
La estructura es fundamental: PBX IP, tarjetas de telefonía y herramientas pa...La estructura es fundamental: PBX IP, tarjetas de telefonía y herramientas pa...
La estructura es fundamental: PBX IP, tarjetas de telefonía y herramientas pa...PaloSanto Solutions
 

Was ist angesagt? (20)

Voice OVER IP
Voice OVER IPVoice OVER IP
Voice OVER IP
 
(in) seguridad en VoIP
(in) seguridad en VoIP(in) seguridad en VoIP
(in) seguridad en VoIP
 
OpenVPN como solución de Redes Privadas Virtuales Corporativas
OpenVPN como solución de Redes Privadas Virtuales CorporativasOpenVPN como solución de Redes Privadas Virtuales Corporativas
OpenVPN como solución de Redes Privadas Virtuales Corporativas
 
Profundizando manager
Profundizando managerProfundizando manager
Profundizando manager
 
Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...
Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...
Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...
 
Curso de Asterisk (e-Verano 2007)
Curso de Asterisk (e-Verano 2007)Curso de Asterisk (e-Verano 2007)
Curso de Asterisk (e-Verano 2007)
 
Seguridad en Asterisk: Un acercamiento detallado
Seguridad en Asterisk: Un acercamiento detalladoSeguridad en Asterisk: Un acercamiento detallado
Seguridad en Asterisk: Un acercamiento detallado
 
Asterix: simplemente...
Asterix: simplemente...Asterix: simplemente...
Asterix: simplemente...
 
Curso de introducción a Sphinx | Irontec
Curso de introducción a Sphinx | IrontecCurso de introducción a Sphinx | Irontec
Curso de introducción a Sphinx | Irontec
 
Integración segura de extensiones remotas con Elastix utilizando Sangoma SBC
Integración segura de extensiones remotas con Elastix utilizando Sangoma SBCIntegración segura de extensiones remotas con Elastix utilizando Sangoma SBC
Integración segura de extensiones remotas con Elastix utilizando Sangoma SBC
 
El proyecto Elastix
El proyecto ElastixEl proyecto Elastix
El proyecto Elastix
 
Instalacion de Elastix
Instalacion de ElastixInstalacion de Elastix
Instalacion de Elastix
 
Utilerias
UtileriasUtilerias
Utilerias
 
El control de la informacion
El control de la informacionEl control de la informacion
El control de la informacion
 
Sistemas de VoIP con Asterisk: Modulo I
Sistemas de VoIP con Asterisk: Modulo ISistemas de VoIP con Asterisk: Modulo I
Sistemas de VoIP con Asterisk: Modulo I
 
Utilerias 6 e_campos,rivera,parra.
Utilerias 6 e_campos,rivera,parra.Utilerias 6 e_campos,rivera,parra.
Utilerias 6 e_campos,rivera,parra.
 
Configuración paso a paso centralita PBX Planet IPX300-W
Configuración paso a paso centralita PBX Planet IPX300-WConfiguración paso a paso centralita PBX Planet IPX300-W
Configuración paso a paso centralita PBX Planet IPX300-W
 
VOIP I - Marzo 2010
VOIP I - Marzo 2010VOIP I - Marzo 2010
VOIP I - Marzo 2010
 
Qué hace tu Asterisk cuando no miras
Qué hace tu Asterisk cuando no mirasQué hace tu Asterisk cuando no miras
Qué hace tu Asterisk cuando no miras
 
La estructura es fundamental: PBX IP, tarjetas de telefonía y herramientas pa...
La estructura es fundamental: PBX IP, tarjetas de telefonía y herramientas pa...La estructura es fundamental: PBX IP, tarjetas de telefonía y herramientas pa...
La estructura es fundamental: PBX IP, tarjetas de telefonía y herramientas pa...
 

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

Charla Asterisk - UPCI
Charla Asterisk - UPCICharla Asterisk - UPCI
Charla Asterisk - UPCIguest1e22df3
 
Implementado Sistemas de VoIP con FOSS
Implementado Sistemas de VoIP con FOSSImplementado Sistemas de VoIP con FOSS
Implementado Sistemas de VoIP con FOSSGabriel Astudillo
 
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02Configuracindeescenariosrealesconasterisk 131117194346-phpapp02
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02leonardo miranda
 
Elastix Manual Español
Elastix Manual EspañolElastix Manual Español
Elastix Manual Españolunad
 
Elastixusermanualspanish0 9-alpha-120917223851-phpapp02-141002081528-phpapp01
Elastixusermanualspanish0 9-alpha-120917223851-phpapp02-141002081528-phpapp01Elastixusermanualspanish0 9-alpha-120917223851-phpapp02-141002081528-phpapp01
Elastixusermanualspanish0 9-alpha-120917223851-phpapp02-141002081528-phpapp01Leonel_Iracheta
 
Curso de VoIP / Parte 04: Conceptos avanzados
Curso de VoIP / Parte 04: Conceptos avanzadosCurso de VoIP / Parte 04: Conceptos avanzados
Curso de VoIP / Parte 04: Conceptos avanzadosIrontec
 
Diseño de una centralita telefónica con elastix
Diseño de una centralita telefónica con elastix Diseño de una centralita telefónica con elastix
Diseño de una centralita telefónica con elastix Oscar Medianero Chiscul
 
Construya su propia pbx asteriks elastix
Construya su propia pbx asteriks   elastixConstruya su propia pbx asteriks   elastix
Construya su propia pbx asteriks elastixjuanes2001
 
Ayc Mexico True Ip
Ayc Mexico True IpAyc Mexico True Ip
Ayc Mexico True Ipdaten
 
Proyecto final
Proyecto finalProyecto final
Proyecto finalmoisesmo19
 
Manual Asterisk en FreeBSD
Manual Asterisk en FreeBSDManual Asterisk en FreeBSD
Manual Asterisk en FreeBSDERy Chan
 
Presentacion asterisk
Presentacion asteriskPresentacion asterisk
Presentacion asteriskarchimd
 
MANUAL PARA CONFIGURACIÓN DE ELASTIX
MANUAL PARA CONFIGURACIÓN DE ELASTIXMANUAL PARA CONFIGURACIÓN DE ELASTIX
MANUAL PARA CONFIGURACIÓN DE ELASTIXmiguelangelperezhenao
 

Ähnlich wie Charla sobre Desarrollo de Aplicaciones en Asterisk con AGI para el ENLI 2012 (20)

Charla Asterisk - UPCI
Charla Asterisk - UPCICharla Asterisk - UPCI
Charla Asterisk - UPCI
 
Tecnología IP Leccion 2
Tecnología IP Leccion 2Tecnología IP Leccion 2
Tecnología IP Leccion 2
 
Implementado Sistemas de VoIP con FOSS
Implementado Sistemas de VoIP con FOSSImplementado Sistemas de VoIP con FOSS
Implementado Sistemas de VoIP con FOSS
 
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02Configuracindeescenariosrealesconasterisk 131117194346-phpapp02
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02
 
Elastix Manual Español
Elastix Manual EspañolElastix Manual Español
Elastix Manual Español
 
Elastixusermanualspanish0 9-alpha-120917223851-phpapp02-141002081528-phpapp01
Elastixusermanualspanish0 9-alpha-120917223851-phpapp02-141002081528-phpapp01Elastixusermanualspanish0 9-alpha-120917223851-phpapp02-141002081528-phpapp01
Elastixusermanualspanish0 9-alpha-120917223851-phpapp02-141002081528-phpapp01
 
Curso de VoIP / Parte 04: Conceptos avanzados
Curso de VoIP / Parte 04: Conceptos avanzadosCurso de VoIP / Parte 04: Conceptos avanzados
Curso de VoIP / Parte 04: Conceptos avanzados
 
Software de VOIP
Software de VOIPSoftware de VOIP
Software de VOIP
 
Elastix Connect
Elastix ConnectElastix Connect
Elastix Connect
 
Diseño de una centralita telefónica con elastix
Diseño de una centralita telefónica con elastix Diseño de una centralita telefónica con elastix
Diseño de una centralita telefónica con elastix
 
Práctica VOIP
Práctica VOIPPráctica VOIP
Práctica VOIP
 
Presentación Corporativa EuropeSIP 2009
Presentación Corporativa EuropeSIP 2009Presentación Corporativa EuropeSIP 2009
Presentación Corporativa EuropeSIP 2009
 
Construya su propia pbx asteriks elastix
Construya su propia pbx asteriks   elastixConstruya su propia pbx asteriks   elastix
Construya su propia pbx asteriks elastix
 
Ayc Mexico True Ip
Ayc Mexico True IpAyc Mexico True Ip
Ayc Mexico True Ip
 
Proyecto
ProyectoProyecto
Proyecto
 
Proyecto final
Proyecto finalProyecto final
Proyecto final
 
Manual Asterisk en FreeBSD
Manual Asterisk en FreeBSDManual Asterisk en FreeBSD
Manual Asterisk en FreeBSD
 
Presentacion asterisk
Presentacion asteriskPresentacion asterisk
Presentacion asterisk
 
MANUAL PARA CONFIGURACIÓN DE ELASTIX
MANUAL PARA CONFIGURACIÓN DE ELASTIXMANUAL PARA CONFIGURACIÓN DE ELASTIX
MANUAL PARA CONFIGURACIÓN DE ELASTIX
 
EXIACore
EXIACoreEXIACore
EXIACore
 

Kürzlich hochgeladen

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 

Kürzlich hochgeladen (10)

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 

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

  • 1. Encuentro Nacional de Linux 2012 Desarrollo de Aplicaciones de Telefonía Sobre la Plataforma Asterisk Filein Rommel León Blog: http://blog.oaxrom.com
  • 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. 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.
  • 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. ¿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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. $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. 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. 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. ¿ Preguntas ? ● Más info: http://www.asterisk.org ● http://blog.oaxrom.com