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