Delivery¶
Delivery Models¶
InboundMessage ¶
Bases: BaseModel
A message received from an external provider.
For stateful channels (voice, persistent WebSocket), set session
to the session object. After the hook pipeline passes,
process_inbound will call channel.connect_session() to bind
the long-lived session to the room.
InboundResult ¶
Bases: BaseModel
Result of processing an inbound message.
DeliveryResult ¶
Bases: BaseModel
Result of delivering an event to a channel.
ProviderResult ¶
Bases: BaseModel
Result from a provider delivery attempt.
Delivery Strategies¶
DeliveryStrategy ¶
Bases: ABC
Controls when and how content is delivered to a channel.
Immediate ¶
WaitForIdle ¶
Bases: DeliveryStrategy
Wait for TTS/speech to finish, then send.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
buffer
|
float
|
Extra seconds to wait after playback ends (default 1.0). |
1.0
|
playback_timeout
|
float
|
Max seconds to wait for playback (default 15.0). |
15.0
|
Queued ¶
Bases: DeliveryStrategy
Add to queue, deliver at next idle window.
Multiple deliveries are batched into a single message.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
buffer
|
float
|
Extra seconds to wait after playback ends (default 1.0). |
1.0
|
playback_timeout
|
float
|
Max seconds to wait for playback (default 15.0). |
15.0
|
separator
|
str
|
Text between batched items (default newline). |
'\n\n'
|
Delivery Backend¶
DeliveryBackend ¶
Bases: ABC
ABC for persistent delivery queue backends.
Implementations provide a durable queue with at-least-once
semantics via the enqueue / dequeue / ack / nack
lifecycle.
dequeue
abstractmethod
async
¶
Claim up to batch_size items. Blocks up to timeout seconds.
nack
abstractmethod
async
¶
Negative-acknowledge. Re-enqueues or dead-letters the item.
dead_letter
abstractmethod
async
¶
Move an item to the dead-letter queue.
get_queue_depth
abstractmethod
async
¶
Return the number of pending items (observability).
get_dead_letter_items
abstractmethod
async
¶
Return items in the dead-letter queue.
DeliveryItem ¶
Bases: BaseModel
Serializable delivery request — the unit of work in the queue.
DeliveryItemStatus ¶
Bases: StrEnum
Lifecycle status of a delivery item.
InMemoryDeliveryBackend ¶
Bases: DeliveryBackend
Asyncio-queue-based delivery backend (single process, no persistence).
Items flow through _queue → _in_flight → acked/dead-lettered.
A background worker task drains the queue and executes deliveries.