Hi N12NJA,
It's a perfectly reasonable question and somewhat original. In fact this is an area where VC does fall short a bit compared to coding your own speech recognition program.
What you want to do is possible but may not work perfectly. Ideally I would use a voice command that adds student names to a list one at a time.
That said, what you want to achieve is possible, using optional phrases and payloads. Here is an example that does what you want but with colours.
In my tests it works fine. I've decided to require at least two colours (the first two are not optional) and a maximum of 5 but you can experiment with adding more. Note that the word "and" is optional but because the payloads are also optional you could theoretically end up saying something like "I like the colours red and blue and and and" which would be accepted. A better option would be to drop the "and" phrases altogether, especially if you have students named Andy, or Anna etc.
Of particular interest to you will be the actions in the macro. Note that I am using {#P} to specify the number of times an action should loop (the action that adds text to the OSD display). {#P} is the number of payloads you said so you will definitely need to use this. In the parameter I am using {{i}}. {i} is the number representing which iteration of the repeated action we are on so the first time {{i}} will become {1} or payload 1 and the second time {{i}} will be {2} etc.
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.2.1.0-->
<command id="193" name="i like the colours" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>Here are the colours you like:</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>OSD.AddText</cmdType>
<params>
<param>{{i}}</param>
</params>
<cmdRepeat>{#P}</cmdRepeat>
</action>
<phrase>i like the colours</phrase>
<payloadList>red, green, yellow, brown, blue, white, black, magenta, cyan, orange</payloadList>
<phrase optional="true">and</phrase>
<payloadList>red, green, yellow, brown, blue, white, black, magenta, cyan, orange</payloadList>
<phrase optional="true">and</phrase>
<payloadList optional="true">red, green, yellow, brown, blue, white, black, magenta, cyan, orange</payloadList>
<phrase optional="true">and</phrase>
<payloadList optional="true">red, green, yellow, brown, blue, white, black, magenta, cyan, orange</payloadList>
<phrase optional="true">and</phrase>
<payloadList optional="true">red, green, yellow, brown, blue, white, black, magenta, cyan, orange</payloadList>
</command>