Coverage for jutil/sms.py: 0%
15 statements
« prev ^ index » next coverage.py v6.5.0, created at 2022-10-07 16:40 -0500
« prev ^ index » next coverage.py v6.5.0, created at 2022-10-07 16:40 -0500
1import requests
2from django.conf import settings
3from jutil.validators import phone_filter
6def send_sms(phone: str, message: str, sender: str = "", **kw):
7 """
8 Sends SMS via Kajala Group SMS API. Contact info@kajala.com for access.
9 :param phone: Phone number
10 :param message: Message to be esnd
11 :param sender: Sender (max 11 characters)
12 :param kw: Variable key-value pairs to be sent to SMS API
13 :return: Response from requests.post
14 """
15 if not hasattr(settings, "SMS_TOKEN"):
16 raise Exception("Invalid configuration: settings.SMS_TOKEN missing")
17 if not sender and hasattr(settings, "SMS_SENDER_NAME"):
18 sender = settings.SMS_SENDER_NAME # type: ignore
19 if not sender:
20 raise Exception("Invalid configuration: settings.SMS_SENDER_NAME missing and sender not set explicitly either")
21 headers = {
22 "Content-Type": "application/json",
23 "Authorization": "Token " + settings.SMS_TOKEN, # type: ignore
24 }
25 data = {
26 "dst": phone_filter(phone),
27 "msg": message,
28 "src": sender,
29 }
30 for k, v in kw.items():
31 data[k] = v
32 return requests.post("https://sms.kajala.com/api/sms/", json=data, headers=headers)