Right, but when you do dispatcher.utter_template("utter_can_do_X", tracker)
, it also doesn’t get logged in the tracker state (AFAICS), and therefore can’t affect the following predicted actions. So, I could get the unwanted following behaviour:
Dialogue 1 (correct):
- get state of item X
- state of item X is Y1
- You can do Z to X, would you like to? (not logged in tracker)
- yes
- ok, did Z
Dialogue 2 (erronous):
- get state of item X
- state of item X is Y2
- You can’t do Z to X (not logged in tracker)
- yes
- ok, did Z
Basically I need some state to steer the actions, whether it’s a slot or what the bot has uttered/actioned. What would you recommend - going back to the initial approach of using logic in the first action to set a slot value, and then predicting the following action/utterance depending on the slot value? Or refine the approach of using logic to enforce next action/utterance, and make sure that it’s logged in the tracker?
I am aware that maybe I was too quick to resort to these deterministic measures (FollowupAction etc.) instead of adding training stories.