Hello,
I’ve written a simple story (inspired from the FormBot tutorial):
## happy path
*greet
- utter_greet
* request_travel
- airline_ticket_form
- form{"name": "airline_ticket_form"}
- form{"name": null}
- utter_slots_values
Nonetheless, a request_travel intent does not trigger the form. More precisely:
“Je veux réserver des billets pour Londres” (Book tickets for London) → is decoded by the NLU module as a request_travel intent.
Received user message 'je veux réserver des billets pour Londres'
with intent '{'name': 'request_travel', 'confidence': 0.9524035453796387}'
and entities '[{'start': 34, 'end': 41, 'value': 'Londres', 'entity': 'location_arrival',
'confidence': 0.7300485127766787, 'extractor': 'ner_crf'}]'
BUT Form is not triggered:
rasa_core.processor - Logged UserUtterance - tracker now has 6 events
rasa_core.processor - Current slot values:
location_arrival: None
location_departure: None
requested_slot: None
rasa_core.policies.memoization - Current tracker state [None, {}, {'prev_action_listen': 1.0, 'intent_greet': 1.0}, {'prev_utter_greet': 1.0, 'intent_greet': 1.0}, {'prev_action_listen': 1.0, 'entity_location_arrival': 1.0, 'intent_request_travel': 1.0}]
rasa_core.policies.memoization - There is no memorised next action
rasa_core.policies.form_policy - There is no active form
Predicted next action using policy_1_FallbackPolicy
I don’t understand why the form is not triggered in this case, whereas request_travel intent is correctly detected.
Thanks!
----- Some details
Here is the graph of the story.
I’ve defined my form in domain.yml file:
forms:
- airline_ticket_form
and a class AirlineTicketBot:
def name(self):
# type: () -> Text
"""Unique identifier of the form"""
return "airline_ticket_form"
@staticmethod
def required_slots(tracker: Tracker) -> List[Text]:
"""A list of required slots that the form has to fill"""
return ["location_departure", "location_arrival"]
def submit(self,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any]) -> List[Dict]:
"""Define what the form has to do
after all required slots are filled"""
# utter submit template
dispatcher.utter_template('utter_submit', tracker)
return []