public OpenShift(CUIController controller, CancellationToken ct) : base("OpenShift", new SnipsNLUEngine(Path.Combine("Engines", "openshift")), controller, ct) { Intents.Add("list", List); Intents.Add("page", Page); MenuHandlers["OPENSHIFT_OBJECTS"] = GetOpenShiftMenuSelection; MenuIndexes["OPENSHIFT_OBJECTS"] = 5; ItemsDescriptionHandlers["OPENSHIFT_PODS"] = DescribePods; ItemsDescriptionHandlers["OPENSHIFT_PROJECTS"] = DescribeProjects; ItemsDescriptionHandlers["OPENSHIFT_BUILDS"] = DescribeBuilds; ApiUrl = Config("CUI_VISH_OPENSHIFT_URL"); ApiToken = Config("CUI_VISH_OPENSHIFT_TOKEN"); if (!string.IsNullOrEmpty(ApiToken) && !string.IsNullOrEmpty(ApiUrl)) { var handler = new HttpClientHandler { }; Client = new OpenShiftAPIwithKubernetes(new Uri(ApiUrl), new TokenCredentials(ApiToken), handler); Initialized = true; } else if (string.IsNullOrEmpty(ApiUrl)) { SayErrorLine("I could not determine your OpenShift API URL. Please ensure the value exists in your config.json configuration file or as the environment variable {0}.", "CUI_VISH_OPENSHIFT_URL"); } else if (string.IsNullOrEmpty(ApiToken)) { SayErrorLine("I could not determine your OpenShift service API token. Please ensure the value exists in your config.json configuration file or as the environment variable {0}.", "CUI_VISH_OPENSHIFT_TOKENs"); } }
public Package(string name, NLUEngine engine, Controller controller, CancellationToken ct, params Package[] subPackages) : base(ct) { Name = name; NLUEngine = engine; Controller = controller; Intents.Add("info", Info); Intents.Add("help", Help); Intents.Add("menu", Menu); Intents.Add("enable", Enable); Intents.Add("disable", Disable); Intents.Add("back", Back); Intents.Add("page", Page); Intents.Add("list", List); if (subPackages != null && subPackages.Length > 0) { SubPackages = subPackages.ToList(); } foreach (var vn in VariableNames) { Variables.Add(Prefixed(vn), null); } foreach (var i in ItemNames) { Items.Add(Prefixed(i), null); } foreach (var m in MenuNames) { Menus.Add(Prefixed(m), null); } }
public CUIPackage(string name, NLUEngine engine, CUIController controller, CancellationToken ct, params CUIPackage[] subPackages) : base(ct) { Name = name; NLUEngine = engine; Controller = controller; Intents.Add("help", Help); Intents.Add("menu", Menu); if (subPackages != null && subPackages.Length > 0) { SubPackages = subPackages.ToList(); } foreach (var vn in VariableNames) { Variables.Add(Prefixed(vn), null); } foreach (var i in ItemNames) { Items.Add(Prefixed(i), null); ItemsPageSize.Add(Prefixed(i), 10); ItemsCurrentPage.Add(Prefixed(i), 1); ItemsSelection.Add(Prefixed(i), -1); ItemsDescriptionHandlers.Add(Prefixed(i), null); } foreach (var m in MenuNames) { MenuHandlers.Add(Prefixed(m), null); MenuIndexes.Add(Prefixed(m), 0); } }
public MedTracker(CUIController controller, CancellationToken ct) : base("Vish", new SnipsNLUEngine(Path.Combine("Engines", "vish")), controller, ct) { Intents.Add("launch", Launch); MenuIndexes["VISH_PACKAGES"] = 3; MenuHandlers["VISH_PACKAGES"] = GetPackagesMenuItem; Initialized = NLUEngine.Initialized; }
internal void AddIntent(MatchIntentAndEntities intent, DialogVariablesSimulator dialogVariables) { if (!Intents.ContainsKey(intent.Name)) { Intents.Add(intent.Name, intent); dialogVariables.AddMatchIntentAndEntities(intent); } else { var otherIntent = Intents[intent.Name]; LogMessage(intent.LineNumber, MessageType.DuplicateKey, "Two intent matching nodes found for intent \"" + intent.Name + "\" : line " + intent.LineNumber + " and line " + otherIntent.LineNumber); } }
internal void Optimize() { var thisHash = GetHashCode(); var allContexts = GetChildContexts(); var defsByHashCode = allContexts.Where(g => g.Value.Count > 1 && (g.Value.Context.Intents.Count != 1 || !(g.Value.Context.Intents[0] is TypeIntent))) .ToDictionary(g => g.Key, g => g.Value.Context); var currentNames = new List <string>(); var defs = new Dictionary <string, SchemaGeneratorContext>(); var contextContainers = GetNestedContainers().ToList(); foreach (var def in defsByHashCode) { var name = def.Value.GetDefName(currentNames); var refIntent = new RefIntent(new Uri(def.Key == thisHash ? "#" : $"#/$defs/{name}", UriKind.Relative)); var refContext = new SchemaGeneratorContext(def.Value.Type, null !, Configuration); refContext.Intents.Add(refIntent); foreach (var intent in contextContainers) { intent.Replace(def.Key, refContext); } if (def.Key == thisHash) { continue; } defs[name] = def.Value; } if (defs.Any()) { var defsIntent = new DefsIntent(defs); Intents.Add(defsIntent); } }
private (Intent intent, double score) ProcessUserInput() { var intentScore = new Microsoft.Bot.Builder.IntentScore { Score = 0.9909704, Properties = new Dictionary <string, object>() }; switch (UserInput.ToLower()) { case "set temperature to 21 degrees": Entities.SETTING = new string[] { "temperature" }; Entities.AMOUNT = new string[] { "21" }; Entities.UNIT = new string[] { "degrees" }; break; case "increase temperature by 2": Entities.VALUE = new string[] { "increase" }; Entities.SETTING = new string[] { "temperature" }; Entities.TYPE = new string[] { "by" }; Entities.AMOUNT = new string[] { "2" }; break; case "increase temperature to 24": Entities.VALUE = new string[] { "increase" }; Entities.SETTING = new string[] { "temperature" }; Entities.AMOUNT = new string[] { "24" }; break; case "change the temperature": Entities.SETTING = new string[] { "temperature" }; break; case "turn lane assist off": Entities.SETTING = new string[] { "lane assist" }; Entities.VALUE = new string[] { "off" }; break; case "warm up the back of the car": Entities.SETTING = new string[] { "back" }; Entities.VALUE = new string[] { "warm up" }; break; case "defog my windshield": Entities.VALUE = new string[] { "defog" }; break; case "put the air on my feet": Entities.SETTING = new string[] { "air" }; Entities.VALUE = new string[] { "feet" }; break; case "turn off the ac": Entities.SETTING = new string[] { "ac" }; Entities.VALUE = new string[] { "off" }; break; case "increase forward automatic braking to 50%": Entities.SETTING = new string[] { "forward automatic braking" }; Entities.VALUE = new string[] { "increase" }; Entities.AMOUNT = new string[] { "50" }; Entities.UNIT = new string[] { "%" }; break; case "i'm feeling cold": Entities.VALUE = new string[] { "cold" }; Intents.Add(Intent.VEHICLE_SETTINGS_DECLARATIVE, intentScore); break; case "it's feeling cold in the back": Entities.SETTING = new string[] { "back" }; Entities.VALUE = new string[] { "cold" }; Intents.Add(Intent.VEHICLE_SETTINGS_DECLARATIVE, intentScore); break; case "adjust equalizer": Entities.SETTING = new string[] { "equalizer" }; break; case "change pedestrian detection": Entities.SETTING = new string[] { "pedestrian detection" }; break; default: return(Intent.None, 0.0); } // Default is setting change apart from declarative used occasionally above if (Intents.Count == 0) { Intents.Add(Intent.VEHICLE_SETTINGS_CHANGE, intentScore); } return(TopIntent()); }
// update constants in Suggestion database to current version defined in WorkflowConstants public bool VersionConstants(string me) { try { bool updateDB = false; if (Versions.Any(v => v.VersionType == DatabaseVersion.Constants && v.VersionString == WorkflowConstants.ConstantsVersion) == false) { // no database - create and lock the new version entry TraceLog.TraceInfo(String.Format("Suggestions database version {0} not found", WorkflowConstants.ConstantsVersion)); // remove any existing database version (there should never be more than one) foreach (var existingVersion in Versions.Where(v => v.VersionType == DatabaseVersion.Constants).ToList()) { Versions.Remove(existingVersion); } SaveChanges(); // create the new version entry DatabaseVersion ver = new DatabaseVersion() { VersionType = DatabaseVersion.Constants, VersionString = WorkflowConstants.ConstantsVersion, Status = me }; Versions.Add(ver); SaveChanges(); updateDB = true; } else { var dbVersion = Versions.Single(v => v.VersionType == DatabaseVersion.Constants && v.VersionString == WorkflowConstants.ConstantsVersion); if (dbVersion.Status == DatabaseVersion.Corrupted) { // try to update the database again - take a lock TraceLog.TraceInfo("Suggestions database corrupted"); dbVersion.Status = me; SaveChanges(); updateDB = true; } } if (updateDB == false) { TraceLog.TraceInfo(String.Format("Suggestions database version {0} is up to date", WorkflowConstants.ConstantsVersion)); return(true); } } catch (Exception ex) { TraceLog.TraceException("Could not find database version", ex); return(false); } // update the default database values DatabaseVersion version = null; SuggestionsStorageContext versionContext = Storage.NewSuggestionsContext; try { // verify that this unit of execution owns the update lock for the database version version = versionContext.Versions.Single(v => v.VersionType == DatabaseVersion.Constants && v.VersionString == WorkflowConstants.ConstantsVersion); if (version.Status != me) { return(true); } TraceLog.TraceInfo(String.Format("{0} updating Suggestions database to version {1}", me, WorkflowConstants.ConstantsVersion)); // remove existing intents foreach (var entity in Intents.ToList()) { Intents.Remove(entity); } var intents = WorkflowConstants.DefaultIntents(); if (intents == null) { TraceLog.TraceError("Could not find or load intents"); version.Status = DatabaseVersion.Corrupted; versionContext.SaveChanges(); return(false); } // add current intents foreach (var entity in intents) { Intents.Add(entity); } SaveChanges(); TraceLog.TraceInfo("Replaced intents"); // remove existing workflow types foreach (var entity in WorkflowTypes.ToList()) { WorkflowTypes.Remove(entity); } var workflowTypes = WorkflowConstants.DefaultWorkflowTypes(); if (workflowTypes == null) { TraceLog.TraceError("Could not find or load workflow definitions"); version.Status = DatabaseVersion.Corrupted; versionContext.SaveChanges(); return(false); } // add current workflow types foreach (var entity in workflowTypes) { WorkflowTypes.Add(entity); } SaveChanges(); TraceLog.TraceInfo("Replaced workflow types"); // save the new version number version.Status = DatabaseVersion.OK; versionContext.SaveChanges(); return(true); } catch (Exception ex) { TraceLog.TraceException("VersionConstants failed", ex); // mark the version as corrupted version.Status = DatabaseVersion.Corrupted; versionContext.SaveChanges(); return(false); } }