Github: Open Source EchoBot

The EchoBot is a simple example of the Open Source Dialogue Framework. The topic of this bot is to answer on echo requests. Echo requests have the form "echo [...]". Look at the Luis file to see what data was trained. To see how the base dialogues work, have a look at the EchoDialog and the NoneDialog. For small talk it contains a GreetingDialog as multiple and Test as single step small talk dialogues. Multiple step dialogues consist of response sets and the dialog file, which defines the steps. For single step dialogues just the response set is needed. From this set the bot response is chosen randomly and returned to the user. We strongly recommend to name the intents and JSON files similar. This eases the maintainability and makes it clearer. Moreover you can access it by the same indentifier. To model a deeper conversation in a base or multiple step dialogue just add more steps as in GreetingDialog.

Structure of the echo bot repository

The following is a detailed description of how the echo bot project is built.

Top-Level: Contains the solution of the repo, as well as the NuGet configuration where the feed for the chatbot framework is located.

data: Contains a sporadic version of the LUIS training data as template

echobot: Contains the actual project; the echo bot.

  • Bot.cs: The main class of the bot. Contains the definition of the assignment of intents to dialogs.

  • BotEmulator.bot: Configuration for the BotFramework emulator for testing

  • BotServices.cs: Defines the service connections of a bot instance (such as DB connections)

  • Program.cs: Contains the main method as usual

  • Startup.cs: Common startup class as in any .NET Core WebApp. You can activate the offline-connector here via the second constructor parameter.

  • appsettings*.json: logging options etc.

  • echobot.csproj: The project file for the Echo-Bot

  • luis.json: The configuration file for the used LUIS instance.

echobot/Controller: Contains the controller(s) for the web project

  • BotController.cs: The main controller for the Echobot. Takes care of creating new bot instances and receiving messages.

echobot/Dialogs: Contains the various dialogs.

  • EchoDialog.cs: Simple dialog that returns the last input.

  • NoneDialog.cs: Important dialog that deals with what happens if an input could not be classified.

echobot/Dialogs/Smalltalk-Data: Defines the set of responses for a small talk dialog. The naming convention matches the intents according to the following scheme: File XY.json <-> Intent st_XY. This naming is enforced by the use of the built-in smalltalk mechanisms.

echobot/Dialogs/SmallTalk: Contains an exemplary multi step smalltalk dialogue

echobot/Properties: Launch configuration

echobot/wwwroot: Contains static website code including the configuration of our offline-ms-bot-connector and a sample offline frontend.