Thursday, November 1, 2018

Bot Libre 7.0 AI/NLP Engine - now on GitHub

The Bot Libre open source GitHub repository has been updated to Bot Libre 7.0.

GitHub
https://github.com/BotLibre/BotLibre/tree/master/ai-engine

SourceForge
https://sourceforge.net/projects/botlibre/files/7.0/

Many enhancements including:

  • Alexa
  • Google Home/Assistant
  • Response next and conversation flows
  • Exclusive topics
  • Synonyms
  • Compound keywords, required words
  • Regular expressions
  • Neural network
  • Many fixes, and enhancements

Thursday, September 13, 2018

Parsing natural language using Regular Expression patterns and extractors

Bot Libre 7 adds support for using Regular Expressions in patterns, templates, and scripts.

Regular Expressions, or Regex defines a pattern syntax for parsing text. Unlike AIML and Bot Libre patterns Regex patterns are character based, not word base, so can match specific types of words and word sequences such as numbers, dates, times, currency, and others.

For example, the following regex matches a number,

/\d+

and this regex would match a date,

/^(19|20)\d\d[-/.](0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])$

Bot Libre allows regex expressions to be used in AIML patterns, and in Bot Libre response patterns. Bot Libre's scripting language Self also allows regex in patterns and provides extractor functions that allow regex to be used to extract data from a user's input.

To define a regex pattern in an AIML or Bot Libre pattern just start the regex with the "/" character.

AIML defines pattern wildcards such as * and ^ which can match multiple words in a phrase, but they will match any word, and are not restricted to specific types of words. Bot Libre lets you include regex inside AIML patterns to match specific types of words.  Just like the * wildcard the word that was matched by the regex can be accessed in the template using the <star/> tag.

<category>
<pattern>my email is /.+\@.+\..+</pattern>
<template>Okay, I will email you at <star/></template>
</category>

Normally regex is used to match a specific word, but you can also use regex to match and entire phrase if it defines the entire pattern.

For this to work the entire pattern must be the regex, and the pattern can have no other words. The "()" characters in regex define a group which becomes the star variable(s).

<category>
<pattern>/(?i)what\sis\s(.*)</pattern>
<template>I have no idea what <star/> is.</template>
</category>

Patterns and regex can also be used in Bot Libre response lists similar to AIML.

Pattern("my email is /.+\@.+\..+")
Template("Okay, I will email you at {star}")

Pattern("/(?i)what\sis\s(.*)")
Template("I have no idea what {star} is.")

In a response list template you can also use Self extractor functions.

I am 22 years old
Template("I will remember that you are { var age = sentence.exec("\d+"); speaker.age = age; age } years old.")

Regex can also be used in Self patterns and functions.

state Math {
    pattern "^ /\d+ \* /\d+ ^" template "{star[1].toNumber() * star[2].toNumber()}";
    pattern "^ /\d+ / /\d+ ^" template "{star[1].toNumber() / star[2].toNumber()}";
    pattern "^ /\d+ \+ /\d+ ^" template "{star[1].toNumber() + star[2].toNumber()}";
    pattern "^ /\d+ \- /\d+ ^" template "{star[1].toNumber() - star[2].toNumber()}";
}

The following are regex functions in Self:

  • Utils.matches(text, regex) - return if the regex matches the text
    Utils.matches("12345", "\d+") == true
  • String.test(text) - return if the regex string it matches the text
    "\d".test("hello 123") == true
  • String.exec(text) - extract the subtext matching the regex string from the text
    "\d+".exec("hello 123") != "123"
  • String.match(text) - returns an array of all values matching the regex string extracted from the text
    var values = "hello 123 456".match("\d+"); values[1] == "456"

Bot Libre also defines several symbols for common regex patterns.
These include:

  • #number
  • #date
  • #email
  • #url

These symbols can be used in place of regex patterns in Self and patterns.

<category>
<pattern>my email is #email</pattern>
<template>Okay, I will email you at <star/></template>
</category>
state Email {
    pattern "^ #email ^" topic "email" template "Thank you, I will remember your email. { think { speaker.email = Utils.extract(sentence, #email); conversation.topic = null; } }";
    pattern "*" topic "email" template "Please enter a valid email.";
}

For more information on the regex syntax and example patterns see:

https://www.w3schools.com/jsref/jsref_obj_regexp.asp

https://regexr.com/

Thursday, August 30, 2018

How to Connect a Bot to Amazon Alexa

Through Bot Libre, you can now use your own bot to send and receive messages using any Amazon Alexa device. This "How To" will give you a step by step process to connect your bot with Amazon Alexa.

Step 1 - Create a Bot

First you must create a bot that you want to connect to Alexa, or you can use one of your existing bots. To create a bot, follow the instructions here: How to create your own chat bot in 10 clicks.

Step 2 - Amazon Developer Console

Click the "Sign In" button to sign into or create a new Amazon Developer account.

Once you have signed in, mouse over "Your Alexa Consoles" and select "Skills".

In the Alexa Skills Console, click the "Create Skill" button to continue.

Enter a name for your Alexa skill and select the language you will use. You will be able to add more languages later. Your skill will only work on devices set to this language, so a skill set to English(UK) won't work on a device set to English(US), for example. Make sure "Custom" is selected at the bottom, then click the "Create skill" button.

Step 3 - Create Interaction Model

Click the "Invocation" option in the left sidebar under Interaction Model.

In the "Skill Invocation Name" field, enter the name the user will use to begin interacting with your bot. The invocation name should be two or more words. Click the "Save Model" button when complete.

Click the "+ Add" button next to "Intents" in the left sidebar. Enter a name into the field, it does not matter what it is. I will enter "conversation" in my example. Press the "Create custom intent" button.

In the "Sample Utterances" field, enter some phrases that a user could say to signal their intent to speak with your bot.

Scroll down to the Intent Slots section. Enter a name for the slot and press the "+" button. It does not matter what the name is, I will use "message" in this example.

Select "AMAZON.SearchQuery" for the slot type. Press the "Save Model" button when complete. Click the "Edit Dialog" text under "Actions".

Toggle the "Is this slot required to fulfill the intent?" option to the ON position. Enter any text into the "Alexa speech prompts" field. It does not matter what is says, it will not be used, but something must be there.

Press the "Save Model" button when complete.

If you would like to add support for additional languages, click the language dropdown in the top-left, and select "Language Settings".

Click "+ Add new language" and select the language(s) you would like to add support for. You will then need to complete the Interaction Model (step 3 in this guide) for each new language you've added.

Then click the "Build Model" button and wait for it to finish.

Step 4 - Enter Endpoint

Return to the Bot Libre website and navigate to your bot's Admin page by click the gear icon on your bot's page.

Select the "Alexa" option to enter the next screen. Copy the "Alexa Skill Endpoint URL" to your clipboard.

Return to the Alexa Skills Console and click the "Endpoint" button on the left sidebar. Select the "HTTPS" option.

In the "Default Region" section, paste the "Alexa Skill Endpoint URL" into the "Enter URL" field, and select "My development endpoint has a certificate from a trusted certificate authority" in the "Select SSL certificate type" dropdown.

Click the "Save Endpoints" button at the top of the page.

Step 5 - Bot Libre Settings

Return to the Bot Libre website and navigate to your bot's Alexa settings page. You will need to enter some responses to handle Alexa's built-in intents. These will only be active until the conversation with your bot begins. After the conversation has begun, your bot will handle all responses. In the "End Conversation Phrases" box, enter some phrases/words the user can say that will cause the conversation to end.

Click the "Save" button when complete.

Step 6 - Finish

You should now be able to test your bot using the Alexa Skills Console or an Alexa device that is connected with your account. To test on the Alexa Skills Console, click the "Test" button.

You will need to enable testing for your skill by clicking the toggle that says "Test is disabled for this skill."

You will now be able to test your bot by typing into the text box or clicking on the mic icon to use your voice.

To make your Alexa Skill available to the public, you will need to complete the required information in the "Distribution" tab.

Next, click on the "Certification" tab. You will need to click the "Run" button to complete validation. When your skill has successfully passed validation, click on "Submission" in the left sidebar and then click the "Submit for review" button. You will then need to wait for Amazon to review your Alexa Skill before it is available for the public.

Your bot will now be able to send and receive messages on an Amazon Echo or any other Amazon Alexa-compatible device. If you encountered any issues, or would like help setting up your bot please email us at support@botlibre.com or upgrade to our Platinum service and we can build your bot for you.

You can now also talk to the Bot Libre Help Bot, Brain Bot, and Julie on Alexa.

say "Alexa, open Bot Libre" (lee bra) to talk with the Bot Libre Help Bot

say "Alexa, open Brain chatbot" to talk with the Brain Bot

say "Alexa, open Julie chatbot" to talk with the Julie

Thursday, August 9, 2018

How to create a bot for Google Home and Google Assistant

Through Bot Libre, you can now use your own bot to send and receive messages on Google Home or any other Google Assistant-compatible device. This "How To" will give you a step by step process to connect your bot with Google Assistant.

Note: A previous version of this blog post begins by creating an Action in the Google Actions Console. However, that procedure no longer works due to changes that Google has made to Actions. The Dialogflow Agent must be now be created first.

Step 1 - Create a Bot

First you must create a bot that you want to connect to Google Assistant, or you can use one of your existing bots. To create a bot, follow the instructions here: How to create your own chat bot in 10 clicks.

Step 2 - Create a new Dialogflow Agent

Go to https://dialogflow.cloud.google.com/ and sign in to your Google account.

Click the "+ Create Agent" button to continue.

Enter an agent name and select your language and time zone, then press "Create" to continue.

Step 3 - Configure Dialogflow Agent

Click the "Fulfillment" option on the left sidebar.

Then, click the "Webhook" toggle to enable it, then return to the Bot Libre website. 

On the Bot Libre website, navigate to your bot's Admin page by clicking the gear icon on your bot's page.

Select the "Google Assistant" link on your bot's Admin page to continue to the next screen.

Copy the "Google Assistant Webhook URL" to your clipboard and return to the Dialogflow website.

Paste the URL into the "URL" field, then scroll down and press the "Save" button.

Next, click the "Intents" option on the left sidebar.

Click on "Default Fallback Intent". Scroll to the bottom of the page and expand the Fulfillment section. Toggle "Enable webhook call for this intent" to the on position. Press the "Save" button. Repeat the same process for the "Default Welcome Intent".

Step 4 - Integrate with Google Assistant

Click the "Integrations" option on the left sidebar.

Under "Google Assistant", click on "Integration Settings". This will bring up the integration popup for Google Assistant.

Click on "Test" at the bottom of the popup. This will create a new project for Google Assistant, with Dialogflow integrated as an Action.

A new tab will appear for the Actions Console, with your new project opened.

Step 5 - Google Assistant Action Settings

On the top navigation bar in the Actions Console, click on "Develop".

On the left sidebar, select the "Invocation" option.

From here, you can enter a "Display name" which the user will say or type to begin interacting with your bot. You can also select a voice that your bot will use on Google Assistant.

Press "Save" when finished.

Step 6 - Bot Libre Settings

You may now close the Dialogflow website and return to your bot's Admin page on the Bot Libre website.

In the "End Conversation Phrases" box, enter some phrases/words the user can say that will cause the conversation to end.

Click the "Save" button when finished.

Step 7 - Finish

You should now be able to test your bot using the Simulator available on the the Google Actions Console by clicking on "Test" in the top navigation bar. Alternatively, you can test your bot on any device associated with the Google account used to create your Google Assistant action. To test using the simulator, make sure the "Web & App Activity", "Device Information", and "Voice & Audio Activity" permissions are enabled on the Activity controls page for your Google Account.

Note: Do not test the bot from the Dialogflow website, since they use a different API.

To make your Google Assistant Action available to the public, click on "Deploy" in the top navigation bar. Then, click on "Directory information" option in the left sidebar and fill out the required information.

Next, click the "Release" option in the left sidebar. If all necessary information has been completed, you will be able to click the "Submit for Production" button to make your bot available to all Google Assistant users.

Your bot will now be able to send and receive messages on Google Home or any other Google Assistant-compatible device. If you encountered any issues, or would like help setting up your bot please email us at support@botlibre.com or upgrade to our Platinum service and we can build your bot for you.

You can now also talk to the Bot Libre Help Bot, Brain Bot, and Julie on Google Home and Google Assistant.

say "talk to Bot Libre" (lee bra) to talk with the Bot Libre Help Bot

say "talk to Brain chatbot" to talk with the Brain Bot

say "talk to Julie chatbot" to talk with the Julie

Monday, July 30, 2018

Learn about bots from a bot - Bot Libre Education

Bot Libre now offers courses and education on bots and artificial intelligent technology.

You can take the "Introduction to Bot Libre" course for free and be guided through the course by our bot instructor.
To start the course, go to our education page, and click on "Start course now",
or to browse Bot Libre's other courses see,

https://www.botlibre.com/courses.jsp

Bot Libre offers several monthly open courses including:

  • Introduction to the Bot Libre bot platform
  • Introduction to bot technology
  • Introduction to artificial intelligence and deep learning
  • How to deploy bots to social media using Bot Libre
  • Bot Libre - Advanced training and techniques
  • Bot Libre - Scripting with Self
  • AIML

To sign up for an online open course, or for a private online or on-site course contact sales@botlibre.biz

Friday, July 27, 2018

Hot Dog, Not Hot Dog - How to create your own deep learning neural network for image recognition without any programming

The Bot Libre platform is not just a bot platform, but also a platform for artificial intelligence and deep learning. With Bot Libre you can create your own deep learning neural network for image recognition, audio and speech recognition, object detection, games, prediction, data analysis, and more.

You may think that creating a "deep learning neural networks" sounds like a very complex thing to do, but with Bot Libre it is very simple, and requires no programming or data science experience. This article we walk you through the steps to create your own image recognition network.

Step 1 - Find Sample Images

First you need to decide what types of images you want your network to recognize. You can train a network to recognize and classify any type of images, as long as you have some sample images. The more sample images the better, but around 30 is normally enough for a basic network.

For this article, we will train a network to recognize images of "hot dogs". We could train it to recognize many different food types, but for the sake of simplicity we will train the network to classify images as just "hot dog" or "not hot dog".

First you need to find some sample images of hot dogs, just perform a Google image search for "hot dog", and save some of the images by right clicking on them (small images are fine, images will be scaled to 299x299 anyway). You will also need some images for "not hot dog", just find a random set of images for this.

Step 2 - Create Analytic

Next we need to create our analytic on Bot Libre.

  • Click browse analytics on Bot Libre
  • Click on New Analytic
  • Enter a name and category and click "Create"

Step 3 - Configure Analytic

Next we need to configure the analytic.

  • Click on the analytic's "Admin Console" button or menu.
  • Click on "Analytic Network"
  • Under "Analytic Type" select "mobilenet_0.50"
  • It will auto-fill the other settings, click the Save button

The other analytic type settings let you create different types of networks. Mobilenet is the smallest, and faster network for image classification. You could also choose Inception, this will be slower and much larger, but will have slightly better accuracy.

Step 4 - Upload Images

Next we need to upload our sample images.

  • Click on the "Media Repository" button, menu, or link in the analytic's Admin Console
  • Click on add label (green plus), enter "hot dog", click add again and enter "not hot dog"
  • Select the "hot dog" label and click the upload button, select all your hot dog images
  • Select the "not hot dog" label and click the upload button, select all your "not hot dog" images

Step 5 - Train Network

Next we need to train the network.

  • Click on the "Train Network" button, menu, or link in the analytic's Admin Console
  • Click on "Train", this may take a while

Step 6 - Test Network

Now you can test your network.

  • Click on the "Test Network" button from the analytic's main page
  • Upload an image to test
  • It will return you if the image is a "hot dog" or "not hot dog"

Try testing the network with images that you did not train it with. If it gives you the wrong result, then add the image to your train set and train your network again.

Your Done

You can now access your analytic from Bot Libre's website and share it with your friends. You can also access your analytic through the Bot Libre web API from your own website or app. You can download your network as a ".pb" (protocol buffer) file for usage with Tensorflow.

Bot Libre will be adding support for training more network types in the coming months. You can also train your network manually using python and Tensorflow, this is very complicated and requires some development and python experience. We can also develop a deep learning neural network for you through the Bot Libre AI development services, contact sales@botlibre.biz.

Thursday, July 26, 2018

Announcing Bot Libre 7

We have released Bot Libre 7!

The worlds most advanced bot platform just got better. Bot Libre 7 is a free and open source platform for developing and hosting bots. Bot Libre 7 includes support for chat bots, virtual agents, virtual assistants, social media bots, IOT bots, game bots, live chat, animated avatars, speech, deep learning analytics, and more. Bot Libre supports bots for the web, mobile, Facebook, Twitter, Skype, Telegram, Kik, WeChat, Slack, email, SMS, Alexa, Google Home, IRC, and new platforms are being added every month.

"Bot are the new apps". Mobile has replaced the web as the main communications market, and social media apps are the most popular mobile apps. Businesses need to connect with consumers on the platforms they use, so it now makes more sense for a business to create a bot/chat interface into their business instead of a website, or their own mobile app. Bot Libre lets you create a bot for yourself or your business and deploy the bot to the Facebook, Twitter, Skype, Telegram, Kik, WeChat, Slack, SMS, Alexa, Google Home, email, the web, mobile, and other services. Bots let you "write once deploy everywhere".

Bot Libre 7 supports rich HTML responses including buttons, links, choices, images, video, and audio. Bot Libre supports HTML responses on the web, mobile, and automatically maps HTML to social media platforms.

Bot Libre bots can be trained using natural language, chat logs, response lists, Twitter feeds, AIML, and scripting. Responses are automatically matched using a heuristic artificial intelligence algorithm and does not require any programming. Responses can also use keywords, topics, required words, labels, repeats, and other meta data.

Bot Libre 7 supports programming and scripting your bot using AIML 2, and Self. Self is our own dialect of JavaScript. Self is an object oriented scripting language, and integrated with an object database. Self extends JavaScript to provide support for natural language processing, state machines, object persistence, and includes a class library for accessing web services and utilities. Self also supports all AIML 2 operations, and some aspects of ChatScript patterns.

Bot Libre 7 is more than just bots, but a complete artificial intelligence platform. Bot Libre lets you create deep learning analytics for image recognition, speech and audio recognition, object detection, prediction and data analysis. You can create and train an image recognition analytic without any programming, just by uploading images. You can then access your analytics through our web API and mobile SDK, or from your bot.

New features in Bot Libre 7.0 since 6.5 include:

  • New website interface.
  • Integrated support for integrating bots with Amazon Alexa
  • Integrated support for integrating bots with Google Home and Google Assitant
  • Deep learning analytics for image classification, audio classification, and object detection
  • Regular expression patterns and extractors
  • Compound keywords, compound and required word lists and patterns, compound word synonyms
  • Support for Microsoft Speech, and QQ Speech

Create your own free account and bot today on botlibre.com, or let us build your bot for you on our commercial service Bot Libre for Business.

Monday, June 25, 2018

Introducing the new website for Paphus Solutions

Introducing the new website for Paphus Solutions. www.paphussolutions.com

Paphus Solutions in the company that develops the Bot Libre bot platform. Paphus Solutions Inc. is a Canadian corporation that specializes in bots, artificial intelligence, and deep learning products and services.

We provide consulting, training and development services in the field of bots, artificial intelligence, and deep learning.
Bots & AI can be utilized in any industry. We provide solutions globally in all industries including customer service automation, sales & marketing automation, social media automation, sales optimization, market forcasting, automated securities & crypto currency trading, and many more.

We provide the following services :

  • Chat bot design and integration, web, mobile, and social media
  • Social media automation, Twitter, Facebook, Telegram, Skype, Kik, WeChat
  • Customer service automation, live chat, forums, email
  • Technical support automation
  • Sales automation
  • Market forcasting
  • Automated securities & crypto currency trading
  • Image, audio, video classification and processing
  • NLP and data analysis
  • Deep learning model and network development
  • 3D avatar design
  • Mobile app development (Android, iOS)
  • Web development

Contact services@paphussolutions.com for more information. Or Chat live here
Or Chat with Paphus, the automated customer service agent for Paphus Solutions.

Monday, April 30, 2018

How to connect IBM Watson to Facebook, Twitter, Telegram, Skype, Kik, WeChat, web, and mobile using a Bot Libre proxy bot

IBM Watson is a brand that includes a set of products and services, made famous by its Jeopardy prowess. Watson includes a chatbot platform and conversational API.

You can access Watson's API from your own web server through any programming language. Bot Libre lets you create a "proxy" bot that forwards request to your Watson bot. This lets you leverage Bot Libre's many integrated services including integration with social media platforms such as Facebook, Twitter, Telegram, Skype, Kik, WeChat, and integration with web and mobile speech and 3D animated avatars.

To get started with Watson you can create an IBM Bluemix account here. Once you have created and trained your bot, you can access its web API credentials to connect it with Bot Libre.

This will give you the bot's web API URL, and the API user and password. Copy these and return to Bot Libre.

On Bot Libre create a new bot, and select the "watson_proxy_template" template. This will give you a new chatbot that has a single Self script the forwards all requests to the Watson API.

  • Click on your bot's "Admin Console" (gear button).
  • Click on the "Scripts" menu button.
  • Click on the "Watson" script and click the Edit button.
  • Find the below line of code in the script.
  • Replace the postJSONAuth URL with your Workspace URL from the Watson deploy console.
  • Replace the postJSONAuth user (2nd parameter) with your "Service Credentials" "Username".
  • Replace the postJSONAuth password (3nd parameter) with your "Service Credentials" "Password".
var json = Http.postJSONAuth("https://gateway.watsonplatform.net/conversation/api/v1/workspaces/616b5f69-dd49-4206-9c55-75f25b57ba18/message?version=2017-04-21", "0543af58-910d-4666-85be-7a8550279404", "txgVzPxkLup4", message);

Now your Bot Libre bot should be connect to your Watson bot. You can test it by clicking on your bot's Chat button. You can now connect your bot to social media, web, mobile, avatars and speech. You can also enhance your Watson bot by adding responses or scripts to your bot in Bot Libre to take advantage of Bot Libre powerful NLP, AI, and scripting features.

Monday, April 16, 2018

Deep Learning as a Service (DLAAS)

Bot Libre now supports creating and hosting Deep Learning and Analytic services.

Deep Learning and Analytic services are different than bots, as they perform a specific analysis function. They do not chat, nor interact with users, but use artificial intelligence and deep learning to perform analysis such as classifying images, recognizing speech or faces, performing NLP functions, playing games, and analyzing data.

Bot Libre lets you host your deep learning analytic on the web, and access it through the Bot Libre web API. Bot Libre provides an open analytics repository that lets you use analytics that we or other users have defined, or share your own analytics. You can also create your own private analytics, or only share your analytics with specific users.

To create an analytic you need to create and train a model using a deep learning framework such as Tensorflow or Bot Libre Analytics.

For example to train a model for image classification you can use the Inception model and retrain it for classifying your own image set. There are a lot of resources, models, and data available on the web such as the Poets tutorial for image classification.

Once you have trained your model you can upload the Tensorflow .pb and labels files in your analytic's Admin Console.



If you are interested in using deep learning for your business or project, we can also develop a deep learning neural network for you through our development services. If you are interested in knowing how artificial intelligence and deep learning can be used in your business or project, we can help through our AI consulting services. Contact sales@botlibre.biz

Friday, April 13, 2018

Using Response Next to Define Conversation Flows

Bot Libre 6.5 added support for define isolated conversation flows through using the response "Next" elements.

The next is a follow-up question that the user might ask after the bot gives the response. For example, if you had a response to the question "help" as "Do you want help with web or mobile?", then if the user responded with "web", that would be a follow-up question. Previously these could be defined using "Previous" elements, or using Self scripting. Using next provides a better option that is more powerful than previous, and easier to use than scripting.

A next question can be defined when adding or editing a response from your bot's Training & Chat Logs page. Click on the "show" next checkbox to enable the next input in the response editor.

After you enter the next question and click save, the next question will appear below the response in the response browser. Click on the checkbox before the next question to edit the next and define its response (and optionally another next for a nested dialog). You can add multiple next question to a single response. The response's next question form an isolated conversational context.

If a response has a next question, the bot will only choose a response from the response's next, it will not consider any other responses. The bot will find the best matching next question, otherwise use the default response. To enter a default next response, enter the question as #default.

You can nest next questions and responses to easily form complex conversations. Next question form an isolated and inherited conversational space. Each nested next level can define its own default response, but if it does not, then the bot will consider responses from the parent level, or use the parent default response.

Example Next Conversation
question: help
response: Do you want help with <button>web</button> or <button>mobile</button>
keywords: help

    question: web
    response: Is you issue with <button>HTML</button> or <button>JavaScript</button>?

        question: html
        response: See https://www.w3schools.com/html

        question: javascript
        response: See https://www.w3schools.com/js

    question: mobile
    response: Are you using <button>Android</button> or <button>iOS</button>?

        question: android
        response: See https://www.android.com

        question: ios
        response: See https://developer.apple.com/ios

    question: quit
    response: Okay. Let me know if you need further help.

    default: Please specify <button>web</button> or <button>mobile</button>, or type <button>quit</button> if you do not need help.

The above example using the response list format, which can be imported or exported from the Training & Chat Logs page. To define a next question add a tab to indent the next question and response. Using multiple tabs allows next to be nested.

The next questions are shown in the response browser as a set of nested tables so you can easily visualize the entire conversation. You can edit or delete next questions and response from the response browser.