In the fulfillment, if condition is false, just reply with the same question like Sorry this username does not exist, please enter the username again.
if not username:
res = json.dumps({
"fulfillmentText": "Sorry this username does not exist, please enter the username again."
})
If you have some input context for the intent as well, then you need to set he context from the fulfillment as well.
req = request.get_json()
if not username:
res = json.dumps({
"outputContexts": [
{
"name": "{}/contexts/ask-username".format(req['session']),
"lifespanCount": 1,
},
],
"fulfillmentText": "Sorry this username does not exist, please enter the username again."
})
EDIT:
To reset a parameter value, include the parameter in the output context as well in the webhook, and set #context.parameter
as the default value of parameter in dialogflow console.
Documentation for setting default value of entity from context.
"outputContexts": [
{
"name": "projects/${PROJECT_ID}/agent/sessions/${SESSION_ID}/contexts/ask-username",
"lifespanCount": 1,
"parameters": {
"foo": ""
}
}
]

Hope it helps.