rasa_action解析
定义
当Rasa NLU识别到用户输入Message的意图后,Rasa Core对话管理模块就会对其作出回应,而完成这个回应的模块就是action。
在不同版本里面Rasa Core支持不同种类的action。
在rasa1.x版本里面,支持4中不同的action:即Retrieval actions、default actions、utter actions以及 custom actions。关于如何实现Actions和处理业务逻辑,我们在一篇文章中详谈,这里仅作简单了解。
1. default actions
DefaultAction是Rasa Core默认的一组actions,我们无需定义它们,直接可以story和domain中使用。包括以下三种action:
action_listen:监听action,Rasa Core在会话过程中通常会自动调用该action;
action_restart:重置状态,比初始化Slots(插槽)的值等;
action_default_fallback:当Rasa Core得到的置信度低于设置的阈值时,默认执行该action;
2. utter actions
UtterAction是以utter_为开头,仅仅用于向用户发送一条消息作为反馈的一类actions。定义一个UtterAction很简单,只需要在domain.yml文件中的actions:字段定义以utter_为开头的action即可,而具体回复内容将被定义在templates:部分,这个我们下面有专门讲解。定义utter actions示例如下:
actions:
- utter_answer_greet
- utter_answer_goodbye
- utter_answer_thanks
- utter_introduce_self
- utter_introduce_selfcando
- utter_introduce_selffrom
3. custom actions
CustomAction,即自定义action,允许开发者执行任何操作并反馈给用户,比如简单的返回一串字符串,或者控制家电、检查银行账户余额等等。它与DefaultAction不同,自定义action需要我们在domain.yml文件中的actions部分先进行定义,然后在指定的webserver中实现它,其中,这个webserver的url地址在endpoint.yml文件中指定,并且这个webserver可以通过任何语言实现,当然这里首先推荐python来做,毕竟Rasa Core为我们封装好了一个rasa-core-sdk专门用来处理自定义action。关于action web的搭建和action的具体实现,我们在后面详细讲解,这里我们看下在在Rasa Core项目中需要做什么。假如我们在天气资讯的人机对话系统需提供查询天气和空气质量两个业务,那么我们就需要在domain.yml文件中定义查询天气和空气质量的action,即:
actions:
...
- action_search_weather
另外,FormAction也是自定义actions,但是需要在domainl.yaml文件的forms字段声明。
forms:
- weather_form
4.Retrieval actions
警告:该功能还处于试验阶段。这个功能在未来的版本中可能被移除或改变。可以通过 forum进行反馈。这个功能后续被删除了