Thanks so much for this! You could use buttons in your responses for each question. With each button you can define a payload where you can set an entity value based on the user response.
Here’s a generic example of what could look like.
utter_ask_question_a:
- text: "Some question text."
buttons:
- title: "Text for answer 1"
payload: /inform{{"answer_a":"1"}}
- title: "Text for answer 2"
payload: /inform{{"answer_a":"2"}}
Each button has a piece of text and a payload. The payload will determine the intent to be returned, inform in this case, and then can set entity values, answer_a above. For your use case you would want to convert all of your text utterances into buttons and for each answer map the proper entity to its numeric response.
On the action server when you process the form you should have all the slots filled where you can process the user responses to determine what message to send back.