หน้านี้อธิบายวิธีตั้งค่า Webhook เพื่อส่งข้อความแบบไม่พร้อมกันไปยังพื้นที่ใน Chat โดยใช้ทริกเกอร์ภายนอก เช่น คุณสามารถกำหนดค่าแอปพลิเคชันการตรวจสอบเพื่อแจ้งเตือนเจ้าหน้าที่ที่ปฏิบัติงานในแชทเมื่อเซิร์ฟเวอร์หยุดทำงาน หากต้องการส่งข้อความแบบซิงโครนัส ด้วยแอป Chat โปรดดู ส่งข้อความ
การออกแบบสถาปัตยกรรมประเภทนี้ ทำให้ผู้ใช้โต้ตอบกับ Webhook หรือแอปพลิเคชันภายนอกที่เชื่อมต่อไม่ได้ เนื่องจากการสื่อสารเป็นแบบทางเดียว เว็บฮุคไม่ใช่การสนทนา โดยจะตอบกลับหรือรับข้อความจากผู้ใช้หรือเหตุการณ์การโต้ตอบของแอป Chat ไม่ได้ หากต้องการตอบกลับข้อความ ให้สร้างแอป Chat แทนที่จะใช้ Webhook
แม้ว่าในทางเทคนิคแล้ว Webhook จะไม่ใช่แอป Chat แต่ Webhook จะเชื่อมต่อแอปพลิเคชันโดยใช้คำขอ HTTP มาตรฐาน หน้านี้จะอ้างอิงถึง Webhook ในฐานะแอป Chat เพื่อให้เข้าใจง่าย Webhook แต่ละรายการจะใช้งานได้เฉพาะในพื้นที่ใน Chat ที่ลงทะเบียนไว้เท่านั้น Webhook ขาเข้าจะทำงานในข้อความส่วนตัว แต่จะทำงานได้ก็ต่อเมื่อผู้ใช้ทุกคนเปิดใช้แอปใน Chat คุณเผยแพร่ Webhook ไปยัง Google Workspace Marketplace ไม่ได้
แผนภาพต่อไปนี้แสดงสถาปัตยกรรมของเว็บฮุกที่เชื่อมต่อกับ Chat
ในไดอะแกรมก่อนหน้า แอป Chat มีโฟลว์ข้อมูลต่อไปนี้
- ตรรกะของแอป Chat จะรับข้อมูลจากบริการของบุคคลที่สามภายนอก เช่น ระบบการจัดการโปรเจ็กต์หรือเครื่องมือออกตั๋ว
- ตรรกะของแอป Chat จะโฮสต์อยู่ในระบบคลาวด์หรือระบบภายในองค์กรที่สามารถส่งข้อความได้โดยใช้ URL ของเว็บฮุคไปยังพื้นที่ใน Chat ที่เฉพาะเจาะจง
- ผู้ใช้จะรับข้อความจากแอปใน Chat ในพื้นที่ใน Chat นั้นๆ ได้ แต่จะโต้ตอบกับแอปใน Chat ไม่ได้
ข้อกำหนดเบื้องต้น
Node.js
- บัญชี Google Workspace สำหรับธุรกิจหรือองค์กร ที่มีสิทธิ์เข้าถึง Google Chat องค์กร Google Workspace ต้องอนุญาตให้ผู้ใช้ เพิ่มและใช้เว็บฮุกขาเข้า
- Node.js 14 ขึ้นไป
- เครื่องมือจัดการแพ็กเกจ npm
- พื้นที่ใน Chat ของ Google หากต้องการสร้างโดยใช้ Google Chat API โปรดดูสร้างพื้นที่ทำงาน หากต้องการสร้างใน Chat โปรดไปที่เอกสารประกอบในศูนย์ช่วยเหลือ
Python
- บัญชี Google Workspace สำหรับธุรกิจหรือองค์กร ที่มีสิทธิ์เข้าถึง Google Chat องค์กร Google Workspace ต้องอนุญาตให้ผู้ใช้ เพิ่มและใช้เว็บฮุกขาเข้า
- Python 3.6 ขึ้นไป
- เครื่องมือจัดการแพ็กเกจ pip
คลัง
httplib2หากต้องการติดตั้งไลบรารี ให้เรียกใช้คำสั่งต่อไปนี้ในอินเทอร์เฟซบรรทัดคำสั่งpip install httplib2พื้นที่ใน Chat ของ Google หากต้องการสร้างโดยใช้ Google Chat API โปรดดูสร้างพื้นที่ทำงาน หากต้องการสร้างใน Chat โปรดไปที่เอกสารประกอบในศูนย์ช่วยเหลือ
Java
- บัญชี Google Workspace สำหรับธุรกิจหรือองค์กร ที่มีสิทธิ์เข้าถึง Google Chat องค์กร Google Workspace ต้องอนุญาตให้ผู้ใช้ เพิ่มและใช้เว็บฮุกขาเข้า
- Java 11 ขึ้นไป
- เครื่องมือการจัดการแพ็กเกจ Maven
- พื้นที่ใน Chat ของ Google หากต้องการสร้างโดยใช้ Google Chat API โปรดดูสร้างพื้นที่ทำงาน หากต้องการสร้างใน Chat โปรดไปที่เอกสารประกอบในศูนย์ช่วยเหลือ
Apps Script
- บัญชี Google Workspace สำหรับธุรกิจหรือองค์กร ที่มีสิทธิ์เข้าถึง Google Chat องค์กร Google Workspace ต้องอนุญาตให้ผู้ใช้ เพิ่มและใช้เว็บฮุกขาเข้า
- สร้างโปรเจ็กต์ Apps Script แบบสแตนด์อโลน และเปิดบริการ Chat ขั้นสูง
- พื้นที่ใน Chat ของ Google หากต้องการสร้างโดยใช้ Google Chat API โปรดดูสร้างพื้นที่ทำงาน หากต้องการสร้างใน Chat โปรดไปที่เอกสารประกอบในศูนย์ช่วยเหลือ
สร้างเว็บฮุก
หากต้องการสร้างเว็บฮุค ให้ลงทะเบียนในพื้นที่ใน Chat ที่คุณต้องการรับข้อความ แล้วเขียนสคริปต์ที่ส่งข้อความ
ลงทะเบียนเว็บฮุคขาเข้า
- เปิด Chat ในเบราว์เซอร์ คุณกำหนดค่าเว็บฮุคจากแอป Chat บนอุปกรณ์เคลื่อนที่ไม่ได้
- ไปที่พื้นที่ทำงานที่ต้องการเพิ่มเว็บบุ๊ก
- คลิกลูกศรขยายเพิ่มเติม ข้างชื่อพื้นที่ทำงาน แล้วคลิกแอปและการผสานรวม
คลิกเพิ่ม Webhook
ป้อน
Quickstart Webhookในช่องชื่อในช่อง URL อวตาร ให้ป้อน
https://developers.google.com/chat/images/chat-product-icon.pngคลิกบันทึก
หากต้องการคัดลอก URL ของเว็บฮุก ให้คลิก เพิ่มเติม แล้วคลิก คัดลอกลิงก์
URL ของเว็บฮุกมีพารามิเตอร์ 2 รายการ ได้แก่
keyซึ่งเป็นค่าทั่วไปที่ใช้ร่วมกัน ระหว่างเว็บฮุก และtokenซึ่งเป็นค่าที่ไม่ซ้ำกันที่ต้องเก็บไว้ เป็นความลับเพื่อรักษาความปลอดภัยของเว็บฮุก
เขียนสคริปต์เว็บฮุค
สคริปต์เว็บฮุกตัวอย่างจะส่งข้อความไปยังพื้นที่ทำงานที่ลงทะเบียนเว็บฮุกโดยส่งPOSTคำขอไปยัง URL ของเว็บฮุก
Chat API จะตอบกลับด้วยอินสแตนซ์ของ
Message
เลือกภาษาเพื่อดูวิธีสร้างสคริปต์ของ Webhook
Node.js
สร้างไฟล์ชื่อ
index.jsในไดเรกทอรีการทำงานใน
index.jsให้วางโค้ดต่อไปนี้แทนที่ค่าสำหรับตัวแปร
urlด้วย URL ของเว็บฮุค ที่ คุณคัดลอกเมื่อจดทะเบียนเว็บฮุค
Python
สร้างไฟล์ชื่อ
quickstart.pyในไดเรกทอรีการทำงานใน
quickstart.pyให้วางโค้ดต่อไปนี้แทนที่ค่าสำหรับตัวแปร
urlด้วย URL ของเว็บฮุค ที่ คุณคัดลอกเมื่อจดทะเบียนเว็บฮุค
Java
สร้างไฟล์ชื่อ
pom.xmlในไดเรกทอรีการทำงานใน
pom.xmlให้คัดลอกและวางข้อความต่อไปนี้ในไดเรกทอรีที่ทำงานอยู่ ให้สร้างโครงสร้างไดเรกทอรีต่อไปนี้
src/main/javaในไดเรกทอรี
src/main/javaให้สร้างไฟล์ชื่อApp.javaใน
App.javaให้วางโค้ดต่อไปนี้แทนที่ค่าของตัวแปร
URLด้วย URL ของเว็บฮุกที่คุณ คัดลอกเมื่อลงทะเบียนเว็บฮุก
Apps Script
ไปที่ Apps Script ในเบราว์เซอร์
คลิกโปรเจ็กต์ใหม่
วางโค้ดต่อไปนี้
แทนที่ค่าของตัวแปร
urlด้วย URL ของเว็บฮุกที่คุณ คัดลอกเมื่อลงทะเบียนเว็บฮุก
เรียกใช้สคริปต์เว็บฮุค
เรียกใช้สคริปต์ใน CLI โดยทำดังนี้
Node.js
node index.jsPython
python3 quickstart.pyJava
mvn compile exec:java -Dexec.mainClass=AppApps Script
- คลิกเรียกใช้
เมื่อเรียกใช้โค้ด เว็บฮุกจะส่งข้อความไปยังพื้นที่ทำงานที่คุณ ลงทะเบียนไว้
เริ่มหรือตอบกลับชุดข้อความ
ระบุ
spaces.messages.thread.threadKeyเป็นส่วนหนึ่งของเนื้อหาคำขอแชท ใช้ค่าต่อไปนี้สำหรับthreadKeyไม่ว่าคุณจะเริ่มหรือตอบกลับเธรดหากเริ่มชุดข้อความ ให้ตั้งค่า
threadKeyเป็นสตริงที่กำหนดเอง แต่ จดค่านี้ไว้เพื่อโพสต์การตอบกลับชุดข้อความหากตอบกลับชุดข้อความ ให้ระบุ
threadKeyที่ตั้งค่าไว้เมื่อเริ่มชุดข้อความ เช่น หากต้องการโพสต์คำตอบในชุดข้อความที่ข้อความเริ่มต้นใช้MY-THREADให้ตั้งค่าMY-THREAD
กำหนดลักษณะการทำงานของเธรดหากไม่พบ
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 อาจไม่สำเร็จด้วยเหตุผลหลายประการ ซึ่งรวมถึง
- คำขอไม่ถูกต้อง
- มีการลบเว็บฮุกหรือพื้นที่ที่โฮสต์เว็บฮุก
- ปัญหาเป็นครั้งคราว เช่น การเชื่อมต่อเครือข่ายหรือขีดจำกัดโควต้า
เมื่อสร้างเว็บฮุค คุณควรจัดการข้อผิดพลาดอย่างเหมาะสมโดยทำดังนี้
- การบันทึกข้อผิดพลาด
- สำหรับข้อผิดพลาดเกี่ยวกับเวลา โควต้า หรือการเชื่อมต่อเครือข่าย ให้ลองส่งคำขออีกครั้งโดยใช้ Exponential Backoff
- ไม่ทำอะไรเลย ซึ่งเป็นสิ่งที่เหมาะสมหากการส่งข้อความ 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 และจัดการข้อผิดพลาดได้ที่ข้อผิดพลาด
ข้อจำกัดและข้อควรพิจารณา
- เมื่อสร้างข้อความ
ด้วยเว็บบุ๊กใน Google Chat API การตอบกลับจะไม่มีข้อความแบบเต็ม
การตอบกลับจะป้อนข้อมูลเฉพาะในช่อง
nameและthread.nameเท่านั้น - Webhook จะขึ้นอยู่กับโควต้าต่อพื้นที่ทำงานสำหรับ
spaces.messages.create: 1 คำขอต่อวินาที ซึ่งใช้ร่วมกันใน Webhook ทั้งหมดในพื้นที่ทำงาน แชทยังอาจปฏิเสธคำขอ Webhook ที่เกิน 1 คำค้นหา ต่อวินาทีในพื้นที่ทำงานเดียวกันด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับโควต้า Chat API ได้ที่ขีดจำกัดการใช้งาน