// Run command and return output. // Project ID argument is always set. // Session ID argument available as a parameter. // Sets helper properties to last console output. public ConsoleOutput Run(string command, params object[] args) { using (var thottleToken = s_throttleTokenPool.Acquire()) { var arguments = args.Select((arg) => arg.ToString()).ToList(); arguments.Insert(0, command); arguments.AddRange(new[] { "--projectId", ProjectId }); try { Output = _dialogflow.Run(arguments.ToArray()); } catch (Grpc.Core.RpcException e) when(e.Status.StatusCode == Grpc.Core.StatusCode.ResourceExhausted) { // Throttle some more! int randomDelay = new Random().Next(60, 120); System.Threading.Thread.Sleep(TimeSpan.FromSeconds(randomDelay)); // And try once more. Output = _dialogflow.Run(arguments.ToArray()); } Console.WriteLine(Output.Stdout); return(Output); } }
// Run command and return output. // Project ID argument is always set. // Session ID argument available as a parameter. // Sets helper properties to last console output. public ConsoleOutput Run(string command, params object[] args) { using (var thottleToken = s_throttleTokenPool.Acquire()) { var arguments = args.Select((arg) => arg.ToString()).ToList(); arguments.Insert(0, command); arguments.AddRange(new[] { "--projectId", ProjectId }); Output = _dialogflow.Run(arguments.ToArray()); return(Output); } }