Пример #1
0
        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));
        }
Пример #2
0
        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));
        }
Пример #3
0
        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));
        }
Пример #4
0
        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));
        }