There is nothing easier than building a graphical user interface designed to set up a meeting online. All you need to do is show the user a calendar of the near future, with the available time slots marked for him to choose from. A piece of cake.
The story becomes very different once you take away the screen. More and more online services offer a voice-based interface, meaning the user can talk to the system (to a Chatbot) and perform his tasks while driving, cooking, or simply not in front of a screen. A voice conversation is the easiest, most conventional way to accomplish simple tasks, definitely one like setting up an appointment.
So, how easy is it to design a bot (or a Conversational Component) that has access to the calendar on one hand, and speaks to the user who wishes to schedule a meeting – a scheduler? The beginning is trivial: “Do you want to set up a meeting?” but from that moment on, the possibilities become endless. The first dilemma is this: Should the bot offer available times, or should he let the user offer a date and time?
Some more gread reading
If we let the user offer a time-slot and it is available, we are home free. But life is usually more complicated. Let’s say the slot is taken. What now? Should we ask the user to offer another, and keep going until he happens to hit an empty slot? Or maybe offer him the vacant slot closest to his denied request?
When trying to schedule a meeting, users don’t usually have one precise date and time in mind. They are usually flexible to an extent. So, If we decide to start with asking the user when he wants to meet, he can respond in a variety of ways: He can say “soon”, “asap”, “today”, “tomorrow”, “next week”, “early January” or “only in the mornings”. Letting the user decide which terminology to use is likely to end up in misunderstanding.
We could, of course, preempt the issue and offer the user one or more vacant time slots up front. Those would typically be the closest time slots, assuming most users would want to meet as soon as possible. But similar problems quickly arise, if the user happens to reject the suggested options. At this point, it is reasonable to assume the user will offer an alternative, which throws the ball right back to the previous problem, of completely open-ended input options.
A gentle balacing act
Thousands of testing and operational sessions of CoCo’s scheduling component had helped me and my team to find answers to all those questions. The conversation flow of CoCo Scheduler is a combination and a balancing act between the above mentioned possibilities. Here is how we did it:
The bot starts by asking the user a carefully phrased question: “Do you want the meeting ASAP, or do you have a specific date in mind?” This wording leads the user to decide on the first dilemma: Who suggests first? If the user says “ASAP” (or equivalent), we proceed to offer the closest available date. For this date, we suggest UP TO 4 available slots on that day. (less if there are less than 4, but no more than 4 options).
If the user comes up with a particular date and time, and the requested time is taken, the bot will offer (up to) 4 available slots on the requested day. The reason for always offering no more than 4 time options, and only for the same day, is that people find it hard to remember more options in their head while having such a conversation. If the user rejects all 4 times, and there ARE more available slots on the same day, the bot will offer them next.
A matter of pronunciation
Conversation flow is only one of the challenges when designing a vocal scheduler. There are many ways to pronounce dates, and just as many variants for times. Dates can by European or American, month first or day first. The year can come before or after. The months can be named or numbered, and the date can be with or without the “th” suffix. Times can also be American style (2AM, 2PM) or European (2:00, 14:00). Minutes can be explicit (30 minutes) or not (half an hour). Believe me – it’s complicated.
The answer to the question posed in the title is “YES”. However, one important lesson we learned throughout the process of perfecting this component is this: The value of the feedback loop. For any Chatbot, as for any Component, there is a crucial stage of live testing, monitoring the logs carefully, and immediately handling the exception discovered in the logs, deploy the fix and keep watching. CoCo Scheduler underwent 225(!!) iterations of fixing bugs and handling exceptions discovered throughout the feedback loop period. If you need to schedule an appointment, and try our scheduler, give us a call!