Mainstream messaging
Google Chat
สถานะ: Plugin ที่ดาวน์โหลดได้สำหรับ DM + พื้นที่ผ่าน Webhook ของ Google Chat API (HTTP เท่านั้น).
ติดตั้ง
ติดตั้ง Google Chat ก่อนกำหนดค่าช่องทาง:
openclaw plugins install @openclaw/googlechatเช็กเอาต์ในเครื่อง (เมื่อรันจาก git repo):
openclaw plugins install ./path/to/local/googlechat-pluginตั้งค่าแบบรวดเร็ว (ผู้เริ่มต้น)
- สร้างโปรเจกต์ Google Cloud และเปิดใช้ Google Chat API.
- ไปที่: ข้อมูลรับรอง Google Chat API
- เปิดใช้ API หากยังไม่ได้เปิดใช้.
- สร้าง บัญชีบริการ:
- กด สร้างข้อมูลรับรอง > บัญชีบริการ.
- ตั้งชื่อตามต้องการ (เช่น
openclaw-chat). - เว้นสิทธิ์ไว้เป็นค่าว่าง (กด ดำเนินการต่อ).
- เว้นผู้มีสิทธิ์เข้าถึงไว้เป็นค่าว่าง (กด เสร็จสิ้น).
- สร้างและดาวน์โหลด คีย์ JSON:
- ในรายการบัญชีบริการ ให้คลิกบัญชีที่คุณเพิ่งสร้าง.
- ไปที่แท็บ คีย์.
- คลิก เพิ่มคีย์ > สร้างคีย์ใหม่.
- เลือก JSON แล้วกด สร้าง.
- เก็บไฟล์ JSON ที่ดาวน์โหลดไว้บนโฮสต์ Gateway ของคุณ (เช่น
~/.openclaw/googlechat-service-account.json). - สร้างแอป Google Chat ใน การกำหนดค่า Chat บน Google Cloud Console:
- กรอก ข้อมูลแอปพลิเคชัน:
- ชื่อแอป: (เช่น
OpenClaw) - URL อวาตาร์: (เช่น
https://openclaw.ai/logo.png) - คำอธิบาย: (เช่น
Personal AI Assistant)
- ชื่อแอป: (เช่น
- เปิดใช้ ฟีเจอร์แบบโต้ตอบ.
- ภายใต้ ฟังก์ชันการทำงาน ให้เลือก เข้าร่วมพื้นที่และการสนทนากลุ่ม.
- ภายใต้ การตั้งค่าการเชื่อมต่อ ให้เลือก URL ปลายทาง HTTP.
- ภายใต้ ทริกเกอร์ ให้เลือก ใช้ URL ปลายทาง HTTP ร่วมกันสำหรับทุกทริกเกอร์ และตั้งค่าเป็น URL สาธารณะของ Gateway ตามด้วย
/googlechat.- เคล็ดลับ: รัน
openclaw statusเพื่อหา URL สาธารณะของ Gateway.
- เคล็ดลับ: รัน
- ภายใต้ การมองเห็น ให้เลือก ทำให้แอป Chat นี้พร้อมใช้งานสำหรับบุคคลและกลุ่มที่ระบุใน
<Your Domain>. - ใส่ที่อยู่อีเมลของคุณ (เช่น
user@example.com) ในกล่องข้อความ. - คลิก บันทึก ที่ด้านล่าง.
- กรอก ข้อมูลแอปพลิเคชัน:
- เปิดใช้สถานะแอป:
- หลังจากบันทึกแล้ว ให้ รีเฟรชหน้า.
- มองหาส่วน สถานะแอป (โดยปกติจะอยู่ใกล้ด้านบนหรือด้านล่างหลังจากบันทึก).
- เปลี่ยนสถานะเป็น เผยแพร่จริง - พร้อมใช้งานสำหรับผู้ใช้.
- คลิก บันทึก อีกครั้ง.
- กำหนดค่า OpenClaw ด้วยพาธบัญชีบริการ + กลุ่มเป้าหมาย Webhook:
- Env:
GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json - หรือ config:
channels.googlechat.serviceAccountFile: "/path/to/service-account.json".
- Env:
- ตั้งค่าประเภทกลุ่มเป้าหมาย Webhook + ค่า (ให้ตรงกับการกำหนดค่าแอป Chat ของคุณ).
- เริ่ม Gateway. Google Chat จะ POST ไปยังพาธ Webhook ของคุณ.
เพิ่มไปยัง Google Chat
เมื่อ Gateway กำลังทำงานและอีเมลของคุณถูกเพิ่มลงในรายการการมองเห็นแล้ว:
- ไปที่ Google Chat.
- คลิกไอคอน + (บวก) ถัดจาก ข้อความส่วนตัว.
- ในแถบค้นหา (ที่คุณใช้เพิ่มคนตามปกติ) ให้พิมพ์ ชื่อแอป ที่คุณกำหนดค่าไว้ใน Google Cloud Console.
- หมายเหตุ: บอทจะ ไม่ ปรากฏในรายการเรียกดู "Marketplace" เพราะเป็นแอปส่วนตัว. คุณต้องค้นหาด้วยชื่อ.
- เลือกบอทของคุณจากผลลัพธ์.
- คลิก เพิ่ม หรือ แชท เพื่อเริ่มการสนทนาแบบ 1:1.
- ส่ง "Hello" เพื่อเรียกใช้งานผู้ช่วย!
URL สาธารณะ (เฉพาะ Webhook)
Webhook ของ Google Chat ต้องใช้ปลายทาง HTTPS สาธารณะ. เพื่อความปลอดภัย ให้ เปิดเผยเฉพาะพาธ /googlechat ต่ออินเทอร์เน็ต. เก็บแดชบอร์ด OpenClaw และปลายทางที่ละเอียดอ่อนอื่นไว้ในเครือข่ายส่วนตัวของคุณ.
ตัวเลือก A: Tailscale Funnel (แนะนำ)
ใช้ Tailscale Serve สำหรับแดชบอร์ดส่วนตัว และ Funnel สำหรับพาธ Webhook สาธารณะ. วิธีนี้ทำให้ / เป็นส่วนตัว ขณะที่เปิดเผยเฉพาะ /googlechat.
-
ตรวจสอบว่า Gateway ของคุณผูกกับที่อยู่ใด:
bash ss -tlnp | grep 18789จดที่อยู่ IP ไว้ (เช่น
127.0.0.1,0.0.0.0หรือ IP Tailscale ของคุณ เช่น100.x.x.x). -
เปิดเผยแดชบอร์ดให้เฉพาะ tailnet เท่านั้น (พอร์ต 8443):
bash # If bound to localhost (127.0.0.1 or 0.0.0.0):tailscale serve --bg --https 8443 http://127.0.0.1:18789 # If bound to Tailscale IP only (e.g., 100.106.161.80):tailscale serve --bg --https 8443 http://100.106.161.80:18789 -
เปิดเผยเฉพาะพาธ Webhook แบบสาธารณะ:
bash # If bound to localhost (127.0.0.1 or 0.0.0.0):tailscale funnel --bg --set-path /googlechat http://127.0.0.1:18789/googlechat # If bound to Tailscale IP only (e.g., 100.106.161.80):tailscale funnel --bg --set-path /googlechat http://100.106.161.80:18789/googlechat -
อนุญาตโหนดให้เข้าถึง Funnel: หากมีพรอมป์ ให้เปิด URL การอนุญาตที่แสดงในเอาต์พุตเพื่อเปิดใช้ Funnel สำหรับโหนดนี้ในนโยบาย tailnet ของคุณ.
-
ตรวจสอบการกำหนดค่า:
bash tailscale serve statustailscale funnel status
URL Webhook สาธารณะของคุณจะเป็น:
https://<node-name>.<tailnet>.ts.net/googlechat
แดชบอร์ดส่วนตัวของคุณยังคงเป็นแบบเฉพาะ tailnet:
https://<node-name>.<tailnet>.ts.net:8443/
ใช้ URL สาธารณะ (ไม่รวม :8443) ในการกำหนดค่าแอป Google Chat.
หมายเหตุ: การกำหนดค่านี้คงอยู่หลังรีบูต. หากต้องการลบในภายหลัง ให้รัน
tailscale funnel resetและtailscale serve reset.
ตัวเลือก B: Reverse Proxy (Caddy)
หากคุณใช้ Reverse Proxy เช่น Caddy ให้พร็อกซีเฉพาะพาธที่ระบุ:
your-domain.com { reverse_proxy /googlechat* localhost:18789}ด้วย config นี้ คำขอใดก็ตามที่ไปยัง your-domain.com/ จะถูกละเว้นหรือส่งคืนเป็น 404 ขณะที่ your-domain.com/googlechat จะถูกส่งต่อไปยัง OpenClaw อย่างปลอดภัย.
ตัวเลือก C: Cloudflare Tunnel
กำหนดค่ากฎ ingress ของ tunnel ให้ส่งต่อเฉพาะพาธ Webhook:
- พาธ:
/googlechat->http://localhost:18789/googlechat - กฎเริ่มต้น: HTTP 404 (ไม่พบ)
วิธีการทำงาน
- Google Chat ส่ง Webhook POST ไปยัง Gateway. คำขอแต่ละรายการมีส่วนหัว
Authorization: Bearer <token>.- OpenClaw ตรวจสอบ bearer auth ก่อนอ่าน/แยกวิเคราะห์เนื้อหา Webhook ทั้งหมดเมื่อมีส่วนหัวนี้.
- รองรับคำขอ Google Workspace Add-on ที่มี
authorizationEventObject.systemIdTokenในเนื้อหา ผ่านงบประมาณเนื้อหาก่อนตรวจสอบสิทธิ์ที่เข้มงวดยิ่งขึ้น.
- OpenClaw ตรวจสอบโทเค็นกับ
audienceType+audienceที่กำหนดค่าไว้:audienceType: "app-url"→ กลุ่มเป้าหมายคือ URL Webhook HTTPS ของคุณ.audienceType: "project-number"→ กลุ่มเป้าหมายคือหมายเลขโปรเจกต์ Cloud.
- ข้อความถูกกำหนดเส้นทางตามพื้นที่:
- DM ใช้คีย์เซสชัน
agent:<agentId>:googlechat:direct:<spaceId>. - พื้นที่ใช้คีย์เซสชัน
agent:<agentId>:googlechat:group:<spaceId>.
- DM ใช้คีย์เซสชัน
- การเข้าถึง DM ใช้การจับคู่เป็นค่าเริ่มต้น. ผู้ส่งที่ไม่รู้จักจะได้รับรหัสจับคู่; อนุมัติด้วย:
openclaw pairing approve googlechat <code>
- พื้นที่กลุ่มต้อง @-mention เป็นค่าเริ่มต้น. ใช้
botUserหากการตรวจจับ mention ต้องใช้ชื่อผู้ใช้ของแอป. - เมื่อคำขออนุมัติ exec หรือ Plugin เริ่มจาก Google Chat และมีการกำหนดค่าผู้อนุมัติ
users/<id>ที่เสถียร OpenClaw จะโพสต์การ์ดอนุมัติของ Google Chat แบบเนทีฟในพื้นที่หรือเธรดต้นทาง. ปุ่มบนการ์ดใช้โทเค็น callback แบบทึบ และพรอมป์/approve <id> <decision>แบบแมนนวลจะแสดงเฉพาะเมื่อไม่สามารถส่งการอนุมัติแบบเนทีฟได้.
เป้าหมาย
ใช้ตัวระบุเหล่านี้สำหรับการส่งและ allowlist:
- ข้อความส่วนตัว:
users/<userId>(แนะนำ). - อีเมลดิบ
name@example.comเปลี่ยนแปลงได้ และใช้เฉพาะสำหรับการจับคู่ allowlist โดยตรงเมื่อchannels.googlechat.dangerouslyAllowNameMatching: true. - เลิกใช้แล้ว:
users/<email>จะถูกถือเป็น id ผู้ใช้ ไม่ใช่ allowlist อีเมล. - พื้นที่:
spaces/<spaceId>.
จุดสำคัญของ Config
{ channels: { googlechat: { enabled: true, serviceAccountFile: "/path/to/service-account.json", // or serviceAccountRef: { source: "file", provider: "filemain", id: "/channels/googlechat/serviceAccount" } audienceType: "app-url", audience: "https://gateway.example.com/googlechat", webhookPath: "/googlechat", botUser: "users/1234567890", // optional; helps mention detection allowBots: false, dm: { policy: "pairing", allowFrom: ["users/1234567890"], }, groupPolicy: "allowlist", groups: { "spaces/AAAA": { enabled: true, requireMention: true, users: ["users/1234567890"], systemPrompt: "Short answers only.", }, }, actions: { reactions: true }, typingIndicator: "message", mediaMaxMb: 20, }, },}หมายเหตุ:
- ข้อมูลรับรองบัญชีบริการสามารถส่งแบบ inline ด้วย
serviceAccount(สตริง JSON) ได้เช่นกัน. - รองรับ
serviceAccountRefด้วย (SecretRef แบบ env/file) รวมถึง refs ต่อบัญชีภายใต้channels.googlechat.accounts.<id>.serviceAccountRef. - พาธ Webhook เริ่มต้นคือ
/googlechatหากไม่ได้ตั้งค่าwebhookPath. dangerouslyAllowNameMatchingเปิดใช้การจับคู่ principal อีเมลที่เปลี่ยนแปลงได้อีกครั้งสำหรับ allowlist (โหมดความเข้ากันได้สำหรับกรณีฉุกเฉิน).- Reactions พร้อมใช้งานผ่านเครื่องมือ
reactionsและchannels actionเมื่อเปิดใช้actions.reactions. - การ์ดอนุมัติแบบเนทีฟใช้การคลิกปุ่ม
cardsV2ของ Google Chat ไม่ใช่เหตุการณ์ reaction. ผู้อนุมัติมาจากdm.allowFromหรือdefaultToและต้องเป็นค่าusers/<id>แบบตัวเลขที่เสถียร. - การกระทำของข้อความเปิดเผย
sendสำหรับข้อความ และupload-fileสำหรับการส่งไฟล์แนบแบบชัดเจน.upload-fileรับmedia/filePath/pathพร้อมmessage,filenameและการกำหนดเป้าหมายเธรดที่เป็นตัวเลือก. typingIndicatorรองรับmessage(ค่าเริ่มต้น),noneและreaction(reaction ต้องใช้ OAuth ของผู้ใช้).- ไฟล์แนบถูกดาวน์โหลดผ่าน Chat API และจัดเก็บใน pipeline สื่อ (จำกัดขนาดโดย
mediaMaxMb). - ข้อความ Google Chat ที่บอทเขียนเองจะถูกละเว้นเป็นค่าเริ่มต้น. หากคุณตั้งค่า
allowBots: trueโดยตั้งใจ ข้อความที่บอทเขียนเองซึ่งได้รับการยอมรับจะใช้ การป้องกันลูปของบอท ร่วมกัน. กำหนดค่าchannels.defaults.botLoopProtectionแล้ว override ด้วยchannels.googlechat.botLoopProtectionหรือchannels.googlechat.groups.<space>.botLoopProtectionเมื่อพื้นที่หนึ่งต้องใช้งบประมาณที่ต่างออกไป.
รายละเอียดการอ้างอิงความลับ: การจัดการความลับ.
การแก้ไขปัญหา
405 Method Not Allowed
หาก Google Cloud Logs Explorer แสดงข้อผิดพลาดเช่น:
status code: 405, reason phrase: HTTP error response: HTTP/1.1 405 Method Not Allowedหมายความว่า handler ของ Webhook ยังไม่ได้ลงทะเบียน. สาเหตุที่พบบ่อย:
-
ไม่ได้กำหนดค่าช่องทาง: ส่วน
channels.googlechatหายไปจาก config ของคุณ. ตรวจสอบด้วย:bash openclaw config get channels.googlechatหากส่งคืน "Config path not found" ให้เพิ่มการกำหนดค่า (ดู จุดสำคัญของ Config).
-
ไม่ได้เปิดใช้ Plugin: ตรวจสอบสถานะ Plugin:
bash openclaw plugins list | grep googlechatหากแสดงว่า "disabled" ให้เพิ่ม
plugins.entries.googlechat.enabled: trueลงใน config ของคุณ. -
ยังไม่ได้รีสตาร์ท Gateway: หลังจากเพิ่ม config แล้ว ให้รีสตาร์ท Gateway:
bash openclaw gateway restart
ตรวจสอบว่าช่องทางกำลังทำงาน:
openclaw channels status# Should show: Google Chat default: enabled, configured, ...ปัญหาอื่น
- ตรวจสอบ
openclaw channels status --probeสำหรับข้อผิดพลาด auth หรือ config กลุ่มเป้าหมายที่ขาดหาย. - หากไม่มีข้อความเข้ามา ให้ยืนยัน URL Webhook + การสมัครรับเหตุการณ์ของแอป Chat.
- หากการกั้นด้วย mention บล็อกการตอบกลับ ให้ตั้งค่า
botUserเป็นชื่อ resource ผู้ใช้ของแอป และตรวจสอบrequireMention. - ใช้
openclaw logs --followขณะส่งข้อความทดสอบเพื่อดูว่าคำขอไปถึง Gateway หรือไม่.
เอกสารที่เกี่ยวข้อง:
ที่เกี่ยวข้อง
- ภาพรวมช่องทาง — ช่องทางที่รองรับทั้งหมด
- การจับคู่ — การยืนยันตัวตนผ่าน DM และขั้นตอนการจับคู่
- กลุ่ม — พฤติกรรมแชตกลุ่มและการควบคุมด้วยการกล่าวถึง
- การกำหนดเส้นทางช่องทาง — การกำหนดเส้นทางเซสชันสำหรับข้อความ
- ความปลอดภัย — โมเดลการเข้าถึงและการเสริมความแข็งแกร่ง