Plugin maintainer reference

API ขาเข้าของช่องทาง

เส้นทางการรับข้อมูลของช่องทางใช้โฟลว์เดียวกัน:

text
เหตุการณ์ของแพลตฟอร์ม -> ข้อเท็จจริง/บริบทขาเข้า -> การตอบกลับของเอเจนต์ -> การส่งข้อความ

ใช้ openclaw/plugin-sdk/channel-inbound สำหรับการปรับเหตุการณ์ขาเข้าให้เป็นรูปแบบมาตรฐาน การจัดรูปแบบ รูท และการประสานงาน ใช้ openclaw/plugin-sdk/channel-outbound สำหรับการส่งแบบเนทีฟ การรับ การส่งที่คงทน และลักษณะการทำงานของตัวอย่างแบบสด

ตัวช่วยหลัก

ts
   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.* แทนการ นำเข้าพาธย่อยนี้โดยตรง:

ts
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 ช่องทางให้ใช้คำที่เกี่ยวกับข้อมูลขาเข้า ข้อความ การส่ง และการตอบกลับ

Was this useful?
On this page

On this page