protected override Task <InputState> OnRecognizeInput(DialogContext dc) { var input = dc.GetState().GetValue <object>(VALUE_PROPERTY); var culture = GetCulture(dc); var results = DateTimeRecognizer.RecognizeDateTime(input.ToString(), culture); if (results.Count > 0) { // Return list of resolutions from first match var result = new List <DateTimeResolution>(); var values = (List <Dictionary <string, string> >)results[0].Resolution["values"]; foreach (var value in values) { result.Add(ReadResolution(value)); } dc.GetState().SetValue(VALUE_PROPERTY, result); if (!string.IsNullOrEmpty(OutputFormat)) { var outputExpression = new ExpressionEngine().Parse(OutputFormat); var(outputValue, error) = outputExpression.TryEvaluate(dc.GetState()); if (error == null) { dc.GetState().SetValue(VALUE_PROPERTY, outputValue); } else { throw new Exception($"OutputFormat Expression evaluation resulted in an error. Expression: {outputExpression.ToString()}. Error: {error}"); } } } else { return(Task.FromResult(InputState.Unrecognized)); } return(Task.FromResult(InputState.Valid)); }
protected override Task <InputState> OnRecognizeInput(DialogContext dc) { var input = dc.GetState().GetValue <string>(VALUE_PROPERTY); if (!string.IsNullOrEmpty(OutputFormat)) { var outputExpression = new ExpressionEngine().Parse(OutputFormat); var(outputValue, error) = outputExpression.TryEvaluate(dc.GetState()); if (error == null) { input = outputValue.ToString(); } else { throw new Exception($"In TextInput, OutputFormat Expression evaluation resulted in an error. Expression: {outputExpression.ToString()}. Error: {error}"); } } dc.GetState().SetValue(VALUE_PROPERTY, input); return(input.Length > 0 ? Task.FromResult(InputState.Valid) : Task.FromResult(InputState.Unrecognized)); }
public override async Task <DialogTurnResult> BeginDialogAsync(DialogContext dc, object options = null, CancellationToken cancellationToken = default(CancellationToken)) { if (options is CancellationToken) { throw new ArgumentException($"{nameof(options)} cannot be a cancellation token"); } foreach (var propValue in this.Assignments) { var valexp = new ExpressionEngine().Parse(propValue.Value); var(value, valueError) = valexp.TryEvaluate(dc.GetState()); if (valueError != null) { throw new Exception($"Expression evaluation resulted in an error. Expression: {valexp.ToString()}. Error: {valueError}"); } dc.GetState().SetValue(propValue.Property, value); } return(await dc.EndDialogAsync(cancellationToken : cancellationToken).ConfigureAwait(false)); }
protected override Task <InputState> OnRecognizeInput(DialogContext dc) { var input = dc.GetState().GetValue <object>(VALUE_PROPERTY); var culture = GetCulture(dc); var results = NumberRecognizer.RecognizeNumber(input.ToString(), culture); if (results.Count > 0) { // Try to parse value based on type var text = results[0].Resolution["value"].ToString(); if (float.TryParse(text, out var value)) { input = value; } else { return(Task.FromResult(InputState.Unrecognized)); } } else { return(Task.FromResult(InputState.Unrecognized)); } dc.GetState().SetValue(VALUE_PROPERTY, input); if (!string.IsNullOrEmpty(OutputFormat)) { var outputExpression = new ExpressionEngine().Parse(OutputFormat); var(outputValue, error) = outputExpression.TryEvaluate(dc.GetState()); if (error == null) { dc.GetState().SetValue(VALUE_PROPERTY, outputValue); } else { throw new Exception($"In TextInput, OutputFormat Expression evaluation resulted in an error. Expression: {outputExpression.ToString()}. Error: {error}"); } } return(Task.FromResult(InputState.Valid)); }