Mobile/Custom App Integration
In Store Application
Many organisations supply their staff with devices, both mobile and desktop. In some cases, it makes sense to expose some of our functionality inside other applications just for the sake of simplicity. An example could be to combine an application for consumers with the ability to book an appointment or queue virtually. Or it makes sense to integrate calling buttons for the system into a cash-register/EPOS terminal GUI, just to avoid staff having to switch applications.
On a more technical level the flow is as follows:
The visitor initiates a virtual ticket view in the client's mobile app. The app would integrate with Orchestra over HTTPS through an API-gateway (not shown in the flow as it just acts like a proxy and security gateway) towards the Orchestra Queue Agent. Through this channel all information can be received for a specific branch.
The mobile app can collect queue meta data, such as expected number of persons in queue right now through REST calls over HTTPS. The request and response formats are always JSON if there is a payload.
Example Code
Get Wait Info
Request URI:
https://xxx.xxx.xxx/MobileTicket/branches/2/services/wait-info
Response:
[
{
"serviceId": 4,
"serviceName": "Kitchen planning",
"description": null,
"customersWaitingInDefaultQueue": 4,
"waitingTimeInDefaultQueue": 1211
}
]
Issue a Ticket
Request:
https://xxx.xxx.xxx/MobileTicket/services/4/branches/2/ticket/issue
Response:
{
"clientId": "QCXH-IPFH-AYKS-HOTP-GBSF-ZDZF-DAZY",
"serviceId": 4,
"branchId": 2,
"queueId": 5,
"ticketNumber": "A0603",
"visitId": 147,
"checksum": "421883655"
}
Poll Visit Status
Request:
https://xxx.xxx.xxx/MobileTicket/MyVisit/CurrentStatus/branches/2/visits/147?checksum=421883655
Response:
{
"queueSize": 1,
"appointmentTime": null,
"waitingTime": 4,
"ticketId": "A0603",
"totalWaitingTime": null,
"queueId": 5,
"appointmentId": null,
"visitId": 147,
"currentStatus": "IN_QUEUE",
"queueName": "Default Queue 2",
"currentServiceName": "Video call",
"staffFirstName": null,
"staffLastName": null,
"servicePointLogicId": null,
"servicePointName": null,
"position": 1
}