Приложение Django для быстрой интеграции API сервиса sms.ru
pip install django-smsru
- Добавьте
smsru
в INSTALLED_APPS:
INSTALLED_APPS = [
...
'smsru',
]
- В настройках так же следует добавить параметр
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 партнера
- Добавьте в свой
urls.py
импорт URL (для работы callback, по желанию):
path('smsru/', include('smsru.urls'))
-
Запустите
python manage.py migrate
для создания необходимых таблиц. -
В админ панели вы сможете увидеть лог сообщений и запросить статус любого из них.
-
Так же добавилась консольная команда для отправки смс
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()