Интеграция NetSuite SuiteScript 2.0 с внешним подключением - PullRequest
0 голосов
/ 12 января 2019

Мне нужно настроить печать этикеток EPL2 от Netsuite. К сожалению, компания, для которой она предназначена, очень мала, и у них не так много денег, поэтому они не могут купить решение для печати этикеток за 1000 долларов.

Текущая система использует сервер Linux, который затем отправляет файл в одну из очередей сервера печати CUPS с помощью команды linux cat. Оттуда он отправляется на сервер печати Intel NetportExpress 10/100, а затем на принтер этикеток Argox V1000 +. Это через корпоративный IP-адрес сети.

Вместо этого я начал искать некоторые дешевые варианты:

  1. Откройте окно браузера с типом содержимого text / plain и используйте пакет, чтобы заполнить это окно браузера кодами принтера этикеток EPL2. Затем откройте диалоговое окно печати, чтобы пользователь мог печатать в драйвере принтера этикеток. Это требует установки драйвера принтера этикеток для всех пользователей. К сожалению, я не мог заставить это напечатать этикетку.
  2. Интеграция из Netsuite через Restlet во внешнее приложение python (в Linux), которое может затем выполнить команду linux cat, необходимую для печати этикетки. Restlet работает хорошо, но, к сожалению, похоже, что нет способа получить какой-то хук, который срабатывает при поступлении новой пользовательской записи лейбла. Поэтому я должен продолжать опрашивать рестлет из Python каждые 2 секунды, чтобы увидеть, не ждет ли новая этикетка печати. Я начал выполнять это около часа назад, и пока я сделал около 2500 запросов без ошибок. Мой предел параллелизма составляет 5, и я использую 2, так что, кажется, все в порядке. Скрипт делает очень мало, поэтому я не думаю, что будут проблемы с ограничением размера. Проблема только в том, что мне интересно, завершит ли NetSuite мой скрипт для выполнения стольких запросов. Не уверен, есть ли такая проблема управления, но не могу себе представить, что они в конечном итоге не остановят подобные вещи.
  3. Используйте модуль http для отправки данных в виде Ajax-типа. Это должно быть в состоянии забрать при поступлении новых данных вместо необходимости опроса (не уверен). Проблема в том, что я предполагаю, что мне понадобится статический IP-адрес, который, к сожалению, дорогой вариант.
  4. Используйте веб-службы Netsuite SOAP, которые могут иметь хук вместо опроса (не уверен). Я думаю, что это не будет бесплатным (как рестлеты).

Так что мой вопрос: есть ли лучший вариант, который я пропускаю, или что бы вы порекомендовали. Кроме того, я бы достиг определенного уровня управления, если опрашиваю каждые 2 секунды с опцией 2?

Обновление: опрос загадочным образом перестал работать после 7395 запросов и около 3 часов. Это не вернуло ошибку, о которой я знаю. Отклоненные запросы на управление интеграцией показывают 0.

Ответы [ 3 ]

0 голосов
/ 14 января 2019

Раньше я занимался электронной почтой, и она работает довольно хорошо. Объем может быть проблемой.

Другая вещь, которую нужно сделать, это просто получить статический IP-адрес с чем-то вроде ngrok. ngrok работает на linux / mac / windows, так что вы сможете написать приложение, которое прослушивает определенный порт. Netsuite отправит сообщение https этому приложению по адресу (например) https://printing.mycompany.ngrok.io, и приложение будет обрабатывать локальную печать.

Я считаю, что ngrok стоит около $ 60 в год.

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

0 голосов
/ 18 января 2019

Мы были сбиты с толку продавцом принтеров (Zebra), прежде чем узнали, что мы можем отправлять сообщения HTTP на большинство принтеров, используя PRINTER_IP: 9100 и просто отправляя RAW ZPL / EPL в качестве тела.

Просмотр: принтеры с поддержкой IPP. большинство из них в эти дни. сэкономит вам тысячи на долгосрочную работу, если у вас большой склад, как у нас

0 голосов
/ 14 января 2019

Вместо опроса я бы попросил NetSuite инициировать соединение в afterSubmit сценарии пользовательских событий.

Я автоматизировал печать этикеток, добавив вложения электронной почты NetSuite в специальный почтовый ящик, который отслеживается сервером Linux. Мои настройки описаны здесь:

https://gist.github.com/michoelchaikin/80af08856144d340b335d69aa383dbe7

...