Transcript
Page 1: Integrando voz (rtmp) con fop2

Integrando voz con FOP2

Utilizando Flash RTMP

Nicolás Gudiñ[email protected]://www.fop2.com

ElastixWorld 2011

Tuesday, November 8, 2011

Page 2: Integrando voz (rtmp) con fop2

¿ Qué es el FOP 2 ?

Consola de operadora

Flash Operator Panel

Tuesday, November 8, 2011

Page 3: Integrando voz (rtmp) con fop2

¿ 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

Page 4: Integrando voz (rtmp) con fop2

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

Page 5: Integrando voz (rtmp) con fop2

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

Page 6: Integrando voz (rtmp) con fop2

¿ 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

Page 7: Integrando voz (rtmp) con fop2

¿ 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

Page 8: Integrando voz (rtmp) con fop2

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

Page 9: Integrando voz (rtmp) con fop2

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

Page 10: Integrando voz (rtmp) con fop2

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

Page 11: Integrando voz (rtmp) con fop2

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

Page 12: Integrando voz (rtmp) con fop2

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

Page 13: Integrando voz (rtmp) con fop2

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

Page 14: Integrando voz (rtmp) con fop2

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

Page 15: Integrando voz (rtmp) con fop2

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

Page 16: Integrando voz (rtmp) con fop2

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

Page 17: Integrando voz (rtmp) con fop2

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

Page 18: Integrando voz (rtmp) con fop2

GUI: de consola a teléfono

Módulo de softphoneSelección de entrada de audio

Dialpad / DTMF

Tuesday, November 8, 2011

Page 19: Integrando voz (rtmp) con fop2

GUI: de consola a teléfono

Reubicación de botones

de control

Tuesday, November 8, 2011

Page 20: Integrando voz (rtmp) con fop2

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

Page 21: Integrando voz (rtmp) con fop2

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

Page 22: Integrando voz (rtmp) con fop2

Administrador Web

Tuesday, November 8, 2011

Page 23: Integrando voz (rtmp) con fop2

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

Page 24: Integrando voz (rtmp) con fop2

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

Page 25: Integrando voz (rtmp) con fop2

¿ Preguntas ?

Nos vemos en:

Nicolás Gudiñ[email protected]

http://www.fop2.com

Tuesday, November 8, 2011