Enterprise Assistant Bot template for Composer

APPLIES TO: Composer v2.x

Many organizations are looking to provide a centralized conversational experience across canvases for their employees. The Enterprise Assistant template in Bot Framework Composer provides a starting point for those interested in creating a virtual assistant for common enterprise scenarios. This template demonstrates a common bot building architecture and high-quality pre-built conversational experiences through a root bot connected to multiple skills. This pattern allows for the consolidation of multiple bots across the organization into a centralized solution where a root bot finds the correct bot to handle a query, accelerating user productivity. With Composer, you have the flexibility to personalize the assistant to reflect the values, brand, and tone of your company.

The template is designed to be ready out-of-the-box with support for common employee channels such as Microsoft Teams and Web Chat. It includes features from the Core Assistant Bot template and two pre-built skills (Enterprise Calendar Bot and Enterprise People Bot), with more to come.

Conversational experience

Design principles

This template aims to deliver an experience that lets bots communicate like humans, rather than teaching humans how to talk to bots. It leverages principles of natural conversation to let users accomplish common enterprise tasks, such as managing calendars and searching for colleagues. Employees in your organization will save time and have a more accurate understanding of their schedules and the people in your organization.

The end-to-end interactions with the Enterprise Assistant Bot are based on the following principles:

  • UX Pattern: the chat-optimized flows follow a consistent pattern of displaying visual information using Adaptive Cards (i.e., from complex elements in a list to a detailed view card). When appropriate, follow up actions are included to promote smooth transitions between relevant tasks.

  • Natural conversation: every reply from the assistant (excluding card responses) has at least 3 variant Language Generation responses.

  • Hero channels: the template is optimized for a great experience in Microsoft Teams and Web Chat. It is also designed so that support for additional channels can be added.

  • Chit-chat style: professional chit-chat is included in the template, can be replaced with other out-of-the-box personality offerings. Learn more about Personality Chat.

Learn more about these design principles in the Conversational User Experience Guide

Scenarios

Here is an overview of the scenarios included in the Enterprise Assistant Bot template:

Enterprise Assistant Bot Features diagram

Example interactions

Find example interactions from the Enterprise Assistant Bot and connected skills below:

Welcome experience

Enterprise Assistant Intro GIF

Switch between skills

Enterprise Assistant Context Switching GIF

Call the Enterprise Calendar Bot to view and manage events

Enterprise Assistant Calendar Flow GIF

Call the Enterprise People Bot to answer questions about the people in an organization

Enterprise Assistant People Flow GIF

Developer experience

The Enterprise Assistant Bot builds upon the features in the Core Assistant Bot template to include the following:

  • Orchestrator recognition
  • Connected skills

Orchestrator

The Enterprise Assistant Bot uses Orchestrator as the primary tool for language understanding to route incoming activities to the right intent handler or skill. Learn more about Orchestrator.

Connected skills

The template includes two connected skills out-of-the-box, the Enterprise Calendar Bot and Enterprise People Bot. These skills are hosted separately to demonstrate a pattern that is common in enterprise scenarios. Learn more about Skills.

Refer to the following documentation for more information about the pre-built skills:

Data usage and storage

The Enterprise Assistant project includes two enterprise skills, Calendar and People, which require access to users' Microsoft Graph data. The following sections outline what data is accessed, where it is stored, and the default data retention policy for each service. We recommend reviewing this information and adjusting the default configuration of your services to meet your organization's compliance standards.

Storage locations

This section outlines the different data stores used in a typical bot lifecycle, their purpose, and our recommendations for configuring them.

Azure Cosmos DB (Required)

Cosmos DB is the default and recommended provider for storing Bot State. Bot State is split into 4 different scopes, each with a different default lifetime. The default scopes are as follows:

  • Conversation State: For storing values that should persist over the lifetime of a conversation with a user on a given channel. In a channel with persistent conversations such as Microsoft Teams or Facebook Messenger, this could be stored indefinitely unless otherwise configured.

  • User State: For storing values that should persist over the lifetime of a user on a given channel. In a channel with persistent conversations such as Microsoft Teams or Facebook Messenger, this could be stored indefinitely unless otherwise configured.

  • Dialog State: For storing values that should persist for the duration of a dialog. If a dialog is left in a waiting state in a channel with persistent conversations such as Microsoft Teams or Facebook Messenger, this could be stored indefinitely unless otherwise configured.

  • Turn State: For storing values that persist only for the current turn. A turn indicates the time between the user's response. Every time a new activity from a user is received, Turn State is reset. Turn State properties are never written to a persistent storage location.

For more information about the data accessed and stored in each skill, refer to the following documentation:

Due to the potentially sensitive data stored by the skills in bot state, we recommend the following configuration for your Cosmos DB resource:

  • Configure a default Time to Live (TTL) for your Cosmos DB container. This value should be adjusted according to your organization's standards. Learn more.

If you have Application Insights provisioned and configured in your Project Settings, each incoming and outgoing activity will be logged including varying properties depending on your settings. You can configure your telemetry settings in your Project Settings in Composer by toggling the following properties:

"runtimeSettings": {
    "telemetry": {
        "logActivities": true,
        "logPersonalInformation": false
    }
}

The logActivities property controls whether activity will be logged in Application Insights, and the logPersonalInformation property controls whether the logged activities will include the Activity.Text, Activity.Speak. and Activity.From.Name properties.

By default, any telemetry stored in Application Insights will follow the default to retention duration. You may want to change this behavior depending on your organization's standards. Learn more.

Azure Blob Storage (Optional)

If you have transcript storage configured in your Project Settings each incoming and outgoing activity will be logged in Azure Blob Storage. This is useful for analysis of your bot's conversations but should be evaluated against your organization's compliance standards. You can configure transcript storage in your Project Settings in Composer by toggling the following property:

"runtimeSettings": {
    "features": {
        "traceTranscript": false
    }
}

Next steps

To set up the assistant created using Enterprise Assistant Bot template in Bot Framework Composer, follow the steps in Enterprise Assistant Bot Tutorial.

Submit a feature request with your detailed enterprise scenario for future consideration.