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

ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 

Recently uploaded (19)

ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 

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