>> In this special build edition of the AI Show,
we hear from Pawan Taparia,
Product Manager on the Power Virtual Agents
team and Darren Jefford,
Principal Architect on the Bot Framework team.
Pawan and Darren will show us how Power Virtual Agents
can help expedite bot development with no-code,
low-code support made possible with deep integration,
with Bot Framework and
Bot Framework Composer. Make sure you tune in.
[MUSIC]
>> Hello everybody. My name is Pawan Taparia,
I'm a Product Manager in the Power Virtual Agents team.
I'm joined by my colleague Darren Jefford,
Principle Architect in the Bot Framework Solutions team.
Today's talk is a deep dive in how low-code enables
developers to build a world-class chatbots fast.
Specifically, we will talk about how developers can
accelerate chatbot development with
Microsoft's Power Virtual agents.
Seamlessly extend with built-in low-code support
for a true no-cliffs bot development experience,
and how developers can effectively collaborate with business users
and subject matter experts to build powerful, world-class bots.
Let's quickly introduce tools available to
developers to build chatbots before we dive deep into a demo.
Power Virtual Agents is Microsoft's latest no-code,
low-code hosted bot development platform.
It has been generally available since December 2019 and joined
the ranks of other low-code
Power Platform applications like Power BI,
Power Apps, and Power Automate.
For those that are new to Power Platform,
it is this singular low-code platform that spans Office 365,
Dynamics 365, Azure, and standalone applications.
Power Virtual Agents is now enabling everyone, business users,
and developers to effectively collaborate in building intelligent,
engaging, and useful chatbots.
Bot Framework Composer is
an open source visual authoring canvas for developers.
You can use it to design and
build sophisticated conversational experiences,
with language understanding, Language Generation,
and adaptive dialogues, all using open standards
to unleash the full power of the underlying Bot Framework SDK.
Let's get to the fun part, our demo.
We've built a bot that assists and
engages with employees over teams.
John is a new employee at Contoso.
He discovers a digital assistant in the Teams
app store and starts to interact with it.
It's John's first week at Contoso,
his assistant knows who John is and prompts him to do
the usual tasks any employee would do
in their first week, super helpful.
John's manager asked him to complete
all required trainings and schedule
one-on-one meetings with people on the team.
John turns to his assistant for help.
He now asks the assistant for more information about
the people his manager asked him to meet.
He can also ask who his peers work with,
and set up one-on-one times
directly from within the digital assistant.
Let's take a look at how we built this bot.
In this scenario, there are
two main topics that the bot is interacting with the user.
The first one is around required trainings,
and the second one mimics
a directory search on employees in an organization.
I'll quickly build the first topic to show you how easy
and intuitive it is to get started in Power Virtual Agents.
I create a new topic called Required Trainings.
Next, I add some semantically unique trigger utterances
that I expect my end users ask.
This trains the underlying universal AI model
to accurately trigger the dialogue.
Bot authors can continue to add new trigger utterances
over time, to further improve the triggering accuracy.
I'm now ready to start authoring my dialogue.
I'm visually able to add notes,
to ask questions, show a message,
and even call an action.
For this scenario, I need to first get the users role and team,
and use those pieces of information to call
another backend API to fetch these users required trainings.
My developer colleague helped me by creating
a new flow action in Power Automate using
one of the 300 plus data connectors
that I can seamlessly use in this conversation.
The first action needs an access token,
which I'm able to add to any node.
Next, I can use these variables returned from
prior actions into nodes or actions that follow.
I call another action to return the team and
roles specific required trainings for this user.
That is it. I have now
trained my bot to respond to users in this topic.
Let us test it to make sure it is working as expected.
With built-in testing canvas support,
bot authors can trace through all steps
of the conversation within Power Virtual Agents.
My next goal is to hook up directory search.
This is a pretty sophisticated conversation
and I need my developer colleague to help me with it.
Today, we enabled pro-code developers to build
remote skills that require them to set up Azure,
download and write code,
deploy and monitor their bot in their own subscriptions.
With low-code support that we plan to ship late summer,
we will enable pro-code developers
to bring in dialogues authored in
Bot Framework Composer and execute it within
Power Virtual Agents without needing any new infrastructure.
To show off our low-code support,
I've asked my colleague Darren Jefford,
to author a set of topics built using
Bot Framework Composer and imported in Power Virtual Agents.
With built-in, multi-author support,
I can easily share access with anybody.
Darren, I have just given you access, please go ahead.
>> Thanks for sharing, Pawan.
So let's get started with Bot Framework Composer.
This is a new Bot Framework tool we're
announcing to be generally available at Built.
So to get started,
within Power Virtual Agents,
I go ahead and click "Manage" then "Composer
Topics" and choose "Open Bot Framework Composer".
>> This is Bot Framework Composer.
I built Whoskill to provide organizational search,
which could be powered by the Microsoft Graph API.
This is being built entirely
within Bot Framework Composer and will
enable users to go ahead and then
explore people in their organization,
find people with various skills,
departments, and so on.
Actually, this is a preview skill
we're going to be announcing at Build.
So within Bot Framework Composer,
you can go ahead and get started and create a new bot.
You can create it from scratch or you can
actually choose one of the templates that we
provide that gives you some foundational pieces to get started.
The purpose of this demo,
we're going to go ahead and use something I created earlier.
So I'm going to go ahead and open
the Whoskill project within Bot Framework Composer.
So in this case, we have an intent.
An intent is how we provide examples the way humans may
express an operation they wish to do
and map that to something that bot can help them with,
and also pull out entities, as somebody who provided their name,
and e-mail address, a department name, and so on.
Actually, within Bot Framework Composer on the right-hand side,
you can see how we're managing Language Understanding or LU,
and you can see a variety of examples here.
Lots of different ways of actually asking
questions about a particular person.
It could be by name, it could be by e-mail address,
looking at the peers,
people in the same team,
but also going ahead and actually finding who e-mailed
me about a particular topic last week,
or who did I meet with, about what framework last week?
So lots of different ways of getting started with dialogues.
If you go back to Whois, I can see
the intent being recognized and we set some properties.
We go ahead and do some extraction of keywords,
which Language Understanding helps us with.
Let's jump into the search person dialogue.
So you can see here, we're beginning
a new dialogue called SearchPerson.
It's also worth just highlighting how easy it is to
add new shapes onto this design surface and
all of the various things you'd expect around conditions and
looping and also accessing external resources.
Let's take a look at SearchPerson.
This dialogue is begun
by obviously being called by the other dialogue that we saw.
The first thing we see is an authentication step using OAuth.
I have a configured connection name and I provide
some texts and information around the prompt the user will see.
You can see the token will then be stored in
my user state under the token element.
You can see the next step here.
You can see that I'm going ahead and making an HTTP request,
so I get a request against this particular URL.
There's a couple of variations if it's asking
questions about me or asking questions
about somebody else, who uses a different graph endpoint.
That's the HTTP request.
Again, it will then store that information within the bot memory.
I'm now going to go ahead and do it into another child dialogue.
This is where we've gone ahead and retrieved some information,
and depending on the type of questions,
did you ask about the department?
The job title? The telephone number?
Do you ask about a particular person?
We're going to show a different information based on
these scenarios, so you can see a quite a bit of variation,
especially where people don't have
direct reports or peers and things.
If we go back, here and this is really
where you start to see Language Generation coming into the mix.
These are responses that your bot is sending to the user.
So we now have separation of LU, Language Understanding,
dialogues, and Language Generation,
which are the responses from your bot.
So they're all externalizing these different assets.
I'll go ahead and click on the "Bot Responses" here.
You can actually see all of the responses
of this bot who aggregated together.
So you can see there's a welcome message,
this didn't understand message that might be used.
You actually see there's a variety of different responses.
Language Generation will pick these at random so, therefore,
as you use the bot, it will actually sound a bit more natural,
a bit, less robotic.
We can scroll down and see we've actually call
AdaptiveCards modeled in here, as well,
and you've got the templating.
So you're actually changing elements of
the AdaptiveCard depending on a person's name.
If we scroll down,
you see a variety of others.
There's more templating here using
data in memory and within structured objects.
These responses, aggregate it
together into the Language Generation files,
a great way for the user experience resources on your project,
copy editors to go ahead and curate
the tone of voice and how the bot sounds and feels.
So it's a great way of bringing
different disciplines into your bot development.
Actually back within the dialogues,
we've seen the Language Understanding, which triggers dialogues.
We've seen the dialogue flows and we've seen
how Language Generation provides the responses.
There's more drill-down sessions where we will
go into Bot Framework Composer here at Build.
So we now want to integrate this, back into Power Virtual Agents.
So within the Export feature,
today, you can export as a Skill.
This will allow you to take
your Bot Framework Composer build to experience,
make it available as a Bot Framework Skill and plug it
into Power Virtual Agent and
this is something you can use right now.
What we're now going to show is actually
exporting these declarative assets,
the dialogue files, the LU and the LG files,
how it's formed these adaptive dialogues.
We're going to go ahead and export them as
a zip file and then into the Power Virtual Agents.
I'm going to go ahead and export
the zip file and I'm going to
choose the same file that I used earlier.
Then back in this zip file that you can see here,
we have the dialogues files.
So if I go ahead and drill in to "GetManager",
you'll go ahead and see the Language Generation and
understanding and the dialogue file are all exported there,
has all scoped to that particular dialogue.
At the higher level, we've got Language Understanding and
Language Generation for a global level and some settings.
So all of this together encapsulates
that bot that we showed in zip file form.
Now, backward in Power Virtual Agents,
I'm going to go ahead and click "Import Composer Topics",
select the zip file and bring those assets into
Power Virtual Agents. Over to you, Pawan.
>> Wow, that is an advanced looking dialogue.
I'm so glad I have your help.
We're going to further simplify
this import expedience in a future iteration.
I can now use this composer topic
into any topic within Power Virtual Agents.
Just like I did earlier,
I create a new topic,
name Search topic, and add
some semantically unique trigger utterances.
Next, I call the action from the composer topic that we just
imported. That is it.
Because the underlying bot framework SDK is
common between Bot Framework Composer and Power Virtual Agents,
I can seamlessly execute this topic and
test this dialogue in Power Virtual Agents.
We run through the same dialogue experience we saw over in Teams.
The last thing I need to do is to
enable this bot to respond over Teams.
With a single click, I can enable
this bot to be registered as an app and Teams.
In summary, we saw how Power Virtual Agents
accelerates jackpot development through a fully hosted,
easy, intuitive no-code graphical experience.
Power Virtual Agents leverages the Power Platform and
the 300 plus data connectors to quickly add back
and automation and integration
through a conversational experience.
Power Virtual Agents and Bot Framework Composer, together,
offer a fully extensible, no-cliffs bot development experience.
Microsoft is uniquely empowering everyone to collaboratively
build intelligent chatbots using
our SaaS and PaaS tools. Thank you.
[MUSIC]