User Input Options For Microsoft Bot Framework Composer

Examples Of How Composer Creates Structure From Unstructured Conversational Input


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.

Image for post
Image for post

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

Image for post
Image for post

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.

Image for post
Image for post
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.

Image for post
Image for post
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.

Image for post
Image for post
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.


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.

Image for post
Image for post
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.

Image for post
Image for post
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.

Image for post
Image for post
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.

Image for post
Image for post
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.


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.


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.

NLP/NLU, Chatbots, Voice, Conversational UI/UX, CX Designer, Developer, Ubiquitous User Interfaces.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store