Year: 2021

  • Resources for creating chatbot

    Hi, I’m looking for up-to-date resources (books, videos, articles) how to create open-domain chatbot.

    submitted by /u/TonyGodmann
    [link] [comments]

  • How to maintain chatbot regression tests with minimum effort

    The biggest and the most hateful challenge in software development is writing test cases and maintaining them. This is no different when it comes to chatbot development. At Botium we don’t write the regression tests, we generate them. This article shows you how we do this with the least amount of effort invested.

    To reach the best coverage you have to define all possible conversations of your conversation model. To implement and maintain it manually is really time consuming and sometimes a boring task, not to mention the human mistakes which can easily happen even in the case of a pretty simple chatbot. We have implemented a Crawler tool which will help you to do it in a very simple way.

    Botium Crawler concept

    The Crawler detects the buttons and the quick replies and makes conversations along them. The conversation tree is traversed by a little bit customized depth first algorithm. Each time the Crawler reaches an open-ended question (which means no button or quick reply is found), then the conversation is ended, the path marked as visited and a new conversation is started from the beginning (from the ‘conversation start message’) to keep the context of the conversation safe. (The Crawler process starts the conversations with the messages which are defined in the ‘conversation start messages’ parameter.) When all paths are visited in the conversation tree, then the session is ended and you get all the possible conversations as result so you will have a full regression test. Let’s see how it works in practice in Botium Box.

    Register a Crawler project

    For better understanding I use a very simple banking chatbot example, which is mixed with buttons and open-ended questions.

    With quick start you can define a Crawler project in three simple steps. In the first step you have to choose or register a new chatbot. Then in the second step you can configure some basic settings of the conversation crawler. In the third step you can save the Crawler project or you are able to start the first Crawler session immediately.

    Finishing the registration you will be redirected to the dashboard of your Crawler project. Here you can see the previous Crawler sessions and the current execution settings.

    Crawler session result

    During a Crawler session as many parallel processes are going to be started as many ‘Conversation start messages’ are defined in the execution settings. These processes will detect all possible conversations along buttons and quick replies as it was already mentioned in the Crawler concept.

    The example banking chatbot has bot initiated conversations. The Crawler is able to detect the buttons and quick replies in the welcome messages as well, so in this case we can let the ‘Conversation start messages’ field empty.

    Trending Bot Articles:

    1. How Conversational AI can Automate Customer Service

    2. Automated vs Live Chats: What will the Future of Customer Service Look Like?

    3. Chatbots As Medical Assistants In COVID-19 Pandemic

    4. Chatbot Vs. Intelligent Virtual Assistant — What’s the difference & Why Care?

    And here is the biggest value of the Crawler: the generated conversations. This chatbot is pretty small and simple, so in this case we have just five conversations generated as a result. In case of a more complex chatbot hundreds of test cases can be found, which is enormous work to do manually.

    The other feature, which is as useful as the generated conversations, is the flowchart, which shows the whole detected conversation tree in visual form to get a big clear picture about your chatbot.

    Open-ended questions

    As you can see in the previous section at the bottom of the flowchart there are ‘open-ended questions’ like ‘Which date would be best for you? We need 24 hours …’. In this case the conversation is stopped from Crawler point of view, but with human interaction it could be continued. We have a solution for this problem as well.

    For ‘open-ended questions’ you can define multiple user answers. These responses will be recognized in the next Crawler session as if they would be buttons. After adding some user response at the end of non-finished conversations the flowchart became much bigger and the generated conversations were doubled.

    How to use the generated conversations

    As you can see with some minutes of easy work we generated ten conversations for this bot. In case of a fully button based bot, you have even less work, just press the start button and wait for some minutes.

    But what can we do with these conversations? In other words these are test scripts. Clicking on ‘Copy Test Scripts into Test Set’ you are able to copy them into a new or an existing test set.

    A test set is a collection of test cases which can be added to a test project. At this point the regression test with a pretty good coverage is ready for this bot.

    Crawler configurations

    • Conversation start messages
      These are so called conversation start messages, which the Crawler starts the conversations with. As many start messages you have, as many parallel jobs will be started.
    • Maximum conversation steps
      This is the depth of the conversation in the conversation flow. (One step is a user-bot message pair.) When the configured depth is reached then the conversation is stopped and marked as successfully ended.
    • Number of welcome messages
      There are chatbots which initiate the conversation without user interaction. In this case you have to specify how many welcome messages will be sent by the bot.
      If the bot has a welcome message(s) and you don’t specify any start message, then the Crawler tries to find quick replies and buttons in the welcome message(s), and start the conversations along them.
    • Wait for prompt
      Many chatbots answer with multiple bot messages. In this case you can define a timeout until the Crawler has to wait for the bot messages after each simulated user message.
    • Exit criteria
      In case of a complex chatbot it occurs often that we want to test only a certain part of the conversation tree. In this case you can define exit criteria to exclude some part of the tree.
      If the text of any quick reply/button matches any of the exit criteria, then that conversation is stopped there and marked as successfully ended conversation.
    • Merge utterances
      All text messages are saved as utterances. The Crawler can recognize the non-unique utterances and merge them into one utterance.

    Conclusion

    Botium Crawler is a very powerful tool for creating regression tests. It’s able to generate all test cases on a happy path without user interaction in case of fully button based chatbot and with minimal user interaction in case of partially button based chatbot. With the flowchart you can overview your chatbot conversation tree and detect circles.
    It’s a brand new tool, so there is still a lot of room for improvements, and we already have many ideas. For example we would like to introduce different tree traversal algorithms to reach more effective performance so you will be able to choose the best fit algorithm for your chatbot. Furthermore you will be able to add RegExp as exit criteria, we are planning to make the open-ended question feature more handy, and so on.
    Without proper tools you will be lost. The Crawler feature is the part of our flagship product Botium Box which helps you in your path to successful chatbot testing.

    Don’t forget to give us your 👏 !


    How to maintain chatbot regression tests with minimum effort was originally published in Chatbots Life on Medium, where people are continuing the conversation by highlighting and responding to this story.

  • How technical are APIs?

    The driver for this article is not to start a debate on what things need technological prowess to understand versus the logical components of a highly scalable SaaS-based platform. We intend to help you fit a complex system into a logical block in a way that a layperson can understand.‍

    API means Talking

    Let’s take an example where you are talking to your friend. If the two of you speak in the same language, it’s convenient for one person to understand what the other is saying.‍

    ‍But imagine having the same discussion with a person who doesn’t speak the language. It seems tricky, right?

    ‍‍

    ‍Replace the people in these pictures with systems. APIs can be thought of as the communication medium across the system. Let’s take an example. You have two systems; System A is Engati, and System B is a ticketing system. Say you’d like to create a ticket using System B through Engati. To achieve this, both systems need to communicate in one language; They need to follow one API standard.

    Now you must be wondering if there are different languages to communicate between these systems. Of course, there are. Similar to how languages like English, French, Italian, and Hindi exist, there are multiple ways to communicate, like HTTP REST, SOAP, GraphQL, Sockets, etc. And just like English is a language that most people try to talk to communicate globally, systems often tend to support REST API-based communication (then again, there is always a group of people who don’t like to speak English)!‍

    Trending Bot Articles:

    1. How Conversational AI can Automate Customer Service

    2. Automated vs Live Chats: What will the Future of Customer Service Look Like?

    3. Chatbots As Medical Assistants In COVID-19 Pandemic

    4. Chatbot Vs. Intelligent Virtual Assistant — What’s the difference & Why Care?

    What is a REST API?

    Just like how every language has grammar, syntaxes, and dos and don’ts, communication between systems has its own set of rules. Let’s look at the details of the parts of speech/grammar equivalence for a REST API.

    ‍Going back to our example of Engati attempting to create a ticket in the ticketing system, that is a create operation. Hence Engati will have to invoke a REST API in the ticketing system. To invoke the API, you would need to know the parts of speech/grammar equivalence, i.e., the URL, Parameters, Request Type (which ideally should be POST), Request Body.

    So a logical diagram would look like this:‍

    ‍Similar to how you use a language dictionary to understand the words of the language, we need to look at the documentation of a system to understand the request and the response formats. What details will be sent and what will be received are more specific to each system that we talk to.

    The next time you are looking for an integration between two systems, remember that APIs are just two people (systems) talking to each other under all the technical layers.

    Engati’s extensive documentation page can help you navigate through APIs to create extensive functionality around the platform.

    This article was originally published in Engati blogs.

    Don’t forget to give us your 👏 !


    How technical are APIs? was originally published in Chatbots Life on Medium, where people are continuing the conversation by highlighting and responding to this story.

  • Building a Weather Bot using Bot Framework Composer- Part 2

    The first part of the tutorial can be found here — https://chatbotslife.com/building-a-weather-bot-with-bot-framework-composer-fa62b7cc9623

    A dialog contains one or more triggers. Each trigger consists of one or more actions which are the set of instructions that the bot will execute. Dialogs can also call other dialogs and can pass values back and forth between them.

    In this tutorial, you learn how to:

    • Add dialogs to a basic bot.
    • Run the bot locally and test it.

    Prerequisites

    What are you building?

    The main function of the bot is to report current weather conditions.

    To do this, you will create a dialog that:

    • Prompts the user to enter a postal code to use as a location for weather lookup.
    • Calls an external API to retrieve the weather data for the specified postal code.

    Create a new dialog

    1. Start Composer.
    2. Select the weather_bot bot project from the Recent bot list on the homepage.
    3. Select the three dots next your weather_bot bot project. Then select + Add a dialog.
    1. In the pop-up window, enter the following:
    2. Name: getWeather
    3. Description: Get the current weather conditions.
    1. Select OK to create the dialog.
    2. Now select the + button under the BeginDialog dialog event in the center of the authoring canvas. Select Send a response.
    3. On the right in the response editor, enter the following:
    4. Bot responseCopy
    • Let’s check the weather.
    1. We will add more functionality later, like retrieving the weather forecast, but first we need to connect the getWeather dialog to the bot with a trigger.

    Trending Bot Articles:

    1. How Conversational AI can Automate Customer Service

    2. Automated vs Live Chats: What will the Future of Customer Service Look Like?

    3. Chatbots As Medical Assistants In COVID-19 Pandemic

    4. Chatbot Vs. Intelligent Virtual Assistant — What’s the difference & Why Care?

    Connect the new dialog

    You can break down a conversation flow into different dialogs and then connect them. The following steps explain how to connect the newly created getWeather dialog to the main dialog.

    1. Select the weather_bot dialog. Then go over to the right and change the Recognizer Type to Regular expression recognizer.
    1. Now select the three dots next to the weather_bot dialog on the left and select + Add new trigger.
    1. In the Create a trigger pop-up window, enter the following information:
    • In both What is the name of this trigger (RegEx) and Please input regex pattern text boxes, enter weather.
    • Select Submit.
    1. Note
    2. This tells the bot to look for the word weather anywhere in an incoming message. Regular expression patterns are generally much more complicated, but this is adequate for the purpose of this example.
    3. In the center of the authoring canvas, under the weather Intent recognized trigger, select the + button.
    4. Hover over Dialog management and then select Begin a new dialog.
    1. On the right, under Dialog name, select getWeather. Now your weather bot is connected to the weather trigger.

    You can now test your bot, and the trigger and dialog you added to it.

    Test the bot

    1. Go to the top right of Composer and select Start bot. It may take a few moments for your bot to start.
    2. Note
    3. If the bot is still running from the previous tutorial, you can select Restart bot. This will update the bot runtime app with all the new content and settings.
    4. The Local bot runtime manager will open. Select Open Web Chat. The Web Chat pane on the right will appear.
    1. Now test some different phrases. Notice that the bot will send the message in the getWeather dialog if the word weather is in your response. Otherwise the bot will send the message in the Unknown intent trigger.

    Don’t forget to give us your 👏 !


    Building a Weather Bot using Bot Framework Composer- Part 2 was originally published in Chatbots Life on Medium, where people are continuing the conversation by highlighting and responding to this story.

  • The Winning Combination of Humans and Bots for a Seamless Customer Experience

    AI has been revolutionizing the face of customer service globally- more so during the pandemic- with AI-powered chatbots and other virtual agents taking the center stage. An increasing need to offer streamlined end-to-end customer experience is the primary reason why more and more firms are aggressively investing in modern technology to improve their customer support. However, traditional ways of providing customer service- which was solely based on humans- proved to be tedious both from the employee as well as from the customers’ perspectives.

    While customers (especially the millennials and gen-z users) were tired of pressing buttons to avail themselves different kinds of services, service reps also considered that answering the same questions repeatedly was monotonous. This is why most organizations in recent times have decided to switch to virtual agents, which use AI, ML and other tools to frame and deliver customized responses to different types of customer requests and queries.

    However, total dependence on such virtual agents is not feasible yet, and recent surveys have revealed that most customers are not quite happy with their overall experience with bots.

    There are two major problems that customers face when dealing with chatbots:

    1.Before making critical decisions (for example, buying a high-involvement product), customers often seek answers to complex questions from the brands, which usually involve several follow-up questions. This category of questions- which take longer periods for resolution based on the level of complexity or amount of information involved- are not handled well by bots.

    The virtual agents either give up and redirect the customer to human service reps or display links that the customers can wade through to resolve their queries by themselves, something that they might have already tried. Hence, it can be inferred that bots do not have the capability to identify tasks that customers have already performed via other channels on the website, and this is one of the reasons why bots might fail in handling complex customer issues.

    Trending Bot Articles:

    1. How Conversational AI can Automate Customer Service

    2. Automated vs Live Chats: What will the Future of Customer Service Look Like?

    3. Chatbots As Medical Assistants In COVID-19 Pandemic

    4. Chatbot Vs. Intelligent Virtual Assistant — What’s the difference & Why Care?

    2. Another area where virtual customer service agents are not performing adequately is in understanding human emotions accurately. We cannot ignore the fact that even the most sophisticated AI tools will not be able to replicate the complex range of human emotions. With the recent integration of sentiment analysis, companies have been able to solve this issue up to a certain extent. Conversational chatbots backed by sentiment analysis technology can determine the emotions and tonalities that are hidden behind a customer’s message (voice or text), and accordingly frame and deliver the right responses.

    Nevertheless, sentiments are highly subjective in nature and vary from person to person, which often reduces the accuracy of sentiment analysis. Emotions like irony, sarcasm, humour etc. cannot be comprehended by this tool, which results in higher detachment of the customer from the organization and creates a negative impression about the brand. Case in point: Indigo’s (unintentionally) hilarious response to a dissatisfied customer’s tweet which was laden with sarcasm. (For the uninitiated, you can read about the fiasco here).

    Problems like these necessitate the need for employing a combination of human and virtual customer service agents by organizations. While most of them would prefer talking to chatbots to get their issues resolved fast, customers also need to know that there are human agents available if their queries are too complex for the chatbots to resolve. There should be a logical escalation from bots to human agents. Handoff should be timed in a manner so that it occurs as soon as the bot fails to resolve the customer’s issue the second time.

    The human service rep should also get a summary of all the tasks that the user has already performed when it was conversing with the chatbot so that he is updated and takes off from there. This will avoid repetition and thereby save time. Such practice will reassure the customers that the company or the brand actually cares for them. An example of an efficient chatbot would be one whose problem-solving capability is clearly specified to the customer before he starts using it. If the chatbot makes it clear to the customer right in the beginning that in case it is unable to resolve his/her issue, he/she would automatically be redirected to human service reps, it will be able to earn the customer’s trust. Therefore, through proper expectation setting, the customer is less likely to get disappointed.

    Customer support is the section over which a company has more control in framing a positive brand perception in the minds of the customers. By designing efficient bots and by training service reps to communicate with users in a manner that perfectly aligns with the overall brand value proposition, the company will be able to retain happy customers and convince them to keep using its services.

    Don’t forget to give us your 👏 !


    The Winning Combination of Humans and Bots for a Seamless Customer Experience was originally published in Chatbots Life on Medium, where people are continuing the conversation by highlighting and responding to this story.