1 Introduction
2 Home page
3 Editing a bot
3.1 Global library
  3.1.1 Actions
  3.1.2 Conversation snippets
  3.1.3 Variables Entity type Create, edit and delete a variable
3.2 Conversation
  3.2.1 Skills Triggers Keywords Types of buttons Skill blocks Add the Skill block Add the Skill block with a condition Edit the Skill blocks Delete the Skill block Follow-up Start Skill on bot initialization Re-joining of conditional branches
  3.2.2 Small talk
  3.2.3 Frequently asked questions
  3.2.4 FAQ and Skill in the same bot
  3.2.5 Feedback System
3.3 Toolbox
  3.3.1 Test suite
   3.3.1 Test cases
   3.3.2 Test run history
4 Settings
5 Monitor a Bot
  5.1 Monitoring home page
  5.2 Filters in monitoring page
  5.3 Download chat history
  5.4 Conversation’s monitoring pag
  5.5 Start/End handover
6 Admin page
7 General information
7.1 Language support
7.2 API information

Closer: Gavagai’s Conversational Platform

Gavagai’s chatbot called Closer is an interactive tool to simulate conversation with human users. It allows a form of interaction between a human and a machine which happens via chat messages. It is programmed to work independently from a human operator, but the conversation control can be passed to the human operator when the bot does not understand the user input.

If you would like a quick start video, please click our 5 minute video on how to get a chatbot up and running:


1 Introduction

A chatbot is the container of functionalities, we call them either Skills, FAQ’s, or Small Talk, which are in turn built up of either Actions, Conversation Snippets, or Variables that you want to provide to your users via chat. These functionalities can be, for example, providing static information, collecting and providing information dynamically depending on the user data or interacting with external systems to pull or push data.

In order for the chatbot to function correctly and do something useful, you have to configure some features. Once you have defined your custom mix of features you will be able to train the chatbot, use the configuration to refine the A.I models that it employs, and finally test it. When you are satisfied with the result, you can deploy it on your website by copy pasting a code snippet to your website and the chatbot will be ready to talk to your customers. A custom color theme for the chat window can be implemented on request.

This is the documentation for Gavagai’s Closer tool, a conversation platform. This documentation illustrates the main features of the Gavagai chatbot that guides you through using these features effectively.

2 Home page

You can see the list of available chatbots created earlier in the Homepage. For each chatbot, the total number of conversations and number of active conversations can be found in the home page at bot level.

The picture has numbered the different actions that can be performed on the bot from the home page.

2.1 Create a new chatbot

A new chatbot can be created by using the ‘Create New Chatbot’ button in the homepage with the below parameters that are necessary.

2.2 Delete or duplicate an existing bot

2.2.1 Delete a chatbot

You can permanently delete your bot by using the ‘DELETE’ option if they are no longer needed. The bot cannot be restored once deleted as the operation is not reversible.

In order to delete a bot you need to have user permissions of type ‘CHATBOT ADMIN’.

2.2.2 Duplicate/copying an existing bot

You can duplicate/copy the existing bot by using the ‘DUPLICATE’ option.

2.3 Test and interact with the chatbot

Test launches a chat window where you can interact with your bot to assess the responses.

2.4 Deploy your chatbot

Click Deploy to deploy your chatbot. Once it has been trained and tested. A successful deployment brings a pop up with a code snippet which is used to embed the chatbot into your website.

Or you can click the ‘embed chatbot’ link to bring back up the pop up with the instructions and code snippet.

2.5 Monitor your chatbots

You can monitor the active conversations if any by using the monitor option.

2.6 Edit your chatbot

Once the bot is created you can edit it at any time just by clicking the ‘Edit Bot’ option.

3 Editing a bot

Once you have created the bot and clicked on “Edit Bot” you will be taken to the edit page of that chatbot.

Using the side menu you will be able to navigate between your tools in the toolbox and the setup of your conversation.

3.1 Global library

The global library has three features that help build your Conversations:

  1. Actions: The complete specification on how to use a particular API endpoint including the url, methods, parameters and authentication information. Basically how to interact with other systems.

  2. Conversation snippets: A reusable (within a chatbot) piece of conversations often used to capture the variable value. The reusable parts of your chatbot’s conversational text, either statements or questions.

  3. Variables: The set including all API outputs(computed variables) and all collected variables. We can refer to variables in the bot response during the setup time and the bot will automatically replace the reference with the value at runtime. Variables are how your chatbot stores information.

3.1.1 Actions

In simple words, Actions are the wrapper that allows the chatbot to interact with API’s in order to retrieve data from an external source or to perform operations in a different system.

An example of retreiving data from an external source, we can imagine a Skill configured to help the user get the weather for a certain city. In the Skill flow the city of interest for the user would be collected by the chatbot and then eventually used to query a weather API, through an Action, and get the temperature value to display to the user.

An example of performing an operation could instead be a meeting booking bot. The Skill is configured to collect a date and time that fits the user, along with their email. After all the information has been collected, the data is sent, through an Action, to the calendar APIs to create a new meeting event.

Actions can either be configured manually by providing the below mandatory parameters or the template can be imported by using the ‘Import from template’ option.

To use this import template feature, create a new action and click on the ‘Import from template’ option in the top right and select the template to create the action. Provide the API configuration and input parameter details to create the action from the template. Click on ‘Save’ to complete the action creation.

Import template - API integration


Sendgrid is a cloud-based SMTP provider that allows you to send an email without having to maintain email servers. You need your own Sendgrid account and API to use this integration. This is useful to use when you need to send reminders or alert someone via email from the chatbot.

Gavagai Tonality API

It supports a number of different languages. For each of these we actively track current online language use to enable a number of features of the API: multi-dimensional sentiment extraction for a set of predefined attitudes for each language (see the discussion for the /tonality call); up-to-date and timely information about words and their relationships through the /keywords and /lexicon calls.

Languages are specified according to ISO 639-1. You can find the currently available languages by calling the /languages resource in Gavagai Api.

A complete action is defined by three types of objects: the API definition, the input parameters and the output variables.

To set up an action you will need to have access to the endpoint that you want to connect to and its documentation, it’s the only step in the process that requires some technical Skills. API Definition

In this section of the action configuration you will need to specify all the general information of the endpoint including the URL where the resource is located, the HTTP method that needs to be used (POST, GET, etc…) and the details of the authentication, if necessary.

Input parameters with the type ‘path’ can be used in the endpoint URL to assign the value dynamically during the chat session. It can be referenced in the endpoint url with the open and close double curly brackets. A warning message will be displayed when the input parameter with the type ‘path’is not referenced in the endpoint url. Likewise a warning message will be displayed when the parameter which hasn’t been created is referenced in the URL. E.g. Endpoint URL -https://api/v2/{{XXX}}/test Input parameters

The input parameters are the placeholders for the data that will be sent to the endpoint. Each input parameter contains the information about how to pass that piece of data when performing the request.

Parameters to create a new input parameter.

  1. Input parameter key: name of the API parameter that will be passed when calling the endpoint.

  2. Input parameter name: Provide a user-friendly name for the API parameter. Use a name that represents the information the endpoint needs. E.g. if the API requires an input parameter with the name “q”, that stands for query, use “query” as a user-friendly name.

  3. Description: Brief description about the parameter

  4. Request parameter: Type of the parameter. It can be path, header, query and body.

  5. Is it a constant toggle button : Turn it on if the parameter is a constant. Once it’s turned on the constant value field will appear on the screen else it remains as an empty input that will be mapped and filled dynamically with a variable collected by a snippet.

  6. Constant Value: Provide a static value to the parameter (e.g. an API key). Advanced configuration

Now the complex data structure can be passed as a request body schema by using this feature. Create the required input parameters and open the ‘Advanced Configuration’ window. Complex data structure can be configured now by using the input parameters.

Input parameters can be raw values or processed values:

Raw values

Use raw values when you want to use an input parameter as a standalone value. Raw values can not be combined with text or other input parameters. It’ll be shown as $(use-:-parameter).

Processed values

Use processed values when you want the input parameter to be combined with other input parameters or you want to include it inside text. It’ll be shown as $(ref-:-parameter). To combine an input parameter with text or other input parameters, simply reference it inside a String. E.g.: “This is a text with $(ref-:-parameter1) and $(ref-:-parameter2)”

Right click on the editor to add input parameters(raw/processed) and configure how the data will be sent to the API endpoint.

This feature is available only for ‘Body’ and not for ‘Header and Params’. Output variables

The output variables are the relevant information parsed out of the API response. For each of them you will need to specify the ‘variable name’ and JSON path as ‘output path’ to extract them from the response object. Output variables are the computed variables and it can be used when building snippets for a bot.

For an array, add the index in square brackets (e.g. results/[2]/property). Note that the first item of the array will be 0, since arrays have a zero-based index.

For an object, reference properties like the following: results/[‘id’=’1’]/result, where id is the name of the property and 1 its value. In the variable name field, assign a variable name to the output path.

If an object doesn’t exist in the action result or an array parameter is out of a list then the variable value of the output parameter will be set to ‘N/A’. The condition type ‘Is available’ can be used to check if the value of an output variable is available (hence different from ‘N/A’) in the skill flow. Edit an action

Action objects can be edited at any time as mentioned below.

To update ‘Configure API call items, Click on the pencil icon beside the parameter and then the element will be in editable state. Update the element and click on the tick mark or press enter key.

To update input and advanced configuration - Click on the parameter, change/add the parameter details and click on the ‘Update’ button.

Output path can be edited by using the ‘edit’ option which is present after that particular output parameter. Delete an action

Existing action can be deleted by using the ‘Delete’ option. Click on the ellipsis of the Action which you wanted to remove and click on Delete.

3.1.2 Conversation snippets

In simple words, a conversation snippet is what will make a chat between the user and the bot possible. Alongside with Actions, they are the building blocks of a Skill. There are two types of conversation snippets: simple snippets and collecting variable snippets. Basically statements or questions that the chatbot can say or ask.

Simple conversation snippet

This is basically what the chatbot can say. A piece of text that the bot will output at some point during the chat. For instance, a bot that has the Skill “Open an account” might say “Your account has just been created. Welcome!”. The chatbot admin should create a “Welcome Message” conversation snippet with the previous text and add it in the Skill, right after the Open an account action. The bot will use that snippet once the account has been successfully created.

Collecting variable conversation snippet

This is basically what the chatbot can ask, to collect information. A three-step interaction between the bot and the user in order to get a piece of information, which will be saved as the value of a variable. The three steps needed are:

Ask: The chatbot admin will provide examples of how to ask for that piece of information.

Inform: Examples of how the user might give that information. For example, If the snippet is created to collect the name of the userthen the examples can be, “My name is <name+>” , “I’m <name+>”, “Friends call me <name+>”, “People call me <name+>”, “I call myself <name+>” and “<name+>”. Note you will need to create variables to store that information. Please see the variables section: 3.1.3 Variables

Acknowledge: Messages can be displayed to the user after receiving the expected input. Also the bot will not move forward until receiving the expectedinput from the user. This can be for example, “Hi <name+>, nice to meet you!”. This is not necessary.

Link,variable reference and buttons in conversation snippet

Snippets can contain buttons, variables reference and html links in the messages.

Links -To provide the link to the appropriate webpage in the bot’s question/response.

Variable reference - To display the collected variable value in the bot response.

Buttons - To perform a particular action based on the user selection during the conversation. There are three types of buttons available for the snippet. See Types of buttons for more information.

Multiple chat bubbles

Any number of responses can be added in the conversation snippet by using the ‘Add bubble’ option. During the conversation, all the messages will be presented to the user. Note that this option will be visible only after adding the first message.

Edit the conversation snippet

Created conversation snippets can be edited at any time. Open the conversation snippet and click on the pencil icon in the chat bubble which is visible on hover to edit the message.

Delete the conversation snippet

Conversation snippets can be deleted using the ‘Delete’ option if they are no longer needed. Click on the ellipsis of the conversation snippet which you wanted to remove and click on delete option.

3.1.3 Variables

A variable represents a piece of information acquired from the user input or as a result of an API action.

Computed variables:

Computed variables have their value set by the response of the API action.

The variables which are created while adding an action to a skill block to map the action’s output parameters are also considered as computed variables with an option to edit and delete. Note that the system will not allow you to delete the variable if it’s being used somewhere in the bot.

Collected variables:

Collected variables are those whose value comes from the user input. An entity type defines the type of information you want to extract from the user’s input. Conversation snippets are used to collect the variable value from the user. Entity type

An entity type defines the type of information you want to extract from the user’s input. For instance, animals could be an entity type. For each entity type you should provide examples, which are called entities. An entity is a real-world object, such as persons, locations, organisations, products, etc., that can be denoted with a proper name. For our Animal entity type, the entities (examples) could be dog, cat, cow, donkey, goat, mouse, etc.

When adding an example to the existing entity or new entity, new similar examples will be listed as suggestions. The user can either add ‘All’ the suggestion or can select the specific items to add as an entity example. System defined entity types

By default, the chatbot has few commonly used entity types which can be used while creating a variable.

Name - Name of the person and more examples can be added by entering manually or from suggestions.

Organization - Name of the organizations and more examples can be added by entering manually or from suggestions.

Number - It can be used for the variables which are collecting the number valuesand this entity type is not editable. This is compatible with string, integers, and floats, but it will be stored as a float.

Date - It can be used for the variables which are collecting the date and this entity type is not editable.

Email - It can be used for the variables which are collecting the email addresses and this entity type is not editable.

Phone_number - It can be used for the variables which are collecting the phone number and this entity type is not editable.

Free text - This entity type will capture the user’s answer and store the variable value based on the expected user input format defined by the user in the conversation snippet . If the user input is not matching with any of the defined examples then the entire input will be considered as a variable value. Free text entity type is not editable.

Yes/No-This entity is used to capture the boolean value and this entity type is not editable. Entity type customization

Apart from the system defined entity types, users are allowed to create their own entity types based on their requirements. To create a new entity,

Click on the ‘Create new variable’ button and click on the ‘Create a new one’ link in the new variable pop-up. Provide the below parameters and click on the ‘Save’ button to create a new entity type which can be used to create variables.

Name - Provide a name for the entity Description - Brief description about the entity.

Type of information - Select the type of data which can be stored as a variable value when using this entity. It can be date, number and text.

Examples : Provide the examples for that entity type. Examples can be added manually or can be added form the list of suggestions provided by the system. There should be one example to get the list of suggestions.

Select the checkbox of suggestions which you wanted to add and click on the ‘Add suggestions’ button. Create, edit and delete a variable

Click on ‘Create a new variable’ button to create a new variable. Click on ‘Save’ after providing the variable name and entity type. Created variables will now be presented in the list of collected variables.

To edit the variable, Click on the edit option from the ellipsis of the variable which you want to edit. Now the variable name and the entity type can be edited and saved by using the update button.

To delete a variable, Click on the delete option from the ellipsis of the variable which you want to delete. Confirmation pop-up will be prompted with the message ‘Are You Sure? Deleting the variable <variable_name> may break a chatbot Skill. Are you sure you want to delete it?’ to reassure the deletion of a variable. Click on ‘Delete’ to remove the variable. Variables associated with the snippet /Skill can’t be deleted until the association is removed.

3.2 Conversation

  1. Skills: It’s a comprehensive conversation flow to accomplish a particular task. For example, the bot will ask about the location and date to respond to the user’s question about wether.

  2. Small talk: These pieces of small talk are spoken by the bot in response to certain events or phrases from the user. For example, a welcome message when the bot is initialized, prompting the user to rephrase the sentence when bot couldn’t understand it, etc..,

  3. FAQ: In the FAQs you can configure a list of frequently asked questions, with the matching answers, that you want to include in your chatbot. The chatbot will resort to the FAQs when the utterance of the user is not understood correctly, trying to find relevant content to help the user.

  4. Test and deploy can be done in the home page or in the bot editing page. Test creates a chat window where you can speak to your bot and assess it. Successful deployment brings a code snippet which is used to embed the chatbot into your website.

3.2.1 Skills

A Skill is one ability of the bot, something that the bot can do and can do well. It can be seen as a defined conversation flow that accomplishes one task. The complexity of a Skill can vary. For example, a bot could ask for a name, book an appointment or open an account, etc..,

A Skill can be split into different parts:

  1. Triggers and keywords and buttons (which can be used elsewhere as well)
  2. Skill blocks
  3. Follow-up. Triggers

Triggers are examples of how the user would express their intentionality to start the Skill. In other words, they are sentences that the end user might say to the bot and that will trigger the Skill. These sentences will help to train the system to recognise when it is appropriate to start the Skill in response to a user input.

The sentence “I want to open an account”, for instance, could be a trigger for the Skill “Open account”, which will be started when the user says that sentence or a similar one. Thanks to the machine learning model learnt by the chatbot, triggers are used so that even when the user does not say the exact same sentence as in the trigger, the bot still understands. Keywords

Helps the chatbot to suggest a relevant disambiguation question when it is not sure about the user input. Keywords can be shared between Skills and the chatbot will present, in the disambiguation question, all the associated Skills as options. The keyword “account” could be, for instance, shared by two Skills: “Open an account” and “Close an account”. If the user uses the word “account”, and the bot is not confident enough on whether it is an open account trigger or a close account trigger, the bot will ask the user to choose between these two Skills. Note that the keywords are case sensitive and the relevant disambiguation questions will be triggered only when the exact match is found.

It is also possible to group your keywords. Click on the keyword to which you want to add aliases. A popup will appear on the screen that allows you to add aliases to that keyword. Similarly, you can remove the aliases from the keyword if it isn’t needed anymore. Note that the keywords which are added as aliases can’t be added as keywords or aliases to other skills/FAQs. Types of buttons

Buttons are available to add as responses for the chatbot for the user to click to choose or activate certain features. You can add buttons in many places of the chatbot, including in the Skill section, Conversation Snippets, and so on.

Skill Button

To trigger the particular Skill based on the user selection. For example, the bot can help the user to open and close the account. In the conversation snippet two buttons are created with the Skills respectively. During the conversation if ‘Open account’ button was clicked then the ‘Open Account Skill’ will be triggered.

Variable Button

Allows the user to click the variable button to edit previously collected variables. See the variables section for more.

Text Button

To display the list of texts and also it can be used to trigger the other Skills and FAQs when the button’s value field has a Skill trigger or a text similar to the existing FAQ question. Skill blocks

These are the building blocks for the conversation flow. The system is thought to be very modular so the chatbot admin can use components from the toolbox to define the flow of a Skill. These blocks can be re-used in the same Skill or in other Skills. A Skill can also be a building block of another Skill. Skill blocks can be an action, conversation snippet (both simple and the one which collects the variable value) and the other Skills.


Input parameters should be mapped with the variables which are collected in the Skill at that point. Output parameters can also be mapped to the variables optionally. You can create a variable to which you want to assign the output parameter while adding an action to the skill block. These variables can be found in the variables tab as computed variables with an option to edit and delete.

Redundancy in the conditions can be reduced by using this feature as multiple actions are updating the same variable. For example, Imagine that we have a weather bot. It first asks the user if they want weather for the US or for Europe. Depending on that it will use either the US Weather API or the EU Weather API actions. After fetching the weather it is returned by the user and some conditional logic happens depending on the temperature. If the temperature_eu and temperature_us output parameters are mapped to the variable ‘temperature’ then all the conditional logic after that can be shared instead of duplicated.

Click on the ‘Map output parameters’ in order to see the options to create and map the variables to output parameters.

Simple conversation snippet

It can be added anywhere in the Skill flow just by using the “+” button.

Conversation snippet to collect variable

It can be added anywhere in the Skill flow. Also allows the user to choose the option to preserve the value which was collected during the first time or seek for the variable value whenever the block is repeated during the conversation.

This can be achieved just by selecting the checkbox in the confirmation pop-up when adding a snippet as a Skill block.

Skill block

A Skill can also be a building block of another Skill. The variables collected in this Skill can be used in the main Skill for mapping a variable to action’s input parameter and to create blocks with conditions. Add the Skill block

Click on the “+” icon to add the new block. Also the new block can be added before or after the existing Skill blocks if any. Add the Skill block with a condition

Adding the Skillblocks with condition option is enabled only when there is a block which is collecting the variable value in that Skill. Click on the “+” icon to add a block. Follow the below instruction to add a block with the conditions.

To add a condition block:

Step 1 - Set the ‘Add a condition to decide when the block is executed’toggle button ‘ON’ in the add Skill block window.

Step 2 - Select the variable to compare

Step 3 -Select the condition

Step 4 - Set the expected value for the condition

Step 5 - Select the block (It can be action, snippet or another Skill) and click on ‘Save’.

To add a conditional block with an else statement:

Step 1 - To add an else block click on the “+” icon before the block with ‘IF’ condition.

Step 2 - Select the block (It can be action, snippet or another Skill)) and click on ‘Save’. This block will be considered as an else block for the condition block added earlier.

To add a multiple condition at same level :

Step 1 - To add a block with the multiple condition click on the “+” icon before the block with ‘IF’ condition.

Step 2 - Set the ‘Add a condition to decide when the block is executed’toggle button ‘ON’ in the add Skill block window.

Step 3 - Select the variable to compare. You are allowed to select the variable which is used for the conditional block at that level.

Step 4 -Select the condition

Step 5 - Set the expected value for the condition

Step 6 - Select the block (It can be action, snippet or another Skill) and click on ‘Save’. Edit the Skill blocks

Skill blocks can be edited at any time after including them in the Skill flow. Click on the pencil icon near the block which you want to edit. As mentioned earlier Skill blocks can be an Action, Conversation snippet (both simple and the one which collects the variable value) and the other Skills. Here are the limitations of editing the blocks based on the type.

1.Conversation snippets to collect a variable value

Users are allowed to change the selection of ‘Ask anyways’ condition checkbox by using the edit option.

2.Conditional blocks

Users are allowed to change the condition parameters at any time. Conditions can be deleted by using the ‘Delete’ link in the edit window if there is no ‘else’ block at that level and then this block will be considered as an ‘else’ block of that level. Also condition can be added to the else block to convert it to the ‘ELSE IF’ block by using the edit option.


Variable mapping to action’s input parameters can be changed at any time by using the edit option.

4.Skills and simple conversation snippets

Edit option is not applicable for these types as conditional input and variable mappings are not required. Delete the Skill block

Click on the trash icon near the block to delete it. The confirmation pop up will be displayed with the message ‘Are you sure? Do you want to delete the <block_typ><block_name>. Click on ‘Delete’ to delete the block. Follow-up

The follow-up is what will happen once the Skill ends. By default, the chatbot will handle the Skill end by either continuing with the other tasks that the user has asked to handle or with the “anything else I can help you with” small talk. Instead, if a follow-up is set, when the Skill ends the follow-up Skill will be automatically triggered and started. Start Skill on bot initialization

To trigger the Skill automatically right after the bot initialization. For example, you wanted to collect information about users before allowing them to use the service. In this case it’s efficient to trigger the Skill which collects the user information right after the bot initialization.

It can be achieved easily by selecting the checkbox in the Skill which you want to trigger after the initialization. Re-joining of conditional branches

Merge options will be available at the dead ends of all the conditional branches. This feature enables the option to join the end of one conditional branch to the block at different levels or to the other conditional branch to create an execution flow easily.

Click on the Merge icon to join the branch with the other block. Now all the other Skill block action icons will be set to inactive and the merge icon will be visible near all possible blocks. Click on the merge icon near the block which you want to merge the flow. Accept the pop-up confirmation to join the blocks. If the block is added before the merge then the merge info will be retained at the end of the newly added block.

Merged flow can be deleted at any time by using the trash icon near the mergel. Click on the trash icon and accept the pop-up confirmation to delete the merge.

3.2.2 Small talk

The ability for the bot to recognise and handle small talk (starting the conversation, greeting, reacting when not understanding, offering help after conclusion of a Skill, listing the bot’s capabilities and reacting to when it’s thanked). Every situation mentioned should be customisable.

Handover the conversation to the human

Conversation control will be passed to a live agent/human when the bot couldn’t understand the user’s question/intention.

Restore the default message

BOT responses for ‘programmatic responses’ and ‘Responses to user input’ can be customized at any time. Likewise, the default response can be restored at any time if needed. ‘Restore the default one’ option will be enabled only when there is no response available for the events or phrases from the user.

3.2.3 Frequently asked questions

In the FAQs you can configure a list of frequently asked questions, with the matching answers, that you want to include in your chatbot. If the user input is not relevant to any ongoing Skill (e.g: providing a variable value) nor triggers any new Skill then the bot looks at the FAQs and checks if there is relevant content.

Add new FAQ

New FAQ can be added directly from the FAQ page by using the ‘Add NEW FAQ’ option.

FAQ’s can be created with the below parameters.

Question (Mandatory)

BOT will present this FAQ answer if the user asks this question.

Keyword (Optional)

BOT will present this FAQ directly or one of the suggestions if the user mentions this keyword. Also the keywords can be grouped together as aliases. Refer the section ‘ Keywords’ to know more about grouping the keywords.

Answer source (Optional)

Link to the source of the answer if any.


Answer for the given FAQ.

Skill followup (Optional)

Select the Skill which you want to be triggered right after the particular FAQ.

Add new FAQ’s by uploading a file

You can use this functionality to load many FAQs at once via file upload. The file format must be .csv, with UTF-8 encoding and must have the below columns in the given order.

Answer (required) : Links can be included in the answer in markdown format: [I am a link](https://gavagai.io)\ and it will always open in a separate tab.

SourceUrl : This column can be left blank if the URL is not needed for the FAQ.

Keywords : This column can be left blank if keywords are not needed for the FAQ.

Question (required): You must add a column ‘Question’ for each of the questions at the end of the .csv file.

See the above section 3.2.3 to know more column related information.

Choose/browse a file and click on upload to add the FAQ’s from the file. Click to download an example file.

Download all FAQs in .CSV format

The FAQ list can be downloaded as a .csv file. The Skill follow-up will not be captured in the downloaded file. When uploading a downloaded file, buttons and variables will be broken and not displayed during the conversation if they don’t exist in the bot.

FAQ can contain buttons and links in the response.

FAQs with links can be created manually or via file upload. It will provide the link to the appropriate webpage in the bot answer.

FAQ’s with buttons can be created manually in the FAQ page.

Types of FAQ buttons

Skill can be triggered as the response for the FAQ. For example, the user is looking for the available time slots in the dentist clinic to book an appointment. In this case the Skill which was created to handle the bookings can be triggered to help the user.


Variable value can be triggered as the response for the FAQ when it’s appropriate.

Delete FAQ

FAQ can be deleted by using the delete option if they are no longer needed. Also you can delete the FAQ’s which are loaded via file by deleting the uploaded FAQ file.


3.2.4 FAQ and Skill in the same bot

Skills are the primary feature of the bot to support complex flows. For this reason they should be used for all those things that are relevant for complex flows. FAQs on the other hand are very useful to encapsulate any information we want the bot to be able to provide, almost like a knowledge base to look at for the bot when an utterance does not represent a Skill trigger. For this reason, the Skill gets priority over FAQ by default when FAQ’s and Skills are added in the same bot. When an utterance is the exact question/Skill trigger then the bot will trigger that FAQ/Skill regardless of the Skill priority. When the bot is in doubt of whether an utterance is an FAQ or a Skill trigger then the bot will trigger the Skill.

FAQs may preferably start with ‘What’/ ‘How’ or the context should be designed in the way that the user is seeking for information.

Skill triggers may preferably start with ‘I want to’ / ‘I would like to’,etc.., or the context should be designed the way that it’s seeking for help / to perform a set of actions.

3.2.5 Feedback System

Customer feedback will help your business improve its existing line of products and services. You are a few steps away from including the request feedback option in your bot. This feature enables you to collect the feedback from users. This feature is available in conversation snippets, small talks and FAQs. Add Feedback input

To add feedback to the message, enter the appropriate question in the message and click on the vertical ellipsis near the chat bubble. Select the ‘Add Feedback Input’ option from the list to enable the feedback form to that message. Choose the feedback type

There are two ways to collect the feedback. Select the suitable type from the dropdown to collect your feedback from the user.

Text(Opt-in) - Feedback request will appear in the chat window with a text box to collect a user’s feedback as text message which can be later analyzed in the tool like ‘Explorer’ to get insights from the set of feedback collected from the users.

Thumbs - Feedback requests will appear in the chat window with thumbs up and down icons. Thumbs up means positive or good and thumbs down means negative or poor. Choose the feedback subject

Select the subject from the list of existing subjects. Feedback subject is used to gather all feedback related to the same question/topic to analyze them together. You can also create a new subject by clicking on the ‘Create new feedback subject’ option in add feedback input pop-up. Create new feedback subject

In order to create a new feedback subject provide a name to the new feedback subject and click on Add. The new feedback subject will be added to the list and the feedback reference will be included in the message.

3.3 Toolbox

For now the only feature listed under the toolbox is ‘Test suite’ which helps you to test your bot systematically.

3.3.1 Test Suite

Here is the systematic way to test the bot that it responds with the expected skill when the corresponding intent is triggered. Create test cases to validate all your skill intent. There are two segments in this test suite. The first one is to create test cases and the next one is to capture the test run history for future reference. Test cases

Create a new test by adding a skill trigger as a test input and select the expected skill from the test target’s dropdown. Tests will be run automatically after adding them and the result will be updated in the ‘Status’ column.

Below are the actions that can be performed on the created tests.

Edit : Test input and test target can be updated after adding the tests. Remove : Testcase can be removed from the test suite by using ‘remove’ option. Run : You can run the specific test case by using this option. Test run history

Click on ‘Run all tests’ to run the entire test suite and this will create a history entry in the ‘Test run history’ section. Also the overall bot’s accuracy will be updated based on the latest run results.

If the test cases or the skill which is added as the ‘test target’ in any of the test cases is deleted then the test case will be removed from the test run history. However, the deleted test cases will be accountable for the bot’s accuracy calculation for the existing history entries and there will be a notification displayed about the deletion.

4 Settings

Integrations with other services will be created and listed in the settings page of the bot for the users to set up that service to make use of it. Settings can be found at the bottom left corner of the edit bot page.

4.1 Feedback Settings

There is a possibility to set up the email notification whenever the feedback is received from the user with the customized settings in ‘Zapier Hook’. Setup the zap in Zapier hook to send email whenever the feedback is received from the user and provide that URL of the zapier catch hook in the input box.

4.2 Training settings

You have an option to train your bot with one of the two NLU-pipelines which we support currently. Provide the name of the NLU pipeline in the inline editor and save it. The bot status will be changed to ‘Draft’ automatically when there is a change in the NLU pipeline. Now you can retrain your bot in the updated nlu pipeline.

Kangaroo --> Faster in the training and deploying the bot. But not as smart as the Duck NLU.
Duck --> Slow in terms of testing and deploying the bot. But smarter than the Kangaroo NLU.

For information, if you enter any other value than the two mentioned above the system will not allow you to proceed further until you provide the valid nlu pipeline.

4.3 Handover settings

The bot will hand over the conversation control to the support agent when it couldn’t understand the inputs from the user. You can now configure the way you want to handle these requests at the bot level. By default, the ‘default’ option will be selected when the bot is created. For now there are two options to handle the handover requests.

Default: It’s the default option. The handover requests can be taken care of from the bot’s monitoring page. Also, it allows the support agent to start/end the handover whenever the manual interventions required during the chat.

Freshchat: If the handover setting is ‘Freshchat’ then the user can switch to freshchat when the bot couldn’t understand the user input. So the handover requests will be redirected to Freshchat. Then the agent from Freshdesk will take control over the conversation. Follow the instructions below to set up the freshchat integration.

1.Select the ‘Freshchat’ from the handover settings dropdown.
2.Provide the Freshchat snippet in order to integrate it with the bot. This snippet can be found under the ‘Web Messenger 
Settings’ in Freshchat.
Sample snippet:
 		token: "xxxxxxxxxxxxxxxxx",
  		host: "yyyyyyyyyy"
3.Click on Save inorder to save the setup.
4.Train and deploy the bot in order to update the changes in teh deployed version.

However, the ‘support agent available’ status should be set to active on the bot’s monitoring page to allow the handover requests.

5 Monitor a Bot

You can monitor the active conversations by using the monitor option in the deployed bots. Users must have a ‘chatbot admin’ or ‘Customer support agent’ roles to access the monitoring page. Also, you can download the chat history from here.

5.1 Monitoring home page

The monitoring page contains a table that has information about the active conversations. 25 conversations will be listed per page. Use the page information at the bottom of the monitoring page to switch between the pages. Also, ‘Support agent available’ toggle button allows to set the availability status of the support agents. Turn it ‘On’ if at least one support agent is available to take control of the on-going conversations. When turned off, which means that no customer support agent is available, the handover won’t be performed by the bot.

Content of the table:

ID: Room_Id of the conversation.

Type: It can be real/test. Real conversations are the ones started by end-users. Test conversations are the ones started by admin users in the admin tool in order to test the bot.

State: This column shows the current status of the chat. The possible state of the conversation can be,

Active - Ongoing conversation no intervention required

Handover waiting on agent input - Conversation control has been passed to support agent and the latest 
message of the user is waiting for their response.

Handover waiting on user input - The support agent has control over the conversation and they are waiting for 
the user input to proceed further. This state of the conversation column helps the support agent to know where 
their intervention is actually required. The conversations are by default ordered by state (In alphabetical order) 
and last message (from latest to older).

USER: The user information of that conversation. For ‘test’ conversations the username will be displayed and for real conversation, it will be set to ‘Anonymous’.

Acquired variables: Information about the variable acquired during the chat will be displayed

Last message: The date and time of the last message of the conversation will be displayed. Monitoring: Click on the ‘View’ button to monitor the on-going conversation.

5.2. Filters in monitoring page

Conversations can be filtered by using the ‘Filters’ option available at the monitoring page. Select the filters and click on the ‘Apply filter’ button to apply the filter. Likewise click on ‘Reset filterä button to remove the applied filter. Conversations can be filtered as below,

Type: It can be filtered by the type of the conversation ‘real’ or ‘test’.

Status: It can be filtered based on the current state of the conversation ‘active’ or ’handover’.

Pending: It can be filtered based on the pending input from the user or agent. Note, status ‘handover’ will be automatically selected when this filter is applied as it is applicable only for handovered conversations.

5.3 Download chat history

Click on the ‘Download chat history’ button to download all the conversation that took place in that bot. The whole conversation history will be downloaded in JSON format regardless of the conservation status which includes active and inactive conversations.

5.4 Conversation’s monitoring page

Support agents can monitor the on-going conversation and also have an option to start/end the handover to take control of the conversation whenever the manual intervention is required.

Back to List: To switch back to the monitoring home page.

Conversation ID: ID of the conversation.

Conversation details: It contains the id,username,type and state information of the bot. Visit section 5.1 Monitoring page to know more information.

User Information: It has information about the variables which are acquired during the conversation.

Available skills: List of skills exist in the bot.

Finally,the mirrored chat client of an on-going conversation on the left side of the page. System will not allow the user agent to send a message until a handover is started.

5.5 Start/End handover

Support agents can take control of the conversation as long as the ‘Support agent available ‘ state is turned on and the conversation state is ‘Active’. Conversation control will be handed over to the support agent when they click on the ‘Start handover’ button on the top left corner of the particular conversation’s monitoring page. Then the system will allow the support agent to start interacting with the end-user. Likewise support agents can leave the control of the conversation back to ‘Closer’ just by clicking on the ‘End handover’ button on the top left corner of the page.

Note that the user can’t start/end the handover if the conversation is being handled by another agent. In this case, the conversation will be readonly and the name of the agent who is handling the conversation will be displayed in the state column and chat client.

6 Admin page

This page is available only for the users with admin access. Admin users can create a new user with the appropriate permissions and also they have access to delete the existing users.

Create user

New users can be created by using the ‘Create user’ option. Click on the create user button, provide the below parameters and click on the ‘Create user’ button to create a new user account.

Username Password Confirm password Name Surname Role (API Expert, chatbot admin, chatbot trainer and customer support agent roles are available)

Admin: admin can do everything, including delete bots Chatbot trainer: can do the building and training tasks but not the monitoring tasks Customer Support Agent: can do the monitoring tasks but not the building and training tasks API Expert: can build but not train the chatbot

Edit user

Click on the edit option in the ellipsis of the user account which you wanted to edit. Only the user roles can be edited once the account has been created. Add or remove the roles and click on the ‘update role’ option to save the changes.

Delete user

Click on the delete option in the ellipsis of the user account which you wanted to delete. Confirmation pop-up will be displayed. Select the ‘Yes, I wish to delete this user’ check box and click on the ‘Confirm Delete’button to delete the user.

7 General information

7.1 Language support

Closer is currently available in five languages: Swedish, English, Italian, French and Spanish.

7.2 API information

API endpoint detail and the description is available in redoc and swagger format. Visit the below URL for more information.

Swagger : https://production.apis.dialoguesuite.com/api/v2/swagger/

Redoc : https://production.apis.dialoguesuite.com/api/v2/redoc/

For some common API use cases with step by step instructions: https://gavagai.atlassian.net/wiki/spaces/PUB/pages/370737153/Chatbot+API+Common+Use+Cases