I keep running into a problem with multiple forms. I create a new form with a number of slots that should be asked in sequence. but, sometimes, rasa will interrupt the slot filling sequence in the middle of the form questions and trigger a custom action (which isn’t in the rules or stories). Even more confusing, when I correct it in rasa interactive and tell it to continue with the form, it just triggers the wrong action again.
i’m not sure how to fix this problem. I’ve included the rules and domain below. In this case, I’m triggering the experience_form
. A custom action gets triggered after the experience_dose
question.
Thanks and please let me know if i can make this question any more clear. cc @SamS
DOMAIN
version: '2.0'
session_config:
session_expiration_time: 60
carry_over_slots_to_new_session: false
intents:
- inform
- act_asana_path
- flush_slots
- check_asana
- sleep_log
- affirm
- greet
- goodbye
- deny
- mood_great
- mood_unhappy
- bot_challenge
- question_test
- trigger_hello_world
- change_date
- verify_log_experience
entities:
- exercise
- sleep
- stress
- task_name
slots:
confirm_log:
type: text
influence_conversation: false
sleep_confirm:
type: text
influence_conversation: true
sleep:
type: text
influence_conversation: true
sleep_description:
type: text
influence_conversation: true
goal:
type: text
influence_conversation: true
asana_task_name:
type: text
influence_conversation: true
asana_number_select:
type: text
influence_conversation: true
asana_task_name_to_search:
type: text
influence_conversation: true
notes_from_asana_task_selected:
type: text
influence_conversation: false
asana_select_options_slot:
type: text
influence_conversation: false
asana_after_note_logged:
type: text
influence_conversation: false
verify_log_experience:
type: text
influence_conversation: false
experience_insight:
type: text
influence_conversation: false
experience_substance:
type: text
influence_conversation: false
experience_ask_missed_info:
type: text
influence_conversation: false
experience_dose:
type: text
influence_conversation: false
experience_behavior_change:
type: text
influence_conversation: false
experience_timing:
type: text
influence_conversation: false
experience_carry:
type: text
influence_conversation: false
experience_relates_to_task:
type: text
influence_conversation: true
responses:
utter_confirm_sleep:
- text: Do you want to talk about how you slept?
utter_greet:
- text: Hi! It's time for your daily sleep check-in. I'm excited to learn about your experience. Shall we get started?
utter_goodbye:
- text: Thanks for chatting. Bye!
utter_iamabot:
- text: I am a bot, powered by Rasa.
utter_ask_confirm_log:
- text: Did you exercise yesterday? Don't sweat it if you didn't run a marathon - walks count!
utter_ask_exercise:
- text: What kind of exercise did you do 💪 ?
utter_ask_sleep:
- text: How much sleep did you get last night?
utter_ask_sleep_description:
- text: How would you describe your sleep?
utter_ask_diet:
- text: Did you stick to a healthy diet 🥦 yesterday?
utter_ask_stress:
- text: What is your stress level right now 🧘 ?
buttons:
- title: low
payload: '/inform{"stress": "low"}'
- title: medium
payload: '/inform{"stress": "medium"}'
- title: high
payload: '/inform{"stress": "high"}'
utter_ask_goal:
- text: Setting goals - even small ones - is a great way to focus your day. What do you want to accomplish today 🥇 ?
utter_slots_values:
- text: |-
You've submitted the following answers:
- Exercised?: {confirm_log}
- Sleep: {sleep}
- Goal: {goal}
utter_no_worries:
- text: No problem :)
utter_ask_continue:
- text: Sorry, I don't quite understand. Do you want to continue?
utter_cheer_up:
- text: 'Here is something to cheer you up:'
image: https://i.imgur.com/nGF1K8f.jpg
utter_did_that_help:
- text: Did that help you?
utter_start_over:
- text: Ok, let's start over.
utter_happy:
- text: Great, carry on!
utter_question_test:
- text: What's your question?
utter_question_color_test:
- text: my favorite color is blue
utter_ask_asana_task_name:
- text: What's the task you'd like to check?
utter_experience_verify_log_experience:
- text: Would you like to log an experience?
utter_experience_insight:
- text: What was your insight or notable experience?
utter_experience_ask_missed_info:
- text: Is there something else you'd like to note about your experience?
utter_ask_experience_dose:
- text: How would you describe the dose?
utter_ask_experience_substance:
- text: How'd you describe the substance?
utter_ask_experience_context:
- text: How might you describe the timing or mindfullness practices?
utter_experience_carry:
- text: Do you feel like there are things you want to carry from this experience into your life?
utter_explanation_of_mechanism:
- text: How would you describe the mechanism of action for why your thoughts or behavior were different?
utter_experience_behavior_change:
- text: How would you describe how your behavior, such as conversational style or movements, changed?
utter_experience_timing:
- text: Please describe the context, such as time of day, around the experience.
utter_act_asana_path:
- text: Please describe the context, such as time of day, around the experience.
utter_asana_change_date:
- text: What new due date would you like for the task?
utter_experience_relates_to_task:
- text: does this relate to an asana task?
actions:
- act_asana_path
- action_ask_asana_after_note_logged
- action_ask_asana_change_date
- action_ask_asana_task_name_to_search
- action_ask_notes_from_asana_task_selected
- action_flush_slots
- action_hello_world
- action_submit_results
- check_asana_action
- confirm_log
- select_asana_action
- utter_ask_asana_task_name
- utter_confirm_sleep
- utter_exercise_info
- utter_greet
- utter_start_over
- validate_health_form
- validate_sleep_form
- validate_sleep_log
forms:
asana_form:
asana_task_name:
- type: from_text
intent: None
asana_task_name_to_search:
- intent:
- None
type: from_text
notes_from_asana_task_selected:
- intent:
- None
type: from_text
asana_after_note_logged:
- intent:
- None
type: from_text
sleep_form:
sleep_confirm:
- type: from_intent
intent: affirm
value: true
- type: from_intent
intent: deny
value: false
- type: from_intent
intent: inform
value: true
sleep_description:
- type: from_text
intent: None
not_intent: inform
health_form:
confirm_log:
- type: from_intent
intent: affirm
value: true
- type: from_intent
intent: deny
value: false
- type: from_intent
intent: inform
value: true
sleep:
- type: from_entity
entity: sleep
- type: from_intent
intent: deny
value: None
sleep_description:
- type: from_text
intent: None
not_intent: inform
goal:
- type: from_intent
intent: affirm
value: true
- type: from_intent
intent: deny
value: false
experience_form:
verify_log_experience:
- type: from_text
intent: affirm
value: true
experience_substance:
- type: from_text
intent: inform
value: true
experience_dose:
- type: from_text
intent: None
experience_insight:
- type: from_text
intent: None
experience_timing:
- type: from_text
intent: None
key_takeaway:
- type: from_text
intent: None
explanation_of_mechanism:
- type: from_text
intent: None
experience_behavior_change:
- type: from_text
intent: None
experience_carry:
- type: from_text
intent: None
experience_relates_to_task:
- type: from_text
intent: affirm
value: true
RULES version: “2.0”
rules:
#- rule: Say goodbye anytime the user says goodbye
# steps:
# - intent: goodbye
# - action: utter_goodbye
#- rule: Say 'I am a bot' anytime the user challenges
# steps:
# - intent: bot_challenge
# - action: utter_iamabot
- rule: Submit form
condition:
# Condition that form is active.
- active_loop: health_form
steps:
- action: health_form
- active_loop: null
# The action we want to run when the form is submitted.
- action: action_submit_results
- action: utter_slots_values
- rule: Ask exercise question
steps:
- intent: ask_exercise
- action: utter_exercise_info
- rule: Thanks
steps:
- intent: thankyou
- action: utter_no_worries
- action: utter_goodbye
- rule: ask sleep
steps:
- intent: sleep_log
- action: utter_confirm_sleep
- rule: activate sleep
steps:
- action: utter_confirm_sleep
- intent: affirm
- action: sleep_form
- active_loop: sleep_form
# submit form (activation is appended to each form)
- rule: submit sleep
condition:
- active_loop: sleep_form
steps:
- action: sleep_form
- active_loop: null
- action: utter_goodbye
# check asana
#- rule: check asana rule 1
# steps:
# - intent: check_asana
# - action: asana_form
# - active_loop: asana_form
- rule: asana action based
steps:
- intent: act_asana_path
- action: utter_ask_asana_task_name
- action: action_listen
- action: action_ask_asana_task_name_to_search
- action: action_listen
- action: action_ask_notes_from_asana_task_selected
- action: action_listen
- action: action_ask_asana_after_note_logged
- rule: experience to task rule
condition:
- active_loop: experience_form
- slot_was_set:
- experience_relates_to_task: True
steps:
- action: action_ask_asana_task_name_to_search
- rule: set new date
condition:
- slot_was_set:
- asana_select_options_slot: True
steps:
- intent: change_date
- action: action_ask_asana_change_date
- rule: rule log experience
steps:
- intent: experience_log
- action: experience_form