def incoming(phone_number, text, backend_api, timestamp=None, domain_scope=None, backend_message_id=None, delay=True): """ entry point for incoming sms phone_number - originating phone number text - message content backend_api - backend API ID of receiving sms backend timestamp - message received timestamp; defaults to now (UTC) domain_scope - if present, only messages from phone numbers that can be definitively linked to this domain will be processed; others will be dropped (useful to provide security when simulating incoming sms) """ # Log message in message log phone_number = clean_phone_number(phone_number) msg = SMSLog( phone_number = phone_number, direction = INCOMING, date = timestamp or datetime.utcnow(), text = text, domain_scope = domain_scope, backend_api = backend_api, backend_message_id = backend_message_id, ) if settings.SMS_QUEUE_ENABLED: msg.processed = False msg.datetime_to_process = datetime.utcnow() msg.queued_timestamp = msg.datetime_to_process msg.save() enqueue_directly(msg) else: msg.processed = True msg.save() process_incoming(msg, delay=delay) return msg
def incoming(phone_number, text, backend_api, timestamp=None, domain_scope=None, backend_message_id=None, delay=True, backend_attributes=None, raw_text=None): """ entry point for incoming sms phone_number - originating phone number text - message content backend_api - backend API ID of receiving sms backend timestamp - message received timestamp; defaults to now (UTC) domain_scope - if present, only messages from phone numbers that can be definitively linked to this domain will be processed; others will be dropped (useful to provide security when simulating incoming sms) """ # Log message in message log if text is None: text = "" phone_number = clean_phone_number(phone_number) msg = SMSLog( phone_number=phone_number, direction=INCOMING, date=timestamp or datetime.utcnow(), text=text, domain_scope=domain_scope, backend_api=backend_api, backend_message_id=backend_message_id, raw_text=raw_text, ) if backend_attributes: for k, v in backend_attributes.items(): setattr(msg, k, v) if settings.SMS_QUEUE_ENABLED: msg.processed = False msg.datetime_to_process = datetime.utcnow() msg.queued_timestamp = msg.datetime_to_process msg.save() enqueue_directly(msg) else: msg.processed = True msg.save() process_incoming(msg, delay=delay) return msg