django-smsru

Django app for sms.ru.


License
BSD-1-Clause
Install
pip install django-smsru==1.0.4

Documentation

Django SMS.RU

PyPI version fury.io PyPI license

Приложение Django для быстрой интеграции API сервиса sms.ru

Быстрый старт

pip install django-smsru

  1. Добавьте smsru в INSTALLED_APPS:
   INSTALLED_APPS = [
     ...
     'smsru',
   ]
  1. В настройках так же следует добавить параметр SMS_RU:
SMS_RU = {
    "API_ID": '<API KEY>', # если указан API ключ, логин и пароль пропускаем
    "LOGIN": '<login>', # если нет API, то авторизуемся чезер логин и пароль
    "PASSWORD": '<password>',
    "TEST": True, # отправка смс в тестовом режиме, по умолчанию False
    "SENDER": 'sms', # отправитель - необязательно поле
    "PARTNER_ID": 1111 # ID партнера - необязательно поле
}

Обязательно должен быть указан API_ID или пара LOGIN и PASSWORD, остальные параметры по желанию.

  • API_ID - API ключ, если он указан, авторизация осуществляется только через него, Логин и Пароль при этом игнорируются
  • LOGIN и PASSWORD - Логин и Пароль для авторизации запросов, используются только в случае если не указан API_ID
  • TEST - отправлять ли сообщения в тестовом режиме, по умолчанию отправляем в нормальном режиме
  • SENDER - имя отправителя
  • PARTNER_ID - ID партнера
  1. Добавьте в свой urls.py импорт URL (для работы callback, по желанию):
   path('smsru/', include('smsru.urls'))
  1. Запустите python manage.py migrate для создания необходимых таблиц.

  2. В админ панели вы сможете увидеть лог сообщений и запросить статус любого из них.

  3. Так же добавилась консольная команда для отправки смс

python manage.py send-sms-ru --phone +79888888888 --msg Тест

Сигналы

  • smsru_call_back_sms(sender, instance, new_status) - при обработке callback запроса, после изменения статуса сообщения
from django.dispatch import receiver

from smsru.signals import smsru_call_back_sms


@receiver(smsru_call_back_sms)
def call_back_sms(sender, instance, new_status, *args, **kwargs):
    instance.msg = 'signal'
    instance.save()

Использование библиотеки в коде

Отправка на один номер одного смс:

from smsru.service import SmsRuApi

api = SmsRuApi()
result = api.send_one_sms("+79888888888", "Test")  # телефон и сообщение
# result: {
#   '79888888888': {'status': True, 'status_code': 100, 'sms_id': 0000-0000, 'status_text': 'Статус'}
# }

Отправка на множество номеров, разных сообщений:

from smsru.service import SmsRuApi

api = SmsRuApi()
result = api.send_multi_sms({
    '+79888888888': 'test',
    '+79888888889': 'test 2',
})
# result: {
#   '79888888888': {'status': True, 'status_code': 100, 'sms_id': 0000-0000, 'status_text': 'Статус'}, 
#   '79888888889': {'status': True, 'status_code': 100, 'sms_id': 0000-0000, 'status_text': 'Статус'}
# }

Получить баланс и лимиты:

from smsru.service import SmsRuApi

api = SmsRuApi()
balance = api.get_balance()
limits = api.get_limit()