Esempio n. 1
0
        internal NativeEvaluator EvaluateCallArgs(string actionName, NativeAction action, IEnumerable <string> parameters, IEnumerable <ParameterEvaluator> evaluators)
        {
            var actionId = NativeActionPrefix + actionName;

            _nativeActions.Add(actionId, action);

            AddSpanElement(actionId);

            return(e =>
            {
                var evaluatedConstraints = new Constraints();
                foreach (var parameter in parameters.Zip(evaluators, Tuple.Create))
                {
                    var evaluatedParameter = parameter.Item2(e, parameter.Item1);
                    if (evaluatedParameter == null)
                    {
                        return null;
                    }

                    evaluatedConstraints = evaluatedConstraints.AddValue(parameter.Item1, evaluatedParameter);
                }

                return SemanticItem.From(e.Item.Question, actionId, evaluatedConstraints);
            });
        }
Esempio n. 2
0
 internal DataContainer Add(string[] patterns, string question, string answer)
 {
     foreach (var pattern in patterns)
     {
         Add(SemanticItem.From(question, answer, Constraints.WithInput(pattern)));
     }
     return(this);
 }
Esempio n. 3
0
        private bool _triggerAdd(SemanticItem item)
        {
            var action  = item.GetSubstitutionValue("$action");
            var trigger = item.GetSubstitutionValue("$trigger");

            var constraints = new Constraints()
                              .AddCondition(trigger);

            var actionItem = SemanticItem.From(Question.WhatShouldAgentDoNow, action, constraints);

            Db.Container.Add(actionItem);

            Log.SensorAdd(trigger, action);
            return(true);
        }