Architectural Concepts

What is Atura

The Atura framework is built on top of the Microsoft Bot Framework and here are key features that we provide:

  • Consultant/agent takeover capability - allows the AI assistant to be paused and a real human to take over the conversation.
  • Unit testing flows - makes unit testing full conversation flows simple and facilitates a TDD approach to AI assistant writing.
  • Forms engine - allows the use of the powerful and flexible ATURA FORMS ENGINE.
  • Root coordinator dialog - creates a consistent way to generate "Root" dialog that branch off into other dialog.
  • Flexible NLP engine - allows the use of an alternative NLP engine, or IBM Watson for example, not just Microsoft LUIS.
  • Helper dialogs - a collection of dialogs that assist with complex tasks such as handling waiting for external web service calls that take more than 15 seconds to complete for example.
  • Auto-publishing to a service bus - automatically sends conversations to a service bus for further processing by external systems.
  • Auto-archiving of conversations - all conversations are saved for reporting and analytics purposes.


The following diagram shows what a typical Atura environment/installation comprises of.

architecture diagram


  • Client website – each client typically has their own website, or multiple websites. We can embed an Atura chat widget inside a client website without affecting the existing site content.
  • Webchat widget – embedded on the client's website and gives access to the bot (useful when the client does not need to support Whatsapp, Facebook Messenger etc.)
  • Atura dashboard – client "agents" use the dashboard to help end-users in the middle of their conversations with the bot. The dashboard can be configured to only allow agent assistance during working hours.
  • Microsoft Bot Framework – Or more accurately, Bot Framework "Channels". User messages can originate from many sources (Eg. our webchat widget, or Facebook messenger, etc.), and get sent to the Atura bot from a Bot Framework Channel. This abstraction means our bots can be called from many different sources.
  • Azure Active Directory – Client agent user accounts are managed in a client-specific Azure Active Directory. When an agent logs into the dashboard, this is facilitated by Azure AD.
  • Client bot – The client-specific bot code built on top of the Atura framework.
  • CosmosDb – Where configuration and conversations are stored.
  • Service Bus – A message bus used to pass messages around in the Atura system (eg. between Bot and Dashboard). Subscriptions can also be added to allow clients access to the messages flowing through the system (eg. for data warehousing purposes).
  • LUIS app – A client-specific "application" hosted in Microsoft LUIS. Client-specific NLP logic that maps user requests to Intents that the client bot knows how to handle.
  • Conversation Storage – User conversations are stored permanently. Currently in Azure Table Store, but in the near future in CosmosDb. The dashboard uses the conversation store for reporting purposes. The data can also be used to train better language models in LUIS.
  • Client APIs – Since a client bot consists of custom C# code, it is easy to integrate with existing Client APIs. We provide some helper dialogs to make calling APIs easier within the MS Bot Framework.
  • Azure Key Vault – Used to store sensitive keys in a secure manner.

Message flow

The following diagram shows roughly how a user message flows through the system. Note that the green arrows are not responses to the Http POST messages, but rather additional HTTP calls made from the Bot back to the Microsoft Bot Framework :

message flow diagram

"Coordinator" Root Dialog

The following diagrams shows how the RootDialogFactory and DialogLauncher work together to launch the appropriate Dialog based on the user's input:

coordinator diagram

The following diagram contains the same info as above, but with more detail:

coordinator detailed diagram


The diagrams below shows how a raw user message gets processed by the Atura message pipeline, and returns as a LanguageResult that can be processed by your custom dialog.

(See diagrams :)

language result diagram1

language result diagram2

language result diagram2