一般 LUIS 资料
对于您的 LUIS 模型,您将需要您的意图 - BookFlight 和 None。在您的BookFlight 意图下,您将拥有您的Utterances - 您希望能够触发BookFlight 意图的所有短语。
MyLuisApp
--BookFlight
----I want to book a flight
----Book a flight
----I need a plane ticket
----etc
--None
----Utterances that don't match any of your intents
根据this documentation,无意图非常重要。
将此功能添加到新机器人或核心机器人模板
提供了几个不同的示例来说明如何实现这一点,但最好的方法是使用对话框。你想要的是Waterfall Dialog。在此对话框中,您可以定义瀑布中的每个阶段,例如询问目的地,询问日期等。
为了触发 BookFlight 瀑布,您将拥有一个处理每个请求的 MainDialog,并与 LUIS 调度程序 link1 和 link2 进行检查,以根据 this example 找出用户意图。如果意图是BookFlight,那么您将启动包含图书飞行瀑布的 BookFlightDialog。
...
// Check dispatch result
var dispatchResult = await cognitiveModels.DispatchService.RecognizeAsync<DispatchLuis>(dc.Context, CancellationToken.None);
var intent = dispatchResult.TopIntent().intent;
if (intent == "BookFlight")
{
// Start BookFlightDialog
await dc.BeginDialogAsync(nameof(BookFlightDialog));
}
一般瀑布对话框的东西
您可以将步骤定义为:
var waterfallSteps = new WaterfallStep[]
{
AskDestinationAsync,
AskDepartureDateAsync,
ConfirmStepAsync,
FinishDialogAsync,
};
对于您的场景,实际上已经使用 BookFlight 意图创建了一个示例here。在official documentation 中提供了有关如何进行此设置和工作的完整指南。因此,您可以测试以查看一切如何工作,然后根据需要进行修改。
其他有趣的链接:
虚拟助手的东西
了解上述工作原理后,您将能够通过执行以下操作来修改虚拟助手模板以处理 BookFlight 意图:
- 将 BookFlight Intent 添加到连接到 VA 模板的现有 LUIS DISPATCH 应用。
- 向 BookFlight 意图添加话语。
- 保存并训练您的 LUIS 应用。
- 发布您的 LUIS 应用。
- 按照说明here 的步骤 3 运行 update_cognitive_models.ps1 脚本,这将拉下更改(您的新意图和话语)。
-
.\Deployment\Scripts\update_cognitive_models.ps1 -RemoteToLocal
运行此脚本的结果应该是在本地创建了一堆文件,以及正在更新的DispatchLuis.cs 文件以包含您的新意图。您还应该检查创建的Summary.html 文件以查看您的新意图。现在,您必须更新 VA 代码才能在触发新意图时实际执行某些操作 - 在 MainDialog.cs 文件的 RouteAsync 方法中添加另一个 if/case 语句 - 请参阅 here 示例。
类似这样的:
MainDialog.cs
protected override async Task RouteAsync(DialogContext dc, CancellationToken cancellationToken = default(CancellationToken))
{
// Call to dispatch to get intent
if (intent == DispatchLuis.Intent.bookflight)
{
// Start BookFlightDialog
await dc.BeginDialogAsync(nameof(BookFlightDialog));
}
...
}