Skip to content

Repository files navigation

asyncio JSON exchange server

Тестовый сервер для асинхронного обмена JSON

Обмен данными происходит по идентификатору получателя. При отправке данных на сервер они хранятся и отображаются в течении часа, после чего удаляются. Реализован на базе aiohttp + sqlite3.

Взаимодействие

Адрес Описание
POST /api/<ид. получателя> Отправка данных на сервер
GET /api/<ид. получателя > Получение списка отправленных ранее данных

Сценарий общей работы системы

При звонке в IVR подтягивается из некой сторонней базы основная информация об абоненте, после чего передаётся в другую базу при постановке абонента в очередь к операторам. Панель оператора шлёт GET и подхватывает все необходимые данные для работы с клиентом. Если между GET и POST прошло больше часа, возвращается ошибка со статусом 400.

Поля в таблице users:

Поле Формат Описание
id VARCHAR(20) PRIMARY KEY ID абонента. Допустимые символы: латиница, цифры, нижнее подчеркивание. Во входящем JSON не передаётся
date DATETIME Дата добавления данных в базу. Может использоваться для определения, когда абонент упал в очередь на оператора. Генерируется при запросе, во входящем JSON не передаётся
name VARCHAR(50) ФИО абонента. На данный момент только латиница, т.к. при добавлении в базу идут проблемы с кодировкой. Разберусь – будет кириллица
phone VARCHAR(10) Телефон абонента в 10-значном формате
arpu INT ARPU – средние затраты абонента за месяц. Обычно используется для определения платежной категории абонента. Значение в копейках. Целое число
soc_tariff VARCHAR (10) Идентификатор(SOC) тарифа, подключенного у абонента

Пример входящего POST:

POST   http://localhost:8080/api/test_id/
Content-Type: application/json; charset=utf-8
{
  "name": "John Doe",
  "phone": "9156685347",
  "arpu": "4570",
  "soc_tariff": "TESTSOC"
}

Ответ:

Status: 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 16
Date: Sun, 02 Apr 2017 21:36:08 GMT
Server: Python/3.5 aiohttp/2.0.5
{
  "result": "OK"
}

Пример входящего GET

GET   http://localhost:8080/api/test_id/

Ответ:

Status: 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 139
Date: Sun, 02 Apr 2017 21:39:22 GMT
Server: Python/3.5 aiohttp/2.0.5
{
  "date": "2017-04-03 00:59:53.667318",
  "id": "test_id",
  "arpu": "4570",
  "name": "John Doe",
  "soc_tariff": "TESTSOC",
  "phone": "9156685347"
}

Отдельные компоненты

settings.py и settings_local.py

Файлы базовых параметров. settings_local.py имеет больший приоритет.

port_name

Порт, по которому подключаться. По умолчанию 8080

database_name

Путь к базе данных.

create_database.py

Скрипт для создания БД и таблицы users. Название БД подтягивается из settings.py. Никаких дополнительных параметров вводить не надо, просто запустить.

main.py

Отвечает за, собственно, сервис. Запуск сервиса = запуск main.py. Естественно, предварительно стоит нужно установить все зависисмости из requirements.txt

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages