本文继续围绕工业级业务对话平台和框架Rasa 的系统内置Action源码进行解析。这些actions包括ActionSessionStart、ActionRestart、ActionBack等等。
一、Rasa微服务内核action.py源码剖析常见类、工具方法及微服务通信类
- ActionSessionStart、ActionRestart、ActionBack源码解析
关于ActionSessionStart:
这个类用于启动一个对话session,考虑到存在有之前的对话session,那么会从之前的session中获取所有的”SlotSet” events,然后应用到当前启动的新的session中。
ActionSessionStart继承自Action:
方法name返回这个action的name,它是一个常量定义:
方法_slot_set_events_from_tracker会从对话状态跟踪器tracker中获取已有的SlotSet events:
方法run首先通过创建一个SessionStarted的实例来构建一个event list “_events”,它会使用下面的方法重置tracker的状态:
然后从domain配置里判断是否需要使用前面session里的SlotSet events,如果是,则通过方法_slot_set_events_from_tracker获取后添加到”_events”中,然后再添加一个event “ActionExecuted(ACTION_LISTEN_NAME)” 来让对话机器人在启动新session后进入监听用户输入的状态。Run方法会返回”_events”:
关于ActionRestart:
这个类用于在对话重启时重置对话状态跟踪器为初始状态。如果配置有response,则对话机器人会发送对话重启的消息给用户。
ActionRestart继承自ActionBotResponse:
方法name返回这个action的name,它是一个常量定义:
方法__init__调用父类的方法来初始化重启: