Digital Assistants beyond flights and restaurant bookings…
Automated agents, chatbots and AI seem like a good idea but we’ve not yet experienced a solution which feels integrated into an organisation’s online services. We’re seeing the likes of Facebook M, Google Allo and suspect Apple’s Siri to be featured in WWDC 2016. These are all oriented around personal logistics and are likely to remain limited to travel, eating and shopping. So how about other services out there?
Springing out of our article about Messaging + Workflow we embarked on the journey of setting up one of our own, to explore the possibilities for other industries.
Off to roads unknown we went for a Friday and Saturday hackathon. Kicking off within our Leeds office we set about discovering and framing the problem. Introducing our two Portuguese engineers to sausage baps and brown sauce off we went…
What platforms are out there?
The starting point for our challenge is to find messaging platforms which can support an automated service agent. Within 10 minutes we have a list of 18:
|Facebook M||Google Allo||Operator|
Suffice to say we believe that this list provides an emerging global ecosystem. Our effort was to find out how to build into it and get a prototype up so we can start to run experiments.
What features do the platforms make available for us to start building on top of them with?
Dividing out each platform amongst the team we dug into the API docs and hacked the platforms to see what features they made available to platform developers. 10 of us hammering Google Sheets even Protobuff didn’t keep up but we got this list of 18 candidate messaging platforms within a few minutes.
>> DOWNLOAD COMPARISON : (Download the full comparison list)
The digging threw up some unexpected candidates advancing their product - notably Microsoft linked Skype and Chatter have a fully fledged framework. Kik is a dedicated platform with some interesting technology.
We picked Facebook Messenger and Wit.ai as the natural language processing component.
Linking the stack together and plugging the gaps
We knew we wanted our service to work across multiple platforms, be capable of replying to questions and also – critically to our objectives, instantiate rich UI components in the conversation. We wanted Services Linked In Conversation, we wanted a SLIC UI ©.
Our first finding was that there was a difference between the loose conversation which happened before the service was initiated. We felt this fed into how we could approach our services linked into conversations (SLIC UI©).
Quickly we hit across our first discovery and that was a clear difference between the loose probabilistic conversation and the structured deterministic service. As a consultancy used to working with highly structured user flows and concrete end to end tests the amount of branching and permutations started to become clear.
Being a technology company we moved into designing the architecture. As we were connecting to multiple messaging platforms we knew we’d need a message bus of sorts, to make sense of the messages we needed a Natural Language package and then so for us the interesting bit was how we build these services into the platform - we called these Service Agents.
Using wit.ai to arrive at an intent to launch a service
In order to move from the loose conversation into a stricter service worked the concepts of intents and context became important as conversations are probabilistic. As there may be a number of ways to achieve the same intent and a number of ways to answer it depending on the context. Therefore planning a probabilistic service flies in the face of service design principles - we needed to use a training platform to improve the probabilities of interpreting the correct intent. The screen below shows Wit.ai handling this training of conversations:
Here enters Wit.ai, a parser acquired by Facebook in January 2015, which handled the permutations by fighting fire with fire. Wit’s natural language processing model is trained and therefore has tolerance for quite a wide degree of variation so simplifying the designing of the platform – in theory anyway.
Ultimately we have moved away from Wit.ai and onto what we find as a more mature platform - Api.ai. Here is a screenshot of their platform - which looks pretty similar just with a few more controls:
Clarity: Conversations have intents and services have actions
By framing of messages into Conversations and Services, these are two types of interactions a user has in a conversation, this enables us to consider these as two classes of message.
Subsequently we have two classes of agents/chatbots – those which are driven by intents (Conversations) and those which are driven by actions (Services).
Conversations have probabilistic intents and services have deterministic actions. Phew we thought we have got somewhere now. The next challenge for us is how to switch between the two...
For this we knew we needed to create some technology and fortunately for our hackathon it was going to be interesting ;-)
Building prototypes in 4 weeks with the chatbot stack...
At Byng we’ve developed a rolling chatbot stack all deployed into Docker containers for fast rollout. This has allowed us to run 4 week prototyping sessions with our clients and clients of design partners to investigate how their services can be accessed via these messaging platforms.If you’d like to see more about the stack or see demos then drop us a line and we’re love to come and chat(bot) ;-)