Как мы подключили печать на принтеры наших клиентов
Почему нам не подошло «Скачать PDF», как мы встроили CloudPrint.by и что пришлось сделать на стороне CARRO.Бизнес
О КЕЙСЕ
CARRO.Бизнес — ERP-система для компаний, которые занимаются автозапчастями. Мы встроили CloudPrint.by, чтобы пользователи могли запускать печать бирок прямо из карточки товара. Ниже расскажем, как устроили интеграцию и что пришлось предусмотреть на нашей стороне.
С чего всё началось
В CARRO.Бизнес сотрудники принимают товары, раскладывают их по складу и печатают бирки с QR-кодами. Часто работа идёт с телефона: человек стоит рядом с товаром, а принтер находится у стеллажа или на другом рабочем месте.
Сначала напрашивался простой вариант — сформировать PDF и предложить его скачать. Но тогда сотруднику нужно найти компьютер с нужным принтером, открыть файл, выбрать устройство и подтвердить печать. Для одного документа это нормально. Когда бирки печатаются постоянно, лишние шаги начинают мешать работе.
Мы сформулировали задачу так: сотрудник нажимает «Печать» в CARRO.Бизнес, а бирка выходит на заранее выбранном принтере компании. При этом:
- печать должна запускаться и с компьютера, и с телефона;
- клиент не должен настраивать VPN или открывать порты в своей сети;
- система не должна печатать две бирки после повторного запроса;
- если что-то сломалось, пользователь должен понимать, что проверить.
Почему нам подошёл CloudPrint.by
Для нашего сценария было важно, чтобы задание из CARRO.Бизнес доходило до конкретного принтера без дополнительных действий пользователя. При этом подключение не должно требовать настройки VPN или открытия входящих портов в сети клиента.
В CloudPrint.by этот сценарий работает через локальный Agent: небольшая программа устанавливается на компьютер рядом с принтером, сама подключается к сервису и получает задания. Принтеры используются те, которые уже установлены в операционной системе.
Как теперь проходит печать
- Сотрудник нажимает кнопку печати в CARRO.Бизнес.
- Наш бэкенд формирует документ и отправляет задание в CloudPrint.
- CloudPrint передаёт задание Agent на компьютере клиента.
- Agent отправляет документ в выбранную очередь, а статус возвращается в CARRO.Бизнес.
Для пользователя CloudPrint почти не виден — и именно этого мы добивались. Он работает с товаром в CARRO.Бизнес, а не переключается между двумя сервисами.
Как мы встроили подключение в CARRO.Бизнес
Мы не хотели заставлять каждого клиента отдельно регистрироваться в CloudPrint, подтверждать почту и копировать API-ключи. Вместо этого используем управляемые аккаунты. Когда компания подключает печать, наш бэкенд создаёт для неё отдельный аккаунт CloudPrint и связывает его с компанией в CARRO.Бизнес.
Для управления подключением мы используем Partner API, а для отправки документов — Print API. Клиенту эти детали знать не нужно: вся настройка начинается и заканчивается внутри CARRO.Бизнес.
Само подключение мы сделали коротким:
Администратор открывает настройки CloudPrint в CARRO.Бизнес.
Выбирает компьютер, к которому подключён принтер.
На этом компьютере устанавливают и запускают CloudPrint Agent.
CARRO.Бизнес показывает найденные принтеры — остаётся выбрать нужный и выполнить тестовую печать.
Если принтер стоит у другого сотрудника, администратор отправляет ему одноразовую ссылку. Сотруднику не нужно передавать логин и пароль от CARRO.Бизнес — он только подключает компьютер и Agent.
Что пришлось предусмотреть на нашей стороне
Не обещать печать слишком рано
Если API принял задание, это ещё не значит, что документ напечатан. Компьютер может быть выключен, Agent — остановлен, а очередь — зависнуть. Поэтому мы показываем состояние задания, а не мгновенный «успех» сразу после отправки.
Не создавать дубли
После тайм-аута мы не всегда знаем, дошёл ли первый запрос. Если просто отправить документ ещё раз, клиент может получить две одинаковые бирки. Для повторов мы используем один и тот же ключ идемпотентности: CloudPrint понимает, что это прежнее задание, а не новое.
Хранить идентификатор, а не название принтера
Название очереди может измениться после переустановки драйвера. Поэтому в настройках мы сохраняем идентификатор принтера из CloudPrint, а привычное название показываем только пользователю.
Показывать понятную диагностику
Фраза «печать не работает» бесполезна. Мы стараемся вести пользователя по цепочке: включён ли компьютер, запущен ли Agent, виден ли принтер в системе, не зависла ли очередь и тот ли принтер выбран в CARRO.Бизнес.
Что взял на себя CloudPrint, а что осталось у нас
CloudPrint отвечает за доставку задания до компьютера клиента, работу Agent и передачу документа в локальную очередь. CARRO.Бизнес получает статусы задания и показывает их пользователю.
На стороне CARRO.Бизнес остались бизнес-правила: когда нужно печатать бирку, как она выглядит, какой принтер назначен компании, кто может менять настройки, что увидит пользователь при ошибке и как поддержка найдёт нужное задание.
Когда мы рекомендуем CloudPrint.by
По нашему опыту CloudPrint стоит рассматривать, если:
- печать запускается из облачного сервиса или мобильного приложения;
- печатать нужно регулярно и на заранее выбранном устройстве;
- ручное скачивание файла уже мешает работе пользователей;
- у продукта много клиентских компаний, и их принтеры нужно разделять.
Если документы печатают редко с одного офисного компьютера, отдельная интеграция может быть лишней — PDF и системного окна печати будет достаточно.
В нашем случае CloudPrint.by встроился в CARRO.Бизнес через управляемые аккаунты и API. Клиент настраивает принтер и запускает печать внутри CARRO.Бизнес, не переключаясь между разными сервисами.
Если у вас похожий сценарий, перед началом полезно описать четыре вещи: откуда запускается печать, что именно печатается, где стоит принтер и что должно происходить, когда компьютер выключен. После этого можно сверить схему с документацией CloudPrint Developer Platform.
НАШ ВЫВОД
Для пользователя результат выглядит просто: он работает с товаром в CARRO.Бизнес, а бирка появляется на нужном принтере. CloudPrint обеспечивает доставку задания, а весь пользовательский сценарий остаётся внутри CARRO.Бизнес.