private async Task <DialogTurnResult> UserIDStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken) { if (User.UserID == null) { stepContext.Values["UserType"] = ((FoundChoice)stepContext.Result).Value; string userType = (string)stepContext.Values["UserType"]; string userId = null; if ("Returning User".Equals(userType)) { return(await stepContext.PromptAsync(UserValidationDialogID, new PromptOptions { Prompt = MessageFactory.Text("Please enter your user id.") }, cancellationToken)); } else { do { userId = Repository.RandomString(7); } while (await _cosmosDBClient.CheckNewUserIdAsync(userId, Configuration["CosmosEndPointURI"], Configuration["CosmosPrimaryKey"], Configuration["CosmosDatabaseId"], Configuration["CosmosContainerID"], Configuration["CosmosPartitionKey"])); User.UserID = userId; await stepContext.Context.SendActivityAsync(MessageFactory.Text("Please make a note of your user id"), cancellationToken); await stepContext.Context.SendActivityAsync(MessageFactory.Text(User.UserID), cancellationToken); return(await stepContext.NextAsync(null, cancellationToken)); } } else { return(await stepContext.NextAsync(null, cancellationToken)); } }