Skip to main content

A Django package for seamless integration with Iranian SMS services like ParsianWebCo and Melipayamak.

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

Project description

Django Iran SMS

Overview

A Django-based SMS integration system for simplifying in-country SMS usage in Iran, leveraging the parsianwebco.ir , melipayamak.com service with JWT authentication. Developed by the Chelseru team, drfiransms is designed to support additional services in future releases.

Features

  • Integration with parsianwebco.ir , melipayamak.com
  • JWT-based authentication using rest_framework_simplejwt
  • Scalable and extensible for other SMS providers
  • Easy installation and configuration

Installation

Prerequisites

  • Python 3.11
  • Django 5.1 or higher

Installation via pip

pip install django-iran-sms

Configuration

In your Django project's settings.py, add the following parameters:

settings.py

INSTALLED_APPS = [
...
'drfiransms', # When used in DRF.

]
DJANGO_IRAN_SMS = {
    'AUTHENTICATION': 'rest_framework_simplejwt',  # Specify the authentication method
    'SMS_BACKEND': 'PARSIAN_WEBCO_IR',  # Set the SMS provider backend
    'OTP_CODE': {
        'LENGTH': 8,  # Default length of OTP code
        'EXPIRE_PER_MINUTES': 4,  # Default expiration time in minutes
    },
    'PARSIAN_WEBCO_IR': {
        'API_KEY': 'API_KEY obtained from sms.parsianwebco.ir',  # API key from the SMS provider
        'TEMPLATES': {
            'OTP_CODE': 1,  # Template ID for OTP code
        }
    },
    'MELI_PAYAMAK_COM': {
        'USERNAME': 'Username used to log in to the melipayamak.com website.',
        'PASSWORD': 'API_KEY obtained from melipayamak.com',
        'FROM': '50004001001516',  # The sender number that should be received from the web service.
    }
}

Usage

URL Configuration

In your urls.py, include the following views:

  • OTPCodeSend: For sending OTP codes.
  • Authentication: For handling authentication and optional registration.

urls.py

from drfiransms.views import OTPCodeSend, Authentication, MessageSend

urlpatterns += [
    path('lur/send-code/', OTPCodeSend.as_view(), name='send_code'),  # Endpoint to send OTP code
    path('lur/authentication/', Authentication.as_view(), name='authentication'),  # Endpoint for authentication
    path('lur/send-message/', MessageSend.as_view(), name='send_message'), # Endpoint to send Message
]

Sending Verification Code via API

To send a POST request for receiving a verification code for a mobile number, use the following structure:

curl -X POST https://djangoiransms.chelseru.com/lur/send-code/ \
     -H "Content-Type: application/json" \
     -d '{
           "mobile": "09123456789"
         }'
curl -X POST https://djangoiransms.chelseru.com/lur/authentication/ \
     -H "Content-Type: application/json" \
     -d '{
           "mobile": "09123456789",
           "code": "108117114",
           "group": "1"
         }'
  • group: An attribute for times when there is a need to segment users, for example a user with a phone number can register as both a driver and a passenger. This attribute is not required and if not entered, the default value will be 0.
curl -X POST https://djangoiransms.chelseru.com/lur/send-message/ \
     -H "Content-Type: application/json" \
     -d '{
           "mobile_number": "09123456789",
           "message_text": "hello luristan."
         }'

User Table

Djangosms automatically creates a User table in the Django admin with two fields:

  • mobile: Stores the user's mobile number.
  • user: A one-to-one relationship with Django's default User model.
  • group: An attribute for times when there is a need to segment users, for example a user with a phone number can register as both a driver and a passenger. This attribute is not required and if not entered, the default value will be 0.

OTP Code Table

drfsms automatically creates an OTP Code table in the Django admin with two fields:

  • mobile: Stores the user's mobile number.
  • code: Stores the OTP Code.

JWT Authentication

Djangoiransms supports JWT authentication using the rest_framework_simplejwt package. The system is compatible with this authentication method for secure communication with the SMS gateway. Other authentication and login methods are currently under development.

Future Plans

  • Support for additional SMS providers.
  • Enhanced error handling.
  • Rate limiting and monitoring.
  • Contribution

A Django package for seamless integration with Iranian SMS services like ParsianWebCo and Melipayamak. Contributions are welcome! Please submit pull requests or report issues on the GitHub repository.

License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_iran_sms-1.2.0.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_iran_sms-1.2.0-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file django_iran_sms-1.2.0.tar.gz.

File metadata

  • Download URL: django_iran_sms-1.2.0.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for django_iran_sms-1.2.0.tar.gz
Algorithm Hash digest
SHA256 cb68cb8b5f9aae489492c3ca12bce52b20487c77e27bd035700c00e97064a733
MD5 e738b0aba8f169261e2ce9a1d4d8d93c
BLAKE2b-256 95ece3b7bae869de317366b807fd915550954df2ebf5bb9f1743b94f8f26a1b9

See more details on using hashes here.

File details

Details for the file django_iran_sms-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_iran_sms-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bc97e4da1ea993781779abbe617f3b09469b7c7d8a83ea0143c241242f9e1cf6
MD5 da8ef95edc2b4158ca3b67c85d30702e
BLAKE2b-256 9ce8a461f344040f981e29ccdb88188a85976d6cfd47a9b45b6ff30046cb4660

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page