SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

Similar a Desarrollo de Aplicaciones de Telefonía sobre Asterisk

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
 

Similar a Desarrollo de Aplicaciones de Telefonía sobre Asterisk (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
 

Último

Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Luis Olivera
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 

Último (20)

Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 

Desarrollo de Aplicaciones de Telefonía sobre Asterisk

  • 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