我能够使用Rasa Core和Rasa NLU开发Dialog Flow ChatBot。但是无法实现对话式的ChatBot。任何人都可以请我帮忙。
For example:
===============================
Bot: Hi, how can I help you ?
User: I want to apply leave.
Bot: Sure, may I know when you want to apply ?
User: 07-07-2018
Bot: Ok, How many days ?
User: 1 day
Bot: Ok, which type of leave ?
User: Casual Leave ?
Bot: You want to apply Casual Leave from 07-07-2018 to 07-07-2018 ?
Bot: Please confirm Yes / No ?
User: Yes
Bot: Congrats, your leave applied successfully.
如果我依次输入所有内容,一切正常。
如果我以否定的方式或其他问题输入,循环不会中断。
假设
....
Bot: Ok, How many days ?
User: show me my leaves count
Bot: Ok, which type of leave ?
....
如何打破对话流程并使之具有对话性。
答案 0 :(得分:1)
使用Rasa Core,可以从实际示例中了解对话的流程。因此,您还应该提供用户不合作时的示例对话,以及在这种情况下机器人应如何响应。
如果您仅提供示例,其中用户提供了所有请求的信息,那么Rasa Core将知道如何处理所有信息。
答案 1 :(得分:0)
由于您意识到在某些情况下用户会查询请假数量,因此您也需要在stories.md中满足这一要求,以训练对话引擎。
## Happy Flow
* intent_applyLeave
- utter_whichDay
* informDay
- utter_typeOfLeave
* informType
- utterConfirmation
> checkConfirmation
## confirmYes
> checkConfirmation
* informYes
- action_ApplyLeave
## confirmNo
> checkConfirmation
* informNo
- action_ResetParams
## Not-so-Happy flow
* intent_applyLeave
- utter_whichDay
* query_leaveBalance
- utter_leaveBalance
- utter_whichDay
* informDay
- utter_typeOfLeave
* informType
- utterConfirmation
> checkConfirmation
我还将在Rasa Core中使用FormAction功能(请参见https://core.rasa.com/patterns.html)。在定义所需字段(例如StartDate,TypeOfLeave等)的地方创建一个自定义操作。这将有助于解决用户已经在单个句子中输入了必要信息的情况。当然,一定要用这些可能性来训练rasa_nlu