Integrazione di Hubot con Google Chat

Hubot è un ottimo modo per creare un'app che funzioni su più piattaforme. Con l'adattatore Hubot di Google Chat puoi utilizzare facilmente le app Hubot in Google Chat. L'adattatore invia i messaggi a Hubot e pubblica le risposte.

L'adattatore Hubot di Google Chat supporta due tipi di endpoint:

  • HTTP
  • Cloud Pub/Sub

Questa guida spiega come avviare un'app Hubot in Google Chat utilizzando uno dei due tipi di endpoint.

Installa

Segui le istruzioni in Introduzione a Hubot per scaricare e installare gli strumenti necessari: Node.js, npm e il generatore di Hub per Yeeman.

Puoi provare a creare una nuova istanza di Hubot che utilizza l'adattatore shell integrato, installare gli script Hubot, giocarci e farti un'idea dell'ecosistema Hubot e sviluppare un'app Hubot.

Utilizzare l'adattatore Google Chat Hubot

Questa sezione ti guiderà nella creazione di un'app Hubot che utilizza l'adattatore Google Chat, nel deployment in AppEngine e nella pubblicazione dell'app in Google Chat. Puoi anche scegliere di eseguire il deployment dell'app in qualsiasi sistema che preferisci, diverso da AppEngine.

L'adattatore Hubot di Google Chat supporta due modalità: HTTP e Cloud Pub/Sub. La modalità HTTP avvia un server web Express e ascolta gli eventi in una porta specificata dall'utente. La modalità Cloud Pub/Sub crea un sottoscrittore Pub/Sub ed estrae eventi da un abbonamento specificato dall'utente. Alla ricezione di eventi da Google Chat, entrambe le modalità creano un oggetto HangoutsChatMessage (che estende uno degli oggetti Message di Hubot) e lo trasmettono allo script Hubot. La risposta dello script Hubot viene pubblicata nello spazio di chat o nel messaggio diretto in Google Chat da cui è stato pubblicato nell'app l'evento del messaggio originale.

Crea un'istanza Hubot

Prima di procedere, assicurati di configurare Node.js, il gestore di pacchetti npm e il generatore Yeoman per Hubot.

Supponiamo che tu voglia creare un'app chiamata "myhubot". Inizia creando una nuova directory, quindi crea l'istanza Hubot in cui eseguire la creazione.

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

A questo punto, Yeoman fa alcune domande su chi sta creando l'app e su quale adattatore usare. Specifica google-hangouts-chat per l'adattatore.

In alternativa, puoi installare l'adattatore separatamente utilizzando il seguente comando:

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

In Hubot il comportamento effettivo delle app viene implementato utilizzando gli script. Hubot include uno script di esempio che puoi utilizzare per i test. Una volta completata la configurazione, puoi personalizzare e aggiungere i tuoi script per implementare il comportamento dell'app desiderato.

Configurare le opzioni per l'adattatore Google Chat

Le opzioni vengono trasmesse all'adattatore Google Chat utilizzando le variabili di ambiente.

Account di servizio

Per utilizzare l'adattatore, devi configurare un account di servizio per l'app. Segui la guida Utilizzo degli account di servizio per creare un account di servizio e scaricare il file JSON contenente la chiave. Quindi, imposta il percorso della chiave in una variabile di 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'

Opzioni HTTP

Non sono necessarie configurazioni aggiuntive per eseguire l'adattatore in modalità HTTP. L'adattatore utilizza il server Express di Hubot, che viene eseguito sulla porta 8080 per impostazione predefinita. Per modificare la porta, devi impostare la variabile di ambiente PORT:

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

Opzioni Cloud Pub/Sub

Consulta l'articolo su come configurare un endpoint Pub/Sub per configurare un progetto GCP, un argomento Cloud Pub/Sub, una sottoscrizione e un account di servizio che verranno utilizzati dalla tua app. Ignora il codice campione nel link. Nei paragrafi seguenti creerai un'app Hubot con l'adattatore Google Chat.

Per utilizzare l'adattatore Google Chat in modalità Pub/Sub, devi impostare le seguenti opzioni:

# 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'

Esegui localmente

Per eseguire l'istanza Hubot in locale, esegui il comando corrispondente dalla directory myhubot:

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

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

Il seguente messaggio viene visualizzato nella console se l'adattatore Hubot Google Chat è stato inizializzato correttamente:

Hangouts Chat adapter initialized successfully

A seconda che tu abbia configurato un adattatore HTTP o Cloud Pub/Sub, potrebbero essere visualizzate anche altre informazioni pertinenti sullo schermo.

Esegui il deployment in AppEngine

Segui le istruzioni della guida rapida di AppEngine per configurare il progetto e l'ambiente di sviluppo GCP.

Al termine della configurazione, segui i passaggi riportati di seguito per configurare ed eseguire il deployment dell'istanza Hubot in AppEngine.

Crea app.yaml

Innanzitutto, crea un file app.yaml nella directory Hubot. I contenuti saranno simili al seguente esempio:

runtime: nodejs8
env_variables:
  PORT: 8080
  

Configura ambiente

Successivamente, segui le istruzioni riportate in questa pagina per configurare le variabili di ambiente.

Crea package.json

Infine, crea un file package.json che specifichi la versione di node.js e la proprietà degli script utilizzati per avviare l'app.

  • Specifica la versione di Node.js da utilizzare con la proprietà engines nel file package.json.
  • AppEngine utilizza npm start per avviare l'applicazione. Configura la proprietà scripts nel tuo package.json per configurare npm start a richiamare 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

Pubblica in Google Chat

Segui le istruzioni nella pagina Pubblicazione di app per pubblicare un'app in Google Chat tramite Google Cloud Console. Configura l'endpoint appropriato (HTTP o Cloud Pub/Sub) nella pagina di configurazione dell'app. Se hai creato un progetto GCP nel passaggio precedente per eseguire il deployment dell'istanza Hubot in AppEngine, puoi utilizzare lo stesso progetto GCP per pubblicare l'app.

Testare l'app

Dopo aver pubblicato la tua app, puoi aggiungerla a uno spazio o iniziare a inviarle un messaggio diretto in Google Chat. L'app dovrebbe rispondere ai messaggi inviati. Hubot fornisce uno script di esempio nella cartella scripts. Rimuovi il commento dal codice nello script di esempio che risponde ai messaggi contenenti la parola "badge" e riavvia l'app.

Se hai assegnato un nome all'app "myhubot" e l'hai aggiunta a uno spazio, puoi inviare un messaggio come mostrato di seguito:

@myhubot badger

Dovresti vedere la seguente risposta della tua app:

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

Ora puoi personalizzare o aggiungere script Hubot alla tua istanza di Hubot per implementare la funzionalità desiderata per la tua app. Per vedere esempi di script specifici per Google Chat, consulta il repository GitHub di Google ChatAdattatore.