Mandatory and Optional Entities
The intent is the desired outcome of the whole user utterance, while entities are data extracted from the user utterance.
Intents are mandatory as they are important pieces of the puzzle to identify the user action or goal.
Entities are optional. You do not need to create entities for every step in your bot, but only for those where it is required for the bot to perform an action.
If there is a transition based on entity value or entity presence, it is recommended to make the entity non-mandatory. Use Default or Final Response to respond to the user message.
For example, your reminder bot could consist of three entities -

| Entity | Type | Description |
| date | mandatory | ‘date’ entity is mandatory to set up meeting reminder |
| time | mandatory | ‘time’ entity is mandatory to set up meeting reminder |
| phone_number | optional | ‘Phone_number’ entity is an optional entity. This is only needed if the user wants a message notification before the meeting |
How does this work?
Add user utterance to the ‘Meeting reminder step’.

When user wants to setup a reminder, the conversation would go as follows -
- User utterance consists of all the information needed to schedule a meeting.
- User utterance only consists of the action information and the entities are missing. In such cases, bot will prompt the user to enter details for mandatory entities.
Myth: Don't add entity values in user messages
Reality: Add entity values in user messages. If the values are added to the entity dictionary, entities get auto-tagged in the user messages.
Example:
| User messages | Entity captured |
| What is the weather like tomorrow in San Francisco | $location - ‘San Francisco’ $time - ‘tomorrow’ |