Accepting payments and sending invoices
Sending order updates
Sample Messenger store assistant
Intents and Entities
Building Dialogflow agent and connecting to Activechat
Sending user input to NLP engine
Triggering bot skills by intents and events
Working with entities
NLP best practices
Designing great conversational experiences is hard. You have to consider thousands of things, and managing conversations takes a lot of efforts. Simple bots are easy, but very limited in what they can do. As soon as you start adding more functions, the flow of your bot can quickly become unmanageable.
So, before getting to actual bot development, let’s recap some best practices for conversational design. Some of those I’ve already outlined in a blog post on “Why most chatbots suck and how to build bots that bring value™” which I highly encourage you to check.
Our core concept is “LEGO for chatbots”. What we mean here is something as easy and versatile as LEGO, applied to a complex process of chatbot development,
To achieve this, we encourage you to split complex bots into so-called skills. Each skill is a series of bot actions that is intended to achieve certain goal. Here are some common examples of skills:
Next, you build each skill from blocks that we provide in the platform. Examples of blocks are:
Skills are triggered by events, another core concept of our Visual Bot Builder, and almost anything can be an event in Activechat. Here are some examples of events:
This mimics the natural conversation flow – when talking, people tend to react to various events happening in real time, and update their conversation accordingly. There are two blocks in Activechat to work with events – one is SEND (this is throwing an event) and another is CATCH (this one is listening to specific events and launches connected blocks when event is triggered). This allows you to send events when you need it – for example, to start one skill in the middle of another.
Please note that every skill in your bot should start with CATCH block – it is added automatically when you create new skill, and will be triggered by event with the same name.
And then come checkpoints. Checkpoints are great to track your funnels – both for individual skills and for bots. Checkpoints are also useful when you have one skill triggered in the middle of another. We’ll get back to checkpoints quite soon, in the “Natural language understanding” article.
In the example above you have a simple bot made of two skills. Skill ABC is triggered with “START” event – this is a system event which is being triggered every time a user starts communicating to your bot (presses “Get started” button in Facebook Messenger or runs Alexa skill for the first time, for example).
Next, block 1 in skill ABC us checking some conditions and gives control either to block 2 or block 3 (these can be TEXT block to send a message to your user). Immediately after these blocks checkpoints ABC.1 or ABC.2 are triggered (we’ll get back to these in a moment), and if the user was in block 3 branch, block 4 will do it’s job. At the end of this conversation brach there’s a SEND block to send “XYZ” event, and that’s all for that skill.
But once “XYZ” event was send from ABC skill, it will trigger CATCH block in skill XYZ, and this skill will start running, sending blocks 1 and 2 to the bot user and then triggering XYZ.1 checkpoint.
Why do you need checkpoints? Well, first of all it’s a great way to track your funnels – you can set checkpoints to a certain steps in your communication process and then see where the users are falling off.
Checkpoint 1 can be “user starts communicating with the bot”, checkpoint 2 will be “user added some items to his shopping cart” and checkpoint 3 – “user made a checkout”.
But what’s even great about checkpoints is that they let you get back to the exact step in your complex skill A if another skill B was triggered before the end of A. Common example – skill A is for making restaurant reservations, and in the middle of it user says something like “What’s your schedule on Monday?” and that triggers completely different skill through NLP engine. We’ll be discussing this in more detail in the Natural Language part of our advanced manual.