Clarification on using same checkpoint in multiple stories

Hi,

I currently have a kind of FormBot which asks the user to input details about an item they want shipped. However, they can also add more items (‘rows’) towards the end, and so i have used checkpoints to enable this loop.

I also want the user to be able to interrupt and restart the process at any point, so i have given example stories for all cases. So I have two questions:

1.) Is this a correct usage of checkpoints? I worry I may be using them incorrectly by having multiple stories with the same set of checkpoints, but maybe that is kosher

2.) In the attached visualization, why are the two ‘interrupt -> utter_restart_quote’ paths in the ‘items_form’ not merged? I feel this may be related to point 1.) above.

Thanks!

Stories.md is:

## greet1
* greet
  - utter_greet

## new_quote
* greet
  - utter_greet
* quote
  - action_fillall
  - quote_form
  - form{"name": "quote_form"}
  - form{"name": null}
  - action_parse_dims
  - items_form
  - form{"name": "items_form"}
  - form{"name": null}
  - action_collect_items
  - utter_ask_add_item
> check_add_item

## add_item
> check_add_item
* affirm
  - items_form
  - form{"name": "items_form"}
  - form{"name": null}
  - action_collect_items
  - utter_ask_add_item
> check_add_item


## add_item_interrupt
> check_add_item
* affirm
  - items_form
  - form{"name": "items_form"}
* interrupt
  - utter_ask_restart_quote
* affirm
  - utter_goodbye
  - action_restart

## add_item_interrupt_continue
> check_add_item
* affirm
  - items_form
  - form{"name": "items_form"}
* interrupt
  - utter_ask_restart_quote
* deny
  - items_form
  - form{"name": null}
  - action_collect_items
  - utter_ask_add_item
> check_add_item

## not_add_item
> check_add_item
* deny
  - utter_return_quote

## general_thanks
* thanks
  - utter_welcome
* goodbye
  - utter_goodbye
  - action_restart

## thanks_goodbye
* thanks_and_goodbye
  - utter_welcome
  - utter_goodbye
  - action_restart

## new_quote2
* greet
  - utter_greet
* quote
  - action_fillall
  - quote_form
  - form{"name": "quote_form"}
* interrupt
  - utter_ask_restart_quote
* affirm
  - utter_goodbye
  - action_restart


## new_quote2
* greet
  - utter_greet
* quote
  - action_fillall
  - quote_form
  - form{"name": "quote_form"}
* interrupt
  - utter_ask_restart_quote
* deny
  - quote_form
  - form{"name": null}
  - action_parse_dims
  - items_form
  - form{"name": "items_form"}
  - form{"name": null}
  - action_collect_items
  - utter_ask_add_item
> check_add_item

## new_quote3
* greet
  - utter_greet
* quote
  - action_fillall
  - quote_form
  - form{"name": "quote_form"}
  - form{"name": null}
  - action_parse_dims
  - items_form
  - form{"name": "items_form"}
* interrupt
  - utter_ask_restart_quote
* affirm
  - utter_goodbye
  - action_restart


## new_quote4
* greet
  - utter_greet
* quote
  - action_fillall
  - quote_form
  - form{"name": "quote_form"}
  - form{"name": null}
  - action_parse_dims
  - items_form
  - form{"name": "items_form"}
* interrupt
  - utter_ask_restart_quote
* deny
  - items_form
  - form{"name": null}
  - action_collect_items
  - utter_ask_add_item
> check_add_item

Zoomed story graph

I wouldn’t really advise to use checkpoints like that, it works in theory but it’s gonna make your stories confusing and can lead to issues in the long run. You could probably write some custom logic in your form that will fill a slot based on whether the user says yes or no to another item. You can then reset your slots (having previously stored the information in a new slot) and kind of restart the form

1 Like