SlideShare a Scribd company logo
1 of 17
Ringio o cómo hacer realidad una
 aplicación de telefonía en Grails

         Mamen González
         4 Noviembre 2011
Í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
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
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
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
                                REST

                                                         Servidor
                                         Ringio          ejabberd
                                         Server
                                                   XMPP
  Aplicaciones cliente
   móvil & escritorio
                                                  Aplicación
                                       HTTP        CCXML




               Ringio Clients                       Ringio Core

                                                               7
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
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 control
call.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
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
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
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
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
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
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
Q&A

      16
¡¡Gracias!!
  @gmamenl
  @mpermar

              17

More Related Content

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

Protocolo syslog
Protocolo   syslogProtocolo   syslog
Protocolo syslogUTP
 
App engine
App engineApp engine
App engineThirdWay
 
Novedades en Arquitectura Front End // Meetup UX UI @UTN Mendoza
Novedades en Arquitectura Front End // Meetup UX UI @UTN MendozaNovedades en Arquitectura Front End // Meetup UX UI @UTN Mendoza
Novedades en Arquitectura Front End // Meetup UX UI @UTN MendozaDiego Suarez
 
Html5 para móviles, las reglas no escritas
Html5 para móviles, las reglas no escritasHtml5 para móviles, las reglas no escritas
Html5 para móviles, las reglas no escritasCarlos Toxtli
 
Codemotion 2013 - Quiero tiempo real y lo quiero para ayer
Codemotion 2013 - Quiero tiempo real y lo quiero para ayerCodemotion 2013 - Quiero tiempo real y lo quiero para ayer
Codemotion 2013 - Quiero tiempo real y lo quiero para ayerIván López Martín
 
6.android introduccion
6.android   introduccion   6.android   introduccion
6.android introduccion guidotic
 
Node Js & 3D Printer
Node Js & 3D PrinterNode Js & 3D Printer
Node Js & 3D Printernanusefue
 
2015 10 - Curso Cliente @firma INAP día 2
2015 10 - Curso Cliente @firma INAP día 22015 10 - Curso Cliente @firma INAP día 2
2015 10 - Curso Cliente @firma INAP día 2Tomás García-Merás
 
Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia
Aprende a crear y desplegar una aplicación de python que use APIs de BlueViaAprende a crear y desplegar una aplicación de python que use APIs de BlueVia
Aprende a crear y desplegar una aplicación de python que use APIs de BlueViaBlueVia
 
Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Carlos Camacho
 

Similar to Greach 2011 - Ringio, o como hacer realidad una aplicación de telefonía con Grails (20)

Real-time web
Real-time webReal-time web
Real-time web
 
RPC
RPCRPC
RPC
 
Protocolo syslog
Protocolo   syslogProtocolo   syslog
Protocolo syslog
 
App engine
App engineApp engine
App engine
 
Novedades en Arquitectura Front End // Meetup UX UI @UTN Mendoza
Novedades en Arquitectura Front End // Meetup UX UI @UTN MendozaNovedades en Arquitectura Front End // Meetup UX UI @UTN Mendoza
Novedades en Arquitectura Front End // Meetup UX UI @UTN Mendoza
 
Html5 para móviles, las reglas no escritas
Html5 para móviles, las reglas no escritasHtml5 para móviles, las reglas no escritas
Html5 para móviles, las reglas no escritas
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Despliegue de la solución de software
Despliegue de la solución de softwareDespliegue de la solución de software
Despliegue de la solución de software
 
Codemotion 2013 - Quiero tiempo real y lo quiero para ayer
Codemotion 2013 - Quiero tiempo real y lo quiero para ayerCodemotion 2013 - Quiero tiempo real y lo quiero para ayer
Codemotion 2013 - Quiero tiempo real y lo quiero para ayer
 
6.android introduccion
6.android   introduccion   6.android   introduccion
6.android introduccion
 
Presentacion jade
Presentacion jadePresentacion jade
Presentacion jade
 
Node Js & 3D Printer
Node Js & 3D PrinterNode Js & 3D Printer
Node Js & 3D Printer
 
Build and deploy
Build and deploy Build and deploy
Build and deploy
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
Microservicios con .NET
Microservicios con .NETMicroservicios con .NET
Microservicios con .NET
 
Docker consul service discovery esp
Docker consul service discovery espDocker consul service discovery esp
Docker consul service discovery esp
 
2015 10 - Curso Cliente @firma INAP día 2
2015 10 - Curso Cliente @firma INAP día 22015 10 - Curso Cliente @firma INAP día 2
2015 10 - Curso Cliente @firma INAP día 2
 
Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia
Aprende a crear y desplegar una aplicación de python que use APIs de BlueViaAprende a crear y desplegar una aplicación de python que use APIs de BlueVia
Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia
 
Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013
 
GraphQL Reactivo
GraphQL ReactivoGraphQL Reactivo
GraphQL Reactivo
 

More from greach_es

Greach 2011 - Novedades de Grails 2.0
Greach 2011 - Novedades de Grails 2.0Greach 2011 - Novedades de Grails 2.0
Greach 2011 - Novedades de Grails 2.0greach_es
 
Greach 2011 - Cloud Foundry
Greach 2011 - Cloud FoundryGreach 2011 - Cloud Foundry
Greach 2011 - Cloud Foundrygreach_es
 
Greach 2011 - Migración de proyectos JEE a Grails
Greach 2011 - Migración de proyectos JEE a GrailsGreach 2011 - Migración de proyectos JEE a Grails
Greach 2011 - Migración de proyectos JEE a Grailsgreach_es
 
Greach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DBGreach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DBgreach_es
 
Greach 2011 - Engrandeciendo Grails con MongoDB
Greach 2011 - Engrandeciendo Grails con MongoDBGreach 2011 - Engrandeciendo Grails con MongoDB
Greach 2011 - Engrandeciendo Grails con MongoDBgreach_es
 
Greach 2011 - Opening keynote
Greach 2011 - Opening keynoteGreach 2011 - Opening keynote
Greach 2011 - Opening keynotegreach_es
 

More from greach_es (6)

Greach 2011 - Novedades de Grails 2.0
Greach 2011 - Novedades de Grails 2.0Greach 2011 - Novedades de Grails 2.0
Greach 2011 - Novedades de Grails 2.0
 
Greach 2011 - Cloud Foundry
Greach 2011 - Cloud FoundryGreach 2011 - Cloud Foundry
Greach 2011 - Cloud Foundry
 
Greach 2011 - Migración de proyectos JEE a Grails
Greach 2011 - Migración de proyectos JEE a GrailsGreach 2011 - Migración de proyectos JEE a Grails
Greach 2011 - Migración de proyectos JEE a Grails
 
Greach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DBGreach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DB
 
Greach 2011 - Engrandeciendo Grails con MongoDB
Greach 2011 - Engrandeciendo Grails con MongoDBGreach 2011 - Engrandeciendo Grails con MongoDB
Greach 2011 - Engrandeciendo Grails con MongoDB
 
Greach 2011 - Opening keynote
Greach 2011 - Opening keynoteGreach 2011 - Opening keynote
Greach 2011 - Opening keynote
 

Recently uploaded

Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfYanitza28
 
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxTipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxJOELGARCIA849853
 
Desarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaDesarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaRicardoEstrada90
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...axelv9257
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8antoniopalmieriluna
 
Introduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptxIntroduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptxcj12paz
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptxdulcemonterroza
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfaxelv9257
 
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdfRedes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdfJosAndrRosarioVzquez
 
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdfjuan23xpx
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxgustavovasquezv56
 
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptxTarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptxVICTORMANUELBEASAGUI
 
microsoft word manuales para todos tipos de estudiamte
microsoft word manuales para todos tipos de estudiamtemicrosoft word manuales para todos tipos de estudiamte
microsoft word manuales para todos tipos de estudiamte2024020140
 
Imágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónImágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónUniversidad de Sonora
 
NIA_300_PLANEACION_DE_UNA_AUDITORIA_DE_E.pptx
NIA_300_PLANEACION_DE_UNA_AUDITORIA_DE_E.pptxNIA_300_PLANEACION_DE_UNA_AUDITORIA_DE_E.pptx
NIA_300_PLANEACION_DE_UNA_AUDITORIA_DE_E.pptxDaniloDaz4
 
herramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el temaherramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el temaJadeVilcscordova
 
Función del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionFunción del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionEmanuelMuoz11
 
Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024NicolleAndrade7
 
Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaEdwinGarca59
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfYanitza28
 

Recently uploaded (20)

Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
 
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxTipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
 
Desarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaDesarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - Estrada
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8
 
Introduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptxIntroduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptx
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdfRedes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
 
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptxTarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
 
microsoft word manuales para todos tipos de estudiamte
microsoft word manuales para todos tipos de estudiamtemicrosoft word manuales para todos tipos de estudiamte
microsoft word manuales para todos tipos de estudiamte
 
Imágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónImágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la información
 
NIA_300_PLANEACION_DE_UNA_AUDITORIA_DE_E.pptx
NIA_300_PLANEACION_DE_UNA_AUDITORIA_DE_E.pptxNIA_300_PLANEACION_DE_UNA_AUDITORIA_DE_E.pptx
NIA_300_PLANEACION_DE_UNA_AUDITORIA_DE_E.pptx
 
herramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el temaherramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el tema
 
Función del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionFunción del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacion
 
Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024
 
Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdf
 

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

  • 1. Ringio o cómo hacer realidad una aplicación de telefonía en Grails Mamen González 4 Noviembre 2011
  • 2. Í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
  • 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. 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. 3 – Ringio en acción (1/2) – Llamada entrante http://www.screencast.com/t/EqQz2ElaZD
  • 6. 3 – Ringio en acción (2/2) – Llamada saliente http://www.screencast.com/t/dFIVFNSfpz
  • 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. 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. 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 control call.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. 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. 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. 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. 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. 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. 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. Q&A 16
  • 17. ¡¡Gracias!! @gmamenl @mpermar 17