You need to call a new dialog to prompt for the rest of the entities.
I would use a FormFlow dialog based on all the entities you are trying to capture. Basically, you want to assume none of you entities come through on the Luis intent, this way you can prompt the user for everything.
So, with FormFlow, you can specify the initial state of the FromFlow. To do this, create an instance and fill in the properties with the entites you did receive. FormFlow will skip steps for any of the fields that are already populated.
Optionally, when you launch you FormDialog, you can pass in 'FormOptions.PromptFieldsWithValues'. This will tell the dialog to still prompt the user for ALL values but will use the filled in value as the default. You would do this if you wanted to give the user the option of changing something.
Here's a basic example I pulled from github.
This is the class that defines your state. You would build this based on the entities you want to receive
public class SampleQuestion
{
public string FavoriteColor;
public string FavoritePizza;
}
This is a generic dialog method but it would be what your intent method would kind of look like
async Task StartAsync(IDialogContext context)
{
var question = new SampleQuestion();
question.FavoriteColor = "blue";
context.Call<SampleQuestion>(new FormDialog<SampleQuestion>(question), OnSampleQuestionAnswered);
}
public async Task OnSampleQuestionAnswered(IDialogContext context, IAwaitable<SampleQuestion> sampleQuestion)
{
var result = await sampleQuestion;
}
Hope this helps.