Отправка SMS сообщений средствами python или django

124Borman

Новичок
Пользователь
Янв 26, 2021
32
1
8
Здравствуйте, делаю приложение на django. Мне необходимо отправлять по смс сообщениям с одноразовый пароль, который будет проверяться на форме с введёнными данными пользователя. Можно ли как-то средствами python или django отправлять sms на мобильные телефоны?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Можно ли как-то средствами python или django отправлять sms на мобильные телефоны?
Только средствами python или django нельзя. Но можно с помощью интеграции с api сервиса по отправке смс.
Вот например библиотека для интеграции django с сервисом bulksms.com.
 

124Borman

Новичок
Пользователь
Янв 26, 2021
32
1
8
Только средствами python или django нельзя. Но можно с помощью интеграции с api сервиса по отправке смс.
Вот например библиотека для интеграции django с сервисом bulksms.com.
А где необходимо настраивать SENDSMS_BACKEND? Если вставить SENDSMS_BACKEND = 'myapp.mysmsbackend.SmsBackend' в settings.py, то ничего не работает
Возможно вместо myapp надо указать название своего проекта, но так тоже не работает. Пишет, что такого модуля нет
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
А где необходимо настраивать SENDSMS_BACKEND? Если вставить SENDSMS_BACKEND = 'myapp.mysmsbackend.SmsBackend' в settings.py, то ничего не работает
'myapp.mysmsbackend.SmsBackend' это пример для использования кастомных (своих) бэкендов.
По умолчанию SENDSMS_BACKEND установлен 'sendsms.backends.console.SmsBackend',
который просто собирает сообщения в список sendsms.outbox.
Их можно вывести в консоль если например так:
Python:
from django.http import HttpResponse
import sendsms
from sendsms import api


def send_message(request):
   # пример кода из документации
    api.send_sms(
        body='I can haz txt', from_phone='+41791111111', to=['+41791234567']
    )
    # пример вывода списка смс в консоль (если не задан SENDSMS_BACKEND)
    for sms in sendsms.outbox:
        print(sms.from_phone)
        print(sms.to)
        print(sms.body)

    return HttpResponse('Message send')
Для отправки смс нужно выбрать бэкенд сервиса, например 'sendsms.backends.bulksms.SmsBackend':
в setting.py добавить:
Python:
SENDSMS_BACKEND = 'sendsms.backends.bulksms.SmsBackend'
SENDSMS_BULKSMS_TOKEN_ID = 'xxx'
SENDSMS_BULKSMS_TOKEN_SECRET = 'xxx'
BULKSMS_ENABLE_UNICODE = True (default)
SENDSMS_BULKSMS_TOKEN_ID и SENDSMS_BULKSMS_TOKEN_SECRET можно получить в сервисе bulksms.com.
код отправки смс из вьюхи точно такой же:
Python:
from django.http import HttpResponse
from sendsms import api


def send_message(request):

   # пример кода из документации
    api.send_sms(
        body='I can haz txt', from_phone='+41791111111', to=['+41791234567']
    )
    return HttpResponse('Message send')
 
Последнее редактирование:

Форум IT Специалистов