/sms-sending

Веб-интерфейс для рассылок SMS сообщений

Primary LanguagePython

Рассылка SMS и её отслеживание

Веб-приложение для рассылки 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.