我有一个后端服务,用户可以在其中创建和命名房间和设备。我想与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知道用户拥有哪些设备,此时语音识别可以是智能的,并尝试将说出的单词映射到实际的设备名称。
答案 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
);
测试结果: