Веб-приложение для рассылки SMS по базе номеров и отслеживания их доставки.
- Скачайте код
- Создайте файл
.env
со следующими настройками:
SMSC_USER='Corwin74'- логин от SMSC.ru
SMSC_API_PASSWORD='Api_pass1' - пароль для доступа к API SMSC.ru
SMSC_SMS_TTL=1 - время жизни SMS в часах
REDIS_URL='redis://login:password@host' - строка подключения к базе Redis
TEST_PHONE_NUMBER='+7 322-223' - телефон для получения тестовых рассылок
- Откройте в браузере файл index.html
При нажатии кнопки "Отправить" фронтенд шлёт POST запрос на адрес /send/
. Текст из поля для ввода будет в POST-параметре text
. В ответ от сервера ожидается JSON. Если в ответе будет ключ errorMessage
, то пользователь увидит его в виде всплывающего сообщения. Пример ответа сервера с текстом ошибки:
{
"errorMessage": "Потеряно соединение с SMSC.ru"
}
Через вебсокет приложение получает информацию о прогрессе рассылки: сколько адресатов уже получили SMS и сколько должны будут получить в будущем. Вебсокет работает на 5000 порту.
Фронтенд ожидает получить от сервера JSON сообщение с информацией о рассылках:
{
"msgType": "SMSMailingStatus",
"SMSMailings": [
{
"timestamp": 1123131392.734,
"SMSText": "Сегодня гроза! Будьте осторожны!",
"mailingId": "1",
"totalSMSAmount": 345,
"deliveredSMSAmount": 47,
"failedSMSAmount": 5,
},
{
"timestamp": 1323141112.924422,
"SMSText": "Новогодняя акция!!! Приходи в магазин и получи скидку!!!",
"mailingId": "new-year",
"totalSMSAmount": 3993,
"deliveredSMSAmount": 801,
"failedSMSAmount": 0,
},
]
}
Фронтенд накапливает данные о SMS рассылках. Если у вас есть 3 SMS рассылки, а вебсокет получит обновления только по двум, то третья со страницы не пропадёт.
Код написан в учебных целях — это урок в курсе по Python и веб-разработке на сайте Devman.