Rasa 中的对话被表示为一系列的事件,自定义操作可以通过在对 Action Server 请求的响应中返回事件来影响对话过程。并非所有事件通常都由自定义操作返回,因为它们由 Rasa 自动跟踪(例如用户消息),其他事件只有在自定义操作返回时才能被跟踪。
事件共有以下几种类型:
- slot
- reset_slots
- reminder
- cancel_reminder
- pause
- resume
- followup
- rewind
- undo
- restart
- session_started
- user
- bot
-
1. slot
在跟踪器上设置一个插槽,可以将该插槽设置为一个值,或者通过将插槽的值设置为
null来重置插槽。 [ ] 自动跟踪:当插槽被同名实体填充时 ,需要自定义操作来设置插槽不使用实体自动填充。
[ ] JSON:
{"event": "slot","name": "departure_airport","value": "BER"}
[ ] 参数:
name:要设置的插槽名称value:设置插槽的值,数据类型必须与插槽的类型相匹配
[ ] Rasa Class:
rasa.core.events.SlotSet2. reset_slots
将跟踪器上的所有插槽设置为
null。[ ] 自动跟踪:从不
[ ] JSON:
{"event": "reset_slots"}
[ ] Rasa Class:
rasa.core.events.AllSlotSet3. reminder
安排在未来某个时间触发的意图。
[ ] 自动跟踪:从不
[ ] JSON:
{"event": "reminder","intent": "my_intent","entities": {"entity1": "value1", "entity2": "value2"},"date_time": "2018-09-03T11:41:10.128172","name": "my_reminder","kill_on_user_msg": true,}
[ ] 参数:
intent:提醒器被触发的意图entities:和意图一起发送的实体date_time:应该触发的操作执行日期,格式为 UTC 或者包含时区name:提醒 ID,如果有多个相同 ID 的提醒,则只会运行最后一个kill_on_user_msg:触发时间点之前的用户消息是否会中止提醒
[ ] Rasa Class:
rasa.core.events.ReminderScheduled4. cancel_reminder
取消预订的提醒,与提供的参数匹配的所有提醒都将被取消。
[ ] 自动跟踪:从不
[ ] JSON:
{"event": "cancel_reminder","name": "my_reminder","intent": "my_intent","entities": [{"entity": "entity1", "value": "value1"},{"entity": "entity2", "value": "value2"},],"date_time": "2018-09-03T11:41:10.128172",}
[ ] 参数:
intent:提醒器被触发的意图entities:和意图一起发送的实体date_time:应该触发的操作执行日期,格式为 UTC 或者包含时区name:提醒 ID,如果有多个相同 ID 的提醒,则只会运行最后一个
[ ] Rasa Class:
rasa.core.events.ReminderCancelled5. pause
阻止机器人响应用户消息,对话将保持暂停状态,并且在明确恢复对话之前不会预测任何操作。
[ ] 自动跟踪:从不
[ ] JSON:
{"event": "pause"}
[ ] Rasa Class:
rasa.core.events.ConversationPaused6. resume
恢复之前暂停的对话,将此事件添加道跟踪器后,机器人将再次开始预测动作,并且在对话暂停的期间,它不会预测收到的用户消息的操作。
[ ] 自动跟踪:从不
[ ] JSON:
{"event": "resume"}
[ ] Rasa Class:
rasa.core.events.ConversationResumed7. followup
强制采取后续行动,绕过动作的预测。
[ ] 自动跟踪:从不
[ ] JSON:
{"event": "followup","name": "my_action"}
[ ] 参数:
name:后续将执行的操作名称
[ ] Rasa Class:
rasa.core.events.FollowupAction8. rewind
恢复最后一个用户消息的所有副作用,并从跟踪器中删除最后一个用户事件
[ ] 自动跟踪:从不
[ ] JSON:
{"event": "rewind"}
[ ] Rasa Class:
rasa.core.events.UserUtteranceReverted9. undo
撤销最后一个机器人动作的所有副作用,并从跟踪器中删除最后一个机器人动作。
[ ] 自动跟踪:从不
[ ] JSON:
{"event": "undo"}
[ ] Rasa Class:
rasa.core.events.ActionReverted10. restart
重置跟踪器,在
/restart事件后,将没有对话历史记录和重启记录。[ ] 自动跟踪:当
/restart默认意图被触发时[ ] JSON:
{"event": "restart"}
[ ] Rasa Class:
rasa.core.events.Restarted11. session_restarted
通过重置跟踪器,并运行默认
ActionSessionStart来开始新的对话。默认情况下,此操作会将现有的SlotSet事件转移到新的会话中,我们可以再session_config下的域文件中修改该配置。[ ] 自动跟踪:
- 每当用户第一次开始与机器人对话时
- 每当会话过期(在域文件中指定的
session_expiration_time之后),用户恢复他们的对话
[ ] JSON:
{"event": "session_started"}
[ ] Rasa Class:
rasa.core.events.SessionStarted
使用restart事件重启对话,并不会自动导致session_started事件。
12. user
用户发送一条消息给机器人。
- 自动跟踪:当用户向机器人发送消息时
[ ] JSON:
{"event": "user","text": "Hey","parse_data": {"intent": {"name": "greet","confidence": 0.9},"entities": []},"metadata": {},}
[ ] 参数:
text:用户消息的文本parse_data:用户消息的解析数据,这通常由 NLU 填充metadata:用户消息附带的任意元数据
- Rasa Class:
rasa.core.events.UserUttered
12. bot
消机器人发送一条消息给用户。
- 自动跟踪:
- 每当自定义操作返回
response时 - 每当响应直接发送给用户,而不由自定义操作返回时(例如
utter_操作)
- 每当自定义操作返回
[ ] JSON:
{"event": "bot","text": "Hey there!","data": {}}
[ ] 参数:
text:机器人发送给用户的文本data:机器人响应的任何非文本元素
- Rasa Class:
rasa.core.events.BotUttered
此事件通常不会由自定义操作显式返回,取而代之的是返回responses。
12. action
记录机器人调用的操作,且仅记录操作本身,操作创建的事件在应用时会单独记录。
- 自动跟踪:调用的任何操作(包括自定义操作和响应),即使该操作未成功执行。
[ ] JSON:
{"event": "action","name": "my_action"}
[ ] 参数:
name:被调用的操作名称
- Rasa Class:
rasa.core.events.ActionExecuted
此事件通常不会由自定义操作显式返回。
