Vocollect Device to Server Communication - DatasmithSA/Pigeon-Voice-Training GitHub Wiki

/images/Pigeon-Voice-Basic-Architecture.png

Message requests from a Vocollect Voice Application or Task can be performed via two main protocols:

  • TCP/IP: both Voice Applications (compatible with Voice Client & Voice Catalyst) and Tasks (compatible only with Voice Client) can perform requests to a server via TCP/IP. A socket server needs to be developed on the server in order to accept and respond to messages from the device. There are two kinds of Vocollect message requests that can be made from a Voice device:
    • LUT (Lookup Table): is a synchronous request i.e. the device blocks until it receives a response from the server. A LUT is typically used to make requests to the server to download information such as a pick list.
    • ODR (Output Data Record): asynchronous request i.e. the device queues the ODR messages and send them to the server when a network connection is available. After confirmation of receipt from the server, the device will delete the ODR of its queue. An ODR is typically used to send a pick confirmation to the server after a picker has completed the pick. The device only requires a reliable network connection when downloading a pick list, but thereafter the picker can continue picking without being blocked until the server responds every time they've completed a pick.
  • HTTP: only Voice Applications (compatible with Voice Catalyst only) can perform HTTP requests to a server, in the form of a GET, PUT, POST or DELETE. A REST API needs to be developed on the server in order to accept and respond to HTTP requests from devices. There is no option for asynchronous messaging.

LUT/ODR messages over TCP/IP is the recommended option for the following reasons:

  • Performance:
    • Speed: Communication over raw TCP/IP messages will always be processed quicker than over HTTP, since HTTP is an extra protocol developed on top of the TCP/IP protocol.
    • Data Volumes: message request over HTTP will need to wrapped in either JSON or XML, thus adding considerable amount of metadata to the message packets. LUT/ODR message requests over TCP/IP contain virtually no metadata resulting in only the pure business data to be transferred between the voice device and server. Therefore using LUT and ODR messages over HTTP requests results in a fraction of the data traffic on the network.
  • Asynchronous Messaging: as previously mentioned, Vocollect Voice devices have a built in mechanism for queueing ODR messages, which are only sent to the server when a network connection is available. HTTP requests in contrast will need to be synchronously all the time, therefore requiring perfect wireless network coverage at all times.
  • Compatibility: HTTP requests are not possible when developing Vocollect Task applications running on Voice Client, they are only compatible with Voice Applications running on Voice Catalyst.
  • Development Effort: Vocollect's Voice Artisan IDE provides a Vocollect supported and maintained SDK for generating and performing LUT and ODR requests, while 3rd party libraries are required to perform HTTP requests. Furthermore, future compatibility of these 3rd party libraries with Voice Catalyst/Voice Client is therefore not guaranteed. Therefore from a voice application development perspective, it is a quicker and shorter development effort to perform LUT and ODR requests as opposed to HTTP requests.

Pigeon Voice Server provides an out-of-the-box socket server and REST API for handling LUT and ODR requests as well as HTTP requests. This allows server-side integration engineers to focus on the business logic rather than the complexities of developing a socket server and/or REST API i.e. Pigeon Voice agents (plugins) can be developed without any prior knowledge of sockets and REST web services.