Servidor Couchbase

Eventos: Notificación con funciones Couchbase

Nota importante: esta entrada del blog contiene información sobre una función CURL de previsualización para desarrolladores en Eventos. La función CURL cambiará en Couchbase Server 6.5, por favor vea Uso de cURL con el servicio Eventing: Actualización para más detalles.

Eventing es un nuevo servicio disponible en Couchbase Server. Los Cincinnati Reds están interesados en utilizar esta función para atender más rápidamente a sus clientes VIP. Se asigna un conserje a uno o más VIPs. Cuando el VIP entre en el estadio, se enviará un mensaje de texto al conserje. El conserje puede entonces recibir al VIP en su asiento.

Como prueba de concepto, he creado un ejemplo que utiliza Funciones (parte de Eventing) para enviar un mensaje de texto. Estoy usando un cuenta de prueba de Twilio para enviar los mensajes. I no saber si los Rojos planean utilizar Twilio o mensajes de texto en su sistema de producción. Pero es gratis y fácil empezar a usar Twilio, así que eso es lo que decidí usar en mi prueba de concepto. Puedes utilizar cualquier servicio de mensajería/notificación que desees (en su lugar) siempre que tenga una API HTTP.

Revisión del concurso completo

No voy a dar aquí todos los detalles sobre la organización de eventos. Mis colegas ya han escrito mucho sobre este tema. No dudes en consultar sus artículos para obtener más información:

Pero la historia corta es esta: Couchbase Functions (parte de Eventing) te permite escribir funciones JavaScript que responden a documentos creados/actualizados/borrados. Dentro de estas funciones, puedes leer documentos, escribir documentos (a otros buckets), ejecutar consultas N1QL, y ejecutar un rizo para realizar peticiones a puntos finales HTTP. Nota: La construcción curl está todavía en Desarrollo. Esta función está pensada únicamente para fines de desarrollo y no debe utilizarse en entornos de producción.

Voy a juntar piezas de las entradas de blog anteriores para crear esta prueba de concepto de eventing para los rojos.

Escaneado de billetes

El primer paso es escanear el billete del cliente en la puerta de embarque. He escrito un programa para simular esto. Creará un documento "ticketscan" aleatorio en un bucket "tickets" en Couchbase.

Antes de escanear los billetes, tenía que rellenar el cubo con algunos datos.

He decidido que los clientes del 1 al 9 son los VIP, y cualquier otro cliente es un "cliente normal".

Nota divertida: todos estos VIP son auténticos fans de los Reds.

También creé 3 conserjes y repartí a los VIP entre ellos.

En el ejemplo anterior, asigno los clientes 1, 2 y 9 a "Matt Groves". Esto significa que George Clooney, Josh Hutcherson y Ryan Collins son los clientes VIP que el conserje Matt Groves debe atender. (Sustituir _suNúmeroVerificado con el número de teléfono que has confirmado con Twilio).

También estoy almacenando las credenciales de Twilio en un documento. Hice esto porque necesitaré las credenciales dentro de una función de Couchbase, y no quería codificarlas allí. El documento de credenciales tiene este aspecto:

He creado una aplicación de consola que creará un nuevo documento "ticketscan". Cuando lo ejecutes, puedes elegir crear un escaneo VIP o un escaneo "normal".

Un documento de ticketscan sólo contiene tres campos: el ID del documento del cliente, una marca de tiempo y un número de asiento.

Puede encontrar el código fuente completo en Github.

Función de eventos

El núcleo de este ejemplo de eventing es la función. Cuando creé esta función, la llamé "notifyConcierge"; utilicé un bucket "tickets_metadata" (como se muestra a continuación). Y lo que es más importante, creé un alias para el bucket "tickets" y lo llamé "src". Dentro de la función, este bucket es de sólo lectura, pero lo necesito para obtener información sobre el cliente y el conserje, así como las credenciales de Twilio.

Creating a function in eventing

En La función completa puede consultarse en Github. He aquí el desglose de la función, paso a paso:

1 - ¿El documento mutado es un ticketscan? Si lo es, proceda. Si no, esta función puede ignorarlo.

2 - ¿El cliente que ha escaneado este billete es un VIP? Si es así, obtenga los datos del conserje y proceda. En caso contrario, ignóralo. Fíjate en el N1QL en línea en esta parte de la función. Esta es una característica única del tipo de JavaScript utilizado en las funciones de Couchbase.

3 - Obtener los datos del VIP.

4 - Obtener credenciales Twilio.

5 - Cree un mensaje (con el nombre del VIP, el número de asiento y el nombre del conserje). datos es el mínimo necesario para utilizar la API de Twilio.

6 - Enviar un mensaje de texto al conserje utilizando Twilio API. La construcción curl está todavía en Desarrollo. Esta función está pensada únicamente para fines de desarrollo y no debe utilizarse en entornos de producción.

Concurso completo en acción

Ahora, cada vez que se cree o modifique un documento de ticketscan, un conserje recibirá una notificación en su teléfono móvil. Aquí tienes un ejemplo de la demo completa, desde el escaneo del ticket hasta la notificación por SMS:

Eventing demonstration using SMS

En esta imagen, estoy creando 4 escaneos de entradas. El primero es para un VIP, los dos siguientes son para Joes normales y el último es para un VIP. Aparecen dos mensajes de texto. En realidad, aparecerían en teléfonos diferentes, pero estoy enviando todas las notificaciones a un único número para hacer pruebas. Nota: Estoy utilizando únete.me para mostrar mi pantalla de Android en vivo lado a lado con la consola).

Si te encuentras con algún problema, la buena noticia es que la depuración está disponible para Funciones en Couchbase. Puedes establecer puntos de interrupción en el JavaScript y recorrerlo usando una herramienta como Chrome. Para más información, echa un vistazo a la Anuncio de concurso.

Resumen

Con esta función ejecutándose en el sistema de eventos de Couchbase, cada nuevo ticketscan para un VIP activará una notificación por mensaje de texto. Ten en cuenta que el sistema de escaneo de tickets no necesita saber nada sobre Twilio, siempre y cuando los datos terminen en Couchbase. Además, si cualquier otro el sistema está creando documentos de ticketscan, el SMS se activará allí también. La lógica es cerrar a los datos.

Con esto termino mi serie de posts sobre los Cincinnati Reds (por ahora). Los otros dos posts de la serie fueron:

Deja un comentario a continuación o búscame en Twitter @mgroves. ¡Vamos Rojos!

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Matthew Groves

A Matthew D. Groves le encanta programar. No importa si se trata de C#, jQuery o PHP: enviará pull requests para cualquier cosa. Lleva codificando profesionalmente desde que escribió una aplicación de punto de venta en QuickBASIC para la pizzería de sus padres, allá por los años noventa. Actualmente trabaja como Director de Marketing de Producto para Couchbase. Su tiempo libre lo pasa con su familia, viendo a los Reds y participando en la comunidad de desarrolladores. Es autor de AOP in .NET, Pro Microservices in .NET, autor de Pluralsight y MVP de Microsoft.

3 Comentarios

  1. ¡Buena entrada y buen momento del blog!

  2. Cómo registrar/depurar errores en la función. Básicamente, si no funciona - dónde depurar.

    1. Jon Strabala, Director Principal de Producto, Couchbase octubre 21, 2019 a 3:20 pm

      Para obtener información sobre registro y depuración, consulte https://docs.couchbase.com/server/6.0/eventing/eventing-debugging-and-diagnosability.html (sustitúyalo por 6.5 si utiliza la versión beta).

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.