🚀 原文地址:https://rasa.com/docs/action-server/events

Rasa 中的对话被表示为一系列的事件,自定义操作可以通过在对 Action Server 请求的响应中返回事件来影响对话过程。并非所有事件通常都由自定义操作返回,因为它们由 Rasa 自动跟踪(例如用户消息),其他事件只有在自定义操作返回时才能被跟踪。

事件共有以下几种类型:

  • slot
  • reset_slots
  • reminder
  • cancel_reminder
  • pause
  • resume
  • followup
  • rewind
  • undo
  • restart
  • session_started
  • user
  • bot
  • [ ] action

    1. slot

    在跟踪器上设置一个插槽,可以将该插槽设置为一个值,或者通过将插槽的值设置为null来重置插槽。

  • [ ] 自动跟踪:当插槽被同名实体填充时 ,需要自定义操作来设置插槽不使用实体自动填充。

  • [ ] JSON

    1. {
    2. "event": "slot",
    3. "name": "departure_airport",
    4. "value": "BER"
    5. }
  • [ ] 参数

    • name:要设置的插槽名称
    • value:设置插槽的值,数据类型必须与插槽的类型相匹配
  • [ ] Rasa Classrasa.core.events.SlotSet

    2. reset_slots

    将跟踪器上的所有插槽设置为null

  • [ ] 自动跟踪:从不

  • [ ] JSON

    1. {
    2. "event": "reset_slots"
    3. }
  • [ ] Rasa Classrasa.core.events.AllSlotSet

    3. reminder

    安排在未来某个时间触发的意图。

  • [ ] 自动跟踪:从不

  • [ ] JSON

    1. {
    2. "event": "reminder",
    3. "intent": "my_intent",
    4. "entities": {"entity1": "value1", "entity2": "value2"},
    5. "date_time": "2018-09-03T11:41:10.128172",
    6. "name": "my_reminder",
    7. "kill_on_user_msg": true,
    8. }
  • [ ] 参数

    • intent:提醒器被触发的意图
    • entities:和意图一起发送的实体
    • date_time:应该触发的操作执行日期,格式为 UTC 或者包含时区
    • name:提醒 ID,如果有多个相同 ID 的提醒,则只会运行最后一个
    • kill_on_user_msg:触发时间点之前的用户消息是否会中止提醒
  • [ ] Rasa Classrasa.core.events.ReminderScheduled

    4. cancel_reminder

    取消预订的提醒,与提供的参数匹配的所有提醒都将被取消。

  • [ ] 自动跟踪:从不

  • [ ] JSON

    1. {
    2. "event": "cancel_reminder",
    3. "name": "my_reminder",
    4. "intent": "my_intent",
    5. "entities": [
    6. {"entity": "entity1", "value": "value1"},
    7. {"entity": "entity2", "value": "value2"},
    8. ],
    9. "date_time": "2018-09-03T11:41:10.128172",
    10. }
  • [ ] 参数

    • intent:提醒器被触发的意图
    • entities:和意图一起发送的实体
    • date_time:应该触发的操作执行日期,格式为 UTC 或者包含时区
    • name:提醒 ID,如果有多个相同 ID 的提醒,则只会运行最后一个
  • [ ] Rasa Classrasa.core.events.ReminderCancelled

    5. pause

    阻止机器人响应用户消息,对话将保持暂停状态,并且在明确恢复对话之前不会预测任何操作。

  • [ ] 自动跟踪:从不

  • [ ] JSON

    1. {
    2. "event": "pause"
    3. }
  • [ ] Rasa Classrasa.core.events.ConversationPaused

    6. resume

    恢复之前暂停的对话,将此事件添加道跟踪器后,机器人将再次开始预测动作,并且在对话暂停的期间,它不会预测收到的用户消息的操作。

  • [ ] 自动跟踪:从不

  • [ ] JSON

    1. {
    2. "event": "resume"
    3. }
  • [ ] Rasa Classrasa.core.events.ConversationResumed

    7. followup

    强制采取后续行动,绕过动作的预测。

  • [ ] 自动跟踪:从不

  • [ ] JSON

    1. {
    2. "event": "followup",
    3. "name": "my_action"
    4. }
  • [ ] 参数

    • name:后续将执行的操作名称
  • [ ] Rasa Classrasa.core.events.FollowupAction

    8. rewind

    恢复最后一个用户消息的所有副作用,并从跟踪器中删除最后一个用户事件

  • [ ] 自动跟踪:从不

  • [ ] JSON

    1. {
    2. "event": "rewind"
    3. }
  • [ ] Rasa Classrasa.core.events.UserUtteranceReverted

    9. undo

    撤销最后一个机器人动作的所有副作用,并从跟踪器中删除最后一个机器人动作。

  • [ ] 自动跟踪:从不

  • [ ] JSON

    1. {
    2. "event": "undo"
    3. }
  • [ ] Rasa Classrasa.core.events.ActionReverted

    10. restart

    重置跟踪器,在/restart事件后,将没有对话历史记录和重启记录。

  • [ ] 自动跟踪:当/restart默认意图被触发时

  • [ ] JSON

    1. {
    2. "event": "restart"
    3. }
  • [ ] Rasa Classrasa.core.events.Restarted

    11. session_restarted

    通过重置跟踪器,并运行默认ActionSessionStart来开始新的对话。默认情况下,此操作会将现有的SlotSet事件转移到新的会话中,我们可以再session_config下的域文件中修改该配置。

  • [ ] 自动跟踪

    • 每当用户第一次开始与机器人对话时
    • 每当会话过期(在域文件中指定的session_expiration_time之后),用户恢复他们的对话
  • [ ] JSON

    1. {
    2. "event": "session_started"
    3. }
  • [ ] Rasa Classrasa.core.events.SessionStarted

使用restart事件重启对话,并不会自动导致session_started事件。

12. user

用户发送一条消息给机器人。

  • 自动跟踪:当用户向机器人发送消息时
  • [ ] JSON

    1. {
    2. "event": "user",
    3. "text": "Hey",
    4. "parse_data": {
    5. "intent": {
    6. "name": "greet",
    7. "confidence": 0.9
    8. },
    9. "entities": []
    10. },
    11. "metadata": {},
    12. }
  • [ ] 参数

    • text:用户消息的文本
    • parse_data:用户消息的解析数据,这通常由 NLU 填充
    • metadata:用户消息附带的任意元数据
  • Rasa Classrasa.core.events.UserUttered

此事件通常不会由自定义操作返回。

12. bot

消机器人发送一条消息给用户。

  • 自动跟踪
    • 每当自定义操作返回response
    • 每当响应直接发送给用户,而不由自定义操作返回时(例如utter_操作)
  • [ ] JSON

    1. {
    2. "event": "bot",
    3. "text": "Hey there!",
    4. "data": {}
    5. }
  • [ ] 参数

    • text:机器人发送给用户的文本
    • data:机器人响应的任何非文本元素
  • Rasa Classrasa.core.events.BotUttered

此事件通常不会由自定义操作显式返回,取而代之的是返回responses

12. action

记录机器人调用的操作,且仅记录操作本身,操作创建的事件在应用时会单独记录。

  • 自动跟踪:调用的任何操作(包括自定义操作和响应),即使该操作未成功执行。
  • [ ] JSON

    1. {
    2. "event": "action",
    3. "name": "my_action"
    4. }
  • [ ] 参数

    • name:被调用的操作名称
  • Rasa Classrasa.core.events.ActionExecuted

此事件通常不会由自定义操作显式返回。