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