本文继续围绕工业级业务对话平台和框架Rasa 的ActiveLoop、LoopAction及TwoStageFallbackAction源码进行剖析。通过这些actions来深入理解Rasa微服务架构中action的工作机制。
一、Rasa ActiveLoop、LoopAction及TwoStageFallbackAction源码剖析
- ActiveLoop源码剖析
ActiveLoop继承自Event,当给定name有值时则激活这个loop,如果name的值为None,则不激活这个loop。
下面是在form中使用的样例,因为定义了active_loop,所以当样例中的intent被触发时,就会调用相应的action来使form进入循环运行状态:
如果要停止loop,即提交form时,则需要把active_loop的name设置为null:
下面的__init__方法会调用父类的方法来创建一个active loop event,方法参数包括:
-name:被激活loop的name,或者可以为None,如果当前loop处于不激活状态时
-timestamp:event创建时间
-metadata:额外的关于event的元数据,可以根据实际需要来使用,如通过metadata来自定义自己的通信协议
下面方法通过解析story来构建一个ActiveLoop event: