Skip to content
This repository was archived by the owner on Jun 30, 2022. It is now read-only.

Commit 322229b

Browse files
committed
merged master into next
2 parents d72fc0d + bbf8ff9 commit 322229b

File tree

98 files changed

+1752
-2022
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

98 files changed

+1752
-2022
lines changed

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,26 @@ This repository is the home for a set of templates and solutions to help build c
88

99
| Name | Description |
1010
|:------------:|------------|
11-
|[<img src="https://raw.githubusercontent.com/Microsoft/AI/4.4/docs/media/vatemplateintrocard.png" width="1250">](https://microsoft.github.io/botframework-solutions/overview/virtualassistant/) | [**Virtual Assistant.**](https://microsoft.github.io/botframework-solutions/overview/virtualassistant/) Customers and partners have a significant need to deliver a conversational assistant tailored to their brand, personalized to their users, and made available across a broad range of canvases and devices. <br/><br/> This brings together all of the supporting components and greatly simplifies the creation of a new bot project including: basic conversational intents, Dispatch integration, QnA Maker, Application Insights and an automated deployment.|
12-
|[<img src="https://raw.githubusercontent.com/Microsoft/AI/4.4/docs/media/calendarskillcardexample.png" width="1250">](https://microsoft.github.io/botframework-solutions/overview/skills/)| [**Skills.**](https://microsoft.github.io/botframework-solutions/overview/skills/) A library of re-usable conversational skill building-blocks enabling you to add functionality to a Bot. We currently provide: Calendar, Email, Task, Point of Interest, Automotive, Weather and News skills. Skills include LUIS models, Dialogs, and integration code delivered in source code form to customize and extend as required.|
11+
|[<img src="https://raw.githubusercontent.com/Microsoft/AI/4.4/docs/media/vatemplateintrocard.png" width="1250">](https://microsoft.github.io/botframework-solutions/overview/virtualassistant/) | [**Virtual Assistant (Preview).**](https://microsoft.github.io/botframework-solutions/overview/virtualassistant/) Customers and partners have a significant need to deliver a conversational assistant tailored to their brand, personalized to their users, and made available across a broad range of canvases and devices. <br/><br/> This brings together all of the supporting components and greatly simplifies the creation of a new bot project including: basic conversational intents, Dispatch integration, QnA Maker, Application Insights and an automated deployment.|
12+
|[<img src="https://raw.githubusercontent.com/Microsoft/AI/4.4/docs/media/calendarskillcardexample.png" width="1250">](https://microsoft.github.io/botframework-solutions/overview/skills/)| [**Skills (Preview).**](https://microsoft.github.io/botframework-solutions/overview/skills/) A library of re-usable conversational skill building-blocks enabling you to add functionality to a Bot. We currently provide: Calendar, Email, Task, Point of Interest, Automotive, Weather and News skills. Skills include LUIS models, Dialogs, and integration code delivered in source code form to customize and extend as required.|
1313
|[<img src="https://raw.githubusercontent.com/Microsoft/AI/4.4/docs/media/powerbi-conversationanalytics-luisintents.png" width="1250">](https://microsoft.github.io/botframework-solutions/overview/analytics/)| [**Analytics.**](https://microsoft.github.io/botframework-solutions/overview/analytics/) Gain key insights into your bot’s health and behavior with the Bot Framework Analytics solutions, which includes: sample Application Insights queries, and Power BI dashboards to understand the full breadth of your bot’s conversations with users.|
1414

1515
## Packages
1616

1717
### .NET
1818
| Name | Released Package |Daily Build |
1919
|---|---|---|
20-
| Microsoft.Bot.Builder.Solutions | [![BotBuilder Badge](https://buildstats.info/nuget/Microsoft.Bot.Builder.Solutions?dWidth=70)](https://www.nuget.org/packages/Microsoft.Bot.Builder.Solutions/) | [![BotBuilder Badge](https://buildstats.info/myget/botbuilder/aitemplates/Microsoft.Bot.Builder.Solutions?includePreReleases=true&dWidth=50)](https://botbuilder.myget.org/feed/aitemplates/package/nuget/Microsoft.Bot.Builder.Solutions) |
21-
| Microsoft.Bot.Builder.Skills | [![BotBuilder Badge](https://buildstats.info/nuget/Microsoft.Bot.Builder.Skills?dWidth=70)](https://www.nuget.org/packages/Microsoft.Bot.Builder.Skills/) | [![BotBuilder Badge](https://buildstats.info/myget/botbuilder/aitemplates/Microsoft.Bot.Builder.Skills?includePreReleases=true&dWidth=50)](https://botbuilder.myget.org/feed/aitemplates/package/nuget/Microsoft.Bot.Builder.Skills) |
20+
| Microsoft.Bot.Builder.Solutions (Preview) | [![BotBuilder Badge](https://buildstats.info/nuget/Microsoft.Bot.Builder.Solutions?dWidth=70)](https://www.nuget.org/packages/Microsoft.Bot.Builder.Solutions/) | [![BotBuilder Badge](https://buildstats.info/myget/botbuilder/aitemplates/Microsoft.Bot.Builder.Solutions?includePreReleases=true&dWidth=50)](https://botbuilder.myget.org/feed/aitemplates/package/nuget/Microsoft.Bot.Builder.Solutions) |
21+
| Microsoft.Bot.Builder.Skills (Preview) | [![BotBuilder Badge](https://buildstats.info/nuget/Microsoft.Bot.Builder.Skills?dWidth=70)](https://www.nuget.org/packages/Microsoft.Bot.Builder.Skills/) | [![BotBuilder Badge](https://buildstats.info/myget/botbuilder/aitemplates/Microsoft.Bot.Builder.Skills?includePreReleases=true&dWidth=50)](https://botbuilder.myget.org/feed/aitemplates/package/nuget/Microsoft.Bot.Builder.Skills) |
2222

2323
### JS
2424

2525
| Name | Released Package |Daily Build |
2626
|---|---|---|
27-
| botbuilder-solutions | [![npm version](https://badge.fury.io/js/botbuilder-solutions.svg)](https://badge.fury.io/js/botbuilder-solutions) | [Link](https://botbuilder.myget.org/feed/aitemplates/package/npm/botbuilder-solutions)
28-
| botbuilder-skills | [![npm version](https://badge.fury.io/js/botbuilder-skills.svg)](https://badge.fury.io/js/botbuilder-skills) | [Link](https://botbuilder.myget.org/feed/aitemplates/package/npm/botbuilder-skills)
29-
| generator-botbuilder-assistant | [![npm version](https://badge.fury.io/js/generator-botbuilder-assistant.svg)](https://badge.fury.io/js/generator-botbuilder-assistant) | [Link](https://botbuilder.myget.org/feed/aitemplates/package/npm/generator-botbuilder-assistant)
30-
| botskills | [![npm version](https://badge.fury.io/js/botskills.svg)](https://badge.fury.io/js/botskills) | [Link](https://botbuilder.myget.org/feed/aitemplates/package/npm/botskills)
27+
| botbuilder-solutions (Preview) | [![npm version](https://badge.fury.io/js/botbuilder-solutions.svg)](https://badge.fury.io/js/botbuilder-solutions) | [Link](https://botbuilder.myget.org/feed/aitemplates/package/npm/botbuilder-solutions)
28+
| botbuilder-skills (Preview) | [![npm version](https://badge.fury.io/js/botbuilder-skills.svg)](https://badge.fury.io/js/botbuilder-skills) | [Link](https://botbuilder.myget.org/feed/aitemplates/package/npm/botbuilder-skills)
29+
| generator-botbuilder-assistant (Preview) | [![npm version](https://badge.fury.io/js/generator-botbuilder-assistant.svg)](https://badge.fury.io/js/generator-botbuilder-assistant) | [Link](https://botbuilder.myget.org/feed/aitemplates/package/npm/generator-botbuilder-assistant)
30+
| botskills (Preview) | [![npm version](https://badge.fury.io/js/botskills.svg)](https://badge.fury.io/js/botskills) | [Link](https://botbuilder.myget.org/feed/aitemplates/package/npm/botskills)
3131

3232
## Need Help?
3333

docs/_docs/howto/skills/addingskills.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ Run the following command to add each Skill to your Virtual Assistant. This assu
5252
The `--luisFolder` parameter can be used to point the Skill CLI at the source LU files for trigger utterances. For Skills provided within this repo these can be found in the `Deployment/Resources/LU` folder of each Skill. The CLI will automatically traverse locale folder hierarchies. This can be omitted for any of the skills we provide as the LU files are provided locally. Also, you have to specify the `--cs` (for C#) or `--ts` (for TypeScript) argument for determining the coding language of your assistant, since each language takes different folder structures that need to be taken into consideration.
5353

5454
```bash
55-
botskills connect --remoteManifest "http://<YOUR_SKILL_MANIFEST>.azurewebsites.net/api/skill/manifest" --luisFolder [path] --cs
55+
botskills connect --botName YOUR_BOT_NAME --remoteManifest "http://<YOUR_SKILL_MANIFEST>.azurewebsites.net/api/skill/manifest" --luisFolder [path] --cs
5656
```
5757

5858
See the [Skill CLI documentation]({{site.baseurl}}/reference/botskills) for detailed CLI documentation.
@@ -96,7 +96,7 @@ Run the following command to update a Skill to your Virtual Assistant. This assu
9696
The `--luisFolder` parameter can be used to point the Skill CLI at the source LU files for trigger utterances. For Skills provided within this repo these can be found in the `Deployment/Resources/LU` folder of each Skill. The CLI will automatically traverse locale folder hierarchies. This can be omitted for any of the skills we provide as the LU files are provided locally. Also, you have to specify the `--cs` (for C#) or `--ts` (for TypeScript) argument for determining the coding language of your assistant, since each language takes different folder structures that need to be taken into consideration.
9797

9898
```bash
99-
botskills update --remoteManifest "http://<YOUR_SKILL_MANIFEST>.azurewebsites.net/api/skill/manifest" --luisFolder [path] --cs
99+
botskills update --botName YOUR_BOT_NAME --remoteManifest "http://<YOUR_SKILL_MANIFEST>.azurewebsites.net/api/skill/manifest" --luisFolder [path] --cs
100100
```
101101

102102
## Refresh Connected Skills

docs/_docs/howto/skills/addskillsupportforv4bot.md

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -164,12 +164,10 @@ var identifiedSkill = SkillRouter.IsSkill(_settings.Skills, intent.ToString());
164164

165165
if (identifiedSkill != null)
166166
{
167-
// We have identiifed a skill so initialize the skill connection with the target skill
167+
// We have identified a skill so initialize the skill connection with the target skill
168168
// the dispatch intent is the Action ID of the Skill enabling us to resolve the specific action and identify slots
169-
await dc.BeginDialogAsync(identifiedSkill.Id, intent);
170-
171169
// Pass the activity we have
172-
var result = await dc.ContinueDialogAsync();
170+
var result = await dc.BeginDialogAsync(identifiedSkill.Id, intent);
173171

174172
if (result.Status == DialogTurnStatus.Complete)
175173
{
@@ -198,12 +196,10 @@ Add the following code after your Dispatcher has executed passing the registered
198196
// Identify if the dispatch intent matches any Action within a Skill if so, we pass to the appropriate SkillDialog to hand-off
199197
const identifiedSkill: ISkillManifest | undefined = SkillRouter.isSkill(this.settings.skills, intent);
200198
if (identifiedSkill !== undefined) {
201-
// We have identiifed a skill so initialize the skill connection with the target skill
199+
// We have identified a skill so initialize the skill connection with the target skill
202200
// the dispatch intent is the Action ID of the Skill enabling us to resolve the specific action and identify slots
203-
await dc.beginDialog(identifiedSkill.id);
204-
205201
// Pass the activity we have
206-
const result: DialogTurnResult = await dc.continueDialog();
202+
const result: DialogTurnResult = await dc.beginDialog(identifiedSkill.id);
207203

208204
if (result.status === DialogTurnStatus.complete) {
209205
await this.complete(dc);

docs/_docs/howto/skills/manualauthsteps.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ order: 3
88

99
# {{ page.title }}
1010

11-
If you wish to make use of the Calendar, Email, Phone, and Task Skills standalone to the Virtual Assistant (local mode) you need to configure an Authentication Connection enabling use of your Assistant to authenticate against services such as Office 365 and securely store a token which can be retrieved by your assistant when a user asks a question such as *"What does my day look like today"* to then use against an API like Microsoft Graph.
11+
If you wish to make use of the Calendar, Email and Task Skills standalone to the Virtual Assistant (local mode) you need to configure an Authentication Connection enabling use of your Assistant to authenticate against services such as Office 365 and securely store a token which can be retrieved by your assistant when a user asks a question such as *"What does my day look like today"* to then use against an API like Microsoft Graph.
1212

1313
> These steps are not required if you plan to use the productivity skills as part of the Virtual Assistant, these steps are performed automatically when you add a Skill to your assistant.
1414

docs/_docs/overview/skills.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,4 @@ The following Skills are available out of the box, each of the documentation lin
2222
- [Productivity - To Do]({{site.baseurl}}/reference/skills/productivity-todo)
2323
- [Point of Interest]({{site.baseurl}}/reference/skills/pointofinterest)
2424
- [Automotive]({{site.baseurl}}/reference/skills/automotive)
25-
- [Phone]({{site.baseurl}}/reference/skills/phone.md)
2625
- [Experimental Skills]({{site.baseurl}}/reference/skills/experimental)

docs/_docs/overview/virtualassistant.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ In addition, Language Understanding support is provided by the LUIS Cognitive Se
5959

6060
The Virtual Assistant architecture is flexible and can be integrated with existing investments you have made into device-based Speech or Natural Language processing capabilities and integrate existing back-end systems and APIs.
6161

62-
Not only does the Virtual Assistant enable you to deliver your own unique experience, but you can also also handoff a user's query to their chosen Digital Assistant for certain types of questions.
62+
Not only does the Virtual Assistant enable you to deliver your own unique experience, but you can also handoff a user's query to their chosen Digital Assistant for certain types of questions.
6363

6464
Your Virtual Assistant can be integrated into your device and ecosystem to enable a truly intelligent experience.
6565
Through this contextual awareness your Virtual Assistant can deliver a further personalized conversation than otherwise possible.
@@ -83,4 +83,4 @@ Productivity scenarios are a great example where each organization would need to
8383
This is then further complicated by the need to support multiple languages and results in a large amount of work required for any organization building their own assistant.
8484
Our Virtual Assistant solution includes a new Skill capability enabling new capabilities to be plugged into an existing Virtual Assistant through configuration only.
8585

86-
All aspects of each Skill are completely customizable by developers as the full source code is provided on GitHub along with the Virtual Assistant.
86+
All aspects of each Skill are completely customizable by developers as the full source code is provided on GitHub along with the Virtual Assistant.

docs/_docs/reference/knownissues.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ There is a known issue in the `Botskills` CLI tool during the command's executio
145145

146146
Example of the `connect` command with a trailing backslash in the `luisFolder` argument:
147147
``` bash
148-
botskills connect --localManifest "<YOUR_LOCAL_MANIFEST_FILE>" --luisFolder "<YOUR_LUIS_FOLDER_PATH>/" --ts
148+
botskills connect --botName "<YOUR_VA_NAME>" --localManifest "<YOUR_LOCAL_MANIFEST_FILE>" --luisFolder "<YOUR_LUIS_FOLDER_PATH>/" --ts
149149
```
150150

151151
So, to avoid this, it's highly recommended to use `PowerShell 6` to execute the CLI tool commands. Also, you can remove the trailing backslash of the argument.

docs/_docs/reference/skills/architecture.md

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,46 @@ All communication between a Virtual Assistant and a Skill is performed through a
4848

4949
The `SkillManifest` provides the endpoint for the SkillDialog to communicate with along with action and slot information. Slots are optional and a way to pass parameters to a Skill.
5050

51-
When a Skill wants to terminate an ongoing dialog, it sends back an Activity with `Handoff` type to signal the completion of the current dialog.
51+
A `skill/begin` event is sent at the beginning of each Skill Dialog and the end of a Skill Dialog is marked by the sending of a `endOfConversation` event. This event contains a `SkillContext` object that contains matched Slot information, if the Virtual Assistant has populated matching data into it's SkillContext object then it's retrieved and passed across to the Skill.
52+
53+
For example, if there is a `Location` data item in Virtual Assistant SkillContext object and the Skill being invoked has a `Location` slot it will be matched and passed.
54+
55+
An example of a `skill/begin` event is shown below:
56+
57+
```json
58+
{
59+
"type": "event",
60+
"channelId": "test",
61+
"from": {
62+
"id": "user1",
63+
"name": "User1"
64+
},
65+
"conversation": {
66+
"id": "Conversation1"
67+
},
68+
"recipient": {
69+
"id": "bot",
70+
"name": "Bot"
71+
},
72+
"value": {
73+
"param1": "TEST",
74+
"param2": "TEST2"
75+
},
76+
"name": "skill/begin"
77+
}
78+
```
79+
80+
This dialog remains active on the Virtual Assistant's `DialogStack`, ensuring that subsequent utterances are routed to your Skill.
81+
82+
When an `EndOfConversation` event is sent from the Skill, it tears down the `SkillDialog` and returns control back to the Virtual Assistant.
5283

5384
See the [SkillAuthentication]({{site.baseurl}}/reference/skills/skillauthentication) section for information on how Bot->Skill invocation is secured.
5485

5586
## Skill Middleware
5687

5788
The `SkillMiddleware` is used by each Skill and is configured automatically if you use the Skill Template.
5889

59-
The middleware consumes the `skill/cancelallskilldialogs` event, when the Skill receives it it clears out the active dialog stack on that active Skill. This is useful in interruptions - i.e. if a user asks to cancel, a Virtual Assistant can send this event to the Skill and cancel the active dialog.
90+
The middleware consumes the `skill/begin` event and populates SkillContext on the Skill side making slots available.
6091

6192
## Interrupting Active Skills
6293

docs/_docs/reference/skills/automotive.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,10 @@ The Automotive Skill surfaces setting changes for testing purposes through an ev
120120
"general"
121121
],
122122
"parameters": []
123-
]
123+
],
124+
"configuration": {
125+
"ImageAssetLocation": "http://tempuri.org"
126+
}
124127
}
125128
```
126129

@@ -259,3 +262,5 @@ Follow the instructions below to add the Automotive Skill to an existing Virtual
259262
![Add My Skill Image]({{site.baseurl}}/assets/images/skills_maindialogupdate.jpg)
260263

261264
6. Add a project reference from your Virtual Assistant project to the Automotive Skill, this will ensure the DLL housing the skill can be found at runtime for skill activation.
265+
266+
7. In order for Adaptive Cards to render images associated with the Automotive skill you will need to take the Image assets located in the `wwwroot/images` folder of the Automotive skill and place in a HTTP location (potentially your Bot deployment) and place the base URI path in the skill configuration `ImageAssetLocation` property. If you skip this step, Adaptive Cards will not render with images correctly.

0 commit comments

Comments
 (0)