Intégrer Hubot à Google Chat

Hubot est un excellent moyen de créer une application qui fonctionne sur plusieurs plates-formes. Avec l'adaptateur Hub de Google Chat, vous pouvez facilement utiliser vos applications Hubot dans Google Chat. L'adaptateur alimente les messages dans Hubot et diffuse les réponses.

L'adaptateur Google Chat Hubot accepte deux types de points de terminaison:

  • HTTP
  • Cloud Pub/Sub

Ce guide explique comment lancer une application Hubot dans Google Chat à l'aide d'un type de point de terminaison.

Installer

Suivez les instructions de la page Premiers pas avec Hubot pour télécharger et installer les outils nécessaires: Node.js, npm et le générateur Hubot pour Yeoman.

Vous pouvez essayer de créer une instance de Hubot qui utilise l'adaptateur shell intégré, d'installer des scripts de Hubot, d'y jouer, de vous faire une idée de l'écosystème Hubot et de développer une application Hubot.

Utiliser l'adaptateur Google Chat Hubot

Cette section vous guide dans la création d'une application Hubot utilisant l'adaptateur Google Chat, dans son déploiement dans AppEngine et dans la publication de l'application dans Google Chat. Vous pouvez également choisir de déployer l'application dans n'importe quel système de votre choix, à l'exception d'App Engine.

L'adaptateur Google Chat Hubot accepte deux modes: HTTP et Cloud Pub/Sub. Le mode HTTP fait tourner un serveur Web Express et écoute les événements dans un port spécifié par l'utilisateur. Le mode Cloud Pub/Sub crée un abonné Pub/Sub et extrait les événements d'un abonnement spécifié par l'utilisateur. Lorsqu'ils reçoivent des événements de Google Chat, les deux modes créent un objet HangoutsChatMessage (qui étend l'un des objets Message de Hubot) et le transmet à votre script Hubot. La réponse de votre script Hubot est publiée dans l'espace de discussion ou dans le MP dans Google Chat à partir duquel l'événement de message d'origine a été publié dans l'application.

Créer une instance Hubot

Veillez à configurer Node.js, le gestionnaire de packages npm et le générateur Yeoman pour Hubot avant de continuer.

Supposons que vous souhaitiez créer une application appelée "myhubot". Commencez par créer un répertoire, puis créez votre instance Hubot.

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

À ce stade, Yeoman pose quelques questions sur les créateurs de l'application et l'adaptateur à utiliser. Spécifiez google-hangouts-chat pour l'adaptateur.

Vous pouvez également installer l'adaptateur séparément à l'aide de la commande suivante:

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

Dans Hubot, le comportement réel de l'application est mis en œuvre à l'aide de scripts. Hubot est fourni avec un exemple de script que vous pouvez utiliser pour les tests. Une fois que tout est configuré, vous pouvez personnaliser et ajouter vos propres scripts pour implémenter le comportement d'application souhaité.

Configurer les options de l'adaptateur Google Chat

Les options sont transmises à l'adaptateur Google Chat à l'aide de variables d'environnement.

Compte de service

Pour utiliser l'adaptateur, vous devez configurer un compte de service pour votre application. Suivez le guide Utiliser des comptes de service pour créer un compte de service et télécharger le fichier JSON contenant votre clé. Ensuite, définissez le chemin d'accès à votre clé dans une variable d'environnement:

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

Options HTTP

Aucune configuration supplémentaire n'est nécessaire pour exécuter l'adaptateur en mode HTTP. L'adaptateur utilise le serveur express de Hubot, qui s'exécute par défaut sur le port 8080. Pour modifier le port, vous devez définir la variable d'environnement PORT:

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

Options Cloud Pub/Sub

Consultez la section Configurer un point de terminaison Pub/Sub pour configurer un projet GCP, un sujet Cloud Pub/Sub, un abonnement et un compte de service à utiliser par votre application. Ignorez l'exemple de code figurant dans le lien. Dans les paragraphes ci-dessous, vous allez créer une application Hubot avec l'adaptateur Google Chat.

Pour utiliser l'adaptateur Google Chat en mode Pub/Sub, vous devez définir les options suivantes:

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

Exécuter localement

Pour exécuter l'instance Hubot localement, exécutez la commande correspondante à partir du répertoire myhubot:

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

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

Le message suivant s'affiche dans la console si l'adaptateur Google Chat Hubot a bien été initialisé:

Hangouts Chat adapter initialized successfully

Selon que vous avez configuré un adaptateur HTTP ou Cloud Pub/Sub, d'autres informations pertinentes peuvent également s'afficher à l'écran.

Déployer dans App Engine

Suivez les instructions du guide de démarrage rapide App Engine pour configurer le projet GCP et l'environnement de développement.

Une fois la configuration terminée, suivez les étapes ci-dessous pour configurer et déployer votre instance Hubot dans App Engine.

Créer app.yaml

Commencez par créer un fichier app.yaml dans votre répertoire Hubot. Le contenu doit ressembler à l'exemple suivant :

runtime: nodejs8
env_variables:
  PORT: 8080
  

Configurer l'environnement

Ensuite, consultez les instructions sur cette page pour configurer les variables d'environnement.

Créer un fichier package.json

Enfin, créez un fichier package.json qui spécifie la version de Node.js et la propriété de scripts utilisée pour lancer l'application.

  • Spécifiez la version de Node.js que vous souhaitez utiliser avec la propriété engines dans votre fichier package.json.
  • App Engine utilise npm start pour démarrer votre application. Configurez la propriété scripts dans le fichier package.json pour que npm commence à appeler 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

Publier dans Google Chat

Suivez les instructions de la page Publier des applications pour publier une application dans Google Chat via la console Google Cloud. Configurez le point de terminaison approprié (HTTP ou Cloud Pub/Sub) sur la page de configuration de l'application. Si vous avez créé un projet GCP à l'étape précédente pour déployer votre instance Hubot dans AppEngine, vous pouvez utiliser le même projet GCP pour publier votre application.

Tester l'application

Une fois votre application publiée, vous pouvez l'ajouter à un espace ou démarrer un message privé avec elle dans Google Chat. Votre application doit répondre aux messages qui lui sont envoyés. Hubot contient un exemple de script dans son dossier scripts. Annulez la mise en commentaire du code dans l'exemple de script qui répond aux messages contenant le mot "badge" et redémarrez l'application.

Si vous avez nommé votre application "myhubot" et l'avez ajoutée à un espace, vous pouvez l'envoyer comme suit:

@myhubot badger

La réponse suivante doit s'afficher dans votre application:

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

Vous pouvez désormais personnaliser ou ajouter des scripts Hubot dans votre instance Hubot pour implémenter la fonctionnalité souhaitée pour votre application. Pour consulter des exemples de scripts spécifiques à Google Chat, accédez au dépôt GitHub de l'adaptateur Google Chat.