Ringio o cómo hacer realidad una aplicación de telefonía en Grails         Mamen González         4 Noviembre 2011
ÍNDICE1.   ¿Qué es Ringio?2.   Características3.   Ringio en acción4.   Arquitectura5.   Evolución de la arquitectura: Rin...
1 - ¿Qué es Ringio?               Ringio es una centralita telefónica          virtual, integrada con CRMs, que ayuda a la...
2 - Características  - Producto SaaS en la nube  - Configurable a través de la web  - Aplicaciones para escritorio y smart...
3 – Ringio en acción (1/2) – Llamada entrante        http://www.screencast.com/t/EqQz2ElaZD
3 – Ringio en acción (2/2) – Llamada saliente         http://www.screencast.com/t/dFIVFNSfpz
4 – Arquitectura     CRM plugins                                          BD                                 API          ...
5 – Evolución de la arquitectura:    Ringio over Rayo                                          BD                         ...
6 – Ventajas de RoR    <transition event="personal">           <var name="srcParticipant" expr="getSourceParticipant(parti...
7 – ¿Por qué Grails? (1/5)    Desarrollo más ágil        • Scaffolding        • Convención sobre configuración        • Fa...
7 – ¿Por qué Grails? (2/5)    Facilidad para crear servicios JSON        • En Ringio hacemos un uso extenso de JSON       ...
7 – ¿Por qué Grails? (3/5)    Sistema de plugins        • El plugin ringobon-base contiene el modelo de datos y los       ...
7 – ¿Por qué Grails? (4/5)    Acceso a librerías Java        • Se pueden usar APIs Java        • En Ringio usamos, entre o...
7 – ¿Por qué Grails? (5/5)    GORM       • Facilidades para realizar consultas mediante Criteria,       Dynamic finders o ...
8 – Conclusiones   Nuestra experiencia con Grails ha sido muy satisfactoria.                ágiles desarrollando          ...
Q&A      16
¡¡Gracias!!  @gmamenl  @mpermar              17
Upcoming SlideShare
Loading in …5
×

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

1,522 views
1,430 views

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,522
On SlideShare
0
From Embeds
0
Number of Embeds
618
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Ringio o cómo hacer realidad una aplicación de telefonía en Grails Mamen González 4 Noviembre 2011
  2. 2. ÍNDICE1. ¿Qué es Ringio?2. Características3. Ringio en acción4. Arquitectura5. Evolución de la arquitectura: Ringio over Rayo6. Ventajas de RoR7. ¿Por qué Grails?8. Conclusiones
  3. 3. 1 - ¿Qué es Ringio? Ringio es una centralita telefónica virtual, integrada con CRMs, que ayuda a las PYMES a mejorar la calidad de atención al cliente. 3
  4. 4. 2 - Características - 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 4
  5. 5. 3 – Ringio en acción (1/2) – Llamada entrante http://www.screencast.com/t/EqQz2ElaZD
  6. 6. 3 – Ringio en acción (2/2) – Llamada saliente http://www.screencast.com/t/dFIVFNSfpz
  7. 7. 4 – Arquitectura CRM plugins BD API REST Servidor Ringio ejabberd Server XMPP Aplicaciones cliente móvil & escritorio Aplicación HTTP CCXML Ringio Clients Ringio Core 7
  8. 8. 5 – Evolución de la arquitectura: Ringio over Rayo BD Ringio BD Server Servidor ejabberd XMPP Ringio Servidor HTTP ejabberd Server Ringio over Rayo XMPP client XMPP server Aplicación HTTP CCXML JSR 309 JSR 289 Ringio Core Ringio Core 8
  9. 9. 6 – Ventajas de RoR <transition event="personal"> <var name="srcParticipant" expr="getSourceParticipant(participants)"/> No es necesario <var name="dstParticipant" expr="getDestinationParticipant(participants)"/> utilizar CCXML / <if cond="srcParticipant.isBlackListed"> call.output(‘Hello Greach!’) <dialogstart src="blackDlgPath()" type="TYPE" dialogid="blacklistedDlg" VoiceXML connectionid="getSrcConnId(participants)" parameters="voxeoUrls"/> <assign name="state" expr="release"/> call.hold() <elseif cond="srcParticipant.isVIP &amp;&amp; dstParticipant.isCheckedIn"/> Flujo más legible call.input(ringioMainMenuInput) <dialogstart src="welcomeDlgPath()" type="TYPE" dialogid="welcomeDlg" connectionid="getSrcConnId(participants)" parameters="participants extensionSelected voxeoUrls"/> call.disconnect() <assign name="state" expr="waitingForUser"/> Call controlcall.isHold() cond="!dstParticipant.isIdle || !dstParticipant.isCheckedIn"/> call.answer() <elseif en Groovy / Java <dialogstart src="userNotAvailPath()" type="TYPE" outgoingCall.join() call.isMute() dialogid="userNotAvailableDlg" connectionid="getSrcConnId(participants)" parameters="participants voxeoUrls"/> Abstracción de call.unHold() call.mute() name="state" expr="vmailorcallback"/> <assign <else/> los detalles de call.unMute() <dialogstart src="welcomeDlgPath()" type="TYPE" dialogid="welcomeDlg" implementación connectionid="getSrcConnId(participants)" parameters="participants extensionSelected voxeoUrls"/> <assign name="state" expr="waitingForUser"/> Facilita el </if> </transition> desarrollo y la depuración 9
  10. 10. 7 – ¿Por qué Grails? (1/5) Desarrollo más ágil • Scaffolding • Convención sobre configuración • Facilidades para configuración de entornos • Se escribe menos en Groovy que en Java 10
  11. 11. 7 – ¿Por qué Grails? (2/5) 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 JSON JSON.parse(response) 11
  12. 12. 7 – ¿Por qué Grails? (3/5) 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. 12
  13. 13. 7 – ¿Por qué Grails? (4/5) Acceso a librerías Java • Se pueden usar APIs Java • En Ringio usamos, entre otras: XMPP, Google Contacts, Voxeo Rayo… 13
  14. 14. 7 – ¿Por qué Grails? (5/5) 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…) 14
  15. 15. 8 – Conclusiones 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 15
  16. 16. Q&A 16
  17. 17. ¡¡Gracias!! @gmamenl @mpermar 17

×