API системы оповещений
Общий принцип работы с оповещениями через API
Сервер QR меню хранит очередь событий за некоторый промежуток времени ( по умолчанию 5 минут ). Старые события автоматически удаляются из очереди.
Сторонний клиент может обратиться к серверу по API и получить список новых событий.
Как получить список событий
Для того, чтобы получить список событий необходимо отправить GET запрос на /api/v4/events.
Пример запроса:
GET https://ip:port/api/v4/events?hash=hash token: token
hash - это идентификатор события, благодаря которому сервер QR меню понимает, какие события клиент уже получил и какие для него являются новыми. Передается query параметром.
Для того чтобы получить все события в качестве hash передается значение none.
token - это ключ доступа к серверу QR меню. Передается внутри заголовка token.
Пример ответа:
{
"result": true,
"data": {
"updates": [
{
"hash": "0xd8833dd3",
"code": "waiter_call",
"table": 1000028,
"invoice": null,
"order": null,
"table_repr": {
"id": 1000028,
"name": "6",
"max_guests": 50
}
}
]
}
}
В ключе 'updates' содержится список из событий в хронологическом порядке.
Каждое событие представляет собой:
hash - идентификатор события
code - название события
table - идентификатор стола
invoice - текущий счет (id, id стола, сумма к оплате, информация о добавленных блюдах)
order - полное представление заказа (сумма, информация об официанте, столе, скидках и блюдах)
table_repr - информация о столе(id, имя, максимальное кол-во гостей)
Далее сторонний клиент самостоятельно отправляет оповещения в нужный канал. Например, на электронную почту.
Примеры ответов и виды событий
Сохранение заказа (save_order)
{
"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": []
}
]
}
}
Вызов официанта (waiter_call)
{
"result": true,
"data": {
"updates": [
{
"hash": "0xd8833dd3",
"code": "waiter_call",
"table": 1000028,
"invoice": null,
"order": null,
"table_repr": {
"id": 1000028,
"name": "6",
"max_guests": 50
}
}
]
}
}
Дозаказ (additional_order)
{
"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": []
}
]
}
}
Вся информация о добавленных в заказ блюдах содержится в ключе «invoice» - «session».
Онлайн оплата (online_payment)
{
"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
}
}
Запрос счета (bill_request)
{
"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
}
}
Как получить токен QR меню
Чтобы узнать свой токен, необходимо зайти на главную страницу QR меню, выбрать раздел «Параметры системы» - «Регистрация на сервере приложений» и скопировать значение из поля «Секретный ключ». Это и есть ваш токен.
Раздел наполняется, информация будет доступна в ближайшее время.
Добавить страницу в книгу
Удалить страницу из книги
Показать или изменить шаблон книги (
Помощь