Exemplo n.º 1
0
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,
        )
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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,
        )
Exemplo n.º 4
0
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