Design framework
There are numerous types of chatbots which you can build and deploy which meet endless use cases and scenarios across all businesses. Chatbots are highly customizable but all follow a similar logic depending on the route you go down when designing and building.
All chatbots follow a principle design logic, whereby there are certain aspects and components which are present and used in all chatbots, even though they can be set up and configured differently.
Then it depends on the use case and type of chatbot you need to build. Types of chatbots can vary wildly, for example, some may just need to act as a simple FAQ chatbot, whereas other much more intelligent chatbots may be integrated with 3rd party databases and use authentication for handling sensitive data.
All new chatbots are created from the Answers dashboard, where you can also see a list of existing chatbots.
Keywords
Keywords are crucial words used to recognize the further path of the dialog. Through keywords, you are able to configure and branch the dialog depending on different queries or responses that your end users might have.
Keywords are added in the Keywords tab in the chatbot editor, where you can add as many as required. You need to create keywords before setting up dialogs to be able to select them.
Synonyms
Synonyms allow you to specify the words which should be considered and treated the same way as the keyword. This means you don't have to add every single similar word as a keyword, but rather have the system treat them as their parent keyword.
You can even add emojis as synonyms
Attributes
Attributes act as your standard and customized data objects to capture and store information about the end user conversing with your chatbot. This ultimately provides context to the conversation and can be set to apply at local or global level.
For intent-driven chatbots, when the chatbot is determining an intent, there are several attributes which need to be acquired for its successful resolution.
All the attributes used in a dialog with the end user constitute the context. The context can be either global or specific to the dialog (local) and will help guide the conversation in the right direction.
Attributes are added in the Attributes tab in the chatbot editor, where you can add as many as required. You need to create attributes before setting up dialogs to be able to select them. There are multiple types of attributes which are both standard and custom.
Attribute names cannot contain spaces. Use a joining convention, for example, an underscore, for longer attribute names. Attribute names must also start with a letter or underscore.
Set the attribute type. Types can be standard (fixed) or custom and can have further sub-types. Continue with this section for more information on attribute types.
The attribute scope defines whether the attribute is specific to a single dialog, or if it should be stored and used across the entire chat, i.e. if it should be passed over to other dialogs. Set to local to store attribute values at dialog level, or global to store at chatbot level.
Set attributes visible to agents to display end user inputs to support center agents when chats are passed over to humans. This setting is only relevant to you when you are using either Infobip Conversations or integrate with an external contact center solution.
Use the Sensitive Value option for attributes containing sensitive data. When enabled, data saved to the attribute is encrypted when stored to the database. This is important when sharing and sending attribute values for authentication purposes such as usernames, passwords, etc.
Standard Attributes
Standard attributes can have one of the following data types:
- Text
- Number: Numbers written in digits
- Phone number
- Boolean
- Date: MO attribute type. The date is stored in the format YYYY-MM-DD. If end users send the date in a different format, it is treated as an invalid input.
- Send location
- URL
- List
- JSON
- XML
- XML list
- Audio
- Contacts
- Document
- Image
- Receive location
- Video
- Message: MO attribute type. Use this attribute type to receive files when you do not know the file type that the end user may send. Example: The end user may send an image or a document. Refer to this example to understand how to use an attribute of type 'Message' to receive a file, and to use the Code element to identify the file type.
- WhatsApp order response (WhatsApp only): Contains the order details when you use the Single Product or Multi-product elements.
If you use NER attributes, you can create custom attribute types.
Fixed Attributes
Fixed attributes are standard data objects which are already part of every chatbot as basic information about end users. They are not selectable in the list of attributes type and do not need to be created separately as they are already available when building dialogs.
- phoneNumber
- lastReceivedMessage
- lastReceivedTextMessage
- endUserDestination
- authenticated
- displayName (WhatsApp and Google's Business Messages only)
- conversationId
- gbmEntryLocation (Google's Business Messages only)
- gbmNearPlaceID (Google's Business Messages only)
- whatsAppIdentityAcknowledged (WhatsApp only)
- whatsAppIdentityHash (WhatsApp only)
- whatsAppIdentityCreated (WhatsApp only)
phoneNumber is for channels that use MSISDN as destination and at the moment is enabled for the following channels: WhatsApp, SMS, Viber, and RCS. The system will automatically create it as a Number attribute with Global scope and capture the phone number the user sent through
Use lastReceivedMessage when you need to (re)start the conversation from a specific moment. This works with all MO attribute values received except text messages. For text messages use lastReceivedTextMessage.
You can also use these attributes if you expect your end users to start the conversation with a particular message, for example when you offer a discount or a benefit if the end user contacts you with a pre-set message.
endUserDestination is where the channel’s identification of the end user is saved. The way each channel identifies the end user as that particular user, for example, Facebook ID of the user.
authenticated is a Boolean which will either be set to true or false depending on the user's authenticated status. Authentication can be configured to expire so even when set to true, it can revert back to false.
displayName is usually the display name that users set for themselves in the app they're using. Display names are what other people, who don’t have their phone number saved see.
conversationId is the ID that connects Answers with either Conversations or an external contact center solution. This attribute makes it easier to keep track of the chatbot conversation that is transferred from the bot to the agent.
gbmEntryLocation is where a user's location is stored according to their conversation-initiated Google location. Answers automatically captures this information from Google and stores it against this attribute for each specific session. This allows your chatbots to identify the nearest retail/commercial point a user is inquiring about.
gbmNearPlaceID identifies a location near the end user which they are likely inquiring about. Capturing this information allows you to set up specific dialog routing depending on end user locations.
whatsAppIdentityAcknowledged: Used as part of the WhatsApp identity change feature. This attribute indicates whether the end user's identity is correct. The value can be TRUE or FALSE.
whatsAppIdentityHash: Used as part of the WhatsApp identity change feature. This attribute contains the unique code of the identity check for a specific end user.
whatsAppIdentityCreated: Used as part of the WhatsApp identity change feature. This attribute provides the timestamp of when the identity change data was created.
Mobile originated Attributes
Mobile originated messages, or MO, are messages that came from end users' mobile devices. Use MO attributes in cases where you are expecting end users to send you a message or attachment from their mobile device, for example a file.
Message | Video | Location | Image | Document | Contact | Audio | |
Apple Messages for Business | ✓ | ||||||
Google's Business Messages | ✓ | ||||||
Instagram Messaging | ✓ | ||||||
LINE | ✓ | ||||||
Live Chat | ✓ | ||||||
Messenger | ✓ | ||||||
RCS | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
SMS | ✓ | ||||||
Telegram | ✓ | ✓ | ✓ | ✓ | ✓ | ||
Twitter direct messages | |||||||
Viber Business Messages | ✓ | ||||||
Viber Bots | ✓ | ||||||
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Named Entity Recognition Attributes
Use NER (Named entity recognition) attributes to extract information when end users respond with unstructured text. NER attributes are part of machine learning-enabled chatbots. Use these attributes in combination with intents.
Type: NER attributes can have one of the following standard data types:
- Number - Numbers written in digits. Example: Use a Number type NER attribute to extract customer number
- Date - Date in the format YYYY-MM-DD. If end users send the date in a different format, Answers converts the date to the format YYYY-MM-DD. Example: If end users send the date as '1st March, 2023', '01/03/2023', or '1.3.2023', the date is stored as 2023-3-1. However, if end users send the date in Month/Day/Year format, the date is stored incorrectly.
- Currency - Numeric amounts and currency names/codes/symbols
- Day of week - Text for days of the week in English
- Country - Data set from GeoNames
- City - Data set from GeoNames
- (Custom list) - Capture custom data using custom attributes
Subtype: NER attributes can have one of the following subtypes:
- Source
- Target
- None
Subtypes enable you to capture 'to' and 'from' values in responses from end users. Example: If your chatbot is for booking flights, use two City type NER attributes with Source and Target subtypes to capture the 'from' and 'to' cities.
Subtype is optional. But, if you want to assign two NER attributes of the same type to an intent, you must define the subtype for each attribute. The subtype for each attribute must be different.
If you do not add the subtype, you can add only one attribute of a specific type to an intent.
Example: For Intent_1, you can add attributes, Location_from, Location_to, and Location, of the type City. Define the subtypes as follows:
- Location_from - Source subtype
- Location_to - Target subtype
- Location - None subtype
So, the attributes are recognized as follows:
End user message | Location from | Location to | Location |
---|---|---|---|
I want to travel from London to Zagreb | London | Zagreb | empty |
I want to travel to Zagreb | empty | Zagreb | empty |
I want to visit Zagreb | empty | empty | Zagreb |
Note
Subtype is available for Country, City, and Currency attribute types.
List: You can select whether the NER attribute is for a single value or a list. If you define the attribute as a single value, the attribute stores the first relevant value from the end user's message. If you define the attribute as a list, the attribute stores all relevant values from the end user's message.
Example: You want to store the name of the city in the city attribute. The end user message is "I want to visit London, Chennai, and Zagreb". If you define the city attribute as a single value, it stores the first city in the end user's response, that is, London. If you define the city attribute as a list, it stores all the cities in the end user's response, that is, London, Chennai, and Zagreb.
To define the attribute as a list, select List. Otherwise, the attribute is set as a single value.
If you define the attribute as a list, you can use other Answers elements to obtain specific information. You can use the Conditions element to identify the number of values in the list attribute. If the number of values is 1, you can use that value for the next steps. If the number of values is more than 1, you can use the Quick Reply or Carousel element to ask the user to provide the specific value from of the list of values.
Example: You want to obtain the name of the city from the end user. The end user message is "I want to visit London, Chennai, and Zagreb".
- Define the city attribute as a list. city stores all the cities in the end user's response. So, city contains London, Chennai, and Zagreb.
- Define a Conditions element to identify the number of values in the city attribute. The number of values is 3.
- Use a Quick Reply or Carousel element to ask the end user the specific city from the 3 values.
"In which of these cities you would like to start your trip? London, Chennai, Zagreb" - End user chooses Zagreb.
- Use Attribute element validation to make sure that only 1 value, that is, Zagreb, is now stored in the city attribute.
Validation
The Answers solution has been developed to handle multiple means of validation and apply changes. Make sure to check out the Design a chatbot section for all chatbot building guidelines.
The following changes will apply when incorrectly inputting attribute names:
- Attribute names using dashes will be converted to use underscores - e.g. COVID-19 > COVID_19
- Names cannot contain spaces, use an underscore for multiple word naming - e.g. flight number > flight_number
- Non-alphanumeric characters are not supported and are removed - e.g. doctor's address > doctors_address
- Names cannot start with a numeric value, use a letter or an underscore - e.g. 1daypromo > _1daypromo
- Caution if you are using circumflexes in naming as tags as they will be removed -
> div_classwebkit
Validation works differently when attributes are used in conditions depending on the rules set:
Attribute type |
Conditioning |
Validation |
Text |
is | is not | contains | starts with | ends with | is null | is not null |
Can contain letters/numbers/space |
Phone Number |
is | is not | contains | starts with | ends with | is null | is not null |
Contains only numbers |
Boolean |
is | is not | is null | is not null |
True, False |
Date |
is equal to | is not equal to | is before | is before or equal to | is after | is after or equal to | is null | is not null |
YYYY-MM-DD, only numbers |
Location |
is equal to | is not equal to | is null | is not null |
|
URL |
is equal to | is not equal to | is null | is not null |
Validated with URL validator |
|
is | is not | contains | starts with | ends with | is null | is not null |
Validated with email address validator |
MO attribute type |
Conditioning |
Validation |
MO Audio |
is null | is not null |
Accepts different audio files depending on the channel |
MO Contacts |
is null | is not null |
Message can include: address, name, birthday, phone, organization, and URL |
MO Document |
is null | is not null |
Accepts different formats depending on the channel |
MO Image |
is null | is not null |
Accepts different image formats depending on the channel |
MO Location |
is null | is not null |
Needs to come in the form of location’s latitude and longitude |
MO Video |
is null | is not null |
Accepts different video formats depending on the channel |
NER attribute type |
Conditioning |
Validation |
Number |
is equal to | is not equal to | is before | is before or equal to | is after | is after or equal to | is null | is not null |
Numbers written with digits |
Date |
is equal to | is not equal to | is before | is before or equal to | is after | is after or equal to | is null | is not null |
Checks if a word in the text is a date element (day, year, or month) |
Currency |
is equal to | is not equal to | is null | is not null |
Numeric amounts and currency names/codes/symbols |
Day of the week |
is equal to | is not equal to | is null | is not null |
Textual input for days of the week in English |
Country |
is equal to | is not equal to | is null | is not null |
Data set from GeoNames |
City |
is equal to | is not equal to | is null | is not null |
Data set from GeoNames |
Intents
Considering that a good chatbot contains a large set of data in order to better recognize the end-user intent, there should be plenty of training phrases for each intent. It is helpful to prepare a .csv or a .txt file that contains, for example, phrases taken from your customer service and organized per intent as that would be a faster way of training the chatbot (importing such a file into the system versus adding manually phrase by phrase).
If creating intents in the system, go to the Intents tab and to add a new intent to the chatbot, click the ADD INTENT button:
When the intent window opens, enter intent name by writing over the New intent phrase, or clicking the pencil icon
Each new intent has two configuration options:
- Attributes – only NER-enabled attributes can be selected here (if you don’t have any created, the list will be empty)
- Training phrases – you need a minimum of 10 phrases (important words in intents are not counted as training phrases)
Infobip recommends that you add at least 100 training phrases to an intent. For the best performance, add 400 training phrases. That would make your bot much smarter and enable it to understand the intents more easily.
Click on the +Add attribute action if you want to add attributes for the intent you are creating and select one of the available NER-enabled attributes you have in Answers.
The following conditions apply when manually importing intents using the Import file option:
- Column structure cannot be modified
- Cells with multiple values need to be separated by semicolons
- Important words and synonyms need to be on separate lines
- Important words can contain multiple words separated by commas
- The file must contain a header
- Files can only be .csv or .txt format
The next part of intent configuration is to add training phrases to the intent. Click on the line saying Enter user expression and start adding phrases.
Click the action +Add training phrase to add a new phrase to your intent.
Training phrases should contain important words and whole phrases/sentences that might come up as part of the conversation with the user.
The X icon on the right side of each row will delete the phrase, while clicking the trash bin on the right side of the intent name will delete the whole intent.
You can add all synonyms for your important words so that those words will also be treated the same if a user uses a variation of the same intent. This allows you to have a wider field of vocabulary covered without having to create lots of separate important words or training phrases.
For successful validation of intents, the following criteria must be met when it comes to important words:
- Important words can appear in only one intent (cannot appear as important words in other intents)
- Each of the important words you added to the intent must appear in at least two training phrases (more than two is preferable)
Can you help me with booking a flight?
Is it possible to make a flight booking?
Validation will fail if you create one intent containing only important words and another intent containing both important words and phrases. This will become apparent once you validate your chatbot – if the validation fails, check that you have configured your intents properly (in the same manner).
The validation will pass if you have a minimum of 10 training phrases per intent (keywords are not included in that number). Infobip recommends that you add at least 100 training phrases to each intent. For the best performance, add 400 training phrases. Make sure that the training dataset for important intents is larger than that of less important intents. Example: For a bank, the Mortgage intent is more important than the Welcome and Goodbye intents.
Validation will fail if you create one intent containing only important words and another intent containing both important words and phrases. This will become apparent once you validate your chatbot – if the validation fails, check that you have configured your intents properly (in the same manner).
This is a short reference guide to help you check whether your intents will pass validation.
- 10 intent phrases are the minimum
- Single words in phrases do not equal important words (important words appear in phrases)
- If using important words in intents, they do not count as part of those 10 phrases (meaning you need important words + 10 phrases)
- Training phrases (whether only one word or actual phrases) should not appear in different intents
- Important words need to appear in at least two training phrases
- Stop words (words that are filtered out in natural language processing) will be dismissed from training phrases so if you have a phrase containing an important word plus stop words, that phrase will not be counted as a training phrase containing an important word
STOP words for English: a, an, and, are, be, do, have, I, in, is, me, of, that, the, to, you.
STOP words for Spanish: de, la, que, el, en, y, a, los, se, del, las, un, por, con, una, su, para, es, al, lo, como, más, o, pero, sus, le, ha, me, si, son, mi, yo, nos, eso
STOP words for Croatian: a, ali, cu, da, i, ili, je, kako, li, me, mi, mogu, na, nego, ni, niti, no, pa, s, sa, sam, se, su, te, to, vec
STOP words for Arabic:
أن, عن, كيفية, يوجد, اود, إلى, في, أنت, هو, مع, هي, شو, هم, على, كيف, ما, أنا, هذا, هل, أو, لو, أستطيع, سمحت, التي, بدي, إذا, و, ذلك, أعلم, فقط, به, بها, بهذا, عليها, عليه, بعض, اريد, لكن, هنا
Stop words for Portuguese (accents are stripped from words): com, de, tu, tua, nossos, lo, aos, tras, num, sob, do, ate, isto, das, um, lhes, me, ela, entre, ele, nas, suas, desde, teu, em, numa, esse, eu, este, sobre, as, essas, na, esta, elas, esses, isso, eles, sua, que, no, seus, tuas, uma, dos, voces, se, por, nos, essa, nossas, para, sem, vos, contra, sao, a, seu, nossa, os, e, lhe, voce, nosso, o, te, estes, ante, teus, uns, umas, numas, perante, da, estas, apos, nuns
For example, if 'ticket' is your important word and you use it in a sentence ‘Do you have tickets?’ that sentence will not be counted as a training phrase containing important word because when you remove the stop words (do, you, and have), what you have left is only the important word (=tickets).
If you have decided to create your intent files outside of Answers, use one of these two file formats:
- .csv or
- .txt
For example, you can use here the history of conversations your agents had with your end users and extract from those conversations mostly used phrases belonging to a particular intent.
To import the file, click the IMPORT button in the main intent frame and select the locally stored file.
Once the file is selected, it will be displayed and now confirm the import by clicking the IMPORT button:
The file needs to follow certain rules.
- It has to contain two columns, first one with phrases, the second one containing the intent name to which the phrase belongs.
- The intent name needs to be separated from the phrase by a delimiter - semicolon.
- The file shouldn’t contain a header.
- The file can only be in a .csv or a .txt format.
You can save the values as a .txt file as shown in the example below:
In cases where the import file has a wrong extension, or you mistype the delimiter, Answers will let you know what went wrong.
Situation where there is a wrong extension:
Or, a wrong delimiter:
When you want to export intents, select the checkboxes in front of the intents you plan to export (checking the one in front of Intent title will automatically select all the intents underneath).
Once one or more intents are selected, the EXPORT and DELETE buttons appear.
EXPORT button enables you to save the intents locally as a csv file, in the predefined format that is the same as the one for import.
DELETE button deletes the selected intents but first asks you to confirm the action.
When the intent is deleted, the Answers platform notifies you it was successful.
If you have configured NER-enabled attributes in intents, they will not be exported with intents.
Dialogs
The frame containing the list of dialogs can be hidden using the arrows icon in the top right corner of the frame – hovering over it displays the tooltip.
The left frame contains the list of dialogs to which you can add a new one by clicking the +ADD DIALOG action. If you have a lot of dialogs, you can organize them logically into groups.
Note that where you click on the +ADD DIALOG action, the dialog appears under that grouping.
If you want to rename a dialog, clicking the pencil icon next to the name gives instant access to the dialog name.
Clicking the three-dot menu ⁝ displays other the actions you can perform on the dialog:
- Duplicate – used to recreate the same dialog
- Delete – removes the dialog from the list
The action +ADD GROUP allows creation of new groups (of dialogs) in order to separate dialogs for better logical organization.
All group actions are available through the three-dot menu ⁝.
As groups cannot be dragged up and down, use the Move up and Move down actions if you want to rearrange them. Bear in mind that you cannot change the place of the Default group, that one will always stay on top.
To change the name of the group, use the action Edit, and to copy an existing group, use the action Duplicate.
The collapsed arrow is used to collapse the groups or when collapsed, to expand them again.
Session Expire Dialog
When you want your chatbot to notify the end users that their session is finished, use the Session Expire dialog (located at the bottom of dialogs panel).
Click the + ADD SESSION EXPIRE DIALOG and it will appear in the Default dialog group. Like the Default dialog, it has the i icon next to it.
You can drag and drop any dialog inside a group to by clicking the left side of the dialog and dropping it anywhere in the structure (the hand shows that the dialog is being moved).
Send text element is automatically added to the dialog to add a message for the end users and notify them that the session has expired (and that a new one will start if they decide to continue the conversation).
Bear in mind that you cannot configure this dialog using all chatbot builder elements – here you can only use elements that are sent to the end user.
Dialog Settings
In the central dialog panel, you can do the following:
- Select the Intent which will be the basis of the dialog
- Design the dialog between the chatbot and the end user
Assign Intent to Dialog
When you have a new dialog ready for configuration, the first building block is automatically displayed - as the whole dialog is usually based on the Intent. For the first element you can either use an existing intent or create a new one at that moment using the TRAIN link. Select an existing intent from the Intent dropdown list or use +Create new intent to create one on the fly.
If you are missing an intent on the list and decide to create it on the fly, enter the intent name and submit it by clicking the checkmark ✓.
You can decide not to use an intent only in case you are building a keyword-based chatbot. If you use NLP, intent selection is mandatory.
Templating Language
In order to facilitate the extraction of values and dynamic generation of content, we introduced a templating language – Liquid - to the Answers platform.
Liquid is a templating language with simple markup, made so that users can edit it.
Liquid code uses objects, tags, and filters in a template which is then rendered and the content is dynamically shown. Template is any message you create that contains templating language elements.
Objects
Objects are used to show content on a page. Objects and variable names are denoted by double curly braces: {{ and }}.
Types of objects: String, Number, Boolean, Nil, and Array.
More about Liquid objects.
Tags
Tags create the logic and control flow for templates. They are denoted by curly braces and percent signs: {% tag %}. Tags do not render into any visible text; you use them to assign variables and create conditions and loops in the background.
There are five different types of tags:
• Comment tags – use {% comment %} and {% endcomment %} tags to turn anything between them into a comment.
• Control flow tags – change the displayed information using programming logic: if, unless, elseif/else, case/when.
• Iteration tags – for, else, break, continue, plus additional tags for parameters (limit, offset, range, reversed), cycle, and tablerows (cols, limit, offset, range) to repeatedly run blocks of code.
• Raw tags – used to temporarily disable tag processing, {% raw %} and {% endraw %}.
• Variable tags – assign, capture, increment and decrement are used to create new variables in the templating language.
== | equals |
!= | does not equal |
> | greater than |
< | less than |
>= | greater than or equal to |
<= | less than or equal to |
or | logical or |
and | logical and |
Learn more about Liquid tags.
Filters
Filters change the output of the template language object. They are used within the object and are separated by a | (pipe) character. You can use multiple filters for one output applying them from left to right (each separated by the | character). Check the list of all available filters.
If you want to dive deeper into examples how to use templating language in Answers, check the How to section.
NOTE - All the elements that send a file (audio, image, video, and file) have the allowed maximum size of 10 MB whether you use the upload or link function. Make sure that you calculate the file size in megabyte (MB) and not in megibyte (MiB). A megabyte is calculated as a power of 10 and is 1,000,000 bytes, while a megibyte is calculated as a power of 2 and is 1,048,576 bytes. Example: Windows calculates file sizes in MiB. Some file formats are not supported in some of the browsers (like .mp3 in Internet Explorer). We recommend using Firefox or Chrome.
Now that you have created a chatbot and know the basics about dialogs, elements that are used to create them, and what are the functionalities you can use inside them, it is time to explore what elements each channel supports when it comes to creating dialogs.
Check the table below for elements and formats available on channels.
ELEMENTS | CHANNELS | ||||||||
---|---|---|---|---|---|---|---|---|---|
Viber | SMS | Line | FB Messenger | RCS | Google Business Messages | Telegram | Live Chat | ||
Send text | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Send audio |
✓ .aac, .mp3, .mp4, .amr |
X | X | X |
>✓ >.aac, .mp3, .ogg, .m4a |
✓ .mp4 |
X | X | ✓ |
Send video |
✓ .mp4 |
X | X | X | ✓ |
✓ .mp4 |
✓ | X | ✓ |
Send image |
✓ .jpg, .png |
✓ .jpg, .png |
X |
✓ .jpg, .png |
✓ .jpg, .png |
✓ .jpg, .png |
✓ .jpg, .png |
X |
✓ .jpg, .png |
Send document |
✓ .pdf, .doc, .docx, .ppt, .pptx, .xls, .xlsx, .zip |
X | X | X |
✓ .pdf, .doc, .docx, .ppt, .pptx, .xls, .xlsx, .zip, .rtf |
X |
✓ .pdf, .doc, .docx, .ppt, .pptx, .xls, .xlsx, .zip |
X |
✓ .pdf, .doc, .docx, .ppt, .pptx, .xls, .xlsx |
Send location | ✓ | ✓ | X | ✓ | ✓ | X | X |
X |
X |
Send button | X |
✓ one button |
X | X |
✓ three buttons |
X |
✓ three buttons |
X | X |
Rich card | X | X | X | X | ✓ | X | X | ✓ | X |
Carousel | X | X | X | X | ✓ | X | X | ✓ | X |
Authenticated Dialogs
With session authentification enablement, you can protect some parts of your chatbot by restricting access to some of the dialogs. These dialogs can then contain sensitive data that is not publicly available.
It works by redirecting a user to the authentification dialog where they can authenticate themselves if they reach dialogs that are restricted without a session being authenticated.
Authentication can be set up to expire after a set amount of time according to your requirement (or never expire). This means that should chat sessions lapse from the last MO message the authentication timeframe set by you (e.g. if they leave and come back 5 minutes later), then they will be required to re-authenticate themselves.
Dialogs protected with authentication are only accessible by authenticated users, thus acts a powerful security addition to your chatbots. It can also be used in conjunction with Session Expire dialogs for an additional security layer.
Example of Dialog Creation
Each dialog starts with an intent element but if you create a keyword-based chatbot, the intent can stay empty – you don’t need to select it.
Still, when creating a chatbot, it would be best if all attributes, keywords, and intents were created before you start designing dialogs.
Create as many dialogs as you have intents. When you start designing your conversations, you will be able to move the conversation from one intent to another depending on what are your end users’ intentions.
Let's create a dialog where the end user is asking about the gate for their flight.
So, after you have created a new dialog, in the first block:
- Select for which Intent are you building this dialog
Now to start the conversation from the chatbot end (the conversation is already recognized as belonging to this intent), it makes sense to ask the end user for information regarding their flight.
- Drag’n’drop the Attribute element underneath the intent block
- Enter the text the chatbot will send to the end user - asking about flight number, and, if you want, you can incorporate previously created attributes to make the message less impersonal (using variables like first_name, etc.)
As we are expecting an answer to the question for which flight the end user wants to know the gate, the following element should be Conditions.
- Click on the Conditions element and position it under the Attribute element.
Depending on how the flight numbers are classified, add enough branches to cover all flight number cases.
- To branch the Conditions element, in the right frame add all flight number conditions and configure them accordingly.
- Each Conditions element needs to have a follow-up element where you answer your end user depending which condition was met.
- The last branch in the Conditions element is the Else branch - this is where you configure what happens in the situation when the end user reply doesn't fit with any of the configured conditions
So, now that the conditions are branched properly, you can finish the conversation by adding the element with the clear information requested by the end user:
8. Add a new Send message element with the information what gate corresponds to the sent flight number under each condition branch.
9. Add a separate Send message element for the Else branch to explain that the requested information could not be gathered.
And in the case of the Else branch, you can add one more element to send the end user to a different dialog, one that deals with unresolved queries.
10. Add Go to Dialog element under the Send message element under Else branch.
Bear in mind that when you add the Conditions or Process User Input elements, the dialog has only space for two more elements to follow under each branch, one of which could be Go To Dialog (unless this is an ending dialog). The reason behind this is to ensure that the conversation experience exists without too many branches and that it isn't too complex to follow.
This is just one example of how a dialog can be constructed. With the myriad of elements you have available, there are many ways you can construct the dialogs and make the conversations run smoothly and your end users happy with the interaction.
Once all the dialogs are ready, you can activate your chatbot.