Revise, revise, optimise
Start with a general intent which triggers a general flow, then add some follow-up questions to get a detailed understanding of what your user needs exactly. This approach will allow you to gather the necessary data to revise your intents afterward.
For example, if you're building a telco support bot, you could start with two simple intents:
1. Problem with phone
2. Problem with wifi
The first intent catches all issues related to phones, which of course, can be very diverse. Is it a problem with the battery? The screen? The software? A lost order? The same goes for the second intent. To figure out what the actual problem is, you can add a few follow-up questions about the model of the phone, or the model of the modem. After a few weeks, when you analyse the real user messages, you notice that users often already include the model of their phone (eg. Samsung Galaxy S9) in their messages before the bot explicitly asks for it, while they never use specific terms for anything related to wifi.
In this case, it makes sense to split up the intent 'problem with phone' by creating several other intents, or by using entities to capture the phone model straight away. The intent 'problem with wifi' can stay as it is, with follow-up questions to pin-point the exact problem. Keep in mind that creating intents is an ongoing process, which takes time and effort.