You can use LUIS Action Binding framework as it supports three main scenarios which are mentioned and referenced below, but it also provides tools that you can use to implement or support your custom scenarios within your own apps.
Scenario #1 : Switch from an Action to a new Action
Bot: What do you want to do?
User: Find me a hotel in Madrid -- This would trigger a new `FindHotels` intent with Madrid as Location entity
Bot: When do you want to check-in?
User: Today
Bot: When do you want to check-out?
User: I changed my mind, find flights to Madrid -- This would trigger a new `FindFlights` intent with Madrid as Location entity (`FindHotels` progress is discarded)
Bot: When do you want to flight?
Scenario #2 : Trigger a Contextual Action within a valid Context
Bot: What do you want to do?
User: Find me a hotel in Madrid -- This would trigger a new `FindHotels` intent with Madrid as Location entity
Bot: When do you want to check-in?
User: Today
Bot: When do you want to check-out?
User: Sorry, change the checkin date to tomorrow -- This would trigger a `FindHotels-ChangeCheckin` intent with tomorrow as date (but will execute within the context of `FindHotels` and will update its check-in date previously set)
Bot: Ok, I changed the check-in date to tomorrow
Bot: When do you want to check-out?
Scenario #3 : Trigger a Contextual Action with no previous Context (ie. from scratch)
User: Please change my check-in date to tomorrow
Bot: Ok, I changed the check-in date to tomorrow -- This triggered the `FindHotels-ChangeCheckin` intent which should run in the context of the `FindHotels` action (so main action also is instanced)
Bot: I changed your reservation in Madrid from 03/25 to 03/27 -- The required parameters of the main context are iterated until it can call the action fulfillment
The examples that I mentioned and referenced relate to the Node sample, if you are working with C# you can find a sample here
You can also find a blog post about it to guide you through here