Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

17
Mamen González 4 Noviembre 2011 Ringio o cómo hacer realidad una aplicación de telefonía en Grails

description

Ponencia de Mamen González en Greach 2011 "Ringio, o como hacer realidad una aplicación de telefonía con Grails"

Transcript of Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

Page 1: Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

Mamen González4 Noviembre 2011

Ringio o cómo hacer realidad una

aplicación de telefonía en Grails

Page 2: Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

ÍNDICE

1. ¿Qué es Ringio?

2. Características

3. Ringio en acción

4. Arquitectura

5. Evolución de la arquitectura: Ringio over Rayo

6. Ventajas de RoR

7. ¿Por qué Grails?

8. Conclusiones

Page 3: Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

1 - ¿Qué es Ringio?

3

Ringio es una centralita telefónica virtual, integrada con CRMs, que ayuda a las PYMES a

mejorar la calidad de atención al cliente.

Page 4: Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

2 - Características

4

- Producto SaaS en la nube

- Configurable a través de la web

- Aplicaciones para escritorio y smartphones

- Permite utilizar cualquier teléfono

- Integración con CRMs y redes sociales

- Control de llamada (Call Control) y Respuesta de Voz Interactiva (IVR)

- Evita que se pierdan llamadas: callblast

Page 5: Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

3 – Ringio en acción (1/2) – Llamada entrante

http://www.screencast.com/t/EqQz2ElaZD

Page 6: Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

3 – Ringio en acción (2/2) – Llamada saliente

http://www.screencast.com/t/dFIVFNSfpz

Page 7: Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

Ringio Clients

CRM plugins

4 – Arquitectura

7

Ringio Core

BDAPI REST

Aplicación CCXML

Servidor ejabberd

Aplicaciones cliente móvil & escritorio

Ringio Server

HTTP

XMPP

Page 8: Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

Ringio Core

BD

Ringio Server

HTTP

XMPP

Servidor ejabberd

5 – Evolución de la arquitectura: Ringio over Rayo

8

Ringio over Rayo

Ringio Core

BD

Aplicación CCXML

Ringio Server

HTTP

Servidor ejabberd

JSR 309 JSR 289

server

clientXMPP

XMPP

Page 9: Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

6 – Ventajas de RoR

9

call.answer()

call.output(‘Hello Greach!’)

call.input(ringioMainMenuInput)

call.disconnect()

call.hold()

call.mute()

outgoingCall.join()

call.isHold()

call.unMute()

call.isMute()

call.unHold()

Call controlen Groovy / Java

Abstracción de los detalles de implementación

Facilita el desarrollo y la depuración

No es necesario utilizar CCXML / VoiceXML

<transition event="personal"> <var name="srcParticipant" expr="getSourceParticipant(participants)"/> <var name="dstParticipant" expr="getDestinationParticipant(participants)"/> <if cond="srcParticipant.isBlackListed"> <dialogstart src="blackDlgPath()" type="TYPE" dialogid="blacklistedDlg" connectionid="getSrcConnId(participants)" parameters="voxeoUrls"/> <assign name="state" expr="'release'"/> <elseif cond="srcParticipant.isVIP &amp;&amp; dstParticipant.isCheckedIn"/> <dialogstart src="welcomeDlgPath()" type="TYPE" dialogid="welcomeDlg" connectionid="getSrcConnId(participants)" parameters="participants extensionSelected voxeoUrls"/> <assign name="state" expr="'waitingForUser'"/> <elseif cond="!dstParticipant.isIdle || !dstParticipant.isCheckedIn"/> <dialogstart src="userNotAvailPath()" type="TYPE" dialogid="userNotAvailableDlg" connectionid="getSrcConnId(participants)" parameters="participants voxeoUrls"/> <assign name="state" expr="'vmailorcallback'"/> <else/> <dialogstart src="welcomeDlgPath()" type="TYPE" dialogid="welcomeDlg" connectionid="getSrcConnId(participants)" parameters="participants extensionSelected voxeoUrls"/> <assign name="state" expr="'waitingForUser'"/> </if> </transition>

Flujo más legible

Page 10: Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

7 – ¿Por qué Grails? (1/5)

10

Desarrollo más ágil

• Scaffolding

• Convención sobre configuración

• Facilidades para configuración de entornos

• Se escribe menos en Groovy que en Java

Page 11: Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

7 – ¿Por qué Grails? (2/5)

11

Facilidad para crear servicios JSON

• En Ringio hacemos un uso extenso de JSON (comunicaciones con Voxeo, con aplicaciones desktop / móvil, API REST…)

• parsers y converters de Grails:

render. participant as JSONJSON.parse(response)

Page 12: Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

7 – ¿Por qué Grails? (3/5)

12

Sistema de plugins

• El plugin ringobon-base contiene el modelo de datos y los servicios básicos.

• El módulo Ringio Server está dividido en varios submódulos independientes que utilizan ese plugin.

Page 13: Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

7 – ¿Por qué Grails? (4/5)

13

Acceso a librerías Java

• Se pueden usar APIs Java

• En Ringio usamos, entre otras:

XMPP, Google Contacts, Voxeo Rayo…

Page 14: Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

7 – ¿Por qué Grails? (5/5)

14

GORM

• Facilidades para realizar consultas mediante Criteria, Dynamic finders o HQL. Ejemplos:

User.findAllByAccount(account)

Conversation.findAll()

• Facilidades para almacenar datos de auditoría (fechas de creación, actualización…)

Page 15: Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

8 – Conclusiones

15

Nuestra experiencia con Grails ha sido muy satisfactoria.

ágiles desarrollando

rápidos en la adaptación a los cambios

De ahí que en Paradigma Tecnológico se hayan implementado más proyectos en Grails

Page 16: Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

16

Q&A

Page 17: Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails

17

¡¡Gracias!!@gmamenl@mpermar