ในหน้านี้
ในหน้านี้
Mainstream messaging
ข้อมูลเมตาการนำเสนอของ Matrix
OpenClaw แนบเมทาดาทา MessagePresentation ที่ปรับให้อยู่ในรูปแบบมาตรฐานกับเหตุการณ์ Matrix m.room.message ขาออกภายใต้คีย์เนื้อหา com.openclaw.presentation
ไคลเอนต์ Matrix มาตรฐานจะยังคงแสดงผล body ซึ่งเป็นข้อความธรรมดา ส่วนไคลเอนต์ที่รองรับ OpenClaw สามารถอ่านเมทาดาทาที่มีโครงสร้างและแสดงผล UI แบบเนทีฟ เช่น ปุ่ม รายการเลือก แถวบริบท และเส้นแบ่ง
เนื้อหาเหตุการณ์
versionคือเวอร์ชันสคีมาของเมทาดาทา โดยเวอร์ชันปัจจุบันคือ1ส่วนtypeคือตัวจำแนกที่คงที่และมีค่าเป็น"message.presentation"เสมอ อะแดปเตอร์ Matrix จะปล่อยเฉพาะเพย์โหลดที่มีเวอร์ชันและชนิดตรงตามนี้เท่านั้น ในทำนองเดียวกัน ไคลเอนต์ควรละเว้นเวอร์ชันที่ไม่รู้จักซึ่งไม่สามารถตีความได้อย่างปลอดภัย ค่าtypeที่ไม่รู้จัก และชนิดบล็อกที่ไม่รู้จักtitleและtone(info,success,warning,danger,neutral) เป็นคำใบ้ที่ระบุหรือไม่ก็ได้- ปุ่มและตัวเลือกในรายการเลือกสามารถมี
actionที่ระบุชนิด ({ "type": "command", "command": "/..." }หรือ{ "type": "callback", "value": "..." }) ควบคู่กับสตริงvalueแบบเดิมได้ เมื่อมีทั้งสองอย่าง ให้เลือกใช้action
ลักษณะการทำงานสำรอง
OpenClaw จะแสดงผลข้อความธรรมดาสำรองที่อ่านได้ลงใน body เสมอ เมทาดาทาที่มีโครงสร้างเป็นส่วนเสริมและต้องไม่เป็นข้อกำหนดสำหรับการทำงานร่วมกันพื้นฐานของ Matrix
กฎการแสดงผลสำรอง:
- เนื้อหา
title,textและcontextจะแสดงผลเป็นบรรทัดข้อความธรรมดา - ปุ่มที่มีการดำเนินการ
commandจะแสดงผลเป็นlabel: `/command`เพื่อให้ยังคัดลอกคำสั่งได้ ปุ่มที่มีการดำเนินการcallbackหรือมีเพียงvalueแบบเดิมจะแสดงผลเฉพาะป้ายกำกับ เพื่อเก็บค่าคอลแบ็กที่ไม่เปิดเผยความหมายไว้เป็นส่วนตัว ส่วนปุ่มที่ปิดใช้งานจะแสดงผลเฉพาะป้ายกำกับเสมอ ปุ่ม URL และเว็บแอปจะแสดงผลเป็นlabel: URL - บล็อกรายการเลือกจะแสดงข้อความตัวอย่าง (หรือ
ตัวเลือก:) เป็นหัวเรื่อง ตามด้วยบรรทัดตัวเลือกที่มีเฉพาะป้ายกำกับ - หากไม่มีสิ่งใดแสดงผล เช่น การนำเสนอที่มีเฉพาะเส้นแบ่ง เนื้อหา body จะใช้
---เป็นข้อความสำรอง
ไคลเอนต์ที่ไม่รองรับจะยังคงแสดงข้อความสำรอง ส่วนไคลเอนต์ที่รองรับ OpenClaw อาจเลือกใช้เมทาดาทาที่มีโครงสร้างในการแสดงผล โดยยังเก็บข้อความสำรองไว้สำหรับการคัดลอก การค้นหา การแจ้งเตือน และการช่วยการเข้าถึง
บล็อกที่รองรับ
อะแดปเตอร์ Matrix ขาออกประกาศการรองรับแบบเนทีฟสำหรับ:
buttonsselectcontextdivider
บล็อก text รองรับผ่าน body สำรองเสมอ ให้ถือว่าบล็อกทั้งหมดเป็นเพียงคำใบ้ในการนำเสนอแบบพยายามอย่างดีที่สุด และละเว้นฟิลด์กับชนิดบล็อกที่ไม่รู้จัก แทนที่จะทำให้ทั้งข้อความล้มเหลว
การโต้ตอบ
เมทาดาทานี้ไม่ได้เพิ่มความหมายเชิงคอลแบ็กให้กับ Matrix ค่าของปุ่มและรายการเลือกเป็นเพย์โหลดการโต้ตอบสำรอง ซึ่งโดยทั่วไปคือคำสั่งแบบเครื่องหมายทับหรือคำสั่งข้อความ ไคลเอนต์ Matrix ที่ต้องการรองรับการโต้ตอบจะหาค่าของตัวควบคุม (action.command จากนั้น action.value และสุดท้าย value) แล้วส่งกลับไปยังห้องเป็นข้อความปกติ
ตัวอย่างเช่น ปุ่มที่มีค่า /model deepseek/deepseek-chat สามารถจัดการได้โดยส่งค่านั้นเป็นข้อความ Matrix แบบเข้ารหัสในห้องเดียวกัน
ความสัมพันธ์กับเมทาดาทาการอนุมัติ
com.openclaw.presentation ใช้สำหรับการนำเสนอข้อความแบบสมบูรณ์ทั่วไป
พรอมต์ขออนุมัติใช้เมทาดาทาเฉพาะ com.openclaw.approval เนื่องจากการอนุมัติมีสถานะที่เกี่ยวข้องกับความปลอดภัย การตัดสินใจ และรายละเอียดการดำเนินการ/Plugin หากมีคีย์เมทาดาทาทั้งสองอยู่ในเหตุการณ์เดียวกัน ไคลเอนต์ควรเลือกใช้ตัวแสดงผลการอนุมัติโดยเฉพาะ
ข้อความสื่อ
เมื่อการตอบกลับมี URL สื่อหลายรายการ OpenClaw จะส่งเหตุการณ์ Matrix หนึ่งเหตุการณ์ต่อ URL สื่อหนึ่งรายการ ข้อความคำบรรยายและเมทาดาทาการนำเสนอจะแนบกับเหตุการณ์แรกเท่านั้น เพื่อให้ไคลเอนต์ได้รับเพย์โหลดที่มีโครงสร้างคงที่เพียงชุดเดียวโดยไม่มีตัวแสดงผลซ้ำ กฎเดียวกันนี้ใช้เมื่อข้อความยาวถูกแบ่งเป็นหลายเหตุการณ์ โดยเมทาดาทาจะอยู่ในเหตุการณ์แรกเท่านั้น
ควรรักษาเมทาดาทาการนำเสนอให้มีขนาดกะทัดรัด ข้อความขนาดใหญ่ที่ผู้ใช้มองเห็นควรอยู่ใน body และใช้เส้นทางการแบ่งข้อความ Matrix ตามปกติ