In general it is a good approach to have an intent for each possible thing your user could say. A lot of people assume an intent is like a step in a flow, but this isn't the right way off working with them. You could see them as categories of user phrases, they describe something your user is trying to say. For instance:
- "I want to order."
- "Give me a hamburger and fries"
- I'd like to pay with my creditcard"
You could see these three phrases as 3 steps in an order flow, but if try to categorize these phrases in separate intents, you get 2 intents that can work independently from eachother.
- Order Intent ("I want to order", "Give me a hamburger and fries")
- Checkout Intent ("I'd like to pay with my creditcard")
By separating intents, you keep your conversations flexible and you are able to re-use responses and code more easily.
As you guessed correctly, slot filling is used to get specific pieces of information from the users phrases. In the case of the order intent, it would be an order. In the example phrases I gave you might have already noticed that one phrase is missing an actual order. This is fine, because if I would tell you "I want to order" you know what I'm trying to do, I want to buy something and that is the same when I tell you "Give me a hamburger", both phrases are part of the same category.
If you want to create the best possible experience and dynamic conversations, I have to recommend to do slot filling via code. The Dialogflow tool is nice for quick basic things, but if you want to ask your user something different depending on if they mention a product or not, you will have to do slot filling or check parameters via code.
So in short, I would use 1 intent for each type of user phrase, handle parameters in this intent and do slot filling or variant responses via the webhook using slot filling and context. If any information is missing, save the current information in the context and prompt the user for the information that you need.
For example: "Okay, you want hamburgers and fries, do you also want a drink with that?".