Index
channels
¶
Channel abstraction for multi-platform messaging.
Classes¶
BaseChannel
¶
Bases: ABC
Base class for all channel implementations.
Subclasses must be registered via
@ChannelRegistry.register("name") to become discoverable.
Methods:¶
connect
abstractmethod
¶
disconnect
abstractmethod
¶
send
abstractmethod
¶
send(
channel: str,
content: str,
*,
conversation_id: str = "",
metadata: Dict[str, Any] | None = None,
) -> bool
Send a message to a specific channel. Returns True on success.
Canonical send contract shared by every channel adapter:
channel
The DESTINATION identifier — the per-adapter native id of the
place the message goes (Discord/Slack channel id, Telegram chat
id, email recipient address, ...). This is not the channel
TYPE label. An incoming :class:ChannelMessage carries that
destination in its conversation_id field (channel there
is only the type label such as "discord"), so dispatch code
replying to a message must pass cm.conversation_id here.
conversation_id
An optional reply/thread reference — the native id of the
message being replied to (Discord message_reference, Slack
thread_ts, Telegram reply_to_message_id, email
In-Reply-To, ...). When replying to an inbound message this
should be cm.message_id, never the channel id. Passing a
channel id here yields broken references (e.g. Discord
MESSAGE_REFERENCE_UNKNOWN_MESSAGE).
Source code in src/diapason/channels/_stubs.py
status
abstractmethod
¶
status() -> ChannelStatus
list_channels
abstractmethod
¶
ChannelMessage
dataclass
¶
ChannelMessage(
channel: str,
sender: str,
content: str,
message_id: str = "",
conversation_id: str = "",
session_id: str = "",
metadata: Dict[str, Any] = dict(),
)
A message received from or sent to a channel.
ChannelStatus
¶
Bases: str, Enum
Channel connection status.