Files
crmApi/utils/services/sms.py
T
2026-10-08 16:37:45 +03:30

36 lines
1.1 KiB
Python

from abc import ABC, abstractmethod
import requests
from django.conf import settings
class SmsProviderABC(ABC):
@abstractmethod
def send_sms(self, mobile: str, message: str) -> bool:
pass
class DefaultSmsProvider(SmsProviderABC):
def send_sms(self, mobile: str, message: str) -> bool:
default_provider = DosefrNavadHashtSMS()
return default_provider.send_sms(mobile, message)
class DosefrNavadHashtSMS(SmsProviderABC):
def send_sms(self, mobile: str, message: str) -> bool:
payload = {
'USERNAME': 'vsms7937',
'PASSWORD': '335577775533',
'FROM': '30005367',
'TO': int(mobile),
'TEXT': f'{message}'
}
try:
r = requests.get('http://www.0098sms.com/sendsmslink.aspx', params=payload, timeout=10)
r.raise_for_status()
except requests.RequestException:
return False
# An HTTP 200 alone does not mean the SMS provider accepted the message.
success_codes = getattr(settings, 'SMS_SUCCESS_CODES', ('0',))
return r.text.strip() in success_codes