def fire_sms_event(reminder, handler, recipients, verified_numbers, logged_event, workflow=None): current_event = reminder.current_event case = reminder.case template_params = get_message_template_params(case) uses_custom_content_handler, content_handler = get_custom_content_handler( handler, logged_event) if uses_custom_content_handler and not content_handler: return domain_obj = Domain.get_by_name(reminder.domain, strict=True) for recipient in recipients: _add_recipient_to_template_params(recipient, template_params) logged_subevent = logged_event.create_subevent(handler, reminder, recipient) try: lang = recipient.get_language_code() except Exception: lang = None if content_handler: message = content_handler(reminder, handler, recipient) else: message = current_event.message.get( lang, current_event.message[handler.default_lang]) try: message = Message.render(message, **template_params) except Exception: logged_subevent.error( MessagingEvent.ERROR_CANNOT_RENDER_MESSAGE) continue verified_number, unverified_number = get_recipient_phone_number( reminder, recipient, verified_numbers) if message: metadata = MessageMetadata( workflow=workflow or get_workflow(handler), reminder_id=reminder._id, messaging_subevent_id=logged_subevent.pk, ) if verified_number is not None: send_sms_to_verified_number(verified_number, message, metadata, logged_subevent=logged_subevent) elif isinstance(recipient, CouchUser) and unverified_number: send_sms(reminder.domain, recipient, unverified_number, message, metadata) elif (is_commcarecase(recipient) and unverified_number and domain_obj.send_to_duplicated_case_numbers): send_sms(reminder.domain, recipient, unverified_number, message, metadata) else: logged_subevent.error(MessagingEvent.ERROR_NO_PHONE_NUMBER) continue logged_subevent.completed()