Repeating last response when using Rasa skill

I installed a skill described here (https://mycroft.ai/blog/connecting-rasa-to-mycroft-a-guide/) that connects Mycroft and Rasa. It works quite nicely but I face a usability problem that I cannot locate in the code.

I use the Mycroft client interface to interact with Mycroft which runs in a Docker container on a server. When I type the utterance “connect to diamond”, I receive the expected response “Hi, I am Diamond” and can use the bot.

When I stop interacting with the bot for 5-10 seconds, Mycroft utters the last bot response again once. I could imagine that this is a feature meant to remind the user what was said last. On the other hand, it could also be a bug that breaks the user experience in my case. I could not find out why Mycroft repeats the last utterance in this case. The problem seems to happen only when I use the Rasa-Mycroft skill. The log I extracted during a test conversation are below.
Does anyone have an idea why this happens?

Bus Log

2020-09-07 11:40:36.067 | INFO | 25 | QuestionsAnswersSkill | Timeout occured check responses
2020-09-07 11:41:06.599 | INFO | 25 | mycroft.skills.skill_loader:load:161 | ATTEMPTING TO LOAD SKILL: skill-rasa-chat.wel
2020-09-07 11:41:06.607 | INFO | 25 | mycroft.skills.settings:get_local_settings:78 | /opt/mycroft/skills/skill-rasa-chat.wel/settings.json
2020-09-07 11:41:06.617 | INFO | 25 | mycroft.skills.skill_loader:_check_for_first_run:300 | First run of skill-rasa-chat.wel
2020-09-07 11:41:06.618 | INFO | 25 | mycroft.skills.settings:save_settings:111 | Skill settings successfully saved to /root/.config/mycroft/skills/skill-rasa-chat.wel/settings.json
2020-09-07 11:41:06.620 | INFO | 25 | mycroft.skills.skill_loader:_communicate_load_status:320 | Skill skill-rasa-chat.wel loaded successfully
2020-09-07 11:41:06.620 | INFO | 25 | mycroft.skills.skill_manager:put:80 | Updating settings meta during runtime…
2020-09-07 11:41:06.622 | INFO | 25 | msm.mycroft_skills_manager | invalidating skills cache
2020-09-07 11:41:06.623 | INFO | 25 | msm.mycroft_skills_manager | building SkillEntry objects for all skills
2020-09-07 11:41:09.858 | INFO | 25 | mycroft.skills.skill_manager:send:64 | New Settings meta to upload.
2020-09-07 11:42:00.473 | INFO | 25 | SKILLS | Invalid level provided:
2020-09-07 11:42:00.473 | INFO | 25 | SKILLS | Bus logging: True
2020-09-07 11:42:00.473 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft.debug.log”, “data”: {“bus”: true}, “context”: {}}
2020-09-07 11:42:01.207 | INFO | 25 | mycroft.skills.settings:save_settings:111 | Skill settings successfully saved to /root/.config/mycroft/skills/skill-rasa-chat.wel/settings.json
2020-09-07 11:42:01.211 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft.skill.handler.complete”, “data”: {“name”: “RasaSkill.handle_talk_to_rasa_intent”}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}
2020-09-07 11:42:10.210 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}
2020-09-07 11:42:15.889 | INFO | 25 | SKILLS | BUS: {“type”: “recognizer_loop:utterance”, “data”: {“utterances”: [“connect to diamond”], “lang”: “en-us”}, “context”: {“client_name”: “mycroft_cli”, “source”: “debug_cli”, “destination”: [“skills”]}}
2020-09-07 11:42:15.895 | INFO | 25 | SKILLS | BUS: {“type”: “skill.converse.request”, “data”: {“skill_id”: “skill-rasa-chat.wel”, “utterances”: [“connect to diamond”], “lang”: “en-us”}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}
2020-09-07 11:42:15.898 | INFO | 25 | SKILLS | BUS: {“type”: “skill.converse.response”, “data”: {“skill_id”: “skill-rasa-chat.wel”, “result”: false}, “context”: {“client_name”: “mycroft_cli”, “source”: “debug_cli”, “destination”: [“skills”]}}
2020-09-07 11:42:16.097 | INFO | 25 | SKILLS | BUS: {“type”: “skill.converse.request”, “data”: {“skill_id”: “fallback-unknown.mycroftai”, “utterances”: [“connect to diamond”], “lang”: “en-us”}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}
2020-09-07 11:42:16.101 | INFO | 25 | SKILLS | BUS: {“type”: “skill.converse.response”, “data”: {“skill_id”: “fallback-unknown.mycroftai”, “result”: false}, “context”: {“client_name”: “mycroft_cli”, “source”: “debug_cli”, “destination”: [“skills”]}}
2020-09-07 11:42:16.298 | INFO | 25 | SKILLS | BUS: {“type”: “skill.converse.request”, “data”: {“skill_id”: “mycroft-hello-world.mycroftai”, “utterances”: [“connect to diamond”], “lang”: “en-us”}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}
2020-09-07 11:42:16.303 | INFO | 25 | SKILLS | BUS: {“type”: “skill.converse.response”, “data”: {“skill_id”: “mycroft-hello-world.mycroftai”, “result”: false}, “context”: {“client_name”: “mycroft_cli”, “source”: “debug_cli”, “destination”: [“skills”]}}
2020-09-07 11:42:16.507 | INFO | 25 | SKILLS | BUS: {“type”: “skill-rasa-chat.wel:StartChat”, “data”: {“intent_type”: “skill-rasa-chat.wel:StartChat”, “skill_rasa_chat_welChatwithrasa”: “diamond”, “target”: null, “confidence”: 0.5, “tags”: [{“match”: “diamond”, “key”: “diamond”, “start_token”: 2, “entities”: [{“key”: “diamond”, “match”: “diamond”, “data”: [[“diamond”, “skill_rasa_chat_welChatwithrasa”]], “confidence”: 1.0}], “end_token”: 2, “from_context”: false}], “utterance”: “connect to diamond”}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}
2020-09-07 11:42:16.511 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft.skill.handler.start”, “data”: {“name”: “RasaSkill.handle_talk_to_rasa_intent”}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}

2020-09-07 11:42:16.516 | INFO | 25 | SKILLS | BUS: {“type”: “speak”, “data”: {“utterance”: "Hi, I am Diamond ", “expect_response”: true, “meta”: {“dialog”: “Hi, I am Diamond.”, “data”: {}, “skill”: “RasaSkill”}}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}
2020-09-07 11:42:16.559 | INFO | 25 | SKILLS | BUS: {“type”: “enclosure.eyes.blink”, “data”: {“side”: “b”}, “context”: {“destination”: [“enclosure”]}}
2020-09-07 11:42:16.559 | INFO | 25 | SKILLS | BUS: {“type”: “recognizer_loop:audio_output_start”, “data”: {}, “context”: {}}
2020-09-07 11:42:16.560 | INFO | 25 | SKILLS | BUS: {“type”: “recognizer_loop:audio_output_end”, “data”: {}, “context”: {}}
2020-09-07 11:42:16.561 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft.mic.listen”, “data”: {}, “context”: {}}
2020-09-07 11:42:16.564 | INFO | 25 | SKILLS | BUS: {“type”: “enclosure.eyes.blink”, “data”: {“side”: “b”}, “context”: {“destination”: [“enclosure”]}}
2020-09-07 11:42:16.819 | INFO | 25 | SKILLS | BUS: {“type”: “active_skill_request”, “data”: {“skill_id”: “skill-rasa-chat.wel”}, “context”: {}}
2020-09-07 11:42:20.222 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}
2020-09-07 11:42:22.227 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft-reminder.mycroftai:reminder”, “data”: {}, “context”: {}}
2020-09-07 11:42:22.229 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft-configuration.mycroftai:ConfigurationSkillupdate_remote”, “data”: “UpdateRemote”, “context”: {}}
2020-09-07 11:42:30.239 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}

2020-09-07 11:42:31.823 | INFO | 25 | SKILLS | BUS: {“type”: “speak”, “data”: {“utterance”: "Hi, I am Diamond ", “expect_response”: true, “meta”: {“skill”: “RasaSkill”}}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}
2020-09-07 11:42:31.825 | INFO | 25 | SKILLS | BUS: {“type”: “active_skill_request”, “data”: {“skill_id”: “skill-rasa-chat.wel”}, “context”: {}}
2020-09-07 11:42:31.830 | INFO | 25 | SKILLS | BUS: {“type”: “recognizer_loop:audio_output_start”, “data”: {}, “context”: {}}
2020-09-07 11:42:31.861 | INFO | 25 | SKILLS | BUS: {“type”: “recognizer_loop:audio_output_end”, “data”: {}, “context”: {}}
2020-09-07 11:42:31.863 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft.mic.listen”, “data”: {}, “context”: {}}
2020-09-07 11:42:40.252 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}
2020-09-07 11:42:46.824 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft.skill.handler.complete”, “data”: {“name”: “RasaSkill.handle_talk_to_rasa_intent”}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}
2020-09-07 11:42:50.267 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}
2020-09-07 11:42:52.270 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft-reminder.mycroftai:reminder”, “data”: {}, “context”: {}}
2020-09-07 11:43:00.284 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}
2020-09-07 11:43:10.297 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}
2020-09-07 11:43:20.311 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}
2020-09-07 11:43:22.316 | INFO | 25 | SKILLS | BUS: {“type”: “mycroft-reminder.mycroftai:reminder”, “data”: {}, “context”: {}}

Voice log

2020-09-07 11:42:00.472 | INFO | 31 | VOICE | Invalid level provided:
2020-09-07 11:42:00.473 | INFO | 31 | VOICE | Bus logging: True
2020-09-07 11:42:00.473 | INFO | 31 | VOICE | BUS: {“type”: “mycroft.debug.log”, “data”: {“bus”: true}, “context”: {}}
2020-09-07 11:42:01.210 | INFO | 31 | VOICE | BUS: {“type”: “mycroft.skill.handler.complete”, “data”: {“name”: “RasaSkill.handle_talk_to_rasa_intent”}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}
2020-09-07 11:42:10.210 | INFO | 31 | VOICE | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}
2020-09-07 11:42:15.888 | INFO | 31 | VOICE | BUS: {“type”: “recognizer_loop:utterance”, “data”: {“utterances”: [“connect to diamond”], “lang”: “en-us”}, “context”: {“client_name”: “mycroft_cli”, “source”: “debug_cli”, “destination”: [“skills”]}}
2020-09-07 11:42:15.895 | INFO | 31 | VOICE | BUS: {“type”: “skill.converse.request”, “data”: {“skill_id”: “skill-rasa-chat.wel”, “utterances”: [“connect to diamond”], “lang”: “en-us”}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}
2020-09-07 11:42:15.898 | INFO | 31 | VOICE | BUS: {“type”: “skill.converse.response”, “data”: {“skill_id”: “skill-rasa-chat.wel”, “result”: false}, “context”: {“client_name”: “mycroft_cli”, “source”: “debug_cli”, “destination”: [“skills”]}}
2020-09-07 11:42:16.097 | INFO | 31 | VOICE | BUS: {“type”: “skill.converse.request”, “data”: {“skill_id”: “fallback-unknown.mycroftai”, “utterances”: [“connect to diamond”], “lang”: “en-us”}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}
2020-09-07 11:42:16.101 | INFO | 31 | VOICE | BUS: {“type”: “skill.converse.response”, “data”: {“skill_id”: “fallback-unknown.mycroftai”, “result”: false}, “context”: {“client_name”: “mycroft_cli”, “source”: “debug_cli”, “destination”: [“skills”]}}
2020-09-07 11:42:16.298 | INFO | 31 | VOICE | BUS: {“type”: “skill.converse.request”, “data”: {“skill_id”: “mycroft-hello-world.mycroftai”, “utterances”: [“connect to diamond”], “lang”: “en-us”}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}
2020-09-07 11:42:16.303 | INFO | 31 | VOICE | BUS: {“type”: “skill.converse.response”, “data”: {“skill_id”: “mycroft-hello-world.mycroftai”, “result”: false}, “context”: {“client_name”: “mycroft_cli”, “source”: “debug_cli”, “destination”: [“skills”]}}
2020-09-07 11:42:16.507 | INFO | 31 | VOICE | BUS: {“type”: “skill-rasa-chat.wel:StartChat”, “data”: {“intent_type”: “skill-rasa-chat.wel:StartChat”, “skill_rasa_chat_welChatwithrasa”: “diamond”, “target”: null, “confidence”: 0.5, “tags”: [{“match”: “diamond”, “key”: “diamond”, “start_token”: 2, “entities”: [{“key”: “diamond”, “match”: “diamond”, “data”: [[“diamond”, “skill_rasa_chat_welChatwithrasa”]], “confidence”: 1.0}], “end_token”: 2, “from_context”: false}], “utterance”: “connect to diamond”}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}
2020-09-07 11:42:16.511 | INFO | 31 | VOICE | BUS: {“type”: “mycroft.skill.handler.start”, “data”: {“name”: “RasaSkill.handle_talk_to_rasa_intent”}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}

2020-09-07 11:42:16.518 | INFO | 31 | VOICE | BUS: {“type”: “speak”, “data”: {“utterance”: "Hi, I am Diamond ", “expect_response”: true, “meta”: {“dialog”: “Hi, I am Diamond.”, “data”: {}, “skill”: “RasaSkill”}}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}
2020-09-07 11:42:16.526 | INFO | 31 | VOICE | BUS: {“type”: “enclosure.eyes.blink”, “data”: {“side”: “b”}, “context”: {“destination”: [“enclosure”]}}
2020-09-07 11:42:16.526 | INFO | 31 | VOICE | BUS: {“type”: “recognizer_loop:audio_output_start”, “data”: {}, “context”: {}}
2020-09-07 11:42:16.558 | INFO | 31 | VOICE | BUS: {“type”: “recognizer_loop:audio_output_end”, “data”: {}, “context”: {}}
2020-09-07 11:42:16.560 | INFO | 31 | VOICE | BUS: {“type”: “mycroft.mic.listen”, “data”: {}, “context”: {}}
2020-09-07 11:42:16.563 | INFO | 31 | VOICE | BUS: {“type”: “enclosure.eyes.blink”, “data”: {“side”: “b”}, “context”: {“destination”: [“enclosure”]}}
2020-09-07 11:42:16.819 | INFO | 31 | VOICE | BUS: {“type”: “active_skill_request”, “data”: {“skill_id”: “skill-rasa-chat.wel”}, “context”: {}}
2020-09-07 11:42:20.223 | INFO | 31 | VOICE | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}
2020-09-07 11:42:22.227 | INFO | 31 | VOICE | BUS: {“type”: “mycroft-reminder.mycroftai:reminder”, “data”: {}, “context”: {}}
2020-09-07 11:42:22.229 | INFO | 31 | VOICE | BUS: {“type”: “mycroft-configuration.mycroftai:ConfigurationSkillupdate_remote”, “data”: “UpdateRemote”, “context”: {}}
2020-09-07 11:42:30.238 | INFO | 31 | VOICE | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}

2020-09-07 11:42:31.823 | INFO | 31 | VOICE | BUS: {“type”: “speak”, “data”: {“utterance”: "Hi, I am Diamond ", “expect_response”: true, “meta”: {“skill”: “RasaSkill”}}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}
2020-09-07 11:42:31.825 | INFO | 31 | VOICE | BUS: {“type”: “active_skill_request”, “data”: {“skill_id”: “skill-rasa-chat.wel”}, “context”: {}}
2020-09-07 11:42:31.830 | INFO | 31 | VOICE | BUS: {“type”: “recognizer_loop:audio_output_start”, “data”: {}, “context”: {}}
2020-09-07 11:42:31.861 | INFO | 31 | VOICE | BUS: {“type”: “recognizer_loop:audio_output_end”, “data”: {}, “context”: {}}
2020-09-07 11:42:31.863 | INFO | 31 | VOICE | BUS: {“type”: “mycroft.mic.listen”, “data”: {}, “context”: {}}

2020-09-07 11:42:40.252 | INFO | 31 | VOICE | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}
2020-09-07 11:42:46.823 | INFO | 31 | VOICE | BUS: {“type”: “mycroft.skill.handler.complete”, “data”: {“name”: “RasaSkill.handle_talk_to_rasa_intent”}, “context”: {“client_name”: “mycroft_cli”, “source”: [“skills”], “destination”: “debug_cli”}}
2020-09-07 11:42:50.267 | INFO | 31 | VOICE | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}
2020-09-07 11:42:52.269 | INFO | 31 | VOICE | BUS: {“type”: “mycroft-reminder.mycroftai:reminder”, “data”: {}, “context”: {}}
2020-09-07 11:43:00.284 | INFO | 31 | VOICE | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}
2020-09-07 11:43:10.296 | INFO | 31 | VOICE | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}
2020-09-07 11:43:20.311 | INFO | 31 | VOICE | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}
2020-09-07 11:43:22.315 | INFO | 31 | VOICE | BUS: {“type”: “mycroft-reminder.mycroftai:reminder”, “data”: {}, “context”: {}}
2020-09-07 11:43:22.319 | INFO | 31 | VOICE | BUS: {“type”: “mycroft-configuration.mycroftai:ConfigurationSkillupdate_remote”, “data”: “UpdateRemote”, “context”: {}}
2020-09-07 11:43:30.327 | INFO | 31 | VOICE | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}
2020-09-07 11:43:40.342 | INFO | 31 | VOICE | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}
2020-09-07 11:43:50.356 | INFO | 31 | VOICE | BUS: {“type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”, “data”: {}, “context”: {}}
2020-09-07 11:43:52.360 | INFO | 31 | VOICE | BUS: {“type”: “mycroft-reminder.mycroftai:reminder”, “data”: {}, “context”: {}}

I am still looking for a fix to this issue. I realized that the Mycroft client logs two Listen events triggered from outside. They are 5 seconds apart and I think they are related to the issue.

 13:59:35.152 | DEBUG    |    25 | mycroft.skills.intent_service:handle_utterance:346 | Utterances: ['connect me to diamond']
 13:59:35.159 | DEBUG    |    25 | mycroft.skills.intent_service:handle_utterance:366 | Padatious intent: {'name': 'mycroft-date-time.mycroftai:date.future.weekend.intent', 'sent': 'connect me to diamond', 'matches'~~~~
 13:59:35.160 | DEBUG    |    25 | mycroft.skills.intent_service:handle_utterance:367 |     Adapt intent: {'intent_type': 'skill-rasa-chat.wel:StartChat', 'skill_rasa_chat_welChatwithrasa': 'diamond', 'target': None~~~~
 13:59:35.211 | DEBUG    |    31 | mycroft.client.speech.mic:trigger_listen:527 | Listen triggered from external source.
 13:59:50.522 | DEBUG    |    31 | mycroft.client.speech.mic:trigger_listen:527 | Listen triggered from external source.

Finally I could fix the issue here. It is a default setting in the get_response method that infinitly retries to get a response from the user. It does so by uttering the last response again, it seems. If I set this to 0, I have no repetitions.

https://mycroft-core.readthedocs.io/en/latest/source/mycroft.html?highlight=get%20response#mycroft.MycroftSkill.get_response

2 Likes

Hey thanks for posting the solution!

I’ve updated the code on that blog post to include num_retries=0 on the get_response method so others hopefully don’t run into the same thing.

I see from the code that this is deliberate:

I wonder if the docs should be more specific as this confused me too. How does this sound:

num_retries ( int ) – Times to ask user for input, -1 will retry indefinitely until a validated response is received.
NOTE: User can say “cancel” to stop the retries. Also, if there is no response, an additional retry will be attempted. Set num_retries to 0 to avoid this.

I feel that a more ‘expected behaviour’ solution would be to remove the retry on no response - especially if there is no validator. Ignoring a prompt feels like a valid way to cancel. Thoughts?

1 Like

I like the wording update, did you want to do a PR for it?

I’d be hesitant to change the default behaviour without thinking through all the cases and putting it out for broad consultation. It would affect a large number of Skills.

Indeed a discussion about this would be useful. I felt that the default behavior should be that the assistant does not ask again by itself. No user input can have so many reasons and the most likely to me is that the user simply intended to remain silent.

What was the initial assumption to set the default to -1?

That was well before my time I’m afraid…

Looks like it was included in the original implementation. So not sure how much thought went into it or not. Perhaps the assumption behind -1 default was that if the user is responding to the prompt each time then they are attempting to provide a valid response.

In terms of 1 retry on no voice input, I’d say that’s a middle ground so that if a user misses the response window they don’t need to start all over again, but also that the device doesn’t end up prompting indefinitely.