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傳遞頻道擁有的傳送者/聊天中繼資料, 外掛掛鉤會將其視為ctx.channelContext。 從此子路徑擴充PluginHookChannelSenderContext或PluginHookChannelChatContext以加入頻道專屬欄位。runChannelInboundEvent(...):針對單一入站平台事件執行擷取、分類、預檢、解析、 記錄、分派及完成處理。dispatchChannelInboundReply(...):使用傳遞轉接器記錄並分派已 組裝完成的入站回覆。
對於僅含媒體的入站事件,請將訊息本文和命令文字保留為空,並為每個
原生附件傳入一項 ChannelInboundMediaInput 事實。當環境
歷史記錄行或其他純文字載體必須描述這些事實時,請使用
formatMediaPlaceholderText(media)。它會依序根據 kind、MIME
類型,再依路徑或 URL 副檔名分類每項事實;尚未下載的原生附件仍應
各自提供一項僅含類型的事實。請勿使用格式化工具合成
主要入站本文。
已接收注入之外掛執行階段物件的內建/原生頻道,
可以改為呼叫 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(...):已棄用,僅用於 已自行組裝其分派閉包、由頻道擁有且已準備完成的分派路徑。
新的外掛程式碼不應引入以 turn 命名的頻道 API。模型或
代理程式回合詞彙應保留在代理程式/供應商程式碼內;頻道外掛應使用入站、
訊息、傳遞及回覆等詞彙。
Was this useful?