Overview
package wittgenstein_messaging
Wittgenstein Messaging Library.
Provides models and adapters to send messages via different channels.
Classes
-
Message — Pydantic model representing a multi-channel message payload.
-
EmailChannel — Email messaging channel adapter (SMTP/SES).
-
WhatsAppChannel — WhatsApp messaging channel adapter (WhatsApp Business Cloud API).
-
MessageRouter — Routes messages to the appropriate channel adapters.
wittgenstein_messaging.Message
mkapi_definition_mkapi class Message()
Bases : BaseModel
Pydantic model representing a multi-channel message payload.
wittgenstein_messaging.MessageChannel
mkapi_definition_mkapi class MessageChannel()
Bases : str, Enum
wittgenstein_messaging.MessageStatus
mkapi_definition_mkapi class MessageStatus()
Bases : str, Enum
wittgenstein_messaging.EmailChannel
mkapi_definition_mkapi class EmailChannel(smtp_server: Optional[str] = None, port: int = DEFAULT_SMTP_PORT, username: Optional[str] = None, password: Optional[str] = None, use_tls: bool = True)
Email messaging channel adapter (SMTP/SES).
Methods
-
send — Send an email message over SMTP via aiosmtplib.
wittgenstein_messaging.EmailChannel.send
mkapi_definition_mkapi async method EmailChannel.send(self, message: Message) → bool
Send an email message over SMTP via aiosmtplib.
Any aiosmtplib exception propagates to the caller (MessageRouter), which is responsible for converting it into a FAILED status.
wittgenstein_messaging.WhatsAppChannel
mkapi_definition_mkapi class WhatsAppChannel(api_token: Optional[str] = None, phone_number_id: Optional[str] = None)
WhatsApp messaging channel adapter (WhatsApp Business Cloud API).
Methods
-
send — Send a WhatsApp text message via the Business Cloud API Graph endpoint.
wittgenstein_messaging.WhatsAppChannel.send
mkapi_definition_mkapi async method WhatsAppChannel.send(self, message: Message) → bool
Send a WhatsApp text message via the Business Cloud API Graph endpoint.
Any httpx exception (including a raised non-2xx status) propagates to the caller (MessageRouter), which is responsible for converting it into a FAILED status.
wittgenstein_messaging.MessageRouter
mkapi_definition_mkapi class MessageRouter(email_channel: EmailChannel, whatsapp_channel: WhatsAppChannel)
Routes messages to the appropriate channel adapters.
Methods
-
route_message — Route and deliver a message.
-
route_batch — Route multiple messages sequentially.
wittgenstein_messaging.MessageRouter.route_message
mkapi_definition_mkapi async method MessageRouter.route_message(self, message: Message) → bool
Route and deliver a message.
Raises
-
ValueError
wittgenstein_messaging.MessageRouter.route_batch
mkapi_definition_mkapi async method MessageRouter.route_batch(self, messages: list[Message]) → Dict[str, bool]
Route multiple messages sequentially.