external:qr_меню:04_оповещения_для_персонала:09_api

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
external:qr_меню:04_оповещения_для_персонала:09_api [2022/02/03 12:08] alexander_troyanexternal:qr_меню:04_оповещения_для_персонала:09_api [2025/12/12 12:46] (текущий) – удалено Роман Назаров
Строка 1: Строка 1:
-====== API системы оповещений ====== 
-===== Общий принцип работы с оповещениями через API ===== 
- 
-Сервер QR меню хранит очередь событий за некоторый промежуток времени ( по умолчанию 5 минут ). Старые события автоматически удаляются из очереди.  
-Сторонний клиент может обратиться к серверу по API и получить список новых событий. 
- 
-===== Как получить список событий ===== 
- 
-Для того, чтобы получить список событий необходимо отправить GET запрос на /api/v4/events. 
-Пример запроса: 
- 
-<code> 
-GET https://ip:port/api/v4/events?hash=hash 
-token: token 
-</code> 
- 
-**hash** - это идентификатор события, благодаря которому сервер QR меню понимает, какие события клиент уже получил и какие для него являются новыми. Передается query параметром.  
-Для того чтобы получить все события в качестве hash передается значение none.  
- 
-**token** - это ключ доступа к серверу QR меню. Передается внутри заголовка token. 
- 
- 
- 
-Пример ответа: 
- 
-<code> 
-{ 
- "result": true, 
- "data": { 
- "updates": [ 
- { 
- "hash": "0xd8833dd3", 
- "code": "waiter_call", 
- "table": 1000028, 
- "invoice": null, 
- "order": null, 
- "table_repr": { 
- "id": 1000028, 
- "name": "6", 
- "max_guests": 50 
- } 
- } 
- ] 
- } 
-} 
-</code> 
- 
-В ключе 'updates' содержится список из событий в хронологическом порядке.  
-Каждое событие представляет собой: 
- 
-**hash** - идентификатор события 
-**code** - название события 
-**table** - идентификатор стола 
-**invoice** - текущий счет (id, id стола, сумма к оплате, информация о добавленных блюдах) 
-**order** - полное представление заказа (сумма, информация об официанте, столе, скидках и блюдах) 
-**table_repr** - информация о столе(id, имя, максимальное кол-во гостей) 
- 
-Далее сторонний клиент самостоятельно отправляет оповещения в нужный канал. Например, на электронную почту. 
- 
-==== Примеры ответов и виды событий ==== 
- 
-=== Сохранение заказа (save_order) === 
- 
-<code> 
-{ 
- "hash": "0xd11f09a7", 
- "code": "save_order", 
- "table": 1000028, 
- "invoice": { 
- "id": 121, 
- "order_guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}", 
- "table_id": 1000028, 
- "unpaid_sum": 186.0, 
- "session_id": 121, 
- "status": 0, 
- "error": null, 
- "session": { 
- "items": [ 
- { 
- "id": 1000041, 
- "type": "dish", 
- "count": 1.0, 
- "modifiers": [], 
- "name": "Блюдо с модификатором" 
- }, 
- { 
- "id": 1000062, 
- "type": "dish", 
- "count": 3.0, 
- "modifiers": [], 
- "name": "Блюдо" 
- } 
- ], 
- "payments": null 
- } 
- }, 
- "order": { 
- "guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}", 
- "sum": 186.0, 
- "pricelist_sum": 186.0, 
- "table": { 
- "id": 1000028, 
- "name": "6" 
- }, 
- "waiter": { 
- "id": 9001, 
- "name": "Система" 
- }, 
- "discounts": [], 
- "payments": [], 
- "dishes": [ 
- { 
- "id": 1000041, 
- "type": "dish", 
- "name": "Блюдо с модификатором", 
- "price": 150.0, 
- "count": 1.0, 
- "sum": 150.0, 
- "modifiers": [] 
- }, 
- { 
- "id": 1000062, 
- "type": "dish", 
- "name": "Блюдо", 
- "price": 12.0, 
- "count": 3.0, 
- "sum": 36.0, 
- "modifiers": [] 
- } 
- ] 
- } 
-}  
-</code> 
- 
-=== Вызов официанта (waiter_call) === 
- 
-<code> 
-{ 
- "result": true, 
- "data": { 
- "updates": [ 
- { 
- "hash": "0xd8833dd3", 
- "code": "waiter_call", 
- "table": 1000028, 
- "invoice": null, 
- "order": null, 
- "table_repr": { 
- "id": 1000028, 
- "name": "6", 
- "max_guests": 50 
- } 
- } 
- ] 
- } 
-} 
-</code> 
- 
-=== Дозаказ (additional_order)=== 
- 
-<code> 
-{ 
- "hash": "0xb22ce428", 
- "code": "additional_order", 
- "table": 1000028, 
- "invoice": { 
- "id": 122, 
- "order_guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}", 
- "table_id": 1000028, 
- "unpaid_sum": 336.0, 
- "session_id": 122, 
- "status": 0, 
- "error": null, 
- "session": { 
- "items": [ 
- { 
- "id": 1000041, 
- "type": "dish", 
- "count": 1.0, 
- "modifiers": [], 
- "name": "Блюдо с модификатором" 
- } 
- ], 
- "payments": null 
- } 
- }, 
- "order": { 
- "guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}", 
- "sum": 336.0, 
- "pricelist_sum": 336.0, 
- "table": { 
- "id": 1000028, 
- "name": "6" 
- }, 
- "waiter": { 
- "id": 9001, 
- "name": "Система" 
- }, 
- "discounts": [], 
- "payments": [], 
- "dishes": [ 
- { 
- "id": 1000041, 
- "type": "dish", 
- "name": "Блюдо с модификатором", 
- "price": 150.0, 
- "count": 1.0, 
- "sum": 150.0, 
- "modifiers": [] 
- }, 
- { 
- "id": 1000062, 
- "type": "dish", 
- "name": "Блюдо", 
- "price": 12.0, 
- "count": 3.0, 
- "sum": 36.0, 
- "modifiers": [] 
- }, 
- { 
- "id": 1000041, 
- "type": "dish", 
- "name": "Блюдо с модификатором", 
- "price": 150.0, 
- "count": 1.0, 
- "sum": 150.0, 
- "modifiers": [] 
- } 
- ] 
- } 
-} 
-</code> 
- 
-Вся информация о добавленных в заказ блюдах содержится в ключе "invoice" - "session". 
- 
-=== Онлайн оплата (online_payment) === 
- 
-<code> 
-{ 
- "hash": "0xa1fb9fc1", 
- "code": "online_payment", 
- "table": 1000028, 
- "invoice": null, 
- "order": { 
- "guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}", 
- "sum": 186.0, 
- "pricelist_sum": 186.0, 
- "table": { 
- "id": 1000028, 
- "name": "6" 
- }, 
- "waiter": { 
- "id": 9001, 
- "name": "Система" 
- }, 
- "discounts": [], 
- "payments": [], 
- "dishes": [ 
- { 
- "id": 1000041, 
- "type": "dish", 
- "name": "Блюдо с модификатором", 
- "price": 150.0, 
- "count": 1.0, 
- "sum": 150.0, 
- "modifiers": [] 
- }, 
- { 
- "id": 1000062, 
- "type": "dish", 
- "name": "Блюдо", 
- "price": 12.0, 
- "count": 3.0, 
- "sum": 36.0, 
- "modifiers": [] 
- } 
- ] 
- }, 
- "table_repr": { 
- "id": 1000028, 
- "name": "6", 
- "max_guests": 50 
- } 
-} 
-</code> 
- 
-=== Запрос счета (bill_request) === 
- 
-<code> 
-{ 
- "hash": "0xa1fb9fc1", 
- "code": "bill_request", 
- "table": 1000028, 
- "invoice": null, 
- "order": { 
- "guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}", 
- "sum": 186.0, 
- "pricelist_sum": 186.0, 
- "table": { 
- "id": 1000028, 
- "name": "6" 
- }, 
- "waiter": { 
- "id": 9001, 
- "name": "Система" 
- }, 
- "discounts": [], 
- "payments": [], 
- "dishes": [ 
- { 
- "id": 1000041, 
- "type": "dish", 
- "name": "Блюдо с модификатором", 
- "price": 150.0, 
- "count": 1.0, 
- "sum": 150.0, 
- "modifiers": [] 
- }, 
- { 
- "id": 1000062, 
- "type": "dish", 
- "name": "Блюдо", 
- "price": 12.0, 
- "count": 3.0, 
- "sum": 36.0, 
- "modifiers": [] 
- } 
- ] 
- }, 
- "table_repr": { 
- "id": 1000028, 
- "name": "6", 
- "max_guests": 50 
- } 
-} 
-</code> 
- 
-===== Как получить токен QR меню ===== 
- 
-Чтобы узнать свой токен, необходимо зайти на главную страницу QR меню, выбрать раздел "Параметры системы" - "Регистрация на сервере приложений" и скопировать значение из поля "Секретный ключ". Это и есть ваш токен. 
- 
-**Раздел наполняется, информация будет доступна в ближайшее время.** 
  
  • external/qr_меню/04_оповещения_для_персонала/09_api.1643879330.txt.gz
  • Последнее изменение: 2022/02/03 12:08
  • alexander_troyan