Plugin maintainer reference
API вхідних каналів
Канальні plugins мають моделювати шляхи отримання за допомогою іменників для вхідних даних і повідомлень:
platform event -> inbound facts/context -> agent reply -> message deliveryВикористовуйте openclaw/plugin-sdk/channel-inbound для нормалізації вхідних подій,
форматування, коренів і оркестрації. Використовуйте
openclaw/plugin-sdk/channel-outbound для нативного
надсилання, квитанцій, надійної доставки та поведінки оперативного попереднього перегляду.
Основні допоміжні засоби
buildChannelInboundEventContext, runChannelInboundEvent, dispatchChannelInboundReply,} from "openclaw/plugin-sdk/channel-inbound";buildChannelInboundEventContext(...): проєктує нормалізовані факти каналу в контекст підказки/сеансу. ВикористовуйтеchannelContext, щоб передавати метадані відправника/чату, якими володіє канал, до хука pluginctx.channelContext; доповнюйтеPluginHookChannelSenderContextабоPluginHookChannelChatContextіз цього підшляху полями, специфічними для каналу.runChannelInboundEvent(...): виконує приймання, класифікацію, попередню перевірку, розв’язання, запис, диспетчеризацію та завершення для однієї вхідної події платформи.dispatchChannelInboundReply(...): записує та диспетчеризує вже зібрану вхідну відповідь за допомогою адаптера доставки.
Інжектований runtime plugin надає ті самі високорівневі допоміжні засоби в
runtime.channel.inbound.* для вбудованих/нативних каналів, які вже отримують
об’єкт runtime.
await runtime.channel.inbound.run({ channel: "demo", accountId, raw: platformEvent, adapter: { ingest: normalizePlatformEvent, resolveTurn: resolveInboundReply, },});Диспетчери сумісності мають збирати вхідні дані для dispatchChannelInboundReply(...)
і тримати доставку платформою в адаптері доставки. Нові шляхи надсилання мають
віддавати перевагу адаптерам повідомлень і допоміжним засобам надійних повідомлень.
Міграція
Старі runtime-псевдоніми runtime.channel.turn.* видалено. Використовуйте:
runtime.channel.inbound.run(...)для сирих вхідних подій.runtime.channel.inbound.dispatchReply(...)для зібраних контекстів відповіді.runtime.channel.inbound.buildContext(...)для корисних навантажень вхідного контексту.runtime.channel.inbound.runPreparedReply(...)лише для підготовлених шляхів диспетчеризації, якими володіє канал і які вже збирають власне замикання диспетчеризації.
Новий код plugin не має вводити канальні API з назвою turn. Зберігайте лексику
поворотів моделі або агента всередині коду агента/провайдера; канальні plugins використовують терміни
вхідних даних, повідомлень, доставки та відповіді.