User Input Options For Microsoft Bot Framework Composer

Examples Of How Composer Creates Structure From Unstructured Conversational Input

Cobus Greyling
7 min readApr 26, 2020

--

Introduction

Composer is a very accessible & free tool to start developing chatbots in your local environment without cloud connectivity, should you choose…

There are a number of tools to create conversational interfaces currently available. One of the aspects of a conversational interface is the dialog flow or state management.

This is where the dialog state and dialog turns must be manged, as the conversation moves from node-to-node.

There are various approaches to this problem…

These approaches can generally be divided into three groups.

Approaches To Dialog Development

Can be divided into three main categories:

  • Machine Learning (ML)
  • Native Code
  • Graphic User Environment

Approaches have advantages & disadvantageous.

Advantages are evident at the beginning.

Disadvantages present themselves towards the end.

RASA Interactive Learning & Conversation Visualization.

Machine Learning

RASA is most probably the most prolific exponents of the ML approach. The idea here is to detect and anticipate user behavior based on ML and manage the conversational dialog turns and flows. For many organizations this is too abstract and intangible.

Native Code

The second approach is native code. This is the one option which is easiest to scale when the chatbot grows in functionality, scope and integration. Microsoft’s Bot Framework is a good example where native code is used, like C# or Python.

These articles will help you with the setup and get started with Bot Framework Composer & the emulator…

IBM Watson Assistant is an interesting case, as it combines a graphic user interface and native code for dialog management. Within Watson Assistant’s GUI you can add JSON payloads etc.

IBM Watson Assistant — Dialog Development

Once you have created your dialog within the GUI, you will most probably need a mediation layer which will necessitate native code.

Graphic User Interface

To most approaches there are advantages and disadvantageous. The challenging part is that the advantages are presented at the onset which excites everyone regarding the approach.

The disadvantageous and problems present themselves when the the conversational environment needs to scale or more functionality needs to be added.

Advantages of having a GUI:

  • Rapid ramp-up for developers and designers in acquiring necessary skills
  • Ease of presentation of concepts, designs and basic architecture
  • Visual inspection and representation
  • Training new team members
  • Merging of design, prototyping and development
  • MVP conception and development is fast

Possible Disadvantageous:

  • Development investment is made in propriety code and environment
  • Development Environment Limited to functionality and components available
  • Scaling in a corporate environment can be troublesome
  • Overhead in duplication and workarounds

Microsoft Bot Framework Composer

Dialog Invocation

You are able to create a fairy flexible and very functional chatbot with Composer with no Conversational AI or NLU/NLP. Making use of regular expression, which can also be referred to as key word spotting.

Invoking A Dialog Via Regular Expressions

Composer can also be fully integrated with LUIS. However without any NLP/NLU you can build a real-world chatbot with various options for user input. Which is fairly robust and resilient.

Composer also allows for conversations or dialogs where the user input is governed by input types defined by the developer.

This gives you the ability to structure the instructed input without making use of machine learning or Conversational AI.

To to my point at the beginning, that composer is a ideal route for anyone who wants to develop a chatbot…

But without any entry barrier of licensing or deep programming skills. Your dialogs can be built out later to incorporate LUIS.

User Input Types

Within the dialog there are plus signs where you can click on and create different conversation nodes. The nodes are listed below; and for the purposes of this article we are only going to have a look at the Ask a question node.

Dialog Canvas With Conversational Flow And Conversational Nodes

There seven input types you can defined…

Number Input

Number input is where you prompt the user for a number and expects the user to enter a number within the dialog.

The Chatbot Expecting An Input Number

As you see in this example, the user can enter the number embedded within a dialog, and composer can extract the number from the text.

A default value can be defined, with error messages and retries.

Validation rules can be set, for instance if the number input must be a certain length; length(this.value)==5.

These regular expression implementations create the impression of contextual awareness.

Confirmations

Not only do confirmations give you the opportunity to present a finite list of options which can be presented s buttons. But it allows you to define synonyms, which are optional, to each choice.

Confirmation Options With Synonyms

Firstly, this is handy to confirm an order any other dialog you want the user to agree to.

But you have the opportunity to present the choices to the user graphically.

And you can create synonyms to each option the user can quickly respond to by just entering the synonym in text. Again, this gives composer and appearance of being NLU capable, which is not at this stage.

Multiple Choice

Prompt the user with multiple options, and the chatbot collects the information the user picked from a list of choices.

Multiple Choice Dialog

This dialog is again more structured and ideal when concluding a transaction and you want to introduce structure into the conversation to bring a sense of order and reassurance to the user.

Where graphics are not possible by virtue of the medium not making provision for it, the menu can be number driven.

Date & Time

Quite often in chatbot development, what is hard in theory can be easy in practice. And what is easy in theory can be very hard practice.

Date and time entry is a case in point of the latter.

It can be hard to get date and time via a highly unstructured interface like natural language.

The Date Is Automatically Detected From The Utterance: “in two weeks time”

When the chatbot asks for a date, the user might respond with something like “next week Tuesday” or “in two weeks time”. The standard built-in date time conversational node of composer is astounding in this regards.

Compound Date Time User Input

The user can go as far as saying “1 pm in 3 weeks time” and Composer can derive the time as 13:00 and the date is exactly in 3 weeks time.

This comes standard with composer it is truly impressive in its ability the make sense of fairly complex and unstructured input from the user.

Attachments

This enables a dialog which gathers an attachment such as image or music by the user. There are many instances where you would want the user to upload an attachment. In a customer service setting the user uploaded attachment might be an invoice, proof of payment, identification document etc.

Conclusion

If you are looking to get started with chatbot development, but you do not have much knowledge in programming, NLU or NLP. Or you might not have any budget for development tools and or environments.

Or you don’t have huge processing power, or energy for a complex stack of software to install with tricky configurations…then composer is the ideal starting point.

--

--

Cobus Greyling

I explore and write about all things at the intersection of AI & language; LLMs/NLP/NLU, Chat/Voicebots, CCAI. www.cobusgreyling.com