Botframework的每个用户后端提供的短语列表

时间:2018-05-21 16:12:56

标签: botframework cortana cortana-skills-kit

我有一个后端服务,用户可以在其中创建和命名房间和设备。我想与Cortana集成,并允许用户使用Cortana与他们的设备进行交互。我创建了一个托管在我后端的机器人,并添加了Cortana作为通道。我还将bot与我的OAuth 2服务器集成在一起,因此我知道哪个用户正在与bot进行交互。 我训练我的LUIS模型用短语和#34;在浴室打开灯","关掉所有灯"等等。

我的问题:每个用户都可以根据需要命名房间和设备。我事先不知道哪些房间和哪些设备将在服务中配置。当我在我的机器人中收到请求时,我可以找到该用户的所有设备。该列表在该点固定,可以用作短语列表 - 只允许列表中的设备出现在请求中。

这让我想到了一个问题:是否可以基于每个用户修改短语列表?或者配置一个URL,在LUIS处理请求之前可以从中检索最新的短语列表?基本上我所需要的就是避免在"起居室里打开灯的请求。虽然用户在系统中没有配置起居室,而是应该是"饭厅" (这只是一个简单的例子,在现实世界中会更复杂)。

我知道有LUIS REST API可以用来动态修改配置,但是: 1)它不是基于每个用户 2)它需要重新构建并重新发布LUIS模型

我相信Connected Home技能通过发现连接到该服务的所有设备以某种方式解决了这个问题,但我还没有找到任何可以用来解决我的技能问题的API。

编辑: 我正在寻找这样的功能: Cortana Connected Home 在链接Hue帐户后,Cortana知道用户拥有哪些设备,此时语音识别可以是智能的,并尝试将说出的单词映射到实际的设备名称。

1 个答案:

答案 0 :(得分:1)

首先,phrase list feature可以帮助LUIS识别意图和实体,它将影响整个LUIS应用程序。据我所知,LUIS中没有每用户基本词组列表功能的概念。

其次,LUIS app支持5,000 items per phrase list,如果您的应用系统房间(或设备)名称的数量未超过限制,您可以在短语列表中添加所有房间的名称(并添加所有设备'另一个短语列表中的名称。)

此外,您还可以尝试这种方法:当用户可以创建和命名房间和设备时,您可以使用房间和设备映射有关用户的信息,并将地图信息存储在外部存储中,例如数据库等。如果你pass query to LUIS,LUIS将帮助检测意图和实体(或实体或空实体列表),如果实体列表中没有任何实体,你可以从该外部商店查询房间名称的记录并提示用户选择房间。

代码段:

//query records of rooms’ name from that external store 
//then prompt user for select a room

PromptDialog.Choice(
    context: context,
    resume: ChoiceReceivedAsync,
    options: options,
    prompt: "Hi. Please Select the Room :",
    retry: "Please try again.",
    promptStyle: PromptStyle.Auto
    );

测试结果:

enter image description here