Hubot in Google Chat einbinden

Hubot ist ideal zum Erstellen einer Anwendung, die auf mehreren Plattformen funktioniert. Mit dem Google Chat Hubot-Adapter können Sie Ihre Hubot-Apps ganz einfach in Google Chat nutzen. Der Adapter speist Nachrichten in Hubot ein und liefert die Antworten.

Der Google Chat Hubot-Adapter unterstützt zwei Arten von Endpunkten:

  • HTTP
  • Cloud Pub/Sub

In diesem Leitfaden wird erläutert, wie Sie eine Hubot-App in Google Chat mit beiden Endpunkttypen starten.

Installieren

Folgen Sie der Anleitung unter Erste Schritte mit Hubot, um die erforderlichen Tools herunterzuladen und zu installieren: Node.js, npm und den Hubot-Generator für Yeoman.

Sie können versuchen, eine neue Hubot-Instanz zu erstellen, die den integrierten Shell-Adapter verwendet, Hubot-Skripts zu installieren, damit zu spielen, ein Gefühl für die Hubot-Umgebung zu erhalten und eine Hubot-Anwendung zu entwickeln.

Hub-Adapter für Google Chat verwenden

In diesem Abschnitt wird beschrieben, wie Sie eine Hubot-App erstellen, die den Google Chat-Adapter verwendet, in AppEngine bereitstellt und die App in Google Chat veröffentlicht. Sie können die Anwendung auch in einem anderen System als AppEngine bereitstellen.

Der Google Chat Hubot-Adapter unterstützt zwei Modi: HTTP und Cloud Pub/Sub. Im HTTP-Modus wird ein Express-Webserver gestartet und wartet in einem vom Nutzer angegebenen Port auf Ereignisse. Im Cloud Pub/Sub-Modus wird ein Pub/Sub-Abonnent erstellt und Ereignisse werden aus einem benutzerdefinierten Abo abgerufen. Wenn Sie Ereignisse aus Google Chat empfangen, erstellen beide Modi ein HangoutsChatMessage-Objekt, das eines der Message-Objekte von Hubot erweitert, und übergeben es an Ihr Hubot-Skript. Die Antwort aus Ihrem Hubot-Skript wird im Chatbereich oder in der DN in Google Chat gepostet, von dem aus das ursprüngliche Nachrichtenereignis in der App veröffentlicht wurde.

Hubot-Instanz erstellen

Bevor Sie fortfahren, müssen Sie Node.js, den npm-Paketmanager und den Yeoman-Generator für Hubot einrichten.

Angenommen, Sie möchten eine App namens „Myhubot“ erstellen. Erstellen Sie zuerst ein neues Verzeichnis und dann Ihre Hubot-Instanz.

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

An dieser Stelle stellt Yeoman einige Fragen dazu, wer die App entwickelt und welchen Adapter sie verwenden soll. Geben Sie google-hangouts-chat für den Adapter an.

Alternativ können Sie den Adapter mit dem folgenden Befehl separat installieren:

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

In Hubot wird das tatsächliche App-Verhalten mit Skripts implementiert. Hubot enthält ein Beispielskript, das Sie zum Testen verwenden können. Sobald alles eingerichtet ist, können Sie Ihre eigenen Skripts anpassen und hinzufügen, um das gewünschte App-Verhalten zu implementieren.

Optionen für den Google Chat-Adapter konfigurieren

Optionen werden mithilfe von Umgebungsvariablen an den Google Chat-Adapter übergeben.

Dienstkonto

Zur Verwendung des Adapters müssen Sie ein Dienstkonto für Ihre Anwendung einrichten. Folgen Sie der Anleitung unter Dienstkonten verwenden, um ein Dienstkonto zu erstellen und die JSON-Datei mit Ihrem Schlüssel herunterzuladen. Legen Sie dann den Pfad zu Ihrem Schlüssel in einer Umgebungsvariablen fest:

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

HTTP-Optionen

Für die Ausführung des Adapters im HTTP-Modus ist keine zusätzliche Konfiguration erforderlich. Der Adapter verwendet den Express-Server von Hubot, der standardmäßig auf Port 8080 ausgeführt wird. Zum Ändern des Ports müssen Sie die Umgebungsvariable PORT festlegen:

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

Cloud Pub/Sub-Optionen

Unter Pub/Sub-Endpunkt einrichten erfahren Sie, wie Sie ein GCP-Projekt, ein Cloud Pub/Sub-Thema, ein Abo und ein Dienstkonto für Ihre Anwendung einrichten. Ignorieren Sie den Beispielcode im Link. In den folgenden Abschnitten erstellen Sie mit dem Google Chat-Adapter eine Hubot-Anwendung.

Wenn Sie den Google Chat-Adapter im Pub/Sub-Modus verwenden möchten, müssen Sie die folgenden Optionen festlegen:

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

Lokal ausführen

Wenn Sie die Hubot-Instanz lokal ausführen möchten, führen Sie den entsprechenden Befehl im Verzeichnis myhubot aus:

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

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

Die folgende Meldung wird in der Console angezeigt, wenn der Google Chat Hubot-Adapter erfolgreich initialisiert wurde:

Hangouts Chat adapter initialized successfully

Je nachdem, ob Sie einen HTTP-Adapter oder einen Cloud Pub/Sub-Adapter konfiguriert haben, können auf dem Bildschirm auch weitere relevante Informationen angezeigt werden.

In App Engine bereitstellen

Folgen Sie der Anleitung im App Engine-Schnellstart, um das GCP-Projekt und die Entwicklungsumgebung einzurichten.

Führen Sie nach der Einrichtung die folgenden Schritte zum Konfigurieren und Bereitstellen Ihrer Hubot-Instanz in App Engine aus.

app.yaml erstellen

Erstellen Sie zuerst in Ihrem Hubot-Verzeichnis eine app.yaml-Datei. Der Inhalt sieht in etwa so aus:

runtime: nodejs8
env_variables:
  PORT: 8080
  

Umgebung konfigurieren

Lesen Sie als Nächstes die Anleitung auf dieser Seite, um Umgebungsvariablen zu konfigurieren.

package.json erstellen

Erstellen Sie schließlich eine package.json-Datei, die die node.js-Version und die Skript-Property angibt, die zum Starten der Anwendung verwendet wird.

  • Geben Sie die Node.js-Version an, die Sie mit dem Attribut engines in der Datei package.json verwenden möchten.
  • App Engine verwendet npm start, um die Anwendung zu starten. Richten Sie in der Datei package.json das Attribut scripts ein, um mit npm start Hubot aufzurufen.
# 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

In Google Chat veröffentlichen

Folgen Sie der Anleitung auf der Seite Anwendungen veröffentlichen, um eine Anwendung in Google Chat über die Google Cloud Console zu veröffentlichen. Konfigurieren Sie den entsprechenden Endpunkt (HTTP oder Cloud Pub/Sub) auf der Konfigurationsseite der Anwendung. Wenn Sie im vorherigen Schritt ein GCP-Projekt erstellt haben, um Ihre Hubot-Instanz in App Engine bereitzustellen, können Sie Ihre Anwendung mit demselben GCP-Projekt veröffentlichen.

App testen

Nachdem Sie Ihre Anwendung veröffentlicht haben, können Sie sie einem Gruppenbereich hinzufügen oder in Google Chat eine Direktnachricht an sie senden. Ihre App sollte auf Nachrichten antworten, die an sie gesendet wurden. Hubot enthält ein Beispielskript im Ordner scripts. Entfernen Sie die Kommentarzeichen im Code des Beispielskripts, das auf Nachrichten mit dem Wort „badger“ antwortet, und starten Sie die Anwendung neu.

Wenn Sie Ihre Anwendung „myhubot“ genannt und sie einem Gruppenbereich hinzugefügt haben, können Sie sie wie unten dargestellt senden:

@myhubot badger

Sie sollten die folgende Antwort von Ihrer App sehen:

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

Sie können jetzt Hubot-Skripts anpassen oder Ihrer Hubot-Instanz hinzufügen, um die gewünschte Funktionalität für Ihre Anwendung zu implementieren. Im GitHub-Repository für den Google Chat-Adapter finden Sie Beispielskripts für Google Chat.