ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c#-在子对话框中获取LUIS实体

2019-11-11 09:07:19  阅读:157  来源: 互联网

标签:botframework luis c


我正在使用Bot Framework,LUIS和ActionBinding开发一个机器人.

在我的一个意图处理程序中,我调用一个新对话框,该对话框具有StartAsync(IDialogContext上下文)和ReceiveMessageAsync(IDialogContext上下文,IAwaitable< IMessageActivity>结果)方法

据我了解,用户在等待时键入的消息(带有context.Wait(ReceiveMessageAsync))不会发送到LUIS,对吗?

因此,如果我不需要解析字符串就可以理解用户在说什么,那是我的选择?可以使用message.调用每个消息的ILuisService.QueryAsync吗?

我希望能够检测用户键入的实体,以便将它们映射到缺少的字段.例如在此对话中:

User: I want to book a flight.                   // LUIS detects intent
Bot: Ok. Can you tell me more about your flight? // child dialog is called to handle the rest of the conversation
User: I want to go to Madrid.
Bot: To fly to Madrid you can choose between company A, B or C.
User: I want to go with A tomorrow night
Bot: Ok, searching for available tickets for tomorrow night in A...

在这种情况下,当检测到意图时没有初始实体,但是可能存在,并且在这种情况下,漫游器不会要求提供已经给出的信息.

对于我的项目,仅具有一对一问答的简单表单是不够的.如果用户想要更改一个或多个参数,我还需要对先前设置的参数进行更多的验证和确认(即,我需要返回所有参数,并检查更改后的参数是否影响它们).例如:

User: Wait, I want to fly to Barcelona instead.
Bot: Company A does not fly to Barcelona. You can choose between C and D.
User: Ok I want to fly with C.
Bot: There are tickets available for tomorrow night in company C. Keep the flight for tomorrow night?
User: yes.

最佳做法的任何提示或指导都会有很大帮助.

提前致谢.

编辑:

使用Sub Action解决方案,我的验证器将在哪里运行?在FulfillAsync方法上?我需要进行验证,然后向用户发送问题并了解他发送的回复(解析实体). LuisAction内部是否可能?

我想使用QueryValueFromLuisAsync,但是在查看之后,我需要传递paramName,这是动作属性之一(如果我没记错的话),而这就是我要避免的事情.我不想将一个答案(即message.Text)映射到一个字段,我想将一个答案映射到多个字段.

假设我需要填充一个具有6个属性的模型.如果漫游器向用户询问一个问题,并且他的答复中有3个实体,我想将这些实体映射到3个字段,然后仅对其余未映射的字段提出问题.

解决方法:

我对此的第一反应是避免使用自定义子对话框,如果想要在其中具有复杂的逻辑甚至覆盖子操作中的IsValid方法,则不要使用SubActions并创建自己的验证器.

但是,如果不可能,那么我将考虑重用QueryValueFromLuisAsync方法,该操作应该是您要与之交互的模型.该函数将最终调用LUIS,并将尝试根据场景分配结果或返回另一个意图/动作.我会尝试一下.

标签:botframework,luis,c
来源: https://codeday.me/bug/20191111/2018868.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有