สร้างแอป Google Chat เป็นเว็บฮุค (original) (raw)

หน้านี้อธิบายวิธีตั้งค่า Webhook เพื่อส่งข้อความแบบไม่พร้อมกันไปยังพื้นที่ใน Chat โดยใช้ทริกเกอร์ภายนอก เช่น คุณสามารถ กำหนดค่าแอปพลิเคชันการตรวจสอบให้แจ้งเตือนเจ้าหน้าที่ที่ปฏิบัติงาน ใน Chat เมื่อเซิร์ฟเวอร์หยุดทำงาน หากต้องการส่งข้อความแบบซิงโครนัส ด้วยแอป Chat โปรดดูส่งข้อความ

การออกแบบสถาปัตยกรรมประเภทนี้ ทำให้ผู้ใช้โต้ตอบกับ Webhook หรือแอปพลิเคชันภายนอกที่เชื่อมต่อไม่ได้ เนื่องจากการสื่อสารเป็นแบบทางเดียว เว็บฮุคไม่ใช่การสนทนา โดยจะตอบกลับหรือรับข้อความจากผู้ใช้หรือเหตุการณ์การโต้ตอบของแอป Chat ไม่ได้ หากต้องการตอบกลับข้อความ ให้สร้างแอป Chatแทนที่จะใช้เว็บฮุก

แม้ว่าในทางเทคนิคแล้ว Webhook จะไม่ใช่แอป Chat แต่ Webhook จะเชื่อมต่อแอปพลิเคชันโดยใช้คำขอ HTTP มาตรฐาน หน้านี้จะอ้างอิงถึง Webhook ในฐานะแอป Chat เพื่อให้เข้าใจง่าย Webhook แต่ละรายการจะใช้งานได้เฉพาะในพื้นที่ Chat ที่ลงทะเบียนไว้เท่านั้น Webhook ขาเข้าจะทำงานในข้อความส่วนตัว แต่จะทำงานได้ก็ต่อเมื่อผู้ใช้ทั้งหมดเปิดใช้แอปใน Chatคุณเผยแพร่ Webhook ไปยัง Google Workspace Marketplace ไม่ได้

แผนภาพต่อไปนี้แสดงสถาปัตยกรรมของเว็บฮุกที่เชื่อมต่อกับ Chat

สถาปัตยกรรมสำหรับเว็บฮุคขาเข้าเพื่อส่งข้อความแบบไม่พร้อมกันไปยัง Chat

ในไดอะแกรมก่อนหน้า แอป Chat มีโฟลว์ข้อมูลต่อไปนี้

  1. ตรรกะของแอป Chat จะรับข้อมูลจากบริการของบุคคลที่สามภายนอก เช่น ระบบการจัดการโปรเจ็กต์หรือเครื่องมือออกตั๋ว
  2. ตรรกะของแอป Chat จะโฮสต์อยู่ในระบบคลาวด์หรือระบบในองค์กรที่สามารถส่งข้อความได้โดยใช้ URL ของเว็บฮุคไปยังพื้นที่ทำงาน Chat ที่เฉพาะเจาะจง
  3. ผู้ใช้จะรับข้อความจากแอปใน Chat ในพื้นที่ทำงาน Chat นั้นๆ ได้ แต่จะโต้ตอบกับแอปใน Chat ไม่ได้

ข้อกำหนดเบื้องต้น

Node.js

Python

pip install httplib2  

Java

Apps Script

สร้างเว็บฮุก

หากต้องการสร้างเว็บฮุค ให้ลงทะเบียนในพื้นที่ทำงาน Chat ที่คุณต้องการ รับข้อความ แล้วเขียนสคริปต์ที่ส่งข้อความ

ลงทะเบียนเว็บฮุคขาเข้า

  1. เปิด Chat ในเบราว์เซอร์ คุณกำหนดค่าเว็บฮุคจากแอป Chat บนอุปกรณ์เคลื่อนที่ไม่ได้
  2. ไปที่พื้นที่ทำงานที่ต้องการเพิ่มเว็บบุ๊ก
  3. คลิกลูกศรขยายเพิ่มเติม ข้างชื่อพื้นที่ทำงาน แล้วคลิกแอปและการผสานรวม
  4. คลิกเพิ่ม Webhook
  5. ป้อน Quickstart Webhook ในช่องชื่อ
  6. ในช่อง URL อวตาร ให้ป้อนhttps://developers.google.com/chat/images/chat-product-icon.png
  7. คลิกบันทึก
  8. หากต้องการคัดลอก URL ของเว็บฮุก ให้คลิกเพิ่มเติม แล้วคลิกคัดลอกลิงก์
    URL ของเว็บฮุกมีพารามิเตอร์ 2 รายการ ได้แก่ key ซึ่งเป็นค่าทั่วไปที่ใช้ร่วมกัน ระหว่างเว็บฮุก และ token ซึ่งเป็นค่าที่ไม่ซ้ำกันที่ต้องเก็บไว้ เป็นความลับเพื่อรักษาความปลอดภัยของเว็บฮุก

เขียนสคริปต์เว็บฮุค

สคริปต์เว็บฮุกตัวอย่างจะส่งข้อความไปยังพื้นที่ทำงานที่ลงทะเบียนเว็บฮุกโดยส่งคำขอ POST ไปยัง URL ของเว็บฮุก Chat API จะตอบกลับด้วยอินสแตนซ์ของMessage

เลือกภาษาเพื่อดูวิธีสร้างสคริปต์ของ Webhook

Node.js

  1. สร้างไฟล์ชื่อ index.js ในไดเรกทอรีการทำงาน
  2. ใน index.js ให้วางโค้ดต่อไปนี้
  3. แทนที่ค่าสำหรับตัวแปร url ด้วย URL ของเว็บฮุกที่คุณคัดลอกเมื่อลงทะเบียนเว็บฮุก

Python

  1. สร้างไฟล์ชื่อ quickstart.py ในไดเรกทอรีการทำงาน
  2. ใน quickstart.py ให้วางโค้ดต่อไปนี้
  3. แทนที่ค่าสำหรับตัวแปร url ด้วย URL ของเว็บฮุกที่คุณคัดลอกเมื่อลงทะเบียนเว็บฮุก

Java

  1. สร้างไฟล์ชื่อ pom.xml ในไดเรกทอรีการทำงาน
  2. ใน pom.xml ให้คัดลอกและวางข้อความต่อไปนี้
  3. ในไดเรกทอรีที่ทำงานอยู่ ให้สร้างโครงสร้างไดเรกทอรีต่อไปนี้src/main/java
  4. ในไดเรกทอรี src/main/java ให้สร้างไฟล์ชื่อ App.java
  5. ใน App.java ให้วางโค้ดต่อไปนี้
  6. แทนที่ค่าของตัวแปร URL ด้วย URL ของเว็บฮุกที่คุณคัดลอกเมื่อลงทะเบียนเว็บฮุก

Apps Script

  1. ไปที่Apps Script ในเบราว์เซอร์
  2. คลิกโปรเจ็กต์ใหม่
  3. วางโค้ดต่อไปนี้
  4. แทนที่ค่าของตัวแปร url ด้วย URL ของเว็บฮุกที่คุณคัดลอกเมื่อลงทะเบียนเว็บฮุก

เรียกใช้สคริปต์เว็บฮุค

เรียกใช้สคริปต์ใน CLI โดยทำดังนี้

Node.js

  node index.js

Python

  python3 quickstart.py

Java

  mvn compile exec:java -Dexec.mainClass=App

Apps Script

เมื่อเรียกใช้โค้ด เว็บฮุคจะส่งข้อความไปยังพื้นที่ทำงานที่คุณ ลงทะเบียนไว้

เริ่มหรือตอบกลับชุดข้อความ

  1. ระบุspaces.messages.thread.threadKeyเป็นส่วนหนึ่งของเนื้อหาคำขอแชท ไม่ว่าคุณจะเริ่มหรือตอบกลับเธรด ให้ใช้ค่าต่อไปนี้สำหรับ threadKey
    • หากเริ่มชุดข้อความ ให้ตั้งค่า threadKey เป็นสตริงใดก็ได้ แต่ จดค่านี้ไว้เพื่อโพสต์การตอบกลับชุดข้อความ
    • หากตอบกลับชุดข้อความ ให้ระบุ threadKey ที่ตั้งค่าไว้เมื่อเริ่มชุดข้อความ เช่น หากต้องการโพสต์คำตอบในชุดข้อความที่ข้อความเริ่มต้นใช้ MY-THREAD ให้ตั้งค่า MY-THREAD
  2. กำหนดลักษณะการทำงานของเธรดหากไม่พบ threadKey ที่ระบุ
    • ตอบกลับชุดข้อความหรือเริ่มชุดข้อความใหม่ เพิ่มพารามิเตอร์messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD ลงใน URL ของเว็บฮุค การส่งพารามิเตอร์ URL นี้จะทำให้ Chat ค้นหาเธรดที่มีอยู่โดยใช้ threadKey ที่ระบุ หากพบ ข้อความดังกล่าว ระบบจะโพสต์ข้อความเป็นการตอบกลับชุดข้อความนั้น หากไม่พบ ระบบจะเริ่มชุดข้อความใหม่ที่สอดคล้องกับthreadKey
    • ตอบกลับชุดข้อความหรือปล่อยไว้ เพิ่มพารามิเตอร์ messageReplyOption=REPLY_MESSAGE_OR_FAIL ลงใน URL ของเว็บฮุค การส่งพารามิเตอร์ URL นี้จะทำให้ Chat ค้นหาเธรดที่มีอยู่โดยใช้ threadKey ที่ระบุ หากพบ ข้อความดังกล่าว ระบบจะโพสต์ข้อความเป็นการตอบกลับชุดข้อความนั้น หากไม่พบ ระบบจะไม่ส่งข้อความ
      ดูข้อมูลเพิ่มเติมได้ที่ messageReplyOption

ตัวอย่างโค้ดต่อไปนี้จะเริ่มหรือตอบกลับชุดข้อความ

Node.js

Python

Java

Apps Script

จัดการข้อผิดพลาด

คำขอ Webhook อาจไม่สำเร็จเนื่องจากสาเหตุหลายประการ ซึ่งรวมถึง

เมื่อสร้างเว็บฮุค คุณควรจัดการข้อผิดพลาดอย่างเหมาะสมโดยทำดังนี้

Google Chat API จะแสดงข้อผิดพลาดเป็นgoogle.rpc.Statusซึ่งรวมถึงข้อผิดพลาด HTTP code ที่ระบุประเภทข้อผิดพลาดที่พบ ซึ่งอาจเป็นข้อผิดพลาดของไคลเอ็นต์ (ชุด 400) หรือข้อผิดพลาดของเซิร์ฟเวอร์ (ชุด 500) หากต้องการ ตรวจสอบการแมป HTTP ทั้งหมด โปรดดูgoogle.rpc.Code

{
    "code": 503,
    "message": "The service is currently unavailable.",
    "status": "UNAVAILABLE"
}

ดูวิธีตีความรหัสสถานะ HTTP และจัดการข้อผิดพลาดได้ที่ข้อผิดพลาด

ข้อจำกัดและข้อควรพิจารณา