Post on 27-May-2015
description
Integrando voz con FOP2
Utilizando Flash RTMP
Nicolás Gudiñoasternic@gmail.comhttp://www.fop2.com
ElastixWorld 2011
Tuesday, November 8, 2011
¿ Qué es el FOP 2 ?
Consola de operadora
Flash Operator Panel
Tuesday, November 8, 2011
¿ Qué es el FOP 2 ?Consola de operadora basada en Web
Permite ver y controlar llamados en curso, quién está hablando con quién, llamados esperando en cola, estados de agente, etc.
Galardonado como mejor addon de Elastix.¡Gracias Palosanto!
Tuesday, November 8, 2011
Control de colasAgregar o quitar miembros de cola
Pausar o despausar miembros de cola
Captura de llamados esperando en cola
Otras funcionalidadesDirectorio telefónico, click to call
Mensajería instantánea / chat
Interfaz web para escuchar y organizar o borrar Correos de Voz
Interfaz web para escuchar y buscar grabaciones iniciadas desde FOP2
Módulo de FreePBX para configurar y administrar usuarios, permisos y botones.
Envío de SMS por placas Khomp
Control de llamadasOriginación de llamadas
Transfererncia de llamadas
Captura de llamadas
Escuchas, Coaching
Grabación y corte de llamadas
Control de conferenciasControlar mudo/habla en participantesInvitar participantesEchar participantes
Cerrar la conferencia
Detección de habla
¿ Qué es el FOP 2 ?
Tuesday, November 8, 2011
Arquitectura FOP2
websocketsxmlsockets
*ServidorAsterisk
ServidorFOP2
AMIAsterisk Manager
Cliente/NavegadorAplicación Web
Mediador / Proxy
Conecta al AMI
Acepta conexiones de clientes web
Maneja usuarios y permisos
Máquina de estado
Aplicación WEB
Javascript / Ajax
HTML & CSS
Un poco de PHP
Flash Invisible
TCP 5038 TCP 4445
Asterisk puro y duro
AMI habilitado
Tuesday, November 8, 2011
¿ Qué tiene de especial ?
Web/HTTP es un protocolo desconectado, sin estado.
El AMI de Asterisk envia eventos de forma continua: protocolo conectado
FOP2 habilita una conexión conectada/síncrona con el navegador web.
Verdadero tiempo real. No se hace polling.
Máquina de estado
Tuesday, November 8, 2011
¿ Qué es RTMP ?
Real Time Messaging Protocol
Desarrollado por Macromedia para hacer stream de audio, video y datos entre un servidor específico y clientes Flash
Adobe adquirió Macromedia e hizo pública la especificación RTMP, lo que permitió que empezaran a surgir implementaciones no propietarias de clientes y servidores.
Tuesday, November 8, 2011
Desafío: FOP2 + Voz
Adobe Flash soporta transmisión de datos continua via xmlsockets
Adobe Flash soporta transporte de audio y video en tiempo real usando RTMP (Real Time Messaging Protocol)
FOP2 utiliza xmlsockets de Flash para mostrar y controlar estado en tiempo real
Entonces, ¿por qué no integrar audio en FOP2 usando RTMP?
Tuesday, November 8, 2011
iOS
Ventajas de un web phone en Flash
Flash está ampliamente adoptado en múltiples plataformas, disponible para casi todos.
No requiere descargar o instalar componentes adicionales.
Experiencia “integrada” para el usuario
Relativamente simple para desarrolladores.
Tecnología existente actualmente: no es un prototipo o un draft.
Tuesday, November 8, 2011
No todas son ventajasLatencia. Las conexiones RTMP deben centralizarse en el servidor, no se establece conexión de medios directa entre endpoints.
Para contrarrestrar este problema, Adobe desarrollo otro protocolo, RTMPF, que puede negociar media end to end, pero como toda solución similar tiene problemas para atravesar NAT, además es un protocolo propietario.
Cancelación de eco no muy buena, es casi indispensable utilizar headsets.
Tuesday, November 8, 2011
Para el monitoreo en tiempo real fue necesario desarrollar un proxy para intermediar entre el Asterisk Manager Interface y Flash xmlsockets
Integrar audio en FOP2 requiere de una aproximación similar: desarrollar/implementar un proxy para mediar entre Flash RTMP y SIP/RTP
En el futuro un navegador podrá hablar SIP de forma nativa encapsulando SIP sobre websockets y WebRTC para el transporte de audio/video.http://sip-on-the-web.aliax.net/
Encarando la integración
Tuesday, November 8, 2011
Encarando la integración
rtmplite http://code.google.com/p/rtmplite/
Alternativas Existentes
freeswitch http://www.freeswitch.org/
Escrito en python
Incluye un proxy SIP
Soporta video en RTMP
Puede utilizar videoio como soft phone white label, programable via javascript
Madurez: beta
Escrito en C / C++
Habla SIP / RTMP
No soporta video RTMP
Incluye un softphone white label, programable via javascript, escrito en Flex.
Madurez: alta
Tuesday, November 8, 2011
Encarando la integración
rtmplite http://code.google.com/p/rtmplite/
Alternativas Existentes
freeswitch http://www.freeswitch.org/
Python: Escalabilidad?
Python 2.6 requerido (Elastix/Centos incluye Python 2.4)
Transcodificación limitada (requiere py-audio)
DTMF problemático
Soporta video :)
Escalabilidad asegurada
No requiere instalar versiones conflictivas
Transcodificación incluída
DTMF funcional
No soporta video :(
Tuesday, November 8, 2011
Freeswitch es una alternativa lógica, madura y estable. mod_rtmp existe ahora y funciona bien.
El mismo puede utilizarse para participar de la conferencia semanal de desarrolladores Freeswitch desde un navegador web. http://conference.freeswitch.org/conf/
Freeswitch habla SIP y puede transcodificar entre Speex wideband (utilizado por rtmp) y codecs narrowband como ulaw/alaw, utilizados por Asterisk.
Encarando la integración
Tuesday, November 8, 2011
Encarando la integración
¿ Asterisk y Freeswitch corriendo en un mismo servidor, es posible ?
¡SI!A no preocuparse... para situaciones de alta
demanda es perfectamente factible correr FOP2/Freeswitch/RTMP en servidor aparte al Asterisk.
Tuesday, November 8, 2011
Arquitectura FOP2 - RTMP
RTMP
*ServidorAsterisk Proxy RTMP
SIP
Cliente/NavegadorSoftphone Web
Mediador / Proxy
Libfreeswitch
Sesion RTMP = Registro SIP
Transcodificación Speex Wideband - Codec Asterisk.
Softphone WEB
Javascript
Adobe Flash
UDP 5060 TCP 1935
Asterisk puro y duro
Dispositivos SIP
Tuesday, November 8, 2011
FOP2: de consola a teléfonoReconversión de la interfaz de usuario, hay que superar la consola e incorporar la funcionalidad de teléfono.
Agregado de Dialpad y DTMF
Agregado de Acciones: Answer, Hold, Reject
Reubicación de botones de control de llamados dentro del llamado activo.
Tuesday, November 8, 2011
GUI: de consola a teléfono
Módulo de softphoneSelección de entrada de audio
Dialpad / DTMF
Tuesday, November 8, 2011
GUI: de consola a teléfono
Reubicación de botones
de control
Tuesday, November 8, 2011
Mediar entre tecnologías/protocolos. SIP/RTMP/RTP
Transcodificar entre Speex wideband y pcm-u/a
Mapear una sesión autenticada RTMP con una registración SIP.
Manejar transferencias y hold a nivel SIP (nociones no existentes en RTMP)
SIP / RTMP Proxy
Tuesday, November 8, 2011
Utilizar Freeswitch como librería con los módulos estrictamente necesarios.
La idea es hacerlo muy sencillo de instalar. Versión precompilada, empaquetado en RPM.
Plugin en FOP2 que autoconfigura el proxy, no hay necesidad de manipular archivos de configuración a mano.
SIP / RTMP Proxy
Tuesday, November 8, 2011
Administrador Web
Tuesday, November 8, 2011
Click to call en página web.
Sistema de conferencias híbrido, participantes 100% web, participantes telefónicos, etc.
Otras posibles aplicacionesy usos para el proxy rtmp/sip
Tuesday, November 8, 2011
A João Mesquita por su colaboración y profundo conocimiento de Freeswitch.
A Palosanto por el reconocimiento y apoyo.
A todo el equipo de Toga Soluciones Integrales
Y a todos ustedes por seguir ahí sentados
¡Gracias!
Tuesday, November 8, 2011
¿ Preguntas ?
Nos vemos en:
Nicolás Gudiñoasternic@gmail.com
http://www.fop2.com
Tuesday, November 8, 2011