Back-End

10 jul, 2018

Alertas e notificações do Hangouts Chat… com mensagens assíncronas

Publicidade

Artigo de Wesley Chun, publicado originalmente pelo Google Developers Blog. A tradução foi feita pela Redação iMasters com autorização.

***

Embora a maioria dos chatbots responda às solicitações dos usuários de maneira síncrona, há situações em que os bots não realizam ações com base em uma solicitação explícita do usuário, como alertas ou notificações. No vídeo DevByte de hoje, mostrarei como enviar mensagens de maneira assíncrona para salas ou mensagens diretas (DMs) no Hangouts Chat, a ferramenta de colaboração e comunicação da equipe no G Suite.

O que vem à mente quando você pensa em um bot em uma sala de bate-papo? Talvez um usuário queira os números de vendas europeias do último trimestre, ou talvez queira consultar o clima local ou o próximo horário de exibição do filme. Supondo que exista um bot para qualquer que seja a solicitação, um usuário enviará uma mensagem direta (DM) para esse bot ou @mentiona bot de dentro de uma sala de bate-papo. O bot então coloca o pedido em campo (enviado para ele pelo serviço Hangouts Chat), realiza qualquer mágica necessária e responde ao usuário naquele “espaço”, a nomenclatura genérica de uma sala ou DM.

Nosso vídeo anterior do DevByte para o framework do Hangouts Chat mostra aos desenvolvedores o que os bots e o framework são, além de como criar um desses tipos de bots, tanto em Python quanto em JavaScript. No entanto, reconheça que esses bots estão respondendo de maneira síncrona a uma solicitação do usuário. Isso não é suficiente quando os usuários querem ser notificados assim que um trabalho em segundo plano de longa duração é concluído, quando um ônibus ou trem atrasado chegará em breve ou quando um de seus servidores estiver desativado.

Reconheça que esses alertas podem vir de um bot, mas também, talvez, de um aplicativo de monitoramento. No último episódio do G Suite Dev Show, saiba como integrar essa funcionalidade em qualquer tipo de aplicativo.

A partir do vídeo, você pode ver que os alertas e as notificações são mensagens “fora de banda”, o que significa que elas podem entrar a qualquer momento. O framework de bots do Hangouts Chat fornece várias maneiras de enviar mensagens assíncronas para uma sala ou DM, genericamente chamada de “espaço”. A primeira é a API REST baseada em HTTP. A outra maneira é usar o que é conhecido como “webhooks de entrada”.

A API REST é usada por bots para enviar mensagens em um espaço. Como um bot nunca será um usuário humano, é necessária uma conta de serviço do Google. Depois de criar uma conta de serviço para o seu bot do Hangouts Chat no console do desenvolvedor, você pode fazer o download das credenciais necessárias para se comunicar com a API. Abaixo está um pequeno fragmento de amostra Python que usa a API para enviar uma mensagem de forma assíncrona para um espaço.

from apiclient import discovery
from httplib2 import Http
from oauth2client.service_account import ServiceAccountCredentials

SCOPES = 'https://www.googleapis.com/auth/chat.bot'
creds = ServiceAccountCredentials.from_json_keyfile_name(
        'svc_acct.json', SCOPES)
CHAT = discovery.build('chat', 'v1', http=creds.authorize(Http()))

room = 'spaces/<ROOM-or-DM>'
message = {'text': 'Hello world!'}
CHAT.spaces().messages().create(parent=room, body=message).execute()

A alternativa para usar a API com contas de serviços é o conceito de incoming webhooks. Os webhooks são uma maneira rápida e fácil de enviar mensagens para qualquer sala ou DM, sem configurar um bot completo, ou seja, monitorando aplicativos. Os webhooks também permitem integrar seus fluxos de trabalho personalizados, como quando um novo cliente é adicionado ao CRM corporativo (sistema de gerenciamento de relacionamento com o cliente), bem como outros mencionados acima. Abaixo, há um snippet Python que usa um webhook recebido para se comunicar em um espaço de forma assíncrona.

import requests
import json

URL = 'https://chat.googleapis.com/...&thread_key=T12345'
message = {'text': 'Hello world!'}
requests.post(URL, data = json.dumps(message))

Como os webhooks de entrada são apenas endpoints para os quais você envia HTTP POST, você pode até usar o curl para enviar uma mensagem para um espaço do Hangouts Chat a partir da linha de comando:

curl \
    -X POST \
    -H 'Content-Type: application/json' \
    'https://chat.googleapis.com/...&thread_key=T12345' \
    -d '{"text": "Hello!"}'

Para começar, confira a documentação do desenvolvedor do Hangouts Chat, especialmente as páginas específicas relacionadas acima. Esperamos que esse vídeo ajude você a levar suas habilidades de desenvolvimento de bot para o próximo nível, mostrando a você como enviar mensagens para o serviço Hangouts Chat de forma assíncrona.

***

Este artigo é do Google Developers Blog. Ele foi escrito por Wesley Chun. A tradução foi feita pela Redação iMasters com autorização. Você pode acessar o original em: https://developers.googleblog.com/2018/06/hangouts-chat-alerts-notifications-with.html