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

Веб-приложение для рассылки SMS по базе номеров и отслеживания их доставки.

Как запустить

  • Скачайте код
  • Запустите docker-compose up
  • Откройте в браузере файл http://127.0.0.1:5000

Как настроить

Для того чтобы отправлять реальные смс, нужно запускать сервер с параметром --wet_run, а также прописать LOGIN и PASSWORD от smsc.ru в файл .env.

Получение данных из формы

При нажатии кнопки "Отправить" фронтенд шлёт 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.