Source code for aries_cloudagent.protocols.basicmessage.v1_0.handlers.basicmessage_handler

"""Basic message handler."""

from .....messaging.base_handler import (
    BaseHandler,
    BaseResponder,
    RequestContext,
)

from ..messages.basicmessage import BasicMessage


[docs]class BasicMessageHandler(BaseHandler): """Message handler class for basic messages."""
[docs] async def handle(self, context: RequestContext, responder: BaseResponder): """ Message handler logic for basic messages. Args: context: request context responder: responder callback """ self._logger.debug("BasicMessageHandler called with context %s", context) assert isinstance(context.message, BasicMessage) self._logger.info("Received basic message: %s", context.message.content) body = context.message.content meta = {"content": body} # For Workshop: mark invitations as copyable if context.message.content and context.message.content.startswith( ("http:", "https:") ): meta["copy_invite"] = True payload = { "connection_id": context.connection_record.connection_id, "message_id": context.message._id, "content": body, "state": "received", "sent_time": context.message.sent_time, } if "l10n" in context.message._decorators: payload["locale"] = context.message._decorators["l10n"].locale await context.profile.notify("acapy::basicmessage::received", payload) reply = None if body: if context.settings.get("debug.auto_respond_messages"): if "received your message" not in body: reply = f"{context.default_label} received your message" elif body.startswith("Reply with: "): reply = body[12:] if reply: reply_msg = BasicMessage(content=reply) reply_msg.assign_thread_from(context.message) reply_msg.assign_trace_from(context.message) if "l10n" in context.message._decorators: reply_msg._decorators["l10n"] = context.message._decorators["l10n"] await responder.send_reply(reply_msg)