Servidor Couchbase

Eventos: Notificação com o Couchbase Functions

Observação importante: esta postagem do blog contém informações sobre uma função CURL de visualização do desenvolvedor em Eventos. A função CURL será alterada no Couchbase Server 6.5, consulte Usando cURL com o Eventing Service: Atualização para obter mais detalhes.

Eventing é um novo serviço disponível no Couchbase Server. O Cincinnati Reds está interessado em usar esse recurso para atender mais rapidamente aos seus clientes VIP. Um concierge é atribuído a um ou mais VIPs. Quando o VIP entra no estádio, uma mensagem de texto é enviada ao concierge. O concierge pode então encontrar o VIP em seus assentos.

Como prova de conceito, criei um exemplo que usa Functions (parte de Eventing) para enviar uma mensagem de texto. Estou usando um conta de teste do Twilio para enviar as mensagens. I não não sei se os Reds planejam usar o Twilio ou mensagens de texto em seu sistema de produção. Mas é gratuito e fácil começar a usar o Twilio, então foi isso que decidi usar em minha prova de conceito. Você pode usar qualquer serviço de mensagem/notificação que desejar (em vez disso), desde que ele tenha uma API HTTP.

Revisão de eventos

Não vou fornecer todos os detalhes sobre eventos aqui. Meus colegas já falaram bastante sobre isso em seus blogs. Definitivamente, dê uma olhada em suas postagens para obter mais detalhes:

Mas a história resumida é a seguinte: O Couchbase Functions (parte do Eventing) permite que você escreva funções JavaScript que respondem a documentos que são criados/atualizados/excluídos. Dentro dessas funções, você pode ler documentos, gravar documentos (em outros buckets), executar consultas N1QL e executar um enrolar para fazer solicitações a pontos de extremidade HTTP. Observação: a construção curl ainda está em desenvolvimento. Esse recurso destina-se apenas a fins de desenvolvimento e não deve ser usado em ambientes de produção.

Vou reunir partes das publicações do blog acima para criar essa prova de conceito de eventos para os Reds.

Digitalização de bilhetes

A primeira etapa é escanear o bilhete do cliente no portão. Escrevi um programa para simular isso. Ele criará um documento "ticketscan" aleatório em um compartimento "tickets" no Couchbase.

Antes de digitalizar os tíquetes, eu precisava preencher previamente o balde com alguns dados.

Decidi que os clientes de 1 a 9 são os VIPs, e qualquer outro cliente é um "cidadão comum".

Observação divertida: esses VIPs são todos torcedores reais dos Reds!

Também criei 3 concierges e dividi os VIPs entre eles.

No exemplo acima, estou atribuindo os clientes 1, 2 e 9 a "Matt Groves". Isso significa que George Clooney, Josh Hutcherson e Ryan Collins são os VIPs para os quais o concierge Matt Groves está designado a cuidar. (Substituir _seuNúmeroVerificado com o número de telefone que você confirmou com o Twilio).

Também estou armazenando as credenciais do Twilio em um documento. Fiz isso porque precisarei das credenciais dentro de uma função do Couchbase e não queria codificá-las de forma rígida. O documento de credenciais tem a seguinte aparência:

Criei um aplicativo de console que criará um novo documento "ticketscan". Ao executá-lo, você pode optar por criar uma varredura VIP ou uma varredura "normal".

Um documento do ticketcan contém apenas três campos: a ID do documento do cliente, um registro de data e hora e um número de assento.

Você pode encontrar o código-fonte completo no Github.

Função de eventos

O núcleo desse exemplo de eventos é a função. Quando criei essa função, chamei-a de "notifyConcierge"; usei um compartimento "tickets_metadata" (conforme a figura abaixo). Mais importante ainda, criei um alias para o compartimento "tickets" e o chamei de "src". Na função, esse compartimento é somente leitura, mas preciso dele para obter informações do cliente e do concierge, bem como as credenciais do Twilio.

Creating a function in eventing

O A função completa pode ser visualizada no Github. Aqui está o detalhamento da função, passo a passo:

1 - O documento alterado é um ticketcan? Se for, prossiga. Caso contrário, essa função pode ignorá-lo.

2 - O cliente que escaneou esse bilhete é um VIP? Se for, obtenha os detalhes do concierge e prossiga. Caso contrário, ignore-o. Observe o N1QL em linha nesta parte da função. Esse é um recurso exclusivo da variante de JavaScript usada nas funções do Couchbase.

3 - Obtenha os detalhes do VIP.

4 - Obtenha as credenciais do Twilio.

5 - Construa uma mensagem (contendo o nome do VIP, o número do assento e o nome do concierge). dados é o mínimo necessário para usar a API do Twilio.

6 - Envie uma mensagem de texto para o concierge usando a API do Twilio. A construção curl ainda está em desenvolvimento. Esse recurso destina-se apenas a fins de desenvolvimento e não deve ser usado em ambientes de produção.

Eventos em ação

Agora, sempre que um documento do ticketscan for criado ou modificado, um concierge será notificado em seu telefone celular. Veja a seguir um exemplo de toda a demonstração, desde a digitalização do tíquete até a notificação por SMS:

Eventing demonstration using SMS

Nesta imagem, estou criando quatro digitalizações de tíquetes. O primeiro é para um VIP, os dois seguintes são para os Joões comuns e o último é para um VIP. Aparecem duas mensagens de texto. Na realidade, elas apareceriam em telefones diferentes, mas estou enviando todas as notificações para um único número para teste. Observação: Estou usando join.me para mostrar minha tela ativa do Android lado a lado com o console).

Se você estiver enfrentando problemas, a boa notícia é que a depuração está disponível para o Functions no Couchbase. Você pode definir pontos de interrupção no JavaScript e percorrê-lo usando uma ferramenta como o Chrome. Para saber mais sobre isso, consulte a seção Postagem de anúncio de eventos.

Resumo

Com essa função em execução no sistema de eventos do Couchbase, cada novo escaneamento de tíquetes para um VIP acionará uma notificação por mensagem de texto. Observe que o sistema de verificação de tíquetes não precisa saber nada sobre o Twilio, desde que os dados acabem no Couchbase. Além disso, se qualquer outro o sistema estiver criando documentos de verificação de tíquetes, o SMS também será acionado lá. A lógica é próximo para os dados.

Isso encerra minha série de postagens sobre o Cincinnati Reds (por enquanto). As outras duas postagens da série foram:

Deixe um comentário abaixo ou encontre-me em Twitter @mgroves. Força Reds!

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Matthew Groves

Matthew D. Groves é um cara que adora programar. Não importa se é C#, jQuery ou PHP: ele enviará solicitações de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente sênior de marketing de produtos da Couchbase. Seu tempo livre é passado com a família, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele é autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.

3 Comentários

  1. Boa postagem e bom momento para o blog!

  2. Como registrar/depurar erros na função. Basicamente, se não funcionar, onde depurar.

    1. Jon Strabala, gerente principal de produtos da Couchbase outubro 21, 2019 em 3:20 pm

      Para obter informações sobre registro/depuração, consulte https://docs.couchbase.com/server/6.0/eventing/eventing-debugging-and-diagnosability.html (substitua por 6.5 se estiver usando a versão beta).

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.