PunchMan City verdict has implications for football integrity, says FAInquirerPalawan confirms ASF case, strengthens containment measuresThe Jerusalem PostUS Senate unanimously passes bipartisan resolution honoring American October 7 victimsBollywood HungamaNushrratt Bharuccha to undergo spine surgery: Team issues official statement amid accident reportsESPN DeportesCheco Pérez vuelve a Malasia, lugar de su primer podio en F1Observador DesportoOutdoors de apoio a CR7 e críticas a JJ surgem em LisboaSky TG24Festa dei Nonni, nonni cult di cinema, cartoni animati e serie da Lino Banfi a Coco e UpZDF heuteEntdecken Sie das ZDF-NachrichtenstudioХабрРусификация Omarchy Linux одним скриптомSportstarIndian hockey rocked by harassment complaints against umpire manager Gurinder Singh Sangha7sur7Mort du petit Wassim: Mohammed Taoussi condamné à la réclusion criminelle à perpétuitéBusiness AMWashington voert druk op: Europese Unie overweegt vrijgave van dieselvoorraden
The Daily Newsstand · Free, Always
Friday, October 2, 2026

Пинпад с нейронкой на борту: как мы научили платёжный терминал распознавать заказы и подчиняться голосу

Translate

Молока в кофе можно налить по-разному, но в одном случае получится 3в1, а в другом — капучино. Точно так же с внедрением ИИ, который сейчас пытаются пришить к каждой кофемолке. Мы попробовали вставить ИИ в платёжный терминал не ради хайпа, а чтобы он начал реально слышать клиента в условиях ревущей кофемашины и бесконечного гула торгового зала. И, кажется, получился вообще не капучино. Раф, как минимум! 😀

Привет, Хабр! Я Владимир Графсков, техлид по интеграционным проектам Эвотора. Расскажу, зачем нашему пинпаду понадобилась нейронка, как мы решились делать голосовой интерфейс для платёжного терминала, как устроен EvoPoint и как он меняет процесс покупки.

Для чего пинпаду нейронка

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

Мы хотели, чтобы терминал не только принимал оплату, но и участвовал в формировании заказа. Клиент произносит заказ, система показывает, что распознала, а сотрудник получает результат до завершения сценария оплаты. Часть операций переносится с кассира на устройство, но выбор и подтверждение остаются у клиента.

Распознать заказ в тихой комнате не так уж и сложно. А вот распознать его в кофейне, где одновременно работают кофемашина и вытяжка, играет музыка и говорят несколько человек на фоне — задача со звёздочкой. На этом этапе мы и привлекли ИИ.

Как это работает на практике

EvoPoint уже проверяли в реальных условиях: терминал работал на нашем стенде-кофепойнте на фестивале Gastreet 2025, а в этом году — в баре Docs in Box на Gastreet 2026. Именно шум фестивальной площадки — с музыкой, толпой и работающими кофемашинами — стал для системы одним из первых серьёзных испытаний на устойчивость к посторонним звукам. 

EvoPoint задумывался как точка входа, которая автоматизирует формирование заказа. Главная инновация здесь — голосовое управление покупкой. Это позволяет клиенту самостоятельно собрать заказ, а сотруднику — начать готовить кофе ещё до того, как чек будет официально пробит. Всё, теперь даже интроверты смогут работать бариста! 

Голосовое управление

На словах звучит просто, но чтобы это всё заработало, пришлось полностью спроектировать с нуля архитектуру голосового сценария: от звуковой волны до анализа интента. Формально пинпад EvoPoint — это не монолит, а часть распределённой системы. На уровне архитектуры в голосовом сценарии участвуют такие блоки: 

  1. Оркестратор — передаёт команды между локальными приложениями и кассой.

  2. STT-модель (Speech-to-Text) на пинпаде — преобразует аудио в текст.

  3. Клиентский экран — показывает результат и уточнения.

Ключевая фишка — голосовое управление, а для этого мы должны научить пинпад слушать, слышать и показывать нам, что он всё правильно понял. Ну и ещё кой-чего прикрутить по пути.

Схема архитектуры: Микрофон -> Vosk -> Orchestrator -> POS

Схема архитектуры: Микрофон -> Vosk -> Orchestrator -> POS

1. Оркестратор: локальный брокер сообщений

Оркестратор не распознаёт речь и не проводит оплату. Это foreground service на Android, который связывает приложения на пинпаде с POS.

Локальные приложения подключаются через AIDL, обмен с POS идёт через UART. Все участники используют общий конверт команды: uuid, тип команды, направление, источник, получатель и payload.

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

Что находится внутри оркестратора:

  • Транспорт: AIDL для локальных приложений и UART для POS.

  • Маршрутизация: направление команды и пакет получателя.

  • Защита сценариев: состояния FREE, PAYMENT и QUALITY.

  • Доставка: uuid и служебные статусы получения сообщения.

  • Журналирование: локальная база, receipt id и пакетная отправка через WorkManager.

В архитектуре используются паттерны Mediator, Message Router, Command Message, Adapter, Repository и Correlation Identifier. Для отправки логов реализовали Store and Forward.

2. Service Voice Recognition — локальная STT модель: учим пинпад слышать

Когда Voice Recognition выдаёт текстовую гипотезу, её нужно разобрать. Одно дело — показать текст на экране для бариста, другое — научить систему выделять сущности и интенты:

  • Действие: добавить, заменить, удалить, вернуть обратно.

  • Объект: «латте», «круассан шоколадный», «3в1 воды до края».

  • Модификатор: «большой», «с корицей», «без сахара».

Мы разработали сервис, который обрабатывает голосовой ввод и сам формирует действие в терминале. Сахар в капучино добавляет не бариста, а сама кассовая система — пока, правда, только в заказе и на чековой ленте.

3. Customer Screen: визуальное подтверждение

Чтобы не превращать заказ в «сломанный телефон», мы используем customer_screen. Это UI-слой, который визуализирует то, что поняла система. Если ввод неоднозначен, например, в меню три вида латте, терминал не угадывает, а выводит сценарий уточнения.

Это критически важный UX-предохранитель. Никто же не хочет получить классический латте, если заказывал безлактозный.

А что, если терминал вообще не расслышал заказ? 

Для этого есть отдельный сценарий: сначала система активно слушает первую фразу клиента («я хочу заказать»), затем — если распознавание не удалось — переспрашивает, показывая экран уточнения с повторным активным слушанием. Если и вторая попытка не дала результата, терминал показывает экран «я вас не расслышал» и возвращается на стартовый экран, чтобы клиент мог начать заново.

Платёжный контур и обратная связь

После формирования заказа оркестратор координирует переход к оплате и передаёт команды между участниками сценария. Платёжную операцию и фискализацию выполняют специализированные компоненты, а оркестратор только доставляет команды и ответы.

  1. Покупка переводится в состояние оплаты.

  2. Активируется выбор метода: NFC, QR (СБП) или классический чип. Отдельно работаем над интеграцией сервиса «Вжух» — быстрой оплаты по биометрии ладони, которая добавит ещё один способ расплатиться без карты и телефона.

  3. Команда уходит в изолированный платёжный контур, и после подтверждения транзакции формируется фискальный чек.

EvoPoint в дикой среде обитания - в кофейне

EvoPoint в дикой среде обитания - в кофейне

Оценка качества обслуживания

Теперь пинпад может принять заказ и передать его бариста, но можно пойти ещё дальше. Оценка качества обслуживания ― отдельная головная боль для любого бизнеса. Оценки можно собирать из отзывов на Яндекс Картах, мониторить Книгу жалоб и предложений или поставить отдельного человека допрашивать посетителей на выходе из заведения. 

Но есть решение интереснее — мы сделали специальное приложение для EvoPoint. Если клиент ставит оценку, она сохраняется вместе с чеком (receipt_id), устройством и временем события. Дальше данные уходят в бэкенд и агрегируется статистика. В личном кабинете Эвотора из собранных данных формируются:

  • индекс удовлетворённости;

  • средняя оценка;

  • распределение оценок;

  • конверсия — сколько клиентов вообще дошли до оценки;

  • список чеков с детализацией.

Бэкенд сервиса: здесь сырые данные из чеков и логов превращаются в тепловые карты удовлетворённости и наглядную динамику сервиса

Бэкенд сервиса: здесь сырые данные из чеков и логов превращаются в тепловые карты удовлетворённости и наглядную динамику сервиса

Визуально обычные «звёздочки на экране» превращаются в полноценную статистику, с которой уже можно работать. Вот как это работает:

  1. терминал показывает оценку;

  2. оценка сохраняется вместе с идентификаторами события;

  3. данные связываются с чеком;

  4. бэкенд строит по ним метрики;

  5. личный кабинет показывает аналитику по точкам, устройствам и сотрудникам.

Интерфейс «глазами клиента»: проектировали UI так, чтобы сбор фидбека не превращался в допрос, а занимал один клик после оплаты

Интерфейс «глазами клиента»: проектировали UI так, чтобы сбор фидбека не превращался в допрос, а занимал один клик после оплаты

В планах на будущее: допродажи

  1. Интеграция с EvoBonus и EvoSell (рекомендательный сервис в Эвоторе). Пинпад сможет анализировать корзину и предлагать товары на основе Big Data.

  2. Open API. Позволит подключать к EvoPoint собственные сценарии. Например, ресторан сможет реализовать голосовой сбор предзаказа на вынос ещё до подхода клиента к терминалу.

Если честно, я считаю, что голосовой интерфейс в рознице — это направление с огромным потенциалом, и мы только в начале пути. Именно поэтому в приоритете у нас сейчас как раз эти два направления: сначала докрутим аналитику корзины через EvoBonus и EvoSell, а следом откроем API, чтобы бизнес мог собирать свои голосовые сценарии под конкретные задачи.

Мы продолжаем докручивать наши модели и собирать фидбек. Если у вас есть идеи, как ещё можно использовать «слушающий» терминал — добро пожаловать в комментарии. Обсудим!

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.