from common.config.app_settings import app_settings from backend.infra.rabbitmq.async_subscriber import AsyncMQSubscriber from backend.infra.sms_handler import SmsHandler from common.log.module_logger import ModuleLogger class SmsMQConsumer: @staticmethod async def message_handler(register_key: str, message: dict, args: dict): print("should getting here") sender_id = message["sender_id"] receiver_id = message["receiver_id"] sender_mobile = message["properties"]["sender_mobile"] content_text = message["properties"]["content_text"] receiver_type = message["properties"]["receiver_type"] sms_consumer: SmsMQConsumer = args["message_handler"] module_logger = ModuleLogger(sender_id="SmsMQConsumer") if receiver_type == "mobile": receiver_mobile = receiver_id else: receiver_mobile = None module_logger.warning( "unsupported receiver_type: '{}'".format(receiver_type) ) return await sms_consumer.sms_handler.send_sms( sender_mobile, receiver_mobile, content_text ) def __init__(self, mq_client: AsyncMQSubscriber) -> None: self.sender_id = app_settings.SMS_FROM self.sms_handler = SmsHandler() self.mq_client = mq_client async def register_consumer(self): await self.mq_client.register_consumer( registry_key=self.sender_id, callback_method=SmsMQConsumer.message_handler, args={"message_handler": self}, ) async def unregister_consumer(self): await self.mq_client.unregister_consumer(registry_key=self.sender_id)