1. Integrando voz con
FOP2
Utilizando Flash RTMP
Nicolás Gudiño
asternic@gmail.com
http://www.fop2.com
ElastixWorld 2011
Tuesday, November 8, 2011
2. ¿ Qué es el FOP 2 ?
Flash Operator Panel
Consola de operadora
Tuesday, November 8, 2011
3. ¿ 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
4. ¿ Qué es el FOP 2 ?
Control de llamadas Control de colas
Originación de llamadas Agregar o quitar miembros de cola
Transfererncia de llamadas Pausar o despausar miembros de cola
Captura de llamadas Captura de llamados esperando en cola
Escuchas, Coaching
Otras funcionalidades
Grabación y corte de llamadas
Directorio telefónico, click to call
Control de conferencias Mensajería instantánea / chat
Interfaz web para escuchar y organizar o
Controlar mudo/habla en participantes
borrar Correos de Voz
Invitar participantes
Interfaz web para escuchar y buscar
Echar participantes
grabaciones iniciadas desde FOP2
Cerrar la conferencia
Módulo de FreePBX para configurar y
Detección de habla administrar usuarios, permisos y botones.
Envío de SMS por placas Khomp
Tuesday, November 8, 2011
5. Arquitectura FOP2
*
AMI websockets
Asterisk Manager xmlsockets
TCP 5038 TCP 4445
Servidor Servidor Cliente/Navegador
Asterisk FOP2 Aplicación Web
Asterisk puro y duro Mediador / Proxy Aplicación WEB
AMI habilitado Conecta al AMI Javascript / Ajax
Acepta conexiones de HTML & CSS
clientes web
Un poco de PHP
Maneja usuarios y permisos
Flash Invisible
Máquina de estado
Tuesday, November 8, 2011
6. ¿ 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
7. ¿ 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
8. 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
9. Ventajas de un web phone
en Flash
Flash está ampliamente adoptado en
múltiples plataformas, disponible para casi
todos. iOS
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
10. No todas son ventajas
Latencia. 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
11. Encarando la integración
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/
Tuesday, November 8, 2011
12. Encarando la integración
Alternativas Existentes
rtmplite freeswitch
http://code.google.com/p/rtmplite/ http://www.freeswitch.org/
Escrito en python Escrito en C / C++
Incluye un proxy SIP Habla SIP / RTMP
Soporta video en RTMP No soporta video RTMP
Puede utilizar videoio Incluye un softphone
como soft phone white white label, programable
label, programable via via javascript, escrito en
javascript Flex.
Madurez: beta Madurez: alta
Tuesday, November 8, 2011
13. Encarando la integración
Alternativas Existentes
rtmplite freeswitch
http://code.google.com/p/rtmplite/ http://www.freeswitch.org/
Python: Escalabilidad? Escalabilidad asegurada
Python 2.6 requerido No requiere instalar
(Elastix/Centos incluye Python 2.4) versiones conflictivas
Transcodificación Transcodificación
limitada (requiere py-audio) incluída
DTMF problemático DTMF funcional
Soporta video :) No soporta video :(
Tuesday, November 8, 2011
14. Encarando la integración
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.
Tuesday, November 8, 2011
15. 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
16. Arquitectura FOP2 - RTMP
*
SIP RTMP
UDP 5060 TCP 1935
Servidor Cliente/Navegador
Proxy RTMP
Asterisk Softphone Web
Asterisk puro y duro Mediador / Proxy Softphone WEB
Dispositivos SIP Libfreeswitch Javascript
Sesion RTMP = Registro SIP Adobe Flash
Transcodificación Speex
Wideband - Codec Asterisk.
Tuesday, November 8, 2011
17. FOP2: de consola a teléfono
Reconversió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
18. GUI: de consola a teléfono
Dialpad / DTMF
Módulo de softphone
Selección de entrada de audio
Tuesday, November 8, 2011
19. GUI: de consola a teléfono
Reubicación de
botones
de control
Tuesday, November 8, 2011
20. SIP / RTMP Proxy
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)
Tuesday, November 8, 2011
21. SIP / RTMP Proxy
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.
Tuesday, November 8, 2011
23. Otras posibles aplicaciones
y usos para el proxy rtmp/sip
Click to call en página web.
Sistema de conferencias híbrido, participantes
100% web, participantes telefónicos, etc.
Tuesday, November 8, 2011
24. ¡Gracias!
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
Tuesday, November 8, 2011
25. ¿ Preguntas ?
Nos vemos en:
Nicolás Gudiño
asternic@gmail.com
http://www.fop2.com
Tuesday, November 8, 2011