mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-02 15:31:05 +00:00
71 lines
2.5 KiB
Markdown
71 lines
2.5 KiB
Markdown
---
|
|
summary: "Inbound event helpers for channel plugins: context building, shared runner orchestration, session record, and prepared reply dispatch"
|
|
title: "Channel inbound API"
|
|
read_when:
|
|
- You are building or refactoring a messaging channel plugin receive path
|
|
- You need shared inbound context construction, session recording, or prepared reply dispatch
|
|
- You are migrating old channel turn helpers to inbound/message APIs
|
|
---
|
|
|
|
Channel plugins should model receive paths with inbound and message nouns:
|
|
|
|
```text
|
|
platform event -> inbound facts/context -> agent reply -> message delivery
|
|
```
|
|
|
|
Use `openclaw/plugin-sdk/channel-inbound` for inbound event normalization,
|
|
formatting, roots, and orchestration. Use
|
|
`openclaw/plugin-sdk/channel-outbound` for native
|
|
send, receipt, durable delivery, and live preview behavior.
|
|
|
|
## Core Helpers
|
|
|
|
```ts
|
|
import {
|
|
buildChannelInboundEventContext,
|
|
runChannelInboundEvent,
|
|
dispatchChannelInboundReply,
|
|
} from "openclaw/plugin-sdk/channel-inbound";
|
|
```
|
|
|
|
- `buildChannelInboundEventContext(...)`: project normalized channel facts into
|
|
the prompt/session context.
|
|
- `runChannelInboundEvent(...)`: run ingest, classify, preflight, resolve,
|
|
record, dispatch, and finalize for one inbound platform event.
|
|
- `dispatchChannelInboundReply(...)`: record and dispatch an already assembled
|
|
inbound reply with a delivery adapter.
|
|
|
|
The injected plugin runtime exposes the same high-level helpers under
|
|
`runtime.channel.inbound.*` for bundled/native channels that already receive the
|
|
runtime object.
|
|
|
|
```ts
|
|
await runtime.channel.inbound.run({
|
|
channel: "demo",
|
|
accountId,
|
|
raw: platformEvent,
|
|
adapter: {
|
|
ingest: normalizePlatformEvent,
|
|
resolveTurn: resolveInboundReply,
|
|
},
|
|
});
|
|
```
|
|
|
|
Compatibility dispatchers should assemble `dispatchChannelInboundReply(...)`
|
|
inputs and keep platform delivery in the delivery adapter. New send paths should
|
|
prefer message adapters and durable message helpers.
|
|
|
|
## Migration
|
|
|
|
The old `runtime.channel.turn.*` runtime aliases were removed. Use:
|
|
|
|
- `runtime.channel.inbound.run(...)` for raw inbound events.
|
|
- `runtime.channel.inbound.dispatchReply(...)` for assembled reply contexts.
|
|
- `runtime.channel.inbound.buildContext(...)` for inbound context payloads.
|
|
- `runtime.channel.inbound.runPreparedReply(...)` only for channel-owned prepared
|
|
dispatch paths that already assemble their own dispatch closure.
|
|
|
|
New plugin code should not introduce `turn`-named channel APIs. Keep model or
|
|
agent turn vocabulary inside agent/provider code; channel plugins use inbound,
|
|
message, delivery, and reply terms.
|