You need to add a retryPrompt option like this:
async question2_1(step) {
return await step.prompt(CHOICE_PROMPT, {
prompt: '"1/3: How easy were the course materials to navigate and follow?',
choices: ChoiceFactory.toChoices([' = Very Hard', '', '', '', '', ' = Very Easy']),
style: ListStyle.list,
retryPrompt: 'Enter a number between 1 - 6'
});
}
If you want any of the original prompt to be re-prompted, you'll need to add that too. The user will only get re-prompted with the text you add under retryPrompt.
EDIT: I was looking at this again to use synonyms and I think despite displaying as a numbered list, you aren't going to get the expected values with all those null strings. Maybe I'm wrong because I haven't done a choice like that, but I would probably explicitly define my choices like below. This allows you to set a separate Title (shown) and Value (send on backend) for each choice, as well as add synonyms if you want (you can also add synonyms with the simpler definition as you have above).
async question2_1(step) {
return await step.prompt(CHOICE_PROMPT, {
prompt: '"1/3: How easy were the course materials to navigate and follow?',
choices: [
{value:'1', action: {type: 'imBack', title: '= Very Hard', value: '1'}, synonyms: ['1']},
{value: '2', action: {type: 'imBack', title: ' ', value: '2'}, synonyms: ['2']},
{value: '3', action: {type: 'imBack', title: ' ', value: '3'}, synonyms: ['3']},
{value: '4', action: {type: 'imBack', title: ' ', value: '4'}, synonyms: ['4']},
{value: '5', action: {type: 'imBack', title: ' ', value: '5'}, synonyms: ['5']},
{value: '6', action: {type: 'imBack', title: '= Very Easy', value: '6'}, synonyms: ['6']},
],
style: ListStyle.list,
retryPrompt: 'Enter a number between 1 - 6'
});
}