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); }); }
internal DataContainer Add(string[] patterns, string question, string answer) { foreach (var pattern in patterns) { Add(SemanticItem.From(question, answer, Constraints.WithInput(pattern))); } return(this); }
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); }