From 4b277bc95fffac019ff25e52edb4546699af5f15 Mon Sep 17 00:00:00 2001 From: Sayyid Hamid Mahdavi Date: Mon, 16 Mar 2026 13:43:59 +0330 Subject: [PATCH] mobin sms client --- accounts/settings.py | 3 ++- utils/clients/mobin_sms/client.py | 34 +++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 utils/clients/mobin_sms/client.py diff --git a/accounts/settings.py b/accounts/settings.py index 460f1ad..22ba980 100644 --- a/accounts/settings.py +++ b/accounts/settings.py @@ -48,7 +48,7 @@ INSTALLED_APPS = [ 'crispy_forms', 'crispy_bootstrap5', 'django_filters', - 'jalali_date', + # 'jalali_date', 'django_minio_backend.apps.DjangoMinioBackendConfig', # local apps @@ -408,3 +408,4 @@ MINIO_PUBLIC_BUCKETS = [ MINIO_POLICY_HOOKS: List[Tuple[str, dict]] = [] MINIO_BUCKET_CHECK_ON_SAVE = True # Default: True // Creates bucket if missing, then save +MOBIN_SMS_TOKEN = config('MOBIN_SMS_TOKEN', default='') \ No newline at end of file diff --git a/utils/clients/mobin_sms/client.py b/utils/clients/mobin_sms/client.py new file mode 100644 index 0000000..d23c5e0 --- /dev/null +++ b/utils/clients/mobin_sms/client.py @@ -0,0 +1,34 @@ +import urllib.parse +import requests + +from django.conf import settings + + +class MobinSMSClient: + access_token = settings.MOBIN_SMS_TOKEN + base_url = 'https://connect.mobinsms.com' + sender = '9890008050' + + def send_sms(self, phone_number, message): + return self.send_sms_quick([phone_number], message) + + def send_sms_quick(self, phone_number_list, message): + path = '/v1/send/quick' + url = urllib.parse.urljoin(self.base_url, path) + + body = { + "from": self.sender, + "to": phone_number_list, + "body": message, + "unique_id": "" # UDH (optional field) + } + + headers = { + "X-API-Key": self.access_token, + 'Content-Type': 'application/json', + 'Accept': 'application/json', + } + + response = requests.post(url, headers=headers, json=body, timeout=10) + print(response.text) + return response.json()