Position is one of the base type which we are using in Queue system. It includes dates, labels, language and more information that can be used. General (or walk in or A-type) tickets are first level of implementation, Bookings using the same interface but also have bookings
property in body.
Schema:
id - internal ticket identifier
location - queue display name (store, department and others info)
type - ticket type, possible values: anonymous (walk-in ticket), booking (pre-booking), manual (tickets issued by staff)
priority - internal value
locale - customer preferred language (en, ar, sv)
registrationData - an optional object, provides information which customer specified during registration flow. For phone number key is fixed:
phone
. Format for each value is{key: {value: value}}
notification - customer contact information
type - type of notifications that customer subscribed to (phoneNumber or email)
settings.from - not relevant/internal use
settings.to - customer phone number
settings?.recipient - customer email (in case of email or phone notifications)
status -
'notifiedToApproach' - ticket is called to enter the location
'notifiedToLeaveSoon' - we sent sms with “It is your turn to leave soon” content
‘notifiedToLeave' - we sent a message with “It’s time to leave“ content
'remindedAboutBooking' - used for curbside pickup only. A reminder for curbisde appointment
'notifiedAboutBooking' - used for curbside pickup only. We sent at appointment time
'notifiedToReschedule' - used for curbside pickup only. Send sms if timeslot for pickup is missed.
booking
start - timeslot start in case of bookings, local timezone
end - timeslot end in case of bookings, local timezone
appointment
displayName - display name for the manager like
"Alexey Khorev"
eventId - id in outlook calendar for the event
managerEmail - email for the manager
managerId - id from AD database
virtualAppointment
- keep information if it’s a virtual appointment or not. OptionalisEnabled
- shows if it’s a virtual appointment or not (true \ false). In case of false all other fields in virtualAppointment are omitted.eventId
- event id specified in MS Graph api. Default user for the organisation is associated with this event.url
- link to ms teams call for joiningmanagerId
- manager id from ADmanagerEmail
- manager email (if not specified, default manager for organisation will be used)
servedBy - info about the person who actually served the ticket. The point of truth in case of differences
id - id from Ombori database
email - person’s email, should be used for third parties for identification. Should be used as an identifier for third parties
firstName - name for the person, could be omitted
lastName - person’s lastName, could be omitted
displayName - full name for the person, could be omitted
status - ticket status, possible values: draft (pre-booking created but not active), pending (ticket is inside queue), notified (ticket called out by staff), fulfilled (ticket checked in by the staff), completed (ticket has been served), rejected (ticket was cancelled either by customer or staff)
extraStatus:
goToEntrance
- ticket should approach the entrance (“yellow state” on the screen for ticket)rejectedByCustomer
- is used for understanding if ticket was rejected by customer or not
station information
id - internal id
label - label which is shown for customers and in admin
label - assigned ticket number (A1, B2 and such)
queue - queue identifier, can be used to correlate data
createdAt - ticket creation time, ISO string
fulfilledAt - time when customer checked-in datetime, ISO string
calledAt - customer called next (by pressing call next of selecting the ticket from the list of pending tickets), ISO string
completedAt - time when ticket was moved to completed state (after ticket was fulfilled, the terminate state), ISO string
rejectedAt - time when ticket was rejected, ISO string
bookingReminderAt - if configured, when the booking reminder will be sent to customer, ISO string
activatedAt - time when ticket was activated (order pickup, the terminate state), ISO string
fulfilledBy - who actually checked the ticket in
servedById - who actually served the ticket (id in Active Directory database on in Ombori database, depends on setup)
QRCodeCheckInPositionId - value of the QR code to render to allow check-in by the staff
Changelog 21-04-2021:
Added servedBy property specification
Added booking.appointment property specification
Changelog 22-02-2021:
Added station property specification
Changelog 28-01-2021:
Added calledAt, completedAt, rejectedAt
Example:
{ "id": "_id_", "location": null, "type": "booking", "priority": 100, "locale": "en", "notification": { "type": "phoneNumber", "settings": { "from": "", "to": "+phoneNumber", "recipient": "test@email.com" }, }, "registrationData": { "phone": { value: "+48888888888" }, }, "booking": { "start": "yyyy-MM-dd HH:mm", // with respect to timezone "end": "yyyy-MM-dd HH:mm", // with respect to timezone "appointment": { displayName: "Alexey Khorev" eventId: "****" managerEmail: "manager@ombori.com" managerId: "f31c6a56-........" }, "virtualAppointment": { eventId: "AAMkADExYWZmYjI4LTMxMjIt......=" isEnabled: true managerEmail: "virtual-booking@some-domen.com" managerId: "9cd376b6-......." url: "https://teams.microsoft.com/l/meetup-join/19....." } }, "servedBy": { id: "fc13d10c-.......", email: "manager@ombori.com", firstName: "", lastName: "" }, "station": { "id": "1234_id", "label": "A" }, "status": "draft", "label": "", // label will generated when time comes "queue": "_queue_id_", "createdAt": "2020-05-26T08:47:37.1700000Z", "calledAt": "2020-05-26T15:30:37.1700000Z", "fulfilledAt": "2020-05-26T17:15:59.6100000Z", "completedAt": "2020-05-26T17:16:59.6100000Z", "bookingReminderAt": null, "QRCodeCheckInPositionId": "{"type":"check-in-position","positionId":"ce4a66df-51ff-47af-bf5e-4e26f82d266b"}" }