Skip to main content

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.

Mobile App Integration

On a more technical level the flow is as follows:

Mobile App Sequence

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
}