Integracja Hubot z Google Chat

Hubot to świetny sposób na stworzenie aplikacji, która będzie działać na wielu platformach. Dzięki adapterowi Google Chat Hubot możesz łatwo korzystać w aplikacji Google Chat z aplikacji Hubot. Adapter przesyła wiadomości do Hubot i wyświetla odpowiedzi.

Adapter Google Chat Hubot obsługuje 2 typy punktów końcowych:

  • HTTP
  • Cloud Pub/Sub

Z tego przewodnika dowiesz się, jak uruchomić aplikację Hubot w Google Chat przy użyciu obu typów punktów końcowych.

Zainstaluj

Wykonaj czynności opisane w artykule Pierwsze kroki z Hubotem, aby pobrać i zainstalować niezbędne narzędzia: Node.js, npm i Hubot Generator dla Yeoman.

Możesz utworzyć nową instancję Hubot, która używa wbudowanej adaptacji, zainstalować skrypty Hubbota, pobawić się w nią, poczuć ekosystem Hubot i stworzyć aplikację Hubot.

Korzystanie z adaptera Google Chat Hubot

W tej sekcji dowiesz się, jak utworzyć aplikację Hubot używającą adaptera Google Chat, wdrożyć ją w AppEngine i opublikować w Google Chat. Możesz też wdrożyć aplikację w dowolnym systemie innym niż AppEngine.

Adapter Google Chat Hubot obsługuje 2 tryby: HTTP i Cloud Pub/Sub. Tryb HTTP uruchamia serwer WWW Express i nasłuchuje zdarzeń w porcie określonym przez użytkownika. Tryb Cloud Pub/Sub tworzy subskrybenta Pub/Sub i pobiera zdarzenia z określonej subskrypcji użytkownika. Po otrzymaniu zdarzeń z Google Chat oba tryby tworzą obiekt HangoutsChatMessage (rozszerzający jeden z obiektów Message na platformie Hubot) i przekazuje go do skryptu Hubot. Odpowiedź ze skryptu Hubot jest wyświetlana w pokoju czatu lub czacie w Google Chat, z którego zostało opublikowane oryginalne zdarzenie wiadomości w aplikacji.

Tworzenie instancji Hubot

Zanim przejdziesz dalej, skonfiguruj Node.js, menedżera pakietów npm i generator Yeoman dla Hubot.

Załóżmy, że chcesz utworzyć aplikację o nazwie „myhubot”. Zacznij od utworzenia nowego katalogu, a następnie utwórz instancję Hubot.

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

W tym momencie Yeoman zadaje kilka pytań dotyczących tego, kto tworzy aplikację i jakiego adaptera użyć. Określ google-hangouts-chat dla adaptera.

Możesz też zainstalować adapter osobno, korzystając z tego polecenia:

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

W Hubot rzeczywiste działanie aplikacji jest zaimplementowane za pomocą skryptów. Hubot ma przykładowy skrypt, który możesz wykorzystać do testów. Po skonfigurowaniu usługi możesz dostosować i dodać własne skrypty, aby zaimplementować w nich odpowiednie działanie.

Konfigurowanie opcji adaptera Google Chat

Opcje są przekazywane do adaptera Google Chat za pomocą zmiennych środowiskowych.

Konto usługi

Aby użyć adaptera, musisz skonfigurować konto usługi dla swojej aplikacji. Utwórz konto usługi i pobierz plik JSON zawierający klucz, korzystając z przewodnika Korzystanie z kont usługi. Następnie ustaw ścieżkę do klucza w zmiennej środowiskowej:

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

Opcje HTTP

Uruchamianie adaptera w trybie HTTP nie wymaga dodatkowej konfiguracji. Adapter korzysta z szybkiego serwera Hubot, który domyślnie działa na porcie 8080. Aby zmienić port, musisz ustawić zmienną środowiskową PORT:

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

Opcje Cloud Pub/Sub

Zobacz Konfigurowanie punktu końcowego Pub/Sub, aby skonfigurować projekt GCP, temat, subskrypcję i konto usługi Cloud Pub/Sub, które będą używane przez Twoją aplikację. Zignoruj przykładowy kod w linku. W poniższych akapitach utworzysz aplikację Hubot z adapterem Google Chat.

Aby używać adaptera Google Chat w trybie Pub/Sub, musisz ustawić te opcje:

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

Uruchom lokalnie

Aby uruchomić instancję Hubot lokalnie, uruchom odpowiednie polecenie z katalogu myhubot:

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

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

Jeśli adapter Google Chat Hubot został zainicjowany, zobaczysz w konsoli ten komunikat:

Hangouts Chat adapter initialized successfully

W zależności od tego, czy masz skonfigurowany adapter HTTP czy adapter Cloud Pub/Sub, na ekranie mogą pojawić się także inne istotne informacje.

Wdróż w AppEngine

Aby skonfigurować projekt i środowisko programistyczne GCP, postępuj zgodnie z instrukcjami w krótkim wprowadzeniu do AppEngine.

Gdy to zrobisz, wykonaj poniższe czynności, aby skonfigurować i wdrożyć instancję Hobot w AppEngine.

Tworzenie pliku app.yaml

Najpierw utwórz plik app.yaml w katalogu Hubot. Zawartość będzie wyglądać mniej więcej tak:

runtime: nodejs8
env_variables:
  PORT: 8080
  

Konfigurowanie środowiska

Następnie wykonaj instrukcje konfigurowania stron w tym artykule.

Tworzenie pliku package.json

Na koniec utwórz plik package.json określający wersję node.js i skrypty używane do uruchamiania aplikacji.

  • Określ wersję Node.js, której chcesz używać z właściwością engines w pliku package.json.
  • AppEngine używa npm start do uruchamiania aplikacji. Skonfiguruj właściwość scripts w pliku package.json, aby wskazać w npm start funkcję 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

Opublikuj w Google Chat

Wykonaj czynności opisane na stronie Publikowanie aplikacji, aby opublikować aplikację w Google Chat za pomocą Google Cloud Console. Skonfiguruj odpowiedni punkt końcowy (HTTP lub Cloud Pub/Sub) na stronie konfiguracji aplikacji. Jeśli w GCP masz projekt utworzony w poprzednim kroku, aby wdrożyć instancję Hubot w AppEngine, możesz opublikować aplikację za pomocą tego samego projektu GCP.

Testowanie aplikacji

Po opublikowaniu aplikacji możesz ją dodać do pokoju lub rozpocząć rozmowę na czacie w Google Chat. Aplikacja powinna odpowiadać na wysyłane do niej wiadomości. Hubot zawiera przykładowy skrypt w folderze scripts. Usuń znacznik komentarza z przykładowego skryptu, który odpowiada na wiadomości zawierające słowo „badge”, i ponownie uruchom aplikację.

Jeśli aplikacja otrzymała od Ciebie nazwę „myhubot” i została dodana do pokoju, możesz wysłać do niej wiadomość w następujący sposób:

@myhubot badger

Powinna pojawić się taka odpowiedź z aplikacji:

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

Teraz możesz dostosować lub dodać skrypty Hubot do instancji Hubot, aby wdrożyć w aplikacji odpowiednią funkcję. Aby zobaczyć przykładowe skrypty dla Google Chat, zajrzyj do repozytorium adaptera Google Chat na GitHubie.