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.SlotSet
2. reset_slots
将跟踪器上的所有插槽设置为
null
。[ ] 自动跟踪:从不
[ ] JSON:
{
"event": "reset_slots"
}
[ ] Rasa Class:
rasa.core.events.AllSlotSet
3. 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.ReminderScheduled
4. 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.ReminderCancelled
5. pause
阻止机器人响应用户消息,对话将保持暂停状态,并且在明确恢复对话之前不会预测任何操作。
[ ] 自动跟踪:从不
[ ] JSON:
{
"event": "pause"
}
[ ] Rasa Class:
rasa.core.events.ConversationPaused
6. resume
恢复之前暂停的对话,将此事件添加道跟踪器后,机器人将再次开始预测动作,并且在对话暂停的期间,它不会预测收到的用户消息的操作。
[ ] 自动跟踪:从不
[ ] JSON:
{
"event": "resume"
}
[ ] Rasa Class:
rasa.core.events.ConversationResumed
7. followup
强制采取后续行动,绕过动作的预测。
[ ] 自动跟踪:从不
[ ] JSON:
{
"event": "followup",
"name": "my_action"
}
[ ] 参数:
name
:后续将执行的操作名称
[ ] Rasa Class:
rasa.core.events.FollowupAction
8. rewind
恢复最后一个用户消息的所有副作用,并从跟踪器中删除最后一个用户事件
[ ] 自动跟踪:从不
[ ] JSON:
{
"event": "rewind"
}
[ ] Rasa Class:
rasa.core.events.UserUtteranceReverted
9. undo
撤销最后一个机器人动作的所有副作用,并从跟踪器中删除最后一个机器人动作。
[ ] 自动跟踪:从不
[ ] JSON:
{
"event": "undo"
}
[ ] Rasa Class:
rasa.core.events.ActionReverted
10. restart
重置跟踪器,在
/restart
事件后,将没有对话历史记录和重启记录。[ ] 自动跟踪:当
/restart
默认意图被触发时[ ] JSON:
{
"event": "restart"
}
[ ] Rasa Class:
rasa.core.events.Restarted
11. 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
此事件通常不会由自定义操作显式返回。