การผสานรวม Hubot กับ Google Chat

Hubot เป็นวิธีที่ยอดเยี่ยมในการสร้างแอปที่ทํางานในหลายแพลตฟอร์ม อะแดปเตอร์ Hubchat ของ Google Chat ช่วยให้คุณใช้แอป Hubot ใน Google Chat ได้อย่างง่ายดาย อะแดปเตอร์จะป้อนข้อความลงใน Hubot และแสดงผลการตอบกลับ

อะแดปเตอร์ Google Chat Hubot รองรับปลายทาง 2 ประเภทดังนี้

  • HTTP
  • Cloud Pub/Sub

คําแนะนํานี้จะอธิบายวิธีเปิดแอป Hubot ใน Google Chat โดยใช้ปลายทางประเภทใดก็ได้

ติดตั้ง

ทําตามวิธีการในหัวข้อเริ่มต้นใช้งาน Hubot เพื่อดาวน์โหลดและติดตั้งเครื่องมือที่จําเป็น ได้แก่ Node.js, npm และโปรแกรมสร้างบ็อตสําหรับ Yoman

คุณอาจลองสร้างอินสแตนซ์ใหม่ของ Hubot ที่ใช้อะแดปเตอร์ Shell ในตัว ติดตั้งสคริปต์ Hubbot เล่นสคริปต์ แล้วสัมผัสระบบนิเวศของ Hubot และพัฒนาแอป Hubot

การใช้อะแดปเตอร์ Hubot Google Chat

ส่วนนี้จะแนะนําเกี่ยวกับการสร้างแอป Hubot ที่ใช้อะแดปเตอร์ Google Chat, การติดตั้งใช้งานใน AppEngine และการเผยแพร่แอปใน Google Chat นอกจากนี้ คุณยังเลือกใช้แอปได้ในระบบอื่นๆ ที่ไม่ใช่ AppEngine

อะแดปเตอร์ Google Chat Hubot รองรับ 2 โหมด ได้แก่ HTTP และ Cloud Pub/Sub โหมด HTTP จะหมุนเวียนเว็บเซิร์ฟเวอร์ Express และรอเหตุการณ์ในพอร์ตที่ระบุของผู้ใช้ โหมด Cloud Pub/Sub จะสร้างผู้สมัครใช้บริการ Pub/Sub และดึงเหตุการณ์จากการสมัครใช้บริการที่ผู้ใช้ระบุ การรับเหตุการณ์จาก Google Chat จะทําให้ทั้ง 2 โหมดสร้างออบเจ็กต์ HangoutsChatMessage (ซึ่งขยายออบเจ็กต์ข้อความของ Hubot อย่างใดอย่างหนึ่ง) แล้วส่งไปยังสคริปต์ Hubot ระบบจะโพสต์คําตอบจากสคริปต์ Hubot ไปยังพื้นที่ในแชทหรือ DM ใน Google Chat ที่มีการเผยแพร่เหตุการณ์ข้อความเดิมไปยังแอป

สร้างอินสแตนซ์ Hubot

โปรดตั้งค่า Node.js, ตัวจัดการแพ็กเกจ npm และโปรแกรมสร้าง Yeoman สําหรับ Hubot ก่อนดําเนินการต่อ

สมมติว่าคุณต้องการสร้างแอปชื่อ "myhubot" เริ่มต้นด้วยการสร้างไดเรกทอรีใหม่ จากนั้นจึงสร้างอินสแตนซ์ Hubot ในนั้น

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

เมื่อถึงจุดนี้ Yeoman จะถามคําถามว่าใครกําลังสร้างแอปและใครควรใช้อะแดปเตอร์ ระบุ google-hangouts-chat สําหรับอะแดปเตอร์

หรือคุณจะติดตั้งอะแดปเตอร์แยกกันโดยใช้คําสั่งต่อไปนี้ก็ได้

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

ใน Hubot จะมีลักษณะการทํางานของแอปจริงโดยใช้สคริปต์ Hubot มาพร้อมสคริปต์ตัวอย่างที่คุณใช้ทดสอบได้ เมื่อตั้งค่าทุกอย่างเสร็จแล้ว คุณจะปรับแต่งและเพิ่มสคริปต์ของตัวเองเพื่อใช้ลักษณะการทํางานของแอปที่ต้องการได้

กําหนดค่าตัวเลือกสําหรับอะแดปเตอร์ 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 Hubot เริ่มต้นเรียบร้อยแล้ว

Hangouts Chat adapter initialized successfully

ข้อมูลที่เกี่ยวข้องอื่นๆ ก็จะแสดงบนหน้าจอได้เช่นกัน ขึ้นอยู่กับว่าคุณกําหนดค่าอะแดปเตอร์ HTTP หรืออะแดปเตอร์ Cloud Pub/Sub ไว้

ทําให้ใช้งานได้ใน AppEngine

ทําตามวิธีการใน App Engine Quickstart เพื่อตั้งค่าโปรเจ็กต์ GCP และสภาพแวดล้อมการพัฒนา

เมื่อตั้งค่าแล้ว ให้ทําตามขั้นตอนด้านล่างเพื่อกําหนดค่าและทําให้อินสแตนซ์ Hubbot ใน AppEngine ใช้งานได้

สร้าง app.yaml

ก่อนอื่น ให้สร้างไฟล์ app.yaml ในไดเรกทอรี Hubot เนื้อหาจะคล้ายกับตัวอย่างต่อไปนี้

runtime: nodejs8
env_variables:
  PORT: 8080
  

กําหนดค่าสภาพแวดล้อม

ถัดไป ให้ตรวจสอบวิธีการในหน้านี้เพื่อกําหนดค่าตัวแปรสภาพแวดล้อม

สร้าง package.json

สุดท้าย ให้สร้างไฟล์ package.json ที่ระบุเวอร์ชัน node.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 Console คุณกําหนดค่าปลายทางที่เหมาะสม (HTTP หรือ Cloud Pub/Sub) ในหน้าการกําหนดค่าแอป หากคุณสร้างโปรเจ็กต์ GCP ในขั้นตอนก่อนหน้าเพื่อติดตั้งใช้งานอินสแตนซ์ Hubot ใน AppEngine คุณสามารถใช้โปรเจ็กต์ GCP เดียวกันเพื่อเผยแพร่แอปได้

ทดสอบแอป

เมื่อเผยแพร่แอปแล้ว คุณจะเพิ่มแอปลงในพื้นที่ทํางานหรือเริ่มส่งข้อความส่วนตัวหาแอปได้ใน Google Chat แอปของคุณควรตอบกลับข้อความที่ส่งไปยังแอป Hubot มาพร้อมกับสคริปต์ตัวอย่างในโฟลเดอร์ scripts แสดงความคิดเห็นเกี่ยวกับโค้ดในสคริปต์ตัวอย่างซึ่งตอบกลับข้อความที่มีคําว่า "badger" และเริ่มแอปอีกครั้ง

หากคุณตั้งชื่อแอปว่า "myhubot" และเพิ่มลงในพื้นที่ทํางาน คุณสามารถส่งข้อความถึงแอปดังที่แสดงด้านล่าง

@myhubot badger

คุณควรจะเห็นการตอบกลับต่อไปนี้จากแอป

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

ตอนนี้คุณปรับแต่งหรือเพิ่มสคริปต์ Hubot ไปยังอินสแตนซ์ Hubot เพื่อใช้ฟังก์ชันที่ต้องการสําหรับแอปได้แล้ว ดูตัวอย่างสคริปต์ที่เฉพาะเจาะจงสําหรับ Google Chat ได้ที่ที่เก็บ Git Chat ของ Google Chat