shiftregister/shiftregister/app/sipgate/sms.py

34 lines
983 B
Python

from django.conf import settings
from phonenumber_field.phonenumber import PhoneNumber
import requests
BASE_URL = "https://api.sipgate.com/v2"
def send(recipient, message):
if not settings.SIPGATE_TOKEN_ID:
raise RuntimeError("required setting SIPGATE_TOKEN_ID is not set")
if not settings.SIPGATE_TOKEN:
raise RuntimeError("required setting SIPGATE_TOKEN is not set")
if not settings.SIPGATE_SMS_EXTENSION:
raise RuntimeError("required setting SIPGATE_SMS_EXTENSION is not set")
if not PhoneNumber.from_string(recipient).is_valid():
raise ValueError("invalid phone number")
r = requests.post(
f"{BASE_URL}/sessions/sms",
auth=requests.auth.HTTPBasicAuth(
settings.SIPGATE_TOKEN_ID, settings.SIPGATE_TOKEN
),
json={
"smsId": settings.SIPGATE_SMS_EXTENSION,
"recipient": recipient,
"message": message,
},
)
r.raise_for_status()