def send_sms(recipients, message): ss = frappe.get_single("SMS Settings") sx = frappe.get_single("SMS Extras Settings") headers = _make_headers(ss, sx) params = _make_params(ss, sx) receiver_list = _get_receiver_list(recipients) success_list = [] for receiver in receiver_list: payload = merge( { ss.message_parameter: frappe.safe_decode(message).encode("utf-8"), ss.receiver_parameter: receiver, }, params, ) status = send_request(ss.sms_gateway_url, payload, headers, ss.use_post) if 200 <= status < 300: success_list.append(receiver) if success_list: create_sms_log( { "message": frappe.safe_decode(message).encode("utf-8"), "receiver_list": receiver_list, }, sent_to=success_list, )
def send_token_via_sms(tmp_id, phone_no=None, user=None): try: from frappe.core.doctype.sms_settings.sms_settings import send_request except: return False if not frappe.cache().ttl(tmp_id + '_token'): return False ss = frappe.get_doc('SMS Settings', 'SMS Settings') if not ss.sms_gateway_url: return False token = frappe.cache().get(tmp_id + '_token') args = {ss.message_parameter: 'verification code is {}'.format(token)} for d in ss.get("parameters"): args[d.parameter] = d.value if user: user_phone = frappe.db.get_value('User', user, ['phone', 'mobile_no'], as_dict=1) usr_phone = user_phone.mobile_no or user_phone.phone if not usr_phone: return False else: if phone_no: usr_phone = phone_no else: return False args[ss.receiver_parameter] = usr_phone status = send_request(ss.sms_gateway_url, args, use_post=ss.use_post) if 200 <= status < 300: frappe.cache().delete(tmp_id + '_token') return True else: return False
def send_multiple_sms(recipients, message): ss = frappe.get_single("SMS Settings") sx = frappe.get_single("SMS Extras Settings") headers = _make_headers(ss, sx) receiver_list = _get_receiver_list(recipients) payload = merge( { ss.message_parameter: frappe.safe_decode(message).encode("utf-8"), ss.receiver_parameter: ",".join(receiver_list), }, _make_params(ss, sx), ) status = send_request(ss.sms_gateway_url, payload, headers, ss.use_post) if 200 <= status < 300: create_sms_log( { "message": frappe.safe_decode(message).encode("utf-8"), "receiver_list": receiver_list, }, sent_to=receiver_list, )
def send_token_via_sms(tmp_id,phone_no=None,user=None): try: from frappe.core.doctype.sms_settings.sms_settings import send_request except: return False if not frappe.cache().ttl(tmp_id + '_token'): return False ss = frappe.get_doc('SMS Settings', 'SMS Settings') if not ss.sms_gateway_url: return False token = frappe.cache().get(tmp_id + '_token') args = {ss.message_parameter: 'verification code is {}'.format(token)} for d in ss.get("parameters"): args[d.parameter] = d.value if user: user_phone = frappe.db.get_value('User', user, ['phone','mobile_no'], as_dict=1) usr_phone = user_phone.mobile_no or user_phone.phone if not usr_phone: return False else: if phone_no: usr_phone = phone_no else: return False args[ss.receiver_parameter] = usr_phone status = send_request(ss.sms_gateway_url, args, use_post=ss.use_post) if 200 <= status < 300: frappe.cache().delete(tmp_id + '_token') return True else: return False