Ir para o conteúdo

Overview

package wittgenstein_messaging

Wittgenstein Messaging Library.

Provides models and adapters to send messages via different channels.

Classes

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

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.