- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个问题...不幸的是,网络上的所有示例都太浅显,并没有真正涵盖这一点:
我有一个扩展 LuisDialog 的 RootDialog。这个 RootDialog 负责确定用户想要做什么。这可能是多件事,但其中之一是启动新订单。为此,RootDialog 会将调用转发给 NewOrderDialog,NewOrderDialog 的职责是找出一些基本细节(用户想要订购什么,他喜欢使用哪个地址),最后它会确认订购并返回到 RootDialog。
RootDialog 的代码非常简单:
[Serializable]
public class RootDialog : LuisDialog<object>
{
public RootDialog() : base(new LuisService(new LuisModelAttribute(ConfigurationManager.AppSettings["LuisAppId"], ConfigurationManager.AppSettings["LuisAPIKey"], domain: "westus.api.cognitive.microsoft.com")))
{
}
[LuisIntent("Order.Place")]
public async Task PlaceOrderIntent(IDialogContext context, LuisResult result)
{
await context.Forward(new NewOrderDialog(), OnPlaceOrderIntentCompleted, context.Activity, CancellationToken.None);
context.Wait(MessageReceived);
}
private async Task OnPlaceOrderIntentCompleted(IDialogContext context, IAwaitable<object> result)
{
await context.PostAsync("Your order has been placed. Thank you for shopping with us.");
context.Wait(MessageReceived);
}
}
我还为 NewOrderDialog 想到了一些代码:
[Serializable]
public class NewOrderDialog : LuisDialog<object>
{
private string _product;
private string _address;
public NewOrderDialog() : base(new LuisService(new LuisModelAttribute(ConfigurationManager.AppSettings["LuisAppId"], ConfigurationManager.AppSettings["LuisAPIKey"], domain: "westus.api.cognitive.microsoft.com")))
{
}
[LuisIntent("Order.RequestedItem")]
public async Task RequestItemIntent(IDialogContext context, LuisResult result)
{
EntityRecommendation item;
if (result.TryFindEntity("Item", out item))
{
_product = item.Entity;
await context.PostAsync($"Okay, I understood you want to order: {_product}.");
}
else
{
await context.PostAsync("I couldn't understand what you would like to buy. Can you try it again?");
}
context.Wait(MessageReceived);
}
[LuisIntent("Order.AddedAddress")]
public async Task AddAddressIntent(IDialogContext context, LuisResult result)
{
EntityRecommendation item;
if (result.TryFindEntity("Address", out item))
{
_address = item.Entity;
await context.PostAsync($"Okay, I understood you want to ship the item to: {_address}.");
}
else
{
await context.PostAsync("I couldn't understand where you would like to ship the item. Can you try it again?");
}
context.Wait(MessageReceived);
}
}
列出的代码不起作用。进入 Order.Place 意图后,它立即执行“成功”回调,然后抛出此异常:
Exception: IDialog method execution finished with multiple resume handlers specified through IDialogStack. [File of type 'text/plain']
所以我有几个问题:
最佳答案
所以第一个问题是您在“Order.Place”中执行了一个context.Forward
和一个context.Wait
,这根据定义是错误的。您需要选择:转发到新对话或在当前对话中等待。根据您的帖子,您想要转发,因此只需删除 Wait 调用即可。
除此之外,您有 1 个 LUIS 对话框,并且您正在尝试转发到一个新的 LUIS 对话框...我怀疑这是否可行;我可以想象这是两个不同的 LUIS 模型,否则就会出错。
根据您的评论,我现在明白了您要对第二个对话框执行的操作。问题(这与您的第二个问题有关)是以这种方式使用 LUIS 可能会造成混淆。例如:
activity.Text
可能会再次转到 LUIS(到第二个对话框的模型)并且不会检测到任何内容。第二个对话框将处于 Wait
状态,等待用户输入。现在,用户如何知道他需要输入地址或产品?你在哪里提示用户?看到问题了吗?
我怀疑你的第三个问题是你在 #1 中遇到的错误的副作用,我已经提供了解决方案。
如果您再澄清一点,我可能会更有帮助。您在第二个对话框中尝试使用 LUIS 执行的操作看起来不太正常,但也许有解释可能有意义。
通常的情况是:我从 LUIS
(“Order.Place”)获得意图,然后我启动一个 FormFlow 或一组提示来获取下订单的信息(地址、产品等),或者如果您想继续使用 LUIS
,您可能需要检查 Luis Action Binding .您可以在 https://blog.botframework.com/2017/04/03/luis-action-binding-bot/ 上阅读更多内容.
关于bots - 导航如何与 LUIS 子对话框一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47077488/
我的机器人有带有几个意图的 LUIS 对话。我从 MessageController 调用 LUIS 对话框。如果检测到意图,我将启动一个子对话。子对话框完成后,我调用 context.Done("r
LUIS 不断提示迁移到 Azure 以创作资源,因为这是 8 月份的要求。我继续并单击“迁移”,但最初它给了我一个错误,说 BadArgument: You have prediction keys
我尝试通过 URL 将机器人连接到 LUIS 引擎, var builder = require('botbuilder'); // Create bot and bind to console va
大约一个月前,我在 eu.luis.ai 上创建了 2 个 LUIS 应用程序,它们与它们链接的机器人运行得很好,但我似乎已经达到了 LUIS 请求的某种配额。我认为将我的计划升级到更高的级别可以解决
大约一个月前,我在 eu.luis.ai 上创建了 2 个 LUIS 应用程序,它们与它们链接的机器人运行得很好,但我似乎已经达到了 LUIS 请求的某种配额。我认为将我的计划升级到更高的级别可以解决
我已经实现了 None Intent 如下.. [LuisIntent("None")] public async Task None(IDialogContext context, LuisResu
// Assigning the published LUIS app URL which is obtained after training the related utterances in L
我希望我的机器人支持德语语言。因此,我为德语创建了一个单独的模型,其意图和实体与英语 模型中的相同。如何根据用户语言在运行时选择特定模型。显然,我可以要求用户选择他们的语言偏好,将其保存在 Bot D
我无法访问我的 LUIS 模型,也无法在 eu.luis.ai 上完成迁移。错误信息是:您的帐户迁移失败。以下是可能的原因列表:您使用无效的帐户名创建了资源。你的角色没有足够的权限在你的 Azure
我们正在 LUIS 上构建产品/Microsoft Bot framework我们的疑问之一是对人名的理解。任何人只需注册我们的网站即可使用该产品。这意味着任何注册的公司显然都可以拥有任意数量的任何姓
我在我的应用程序中收到异常说 Exception: Response status code does not indicate success: 403 (Quota Exceeded). 这是否意
Azure Luis 真的只支持每个应用程序最多 500 个意图吗? https://learn.microsoft.com/en-us/azure/cognitive-services/luis/l
我正在使用“列表”实体。但是,我没有达到我的预期结果。 以下是我对 LUIS 意图的了解: getAnimal 我想养一只猫**[动物]**。 以下是我对 LUIS 实体的了解: 列出实体[动物] 猫
我正在尝试学习如何使用 LUIS 来训练使用 NLP 在数据库中搜索数据的意图。我创建了一个 Intent UIM.Search 并添加了以下 Utterance ,其 token View 如下:
我有一个 LUIS 应用程序,我正在尝试让它识别{位置} 的 {组织名称}。 示例: 伊利诺伊州读书俱乐部 芝加哥读书俱乐部 奥兰多读书俱乐部,佛罗里达州 我尝试创建一个复合实体,其中子实体是一个 G
我们有薮猫LUIS工作正常并返回所需的模型 Intents和 Entities . 模型根据内容和目标业务领域进行分离,因此我们不想合并它们。还有一些Regex entities每个模型中的内容都是相
我正在开发 azure bot 并使用 LUIS。我想仅在特定模块而不是整个项目中使用 LUIS。这可能吗?任何帮助将不胜感激。 最佳答案 要在特定模块中使用 LUIS,您可以使用 LuisRecog
我正在尝试为我的 LUIS 应用程序运行批量测试。标记为列表实体的实体在图表内显示为误报。 我已经解决了以下问题,我相信这个问题已经得到解决。但我仍然对列表实体类型有疑问。我没有在批处理文件中包含列表
我有一个 Luis 应用程序,我正在使用启动 key 进行开发。我正在得到 Out of call volume quota. Quota will be replenished in xxxxxxx
如何更改所有者?我希望能够更改应用程序的所有者,因为其他人太忙了。请帮忙。谢谢! 最佳答案 任何 LUIS 应用均由其 Azure 资源定义,而 Azure 资源又由所有者的订阅决定。您必须记住,LU
我是一名优秀的程序员,十分优秀!