Coverage for jutil/sms.py: 0%

15 statements  

« 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 

4 

5 

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)