Photo by Megan Markham on Unsplash

A First Look At Microsoft Power Virtual Agent

And How Does It Fit Into An Existing Chatbot Ecosystem

Cobus Greyling
6 min readDec 8, 2019



Companies introducing Conversational Interfaces are looking to scale as quick as possible. Huge focus is placed on the UX and CX and often due diligence is not followed regarding the chatbot framework and basic architecture.

As the chatbot in specific and the Conversational AI environment in general are growing, more often than not problems are encountered in scaling the chatbot. It becomes hard to extend the environment.

This is especially the case when a graphic environment is used for the dialog management and conversational node instead of native code.

The Problem of Code

Traditionally a chatbot ecosystem consist of of 3 components;

  • Intents
  • Entities
  • Dialog Flow and Conversational Nodes

The Conversational nodes also including the Dialog. The Dialog being the wording displayed to the user, the output the chatbot gives the user.

Intents and Entities are defined within a GUI (Graphic User Interface) and often the output is a custom NLU API.

Power virtual Agents ~ Dialog Creation and Call Flow Setup

But then the conversational portion, is the hard work and takes the longest.

The folks at are doing a great job in deprecating the dialog flow, or state machine, if you like. I hope to spend some time on the Rasa environment in stories to come.

Within the Microsoft environment, the tool available was the Bot Framework, with which a Digital Assistant could be created or Skills. This necessitated native code (C# in most cases).

The Achilles Heel Of Chatbot Ecosystems

IBM Watson Assistant has mastered this to some extend, where you can define your dialog within the Watson Assistant environment. You can also test your chatbot within a preview or test pane within this environment.

Microsoft necessitated native code when it came to the dialog flow and state management, making us of a bot emulator for testing. Code can run locally on your machine or in the Azure cloud. Which in principle is a good thing.

But, when you opt for a visual design tool for call flow and state management, three impediments arise in time:

  • Scaling
  • Integration
  • Invariably you would want to include functions and extensions not available in your authoring environment.

Microsoft has extended their Conversational AI offering with an environment they call Power Virtual Agent (PVA). Before we look at the PVA functionality, it is important to note the following…

The PVA is a good design, prototype and wire-frame environment.

The PVA is an excellent tool to get your chatbot going, and a fairly advanced chatbot can be crafted with the PVA with API integration, the dialog authoring canvas is a advanced in functionality.

Test Pane On The Left ~ Authoring Canvas On The Right

Invariably in time your chatbot is going to outgrow PVA, and then what? This is the part where the Microsoft Conversational AI ecosystem is ready to allow extend.

Extend To Bot Framework Skills

Power Virtual Agents enables you to extend your bot using Azure Bot Framework Skills. If you have already built and deployed bots in your organization (using Bot Framework pro-code tools) for specific scenarios, you can convert bots to a Skill and embed the Skill within a Power Virtual Agents bot.

You can combine experiences by linking re-usable conversational components, known as Skills.

Within an Enterprise, this could be creating one parent bot bringing together multiple sub-bots owned by different teams, or more broadly leveraging common capabilities provided by other developers.

Skills are in itself Bots, invoked remotely and a Skill developer template (.NET, TS) is available to facilitate creation of new Skills.

Microsoft Power Virtual Agent — This is How Topics Work

Power Virtual Assistant

Power Virtual Agents, provide exceptional support to customers and employees with AI-driven virtual agents. Easily create and maintain bots with a no-code interface. That is the sales pitch, and it is true.

Virtual Power Agent — Trigger Phrases

What Are Topics

One of the key components if the VPA are Topics. When you create bots with Power Virtual Agents, you author and edit topics.

Topics are discrete conversation paths that, when used together within a single bot, allow for users to have a conversation with a bot that feels natural and flows appropriately.

These topics can be seen as different customer journeys or dialog paths within your chatbot. These topics are invoked by trigger phrases. These trigger phrases are defined by you as the user, and can be seen as a LUIS light.

You don’t need any other NLU/NLP configuration apart from these trigger phrases. Variants of trigger phrases will also activate the closest match. Hence a model of sorts are created by the Trigger Phrases and close matches are possible.

I view this as almost a LUIS light version. Topics are a combination of Intents and the actual conversational dialog.


Conversations in Power Virtual Agents centers around natural language understanding, which is the ability to understand user intent.

One fundamental aspect of natural language understanding is to identify entities in user dialog. Entities are crucial in any conversation, after intent has been established. Entities can be seen as nouns. An entity can be viewed as an information unit that represents a certain type of a real-world subject, like a phone number, zip code, city, or even a person’s name.

The Smart matching option enables the bot’s understanding of natural language. This can help match misspellings, grammar variations, and words with similar meanings.

If the bot isn’t matching enough related words, enhance the bot’s understanding further by adding synonyms to your list items.

Language Understanding (LUIS)

LUIS can be used as an additional NLP resource, as an API To identify valuable information in conversations. LUIS can be used for an initial NLP high pass or a fallback if the right topic cannot be determined. LUIS integrates seamlessly with the Azure Bot Service, making it easy to create a sophisticated bot. And also to scale your solution.

Creating A Bot in Power Virtual Agent

Start by Giving your Chatbot a Name
The first bot can take up to 15 minutes to create
The documentation is good and the environment very intuitive

Live Agent Handover

The transfer to the agent can be implicit or explicit. Implicit could be where the chatbot detects the dialog is not making any progress and the conversation is handed over to an agent.

Hence with Power Virtual Agents, you can hand-off conversations to live agents seamlessly and contextually.

When you hand off a conversation, you share the full history of the conversation (the context) as well as all user-defined variables. This means live agents that are using any connected engagement hub can be notified that a conversation requires a live agent, see the context of the prior conversation, and resume the conversation.

Read more about it here.


Basic analytics are included which is constituted by a summary, customer satisfaction and sessions. Sessions can be views as resolved, escalated and abandoned.

Default Analytics View


Up until this point, I always felt IBM Watson Assistant had the initiative when it comes to a complete development and configuration environment. Rasa also made it real easy to get a even a prototype chatbot going. Admittedly my knowledge of DialogFlow is very thin.

There as been general resistance in Chatbot development to native code, for some or other reason; this has not been an advantageous to Microsoft. All of this might have changed with the advent of Power Virtual Agent.

Photo by ActionVance on Unsplash



Cobus Greyling

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