Plugin maintainer reference
API ขาเข้าของช่องทาง
เส้นทางการรับข้อมูลของช่องทางใช้โฟลว์เดียวกัน:
เหตุการณ์ของแพลตฟอร์ม -> ข้อเท็จจริง/บริบทขาเข้า -> การตอบกลับของเอเจนต์ -> การส่งข้อความใช้ openclaw/plugin-sdk/channel-inbound สำหรับการปรับเหตุการณ์ขาเข้าให้เป็นรูปแบบมาตรฐาน
การจัดรูปแบบ รูท และการประสานงาน ใช้
openclaw/plugin-sdk/channel-outbound สำหรับการส่งแบบเนทีฟ การรับ การส่งที่คงทน
และลักษณะการทำงานของตัวอย่างแบบสด
ตัวช่วยหลัก
buildChannelInboundEventContext, runChannelInboundEvent, dispatchChannelInboundReply,} from "openclaw/plugin-sdk/channel-inbound";buildChannelInboundEventContext(...): แปลงข้อเท็จจริงของช่องทางที่ปรับเป็นรูปแบบมาตรฐานแล้ว ไปยังบริบทของพรอมต์/เซสชัน ส่งข้อมูลเมตาของผู้ส่ง/แชตที่ช่องทางเป็นเจ้าของ ผ่านchannelContextซึ่งฮุกของ Plugin จะเห็นเป็นctx.channelContextเพิ่มเติมPluginHookChannelSenderContextหรือPluginHookChannelChatContextจากพาธย่อยนี้สำหรับฟิลด์เฉพาะช่องทางrunChannelInboundEvent(...): ดำเนินการรับเข้า จำแนก ตรวจสอบเบื้องต้น แก้ไข บันทึก จัดส่ง และสรุปผลสำหรับเหตุการณ์แพลตฟอร์มขาเข้าหนึ่งเหตุการณ์dispatchChannelInboundReply(...): บันทึกและจัดส่งการตอบกลับขาเข้าที่ประกอบเสร็จแล้ว ด้วยอะแดปเตอร์การส่ง
สำหรับเหตุการณ์ขาเข้าที่มีเฉพาะสื่อ ให้เว้นเนื้อหาข้อความและข้อความคำสั่งว่างไว้ และ
ส่งข้อเท็จจริง ChannelInboundMediaInput หนึ่งรายการต่อไฟล์แนบเนทีฟหนึ่งรายการ เมื่อบรรทัด
ประวัติโดยรอบหรือตัวนำส่งแบบข้อความเท่านั้นชนิดอื่นต้องอธิบายข้อเท็จจริงเหล่านั้น ให้ใช้
formatMediaPlaceholderText(media) ซึ่งจะจำแนกข้อเท็จจริงแต่ละรายการจาก kind ประเภท
MIME แล้วจึงพิจารณานามสกุลของพาธหรือ URL ส่วนไฟล์แนบเนทีฟที่ยังไม่ได้ดาวน์โหลดควร
ยังคงให้ข้อเท็จจริงที่ระบุเฉพาะประเภทหนึ่งรายการต่อไฟล์แนบหนึ่งรายการ อย่าใช้ตัวจัดรูปแบบเพื่อสังเคราะห์
เนื้อหาขาเข้าหลัก
ช่องทางแบบบันเดิล/เนทีฟที่ได้รับอ็อบเจ็กต์รันไทม์ของ Plugin ที่แทรกเข้ามาอยู่แล้ว
สามารถเรียกตัวช่วยเดียวกันภายใต้ runtime.channel.inbound.* แทนการ
นำเข้าพาธย่อยนี้โดยตรง:
await runtime.channel.inbound.run({ channel: "demo", accountId, raw: platformEvent, adapter: { ingest: normalizePlatformEvent, resolveTurn: resolveInboundReply, },});ประกอบอินพุต dispatchChannelInboundReply(...) สำหรับตัวจัดส่งเพื่อความเข้ากันได้
ที่คงการส่งของแพลตฟอร์มไว้ในอะแดปเตอร์การส่ง พาธการส่งใหม่
ควรใช้อะแดปเตอร์ข้อความและตัวช่วยข้อความที่คงทนจาก
channel-outbound แทน
การย้ายระบบ
นามแฝงรันไทม์ runtime.channel.turn.* ถูกนำออกแล้ว ให้ใช้:
runtime.channel.inbound.run(...)สำหรับเหตุการณ์ขาเข้าดิบruntime.channel.inbound.dispatchReply(...)สำหรับบริบทการตอบกลับที่ประกอบแล้วruntime.channel.inbound.buildContext(...)สำหรับเพย์โหลดบริบทขาเข้าruntime.channel.inbound.runPreparedReply(...)ซึ่งเลิกแนะนำให้ใช้แล้ว ใช้เฉพาะสำหรับ พาธการจัดส่งที่เตรียมไว้ซึ่งช่องทางเป็นเจ้าของและประกอบคลอเชอร์ การจัดส่งของตนเองอยู่แล้ว
โค้ด Plugin ใหม่ไม่ควรเพิ่ม API ช่องทางที่มีชื่อ turn ให้ใช้คำศัพท์เกี่ยวกับเทิร์นของโมเดลหรือ
เอเจนต์เฉพาะภายในโค้ดเอเจนต์/ผู้ให้บริการ ส่วน Plugin ช่องทางให้ใช้คำที่เกี่ยวกับข้อมูลขาเข้า
ข้อความ การส่ง และการตอบกลับ