שילוב של Hubot עם Google Chat

Hubot הוא דרך מצוינת לבנות אפליקציה שעובדת בכמה פלטפורמות. באמצעות מתאם ה-Hub Chat של Google, תוכלו להשתמש בקלות באפליקציות Hubot שלכם ב-Google Chat. המתאם מאמת הודעות ב-Hub ומגיש את התשובות.

המתאם של Google Chat Hubot תומך בשני סוגים של נקודות קצה:

  • HTTP
  • Cloud Pub/Sub

המדריך הזה מסביר איך משיקים אפליקציית Hubot ב-Google Chat באמצעות כל סוג של נקודת קצה.

התקנה

פעלו לפי ההוראות במאמר תחילת העבודה עם Hubot כדי להוריד ולהתקין את הכלים הנחוצים: Node.js, npm ו-Hubot מחולל for Yeoman.

אתם יכולים לנסות ליצור מכונה חדשה של Hubot שמשתמשת במתאם המעטפת המובנה, להתקין סקריפטים של Hubbot, לשחק איתה ולחוות את הסביבה העסקית של Hubo ולפתח אפליקציה של Hubot.

שימוש במתאם של Chat ב-Google Chat

בקטע הזה מוסבר איך יוצרים אפליקציית Hubot שמשתמשת במתאם Google Chat, פורסים אותה ב-AppEngine ומפרסמים את האפליקציה ב-Google Chat. תוכלו גם לפרוס את האפליקציה בכל מערכת שתרצו, מלבד AppEngine.

מתאם ה-Hub Chat של Google תומך בשני מצבים: HTTP ו-Cloud Pub/Sub. מצב HTTP מריץ שרת אינטרנט אקספרס ומאזין לאירועים ביציאה שצוינה על ידי המשתמש. מצב Cloud Pub/Sub יוצר מנוי ב-Pub/Sub ושולף אירועים ממינוי למשתמש שצוין. בשני המצבים של קבלת הודעות מ-Google Chat, שני המצבים יוצרים אובייקט של HangoutsChatMessage (שמרחיב את האובייקט של Hub ב-Hub) ומעביר אותו לסקריפט של Hubot. התשובה מהסקריפט של Hubot פורסמה במרחב הצ'אט או בצ'אט ב-Google Chat, שממנה האירוע של ההודעה המקורית פורסם באפליקציה.

יצירת מופע של Hubot

לפני שממשיכים, צריך להגדיר את Node.js, מנהל החבילות של npm ואת המחולל של Yoman ל-Hub.

נניח שאתם רוצים ליצור אפליקציה בשם "myhubot". מתחילים ביצירת ספרייה חדשה, ואז יוצרים מופע של Hubot.

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

בשלב זה יימן שואל כמה שאלות לגבי מי שיוצר את האפליקציה ובאיזה מתאם להשתמש. יש לציין את הערך google-hangouts-chat של המתאם.

לחלופין, אפשר להתקין את המתאם בנפרד באמצעות הפקודה הבאה:

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

ב-Hub, ההתנהגות בפועל של האפליקציה מיושמת באמצעות סקריפטים. Hub מכיל סקריפט לדוגמה שאפשר להשתמש בו לבדיקה. אחרי שתגדירו הכל, תוכלו להתאים אישית ולהוסיף סקריפטים משלכם כדי ליישם את ההתנהגות הרצויה באפליקציה.

הגדרת האפשרויות של המתאם ב-Google Chat

האפשרויות מועברים למתאם Google Chat באמצעות משתני סביבה.

חשבון שירות

כדי להשתמש במתאם, צריך להגדיר חשבון שירות לאפליקציה. תוכלו להיעזר במדריך שימוש בחשבונות שירות כדי ליצור חשבון שירות ולהוריד את קובץ ה-JSON שמכיל את המפתח שלכם. לאחר מכן מגדירים את הנתיב למפתח באמצעות משתנה סביבה:

# 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

אין צורך בהגדרות נוספות כדי להפעיל את המתאם במצב HTTP. המתאם משתמש בשרת האקספרס של Hubot, שפועל ביציאה 8080 כברירת מחדל. כדי לשנות את היציאה, צריך להגדיר את משתנה הסביבה PORT:

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

אפשרויות Cloud Pub/Sub

במאמר הגדרת נקודת סיום של Pub/Sub מוסבר איך מגדירים פרויקט ב-GCP, נושא ב-Cloud Pub/Sub, מינוי וחשבון שירות שישמשו את האפליקציה שלכם. מתעלמים מהקוד לדוגמה שבקישור. בפסקאות הבאות יוצרים אפליקציית Hubot עם מתאם Google Chat.

כדי להשתמש במתאם Google Chat במצב Pub/Sub, אתם צריכים להגדיר את האפשרויות הבאות:

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

הפעלה באופן מקומי

כדי להריץ מכונה של Hubot באופן מקומי, מריצים את הפקודה המתאימה מהספרייה myhubot:

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

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

אם המתאם של Google Chat Hub הופעל מחדש, ההודעה הבאה תופיע במסוף:

Hangouts Chat adapter initialized successfully

בהתאם למידע שהגדרתם, כמו מתאם HTTP או מתאם Cloud Pub/Sub, יכול להופיע על המסך מידע רלוונטי נוסף.

פריסה ב-AppEngine

בצעו את ההוראות שמפורטות ב-Quickstart של AppEngine כדי להגדיר את פרויקט GCP ואת סביבת הפיתוח.

אחרי שמשלימים את ההגדרה, צריך לבצע את הפעולות הבאות כדי להגדיר ולפרוס את ה-Hubot ב-AppEngine.

יצירת app.yaml

קודם כול, יוצרים קובץ app.yaml בספריית Hubot. התוכן יהיה דומה לדוגמה הבאה:

runtime: nodejs8
env_variables:
  PORT: 8080
  

הגדרת סביבה

בשלב הבא, מבצעים את ההוראות בדף הזה כדי להגדיר משתני סביבה.

יצירת package.json

לבסוף, יוצרים קובץ package.json שמציין את גרסת ה-צומת.js ואת מאפיין הסקריפטים ששימש להפעלת האפליקציה.

  • מציינים את גרסת ה-Node.js שבה תרצו להשתמש עם המאפיין engines בקובץ package.json.
  • AppEngine משתמשת ב-npm start להפעלת האפליקציה שלך. יש להגדיר את המאפיין scripts בקובץ package.json כך ש-npm יתחיל להפעיל את 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

פרסום ב-Google Chat

אם רוצים לפרסם אפליקציות ב-Google Chat באמצעות מסוף Google Cloud, נכנסים לדף פרסום אפליקציות. להגדיר את נקודת הקצה (HTTP או Cloud Pub/Sub) המתאימה בדף ההגדרות של האפליקציה. אם כבר יצרתם פרויקט GCP בשלב הקודם כדי לפרוס את המכונה של Hubot ב-AppEngine, תוכלו להשתמש באותו פרויקט GCP כדי לפרסם את האפליקציה.

בדיקת האפליקציה

אחרי שתפרסמו את האפליקציה, תוכלו להוסיף אותה למרחב משותף או להתחיל איתה צ'אט אישי ב-Google Chat. האפליקציה צריכה להגיב להודעות שנשלחות אליה. Hubot מגיע עם סקריפט לדוגמה בתיקייה scripts. צריך לבטל את ההצהרה על הקוד בסקריפט לדוגמה, שמגיב להודעות שמכילות את המילה 'Tagger' ולהפעיל מחדש את האפליקציה.

אם קראתם לאפליקציה "myhubot" והוספתם אותה למרחב משותף, תוכלו לשלוח אותה כמוצג למטה:

@myhubot badger

אתם אמורים לראות את התגובה הבאה מהאפליקציה:

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

עכשיו אפשר להתאים אישית או להוסיף סקריפטים של Hubot למכונה של Hubot כדי להטמיע את הפונקציונליות הרצויה לאפליקציה. תוכלו להיעזר במאגר של GitHub במתאם ל-Google Chat כדי לראות דוגמאות לסקריפטים ספציפיים ל-Google Chat.