Como integrar o Hubot ao Google Chat

O Hubot é uma ótima maneira de criar um app que funcione em várias plataformas. O adaptador Hubot do Google Chat facilita o uso dos apps Hubot no Google Chat. O adaptador alimenta as mensagens no Hubot e exibe as respostas.

O adaptador Hubot do Google Chat é compatível com dois tipos de endpoints:

  • HTTP
  • Cloud Pub/Sub

Neste guia, explicamos como iniciar um app Hubot no Google Chat usando qualquer um dos tipos de endpoint.

Instalar

Siga as instruções em Primeiros passos com o Hubot para fazer o download e instalar as ferramentas necessárias: Node.js, npm e o gerador do Hubot para Yeoman.

Você pode tentar criar uma nova instância do Hubot que use o adaptador de shell integrado, instalar scripts Hubot, jogar com ele e ter uma ideia do ecossistema do Hubot e desenvolver um app Hubot.

Como usar o adaptador do Hubot no Google Chat

Esta seção mostra como criar um app Hubot que usa o adaptador do Google Chat, implantá-lo no AppEngine e publicá-lo no Google Chat. Também é possível implantar o aplicativo em qualquer sistema de sua escolha, além do AppEngine.

O adaptador Hubot do Google Chat é compatível com dois modos: HTTP e Cloud Pub/Sub. O modo HTTP ativa um servidor da Web Express e detecta eventos em uma porta especificada pelo usuário. O modo Cloud Pub/Sub cria um assinante do Pub/Sub e extrai eventos de uma assinatura especificada pelo usuário. Ao receber eventos do Google Chat, os dois modos criam um objeto HangoutsChatMessage, que estende um dos objetos Message do Hubot, e o transmitem para o script do Hubot. A resposta do script do Hubot é postada no espaço de chat ou na mensagem direta no Google Chat em que o evento de mensagem original foi publicado no app.

Criar uma instância do Hubot

Configure o Node.js, o gerenciador de pacotes npm e o gerador Yeoman para o Hubot antes de continuar.

Suponha que você queira criar um app chamado "myhubot". Comece criando um novo diretório e, em seguida, crie sua instância do Hubot.

$> mkdir myhubot
$> cd myhubot
$> yo hubot

Neste ponto, o Yeoman faz algumas perguntas sobre quem está criando o app e qual adaptador usar. Especifique google-hangouts-chat para o adaptador.

Como alternativa, é possível instalar o adaptador separadamente usando o seguinte comando:

$> npm install --save hubot-google-hangouts-chat

No Hubot, o comportamento real do app é implementado usando scripts. O Hubot vem com um script de amostra que pode ser usado para testes. Depois de tudo configurado, é possível personalizar e adicionar seus próprios scripts para implementar o comportamento desejado do app.

Configurar opções para o adaptador do Google Chat

As opções são transmitidas para o adaptador do Google Chat usando variáveis de ambiente.

Conta de serviço

Para usar o adaptador, é necessário configurar uma conta de serviço para seu app. Siga o guia Como usar contas de serviço para criar uma conta de serviço e fazer o download do arquivo JSON que contém a chave. Em seguida, defina o caminho para sua chave em uma variável de ambiente:

# Point to the private key json file of the service account you created.
$> export GOOGLE_APPLICATION_CREDENTIALS='Path to the service account key json file'

Opções de HTTP

Nenhuma configuração adicional é necessária para executar o adaptador no modo HTTP. O adaptador usa o servidor expresso do Hubot, que é executado na porta 8080 por padrão. Para mudar a porta, você precisa definir a variável de ambiente PORT:

# Port number, 8080 by default.
$> export PORT=8080

Opções do Cloud Pub/Sub

Consulte Configurar um endpoint do Pub/Sub para configurar um projeto do GCP, tópico do Cloud Pub/Sub, assinatura e conta de serviço a serem usados pelo app. Ignore o código de exemplo no link. Nos parágrafos abaixo, você criará um app Hubot com o adaptador do Google Chat.

Para usar o adaptador do Google Chat no modo Pub/Sub, você precisa definir as seguintes opções:

# To toggle the adapter to Pub/Sub mode.
$> export IS_PUBSUB=true

# Set the IDs of the project and subscription you created.
$> export PUBSUB_PROJECT_ID='GCP Project ID'
$> export PUBSUB_SUBSCRIPTION_ID='GCP Cloud Pub/Sub Subscription ID'

Executar no local

Para executar a instância do Hubot localmente, execute o comando correspondente no diretório myhubot:

# For HTTP mode
$> bin/hubot -a google-hangouts-chat

# For Cloud Pub/Sub mode
$> bin/hubot -d -a google-hangouts-chat

A mensagem a seguir aparecerá no console se o adaptador do Hubot do Google Chat for inicializado:

Hangouts Chat adapter initialized successfully

Dependendo de você ter configurado um adaptador HTTP ou um adaptador do Cloud Pub/Sub, outras informações relevantes também podem aparecer na tela.

Implantar no App Engine

Siga as instruções do Guia de início rápido do AppEngine para configurar o projeto do GCP e o ambiente de desenvolvimento.

Após a configuração, siga as etapas abaixo para configurar e implantar sua instância do Hubot no AppEngine.

Criar o app.yaml

Primeiro, crie um arquivo app.yaml no seu diretório do Hubot. O conteúdo será semelhante ao exemplo a seguir:

runtime: nodejs8
env_variables:
  PORT: 8080
  

Configurar ambiente

Em seguida, verifique as instruções nesta página para configurar variáveis de ambiente.

Criar package.json

Por fim, crie um arquivo package.json que especifique a versão do node.js e a propriedade de scripts usada para iniciar o aplicativo.

  • Especifique a versão do Node.js que você quer usar com a propriedade engines no arquivo package.json.
  • O AppEngine usa npm start para iniciar seu aplicativo. Configure a propriedade scripts no seu package.json para configurar o npm start para invocar o Hubot.
# Sample snippet of package.json file

"dependencies" : {
  "hubot": "^3.1.1",
  "hubot-google-hangouts-chat": "^3",
  # more deps...
}

"scripts": {
  "start": "bin/hubot -a google-hangouts-chat"
},
"engines": {
  "node": ">=8"
}

# Once you've set up everything, deploy the app in AppEngine
$> gcloud app deploy

Publicar no Google Chat

Siga as instruções na página Publicar apps para publicar um app no Google Chat usando o Console do Google Cloud. Configure o endpoint apropriado (HTTP ou Cloud Pub/Sub) na página de configuração do app. Se você criou um projeto do GCP na etapa anterior para implantar a instância do Hubot no AppEngine, é possível usar o mesmo projeto do GCP para publicar o app.

Testar o app

Depois de publicar seu app, é possível adicioná-lo a um espaço ou iniciar uma mensagem direta com ele no Google Chat. Seu app deve responder às mensagens enviadas. O Hubot vem com um script de exemplo na pasta scripts. Remova a marca de comentário do código no script de amostra que responde às mensagens com a palavra "badger" e reinicie o app.

Se você nomeou seu app como "myhubot" e o adicionou a um espaço, é possível enviar uma mensagem, conforme mostrado abaixo:

@myhubot badger

Você verá a seguinte resposta do seu app:

Badgers? BADGERS? WE DON'T NEED NO STINKIN BADGERS

Agora você pode personalizar ou adicionar scripts Hubot à instância do Hubot para implementar a funcionalidade desejada para seu app. Para ver exemplos de scripts específicos do Google Chat, consulte o Repositório GitHub do adaptador do Google Chat.