Тестовый сервер для асинхронного обмена 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_local.py имеет больший приоритет.
Порт, по которому подключаться. По умолчанию 8080
Путь к базе данных.
Скрипт для создания БД и таблицы users. Название БД подтягивается из settings.py. Никаких дополнительных параметров вводить не надо, просто запустить.
Отвечает за, собственно, сервис. Запуск сервиса = запуск main.py. Естественно, предварительно стоит нужно установить все зависисмости из requirements.txt