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

Embed Size (px)

Citation preview

  • 1. Encuentro Nacionalde Linux 2012Desarrollo de Aplicaciones de Telefona Sobre la Plataforma AsteriskFilein Rommel LenBlog: http://blog.oaxrom.com

2. Qu es Asterisk ?Asterisk es una plataforma de Telefona IP Profesional desarrollada en 1999por la empresa Digium [ http://www.digium.com ] a travs del inicial lder delproyecto Mark Spencer.El objetivo inicial de Asterisk es funcionar como centralita telefnica quepermitiera conmutar redes de voz a travs de Software & Hardware Abiertopara sustituir a conmutadores de circuitos tradicionales que ten an un precioalto.Actualmente Asterisk puede conectarse a cualquier red de telefon a p blica yasea 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 enwww.asterisk.org para su uso, modificacin, ejecucin, distribucin y estudio. 3. Diferencia entre VozIP & Telefona IPVoIP Se refiere a la transmisin de voz a travs de redes de datos. Es un proceso simple que convierte la voz a paquete de datos a travs de un medio de entrada como un micrfono y lo convierte en paquete de dato haciendo uso de un cdec y viceversa para su decodificacin.Telefona IP: Hace uso de VoIP pero le brinda un uso al tratamiento de la VoIP para generar aplicaciones cmo lo puede ser un sistema de cobro automatizado va telefnica, un men interactivo o un robot que enve informacin hablada en base a las peticin del que llama. 4. Cmo de desarrollanaplicaciones en Asterisk ? 5. Cmo de desarrollanaplicaciones en Asterisk ?C : De forma nativa se pueden programar mdulos que se integren alcore de Asterisk y funcionen internamente esto mediante el lenguaje deprogramacin C, que es sobre el cul el ms del 93% de Asterisk estdesarrollado. PHP no ms de 100 lneas que no representa ni el 0.02%del cdigo de Asterisk.Por ejemplo aplicaciones nativas integradas en Asterisk: Grabacin dellamadas, correos de voz, sms, followme, monitoreo, marcado, etc.Las aplicaciones nativas se recomiendan usar para aumentar la eficienciade la ejecucin del app de Asterisk. 6. Cmo puedo desarrollaraplicaciones en Asterisk sin perdermi vida social ?En Asterisk existen 2 interfaces para programar aplicaciones eintegrar bases de datos, lenguajes de programacin con laplataforma de telefona. AMI :Asterisk Manager Interface AGI : Asterisk Gateway Interface 7. Asterisk Manager InterfaceAMI es un protocolo interno de Asterisk que nos permitecontrolar, administrar, conocer e interactuar en tiempo real contodo lo que sucede dentro de Asterisk.Por ejemplo:Saber desde una aplicacin externa el tiempo de duracin de unallamada.Colgar una llamada.Lanzar una llamada de forma automtica.Transferir una llamada 8. Asterisk Manager InterfaceConocer cuantas llamadas se estn realizando y el detalle de cadauna de ellas.El funcionamiento de AMI es a travs de un puerto TCP adnde nos conectamos y mediante con comandos internos de AMIpodemos interactuar con el servidor de Telefona IPGeneralmente este puerto es 5038 y puede ser accedido desde unTelnet o mediante una aplicacin con sockets externamente encualquier momento sin necesidad que se tenga que marcar unaextensin. 9. Ejemplos de Asterisk ManagerInterfaceTarificadores telefnicos: que verifiquen en tiempo real cunto tiempolleva un usuario llamando y a que destino en caso de sobrepasar elcrdito cortar la llamada.Click to Call: Colocar un campo de texto en una pgina web dondeintroduzcan su nmero telefnico y automticamente un script marque auna extensin del conmutador y enlace con el nmero del cliente. Lousa la seccin Amarilla.Marcador automatizado: En base a una base de datos que marque yenlace a una extensin cundo la llamada se establezca.Caller ID Popup: Script que abre una pgina pasando como parmetroel Caller ID de quien llama para que alguna aplicacin web muestretoda la informacin del cliente en automtico. 10. Asterisk Gateway Interface Es un mdulo integrado en el core de Asterisk que nospermitir ejecutar una accin en algn lenguaje deprogramacin cundo se origine una llamada a la extensindnde est definido el AGI; Ejecucin en el dialplan de Asterisk. Los AGI pueden ser programados en cualquier lenguaje deprogramacin que funcione con STDOUT(Audio), STDIN(Voz,Tonos DTMF) & STDERR(Mensajes en consola). 11. Ejemplo de Asterisk GatewayInterface Ejemplo de AGI en el dialplan de Asterisk cuando se ejecute una llamada acelular:[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 InterfaceEl Asterisk Gateway Interface se ejecuta al marcar una extensindel conmutador, por lo que un disparador es una llamada desdeun telfono.Integrar Asterisk con hardware de domtica de tal forma quecuando se marque una extensin prenda o apague luces, abracortinas, etc.Al marcar una extensin se ejecute el respaldo de una base dedatos. 13. Ejemplo de uso de Asterisk Gateway InterfaceSe incorporen robots Text to Speech & Speech To Text quepermitan al hablante reconocer su voz y en base a la informacinintroducida regresar una respuesta por voz con algn sintetizadorde voz automatizado.Hacer un cobro va tarjeta de crdito en base a los valoresintroducidos por el hablante mediante los tonos DTMF (Teclaspresionadas en el telfono del usuario) .Encuestas Telefnicas. 14. Casos de Exito Integracin de un sistema para Localizacin GPS de Flotillas deCamiones Informacin sobre el servicio tcnico de equipos en garanta afabricante de electrodomsticos. Tarificador Telefnico prepago & postpago a empresa deTelfonos Pblicos. Encuestador automtico para empresa de Marketing. Marcador automtico customizado a base de datos de empresade cobro de deudas. Aplicacin de Reconocimiento de voz para Campaa Poltica. 15. Ejemplo de AGI: Requisitos Una instalacin de Asterisk Libreras de PHPAGI Acceso de root a la consola del servidor Una base de datos SQLite puede funcionar Un editor de textos bsico: nano Conocimientos bsicos de PHP Una pizza & una Pepsi.. 16. Idea Un sistema de encuestas de preferenciaselectorales que liste los candidatos a lapresidencia, capture la opcin del que llama ylo guarde en una base de datos. Si vuelve a llamar el usuario que lo identifiquepor caller id y no le premita votar una segundavez, solo que le liste el porcentaje de lavotacin capturada. 17. Editamos el AGI Por default todos los AGIs deben estar en/var/lib/asterisk/agi-bin con permisos deejecucinnano /var/lib/asterisk/agi-bin/votoTelefonico.php 18. ImplementandoEn el dialplan de Asterisk editamos el archivo/etc/asterisk/extensions_custom.conf (usamos freePBX, si es asterisk purosolo /etc/asterisk/extensions.conf ).[voto-telefonico]exten=>1002,1,Answerexten=>1002,2,agi(votoTelefonico.php)exten=>1002,3,Hangup[from-internal-custom]include=>voto-telefonico 19. $agi->answer();Cdigo del AGI en PHP #$agi->text2wav("En base a la reglamentaciondel ife y las campanias politicas se hadesactivado el sistema de encuesta telefonica.Se ha publicado el codigo fuente de laaplicacion en blog punto oaxrom punto com.Gracias."); #exit(0); $saludo = (date("H")