SlideShare ist ein Scribd-Unternehmen logo
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?

IPSec: настройка туннеля с шифрованием между двумя Mikrotik
IPSec: настройка туннеля с шифрованием между двумя MikrotikIPSec: настройка туннеля с шифрованием между двумя Mikrotik
IPSec: настройка туннеля с шифрованием между двумя Mikrotikmikrotik-training
 
Using Kamailio for Scalability and Security
Using Kamailio for Scalability and SecurityUsing Kamailio for Scalability and Security
Using Kamailio for Scalability and SecurityFred Posner
 
cert-manager로 let's encrypt 인증서 발급
cert-manager로 let's encrypt 인증서 발급cert-manager로 let's encrypt 인증서 발급
cert-manager로 let's encrypt 인증서 발급choi sungwook
 
Openstack zun,virtual kubelet
Openstack zun,virtual kubeletOpenstack zun,virtual kubelet
Openstack zun,virtual kubeletChanyeol yoon
 
OpenStack Best Practices and Considerations - terasky tech day
OpenStack Best Practices and Considerations  - terasky tech dayOpenStack Best Practices and Considerations  - terasky tech day
OpenStack Best Practices and Considerations - terasky tech dayArthur Berezin
 
Asterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus Gateway
Asterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus GatewayAsterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus Gateway
Asterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus GatewayAlessandro Polidori
 
Phpconf 2013 - Agile Telephony Applications with PAMI and PAGI
Phpconf 2013 - Agile Telephony Applications with PAMI and PAGIPhpconf 2013 - Agile Telephony Applications with PAMI and PAGI
Phpconf 2013 - Agile Telephony Applications with PAMI and PAGIMarcelo Gornstein
 
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화OpenStack Korea Community
 
Kamalio and Asterisk: What, Why & How
Kamalio and Asterisk: What, Why & HowKamalio and Asterisk: What, Why & How
Kamalio and Asterisk: What, Why & HowFred Posner
 
Socket programming
Socket programmingSocket programming
Socket programmingAnurag Tomar
 
Faster packet processing in Linux: XDP
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDPDaniel T. Lee
 
1 session installation
1 session installation1 session installation
1 session installationRahul Hada
 
Crystal Hirschorn_Building Internal Developer Platforms that will make the en...
Crystal Hirschorn_Building Internal Developer Platforms that will make the en...Crystal Hirschorn_Building Internal Developer Platforms that will make the en...
Crystal Hirschorn_Building Internal Developer Platforms that will make the en...VMware Tanzu
 
OpenStack을 중심으로 한 오픈 소스 & 상용 하이브리드 클라우드
OpenStack을 중심으로 한 오픈 소스 & 상용 하이브리드 클라우드OpenStack을 중심으로 한 오픈 소스 & 상용 하이브리드 클라우드
OpenStack을 중심으로 한 오픈 소스 & 상용 하이브리드 클라우드Ian Choi
 

Was ist angesagt? (20)

Astricon 10 (October 2013) - SIP over WebSocket on Kamailio
Astricon 10 (October 2013) - SIP over WebSocket on KamailioAstricon 10 (October 2013) - SIP over WebSocket on Kamailio
Astricon 10 (October 2013) - SIP over WebSocket on Kamailio
 
IPSec: настройка туннеля с шифрованием между двумя Mikrotik
IPSec: настройка туннеля с шифрованием между двумя MikrotikIPSec: настройка туннеля с шифрованием между двумя Mikrotik
IPSec: настройка туннеля с шифрованием между двумя Mikrotik
 
Using Kamailio for Scalability and Security
Using Kamailio for Scalability and SecurityUsing Kamailio for Scalability and Security
Using Kamailio for Scalability and Security
 
Mod security
Mod securityMod security
Mod security
 
cert-manager로 let's encrypt 인증서 발급
cert-manager로 let's encrypt 인증서 발급cert-manager로 let's encrypt 인증서 발급
cert-manager로 let's encrypt 인증서 발급
 
Openstack zun,virtual kubelet
Openstack zun,virtual kubeletOpenstack zun,virtual kubelet
Openstack zun,virtual kubelet
 
OpenStack Best Practices and Considerations - terasky tech day
OpenStack Best Practices and Considerations  - terasky tech dayOpenStack Best Practices and Considerations  - terasky tech day
OpenStack Best Practices and Considerations - terasky tech day
 
Asterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus Gateway
Asterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus GatewayAsterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus Gateway
Asterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus Gateway
 
Los mejores trucos de Asterisk
Los mejores trucos de AsteriskLos mejores trucos de Asterisk
Los mejores trucos de Asterisk
 
Burp Suite Starter
Burp Suite StarterBurp Suite Starter
Burp Suite Starter
 
Phpconf 2013 - Agile Telephony Applications with PAMI and PAGI
Phpconf 2013 - Agile Telephony Applications with PAMI and PAGIPhpconf 2013 - Agile Telephony Applications with PAMI and PAGI
Phpconf 2013 - Agile Telephony Applications with PAMI and PAGI
 
Asterisk Complete Training
Asterisk Complete TrainingAsterisk Complete Training
Asterisk Complete Training
 
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
 
Kamalio and Asterisk: What, Why & How
Kamalio and Asterisk: What, Why & HowKamalio and Asterisk: What, Why & How
Kamalio and Asterisk: What, Why & How
 
Socket programming
Socket programmingSocket programming
Socket programming
 
eBPF maps 101
eBPF maps 101eBPF maps 101
eBPF maps 101
 
Faster packet processing in Linux: XDP
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDP
 
1 session installation
1 session installation1 session installation
1 session installation
 
Crystal Hirschorn_Building Internal Developer Platforms that will make the en...
Crystal Hirschorn_Building Internal Developer Platforms that will make the en...Crystal Hirschorn_Building Internal Developer Platforms that will make the en...
Crystal Hirschorn_Building Internal Developer Platforms that will make the en...
 
OpenStack을 중심으로 한 오픈 소스 & 상용 하이브리드 클라우드
OpenStack을 중심으로 한 오픈 소스 & 상용 하이브리드 클라우드OpenStack을 중심으로 한 오픈 소스 & 상용 하이브리드 클라우드
OpenStack을 중심으로 한 오픈 소스 & 상용 하이브리드 클라우드
 

Ä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
 
Configuración de escenarios reales con asterisk
Configuración de escenarios reales con asteriskConfiguración de escenarios reales con asterisk
Configuración de escenarios reales con asteriskDiego Llanes
 
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
 
Configuración de escenarios reales con asterisk
Configuración de escenarios reales con asteriskConfiguración de escenarios reales con asterisk
Configuración de escenarios reales con asterisk
 
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
 

Kürzlich hochgeladen

Bloque 1 _ Lectura base - Sistemas Distribuidos
Bloque 1 _ Lectura base - Sistemas DistribuidosBloque 1 _ Lectura base - Sistemas Distribuidos
Bloque 1 _ Lectura base - Sistemas DistribuidosLuisAntonioLopezGome
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxencinasm992
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...Kevin Serna
 
Gestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerGestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerRobertoCarrancioFern
 
Uso de las TIC en la vida cotidiana .
Uso de las TIC en la vida cotidiana       .Uso de las TIC en la vida cotidiana       .
Uso de las TIC en la vida cotidiana .itzyrivera61103
 
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALJORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALGuadalinfoHuscarGuad
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docxwerito139410
 
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdfPons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdffrank0071
 
editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docxssusere34b451
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Luis Fernando Uribe Villamil
 
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptxNIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptxjarniel1
 
proyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptualesproyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptualesssuserbe0d1c
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadaspqeilyn0827
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareAndres Avila
 
manual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdfmanual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdfprofmartinsuarez
 
Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.sofiasonder
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialEducática
 
taller de tablas en word para estudiantes de secundaria
taller de tablas en word para estudiantes de secundariataller de tablas en word para estudiantes de secundaria
taller de tablas en word para estudiantes de secundariaandresingsiseo
 
Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfMarianneBAyn
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.saravalentinat22
 

Kürzlich hochgeladen (20)

Bloque 1 _ Lectura base - Sistemas Distribuidos
Bloque 1 _ Lectura base - Sistemas DistribuidosBloque 1 _ Lectura base - Sistemas Distribuidos
Bloque 1 _ Lectura base - Sistemas Distribuidos
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
 
Gestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerGestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL Server
 
Uso de las TIC en la vida cotidiana .
Uso de las TIC en la vida cotidiana       .Uso de las TIC en la vida cotidiana       .
Uso de las TIC en la vida cotidiana .
 
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALJORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
 
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdfPons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
 
editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docx
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
 
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptxNIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
 
proyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptualesproyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptuales
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadas
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de Software
 
manual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdfmanual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdf
 
Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicial
 
taller de tablas en word para estudiantes de secundaria
taller de tablas en word para estudiantes de secundariataller de tablas en word para estudiantes de secundaria
taller de tablas en word para estudiantes de secundaria
 
Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdf
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.
 

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