You could do that, but if you are just having 1d4, 1d6, etc as choices, you could include them in the macro itself like so:
/roll ?{choose Die|d4|d6|d8|d10|d12} + 1d6!
or if they are exploding dice
/roll ?{choose Die|d4|d6|d8|d10|d12}! + 1d6!
These will give the player a dropdown menu to choose the die type. The first bit "choose die" is the prompt the players see, and then you create a list of options players can select, separating them with |.
If you want to have a visible number 4, linked with a d6, you can do it like this
/roll ?{choose Die|3,d4|4,d6|5,d8|6,d10|7,d12}! + 1d6!
(I'm guessing what the numbers should be)
Each | represents a separate row in the dropdown box. The value before the comma is what the players see, the value after the comma is what gets rolled.
If you want players to type a macro name in manually, you can use something like
/roll #?{Enter MacroName|here} + 1d6!
Here the players are given a box to enter text.
Note the # at the start for the macro, then the query syntax: ?{Enter MacroName|here}. Whatever the players enter here will be replaced in the roll. So if they entered 4, roll20 would see that as
/roll #4 + 1d6!
And then would replace the #4 with your macro named 4, so roll20 would actually roll
/roll 1d6! + 1d6!
(assuming the #4 macro contains the text 1d6!
Allowing players manual text entry means they will sometimes make typos. It's unavoidable, so I prefer using the dropdown approach. But if all your macros are simply named 4, 5, etc, it might be quicker than the dropdown though.