public override ConversationResponse Respond(LuisResult result, ItemContextParameters parameters, IConversation conversation) { var name = (string)conversation.Data[NameKey].Value; var profileItem = (Item)conversation.Data[ProfileItemKey].Value; var profileKeyData = (Dictionary <string, string>)conversation.Data[ProfileKeyValuesKey].Value; var keys = ProfileService.GetProfileKeys(profileItem); // profile card value field var profileCardValue = ProfileService.GetTrackingFieldValue(profileItem, profileKeyData); var fields = new Dictionary <ID, string> { { Constants.FieldIds.PatternCard.NameFieldId, name }, { Constants.FieldIds.ProfileCard.ProfileCardValueFieldId, profileCardValue } }; //create pattern card var profileCardFolder = profileItem.Axes.GetChild("Profile Cards"); var newProfileItem = DataWrapper.CreateItem(profileCardFolder.ID, Constants.TemplateIds.ProfileCardTemplateId, parameters.Database, name, fields); var toDb = DataWrapper.GetDatabase("web"); PublishWrapper.PublishItem(newProfileItem, new[] { toDb }, new[] { DataWrapper.ContentLanguage }, true, false, false); return(ConversationResponseFactory.Create(KeyName, string.Format( Translator.Text("Chat.Intents.CreateProfileCard.Response"), profileItem.DisplayName))); }
public override ConversationResponse Respond(LuisResult result, ItemContextParameters parameters, IConversation conversation) { var toDb = (Database)conversation.Data[DBKey].Value; var rootItem = (Item)conversation.Data[ItemKey].Value; var langItem = (Language)conversation.Data[LangKey].Value; var recursion = (bool)conversation.Data[RecursionKey].Value; var related = (bool)conversation.Data[RelatedKey].Value; PublishWrapper.PublishItem(rootItem, new[] { toDb }, new[] { langItem }, recursion, false, related); var recursionMessage = recursion ? Translator.Text("Chat.Intents.Publish.ResponseRecursion") : string.Empty; var relatedMessage = related ? Translator.Text("Chat.Intents.Publish.ResponseRelated") : string.Empty; return(ConversationResponseFactory.Create(KeyName, string.Format( Translator.Text("Chat.Intents.Publish.Response"), rootItem.DisplayName, toDb.Name, LanguageManager.GetLanguageItem(langItem, toDb).DisplayName, recursionMessage, relatedMessage))); }
public override ConversationResponse Respond(LuisResult result, ItemContextParameters parameters, IConversation conversation) { var name = (string)conversation.Data[NameKey].Value; var points = (int)conversation.Data[PointsKey].Value; //var isFailure = (bool) conversation.Data[IsFailureKey]; var fields = new Dictionary <ID, string> { { new ID("{AC3BC9B6-46A2-4EAD-AF5E-6BDB532EB832}"), "1" }, // IsGoal // { new ID("{BD5D2A52-027F-4CC8-9606-C5CE6CBBF437}"), isFailure ? "1" : "" }, // IsFailure // { new ID("{71EBDEBD-9560-48C6-A66F-E17FC018232C}"), "" }, // Rule { new ID("{AC6BA888-4213-43BD-B787-D8DA2B6B881F}"), name }, // Name { new ID("{33AE0E84-74A0-437F-AB2B-859DFA96F6C9}"), points.ToString() }, // Points { Sitecore.FieldIDs.WorkflowState, "{EDCBB550-BED3-490F-82B8-7B2F14CCD26E}" }, // workflow state { Sitecore.FieldIDs.Workflow, "{689E2994-4656-4C58-9112-7826CB46EE69}" } // workflow }; //create goal and folder if needed var fromDb = "master"; var toDb = DataWrapper.GetDatabase("web"); var goalItem = DataWrapper.GetItemById(Constants.ItemIds.GoalNodeId, fromDb); var newGoalItem = DataWrapper.CreateItem(goalItem.ID, Constants.TemplateIds.GoalTemplateId, fromDb, name, fields); PublishWrapper.PublishItem(goalItem, new[] { toDb }, new[] { DataWrapper.ContentLanguage }, true, false, false); return(ConversationResponseFactory.Create(KeyName, string.Format(Translator.Text("Chat.Intents.CreateGoal.Response"), name))); }
public override ConversationResponse Respond(LuisResult result, ItemContextParameters parameters, IConversation conversation) { var toDb = (Database)conversation.Data[DBKey]; var rootItem = (Item)conversation.Data[ItemKey]; var langItem = (Language)conversation.Data[LangKey]; var recursion = (string)conversation.Data[RecursionKey]; PublishWrapper.PublishItem(rootItem, new[] { toDb }, new[] { langItem }, recursion.Equals("y"), false); return(ConversationResponseFactory.Create($"I've published {rootItem.DisplayName} to the {toDb.Name} database in {rootItem.Language.Name.ToUpper()} {(recursion.Equals("y") ? " with it's children" : string.Empty)}")); }
public void ConfigureIndexes(string indexOption) { //enable index config var configFormat = "~/App_Config/Include/SitecoreCognitiveServices/SitecoreCognitiveServices.Feature.ImageSearch.{0}.config"; //disable the unselected option config var unselectedPath = string.Format(configFormat, indexOption == "Lucene" ? "Solr" : "Lucene"); var unselectedDisabledFile = Context.Server.MapPath($"{unselectedPath}.disabled"); var unselectedEnabledFile = Context.Server.MapPath(unselectedPath); if (System.IO.File.Exists(unselectedEnabledFile)) { System.IO.File.Copy(unselectedEnabledFile, unselectedDisabledFile, true); System.IO.File.Delete(unselectedEnabledFile); } //enable selected config var selectedPath = string.Format(configFormat, indexOption); var selectedDisabledFile = Context.Server.MapPath($"{selectedPath}.disabled"); var selectedEnabledFile = Context.Server.MapPath(selectedPath); if (System.IO.File.Exists(selectedDisabledFile)) { System.IO.File.Copy(selectedDisabledFile, selectedEnabledFile, true); System.IO.File.Delete(selectedDisabledFile); } if (indexOption.Equals("Solr")) { return; } //publish templates folder for yourself and core, and publish scs root in modules List <ID> itemGuids = new List <ID>() { SearchSettings.SCSDKTemplatesFolderId, SearchSettings.ImageSearchTemplatesFolderId, SearchSettings.SCSModulesFolderId }; Database fromDb = DataWrapper.GetDatabase(SearchSettings.MasterDatabase); Database toDb = DataWrapper.GetDatabase(SearchSettings.WebDatabase); foreach (var g in itemGuids) { var folder = fromDb.GetItem(g); PublishWrapper.PublishItem(folder, new[] { toDb }, new[] { folder.Language }, true, false); } //get the congitive indexes build for the first time SearchService.RebuildCognitiveIndexes(); }
public override ConversationResponse Respond(LuisResult result, ItemContextParameters parameters, IConversation conversation) { var item = (Item)conversation.Data[ItemKey].Value; var version = (string)conversation.Data[VersionKey].Value; var date = (string)conversation.Data[DateKey].Value; var dbs = (List <Database>)conversation.Data[DBKey].Value; var fields = new Dictionary <ID, string>(); int versionInt; //set item settings if (version.Equals("0")) { fields = (string.IsNullOrWhiteSpace(date)) ? GetFields("", "1", "", "") : GetFields(date, "", "", ""); } //version settings else if (int.TryParse(version, out versionInt)) { fields = (string.IsNullOrWhiteSpace(date)) ? GetFields("", "", "", "1") : GetFields("", "", date, ""); } if (fields.Any()) { DataWrapper.UpdateFields(item, fields); var db = Sitecore.Configuration.Factory.GetDatabase(parameters.Database); var langs = DataWrapper.GetLanguages(db) .Where(a => a.Name.Equals(parameters.Language)) .ToArray(); PublishWrapper.PublishItem(item, dbs.ToArray(), langs, false, false, false); } var dateResponse = ""; if (!string.IsNullOrWhiteSpace(date)) { var dateTime = DateUtil.IsoDateToDateTime(date); dateResponse = (dateTime.Hour > 0) ? dateTime.ToString("MMMM d, yyyy h:mmtt") : dateTime.ToString("MMMM d, yyyy "); var at = Translator.Text("Chat.Intents.Unpublish.At"); dateResponse = $" {at} {dateResponse}"; } return(ConversationResponseFactory.Create(KeyName, string.Format(Translator.Text("Chat.Intents.Unpublish.Response"), item.Paths.Path, string.Join(", ", dbs.Select(a => a.Name)), dateResponse))); }
public override ConversationResponse Respond(LuisResult result, ItemContextParameters parameters, IConversation conversation) { var toDb = (Database)conversation.Data[DBKey]; var rootItem = (Item)conversation.Data[ItemKey]; var langItem = (Language)conversation.Data[LangKey]; var recursion = (string)conversation.Data[RecursionKey]; PublishWrapper.PublishItem(rootItem, new[] { toDb }, new[] { langItem }, recursion.Equals("y"), false); var recursionMessage = recursion.Equals("y") ? Translator.Text("Chat.Intents.Publish.ResponseRecursion") : string.Empty; return(ConversationResponseFactory.Create(string.Format(Translator.Text("Chat.Intents.Publish.Response"), rootItem.DisplayName, toDb.Name, rootItem.Language.Name.ToUpper(), recursionMessage))); }
public override ConversationResponse Respond(LuisResult result, ItemContextParameters parameters, IConversation conversation) { var goalItem = (Item)conversation.Data[GoalItemKey].Value; var pageItem = (Item)conversation.Data[PageItemKey].Value; var newTrackingValue = ProfileService.UpdateTrackingGoal(pageItem, goalItem); var pageFields = new Dictionary <ID, string> { { Constants.FieldIds.StandardFields.TrackingFieldId, newTrackingValue } }; DataWrapper.UpdateFields(pageItem, pageFields); var toDb = DataWrapper.GetDatabase("web"); PublishWrapper.PublishItem(pageItem, new[] { toDb }, new[] { DataWrapper.ContentLanguage }, true, false, false); return(ConversationResponseFactory.Create(KeyName, string.Format(Translator.Text("Chat.Intents.AssignGoal.Response"), goalItem.DisplayName, pageItem.DisplayName))); }
public void PublishContent() { //publish templates folder for yourself and core, and publish scs root in modules List <ID> itemGuids = new List <ID>() { Settings.SCSDKTemplatesFolderId, Settings.TemplatesFolderId, Settings.SCSModulesFolderId }; Database fromDb = DataWrapper.GetDatabase(Settings.MasterDatabase); Database toDb = DataWrapper.GetDatabase(Settings.WebDatabase); foreach (var g in itemGuids) { var folder = fromDb.GetItem(g); PublishWrapper.PublishItem(folder, new[] { toDb }, new[] { folder.Language }, true, false, false); } }
public override ConversationResponse Respond(LuisResult result, ItemContextParameters parameters, IConversation conversation) { var name = (string)conversation.Data[NameKey].Value; var keyString = (string)conversation.Data[ProfileKeysKey].Value; var keys = keyString.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(a => a.Trim()).ToList(); var fields = new Dictionary <ID, string> { { Constants.FieldIds.Profile.NameFieldId, name }, { Constants.FieldIds.Profile.TypeFieldId, "Sum" }, { Constants.FieldIds.Profile.DecayFieldId, "0" }, }; //create goal and folder if needed var fromDb = "master"; var profileNode = DataWrapper.GetItemById(Constants.ItemIds.ProfileNodeId, fromDb); //create the profile var newProfileItem = DataWrapper.CreateItemFromBranch(profileNode.ID, Constants.TemplateIds.ProfileTemplateBranchId, fromDb, name, fields); //create the profile keys foreach (var k in keys) { var keyFields = new Dictionary <ID, string> { { Constants.FieldIds.ProfileKey.NameFieldId, k }, { Constants.FieldIds.ProfileKey.MinValueFieldId, "0" }, { Constants.FieldIds.ProfileKey.MaxValueFieldId, "10" }, }; var keyItem = DataWrapper.CreateItem(newProfileItem.ID, Constants.TemplateIds.ProfileKeyTemplateId, fromDb, k, keyFields); } //publish var toDb = DataWrapper.GetDatabase("web"); PublishWrapper.PublishItem(profileNode, new[] { toDb }, new[] { DataWrapper.ContentLanguage }, true, false, false); return(ConversationResponseFactory.Create(KeyName, string.Format(Translator.Text("Chat.Intents.CreateProfile.Response"), newProfileItem.DisplayName))); }
public void PublishOleContent() { //start at templates folder for yourself and core, and publish scs root in modules List <ID> itemGuids = new List <ID>() { OleSettings.SCSDKTemplatesFolderId, OleSettings.OleTemplatesFolderId, OleSettings.SCSModulesFolderId }; Database fromDb = DataWrapper.GetDatabase(OleSettings.MasterDatabase); Database toDb = DataWrapper.GetDatabase(OleSettings.WebDatabase); foreach (var g in itemGuids) { var folder = fromDb.GetItem(g); PublishWrapper.PublishItem(folder, new[] { toDb }, new[] { folder.Language }, true, false, false); } Sitecore.Globalization.Translate.ResetCache(true); }
public override ConversationResponse Respond(LuisResult result, ItemContextParameters parameters, IConversation conversation) { var profileCardItem = (Item)conversation.Data[ProfileCardItemKey].Value; //do search var searchParameters = new Dictionary <string, string>(); var namedItem = conversation.Data[ItemNameKey].Value; if (namedItem != null && namedItem is Item) { searchParameters.Add(Constants.SearchParameters.ItemName, ((Item)namedItem).DisplayName); } var templateItem = conversation.Data[TemplateItemKey].Value; if (templateItem != null && templateItem is Item) { searchParameters.Add(Constants.SearchParameters.TemplateId, ((Item)templateItem).ID.ToString()); } var folderItem = conversation.Data[FolderItemKey].Value; var folderId = (folderItem != null && folderItem is Item) ? ((Item)templateItem).ID.ToString() : Constants.Paths.ContentPath; searchParameters.Add(Constants.SearchParameters.FilterPath, folderId); var fieldSet = conversation.Data[FieldItemKey].Value; if (fieldSet != null && fieldSet is ListItem) { var kvp = (ListItem)fieldSet; searchParameters.Add(Constants.SearchParameters.FieldName, kvp.Text); searchParameters.Add(Constants.SearchParameters.FieldValue, kvp.Value); } var results = SearchService.GetResults(parameters.Database, parameters.Language, "", searchParameters, 0, -1); if (results.Count < 1) { conversation.IsEnded = true; ConversationResponseFactory.Create(KeyName, string.Format( Translator.Text("Chat.Intents.AssignProfileCard.FailedResponse"), profileCardItem.DisplayName, results.Count)); } //get the item's tracking field and append the new goal to it int alteredPages = 0; foreach (var r in results) { var pageItem = r.GetItem(); if (pageItem.Visualization.Layout == null) { continue; } var newTrackingValue = ProfileService.UpdateTrackingProfile(pageItem, profileCardItem); var pageFields = new Dictionary <ID, string> { { Constants.FieldIds.StandardFields.TrackingFieldId, newTrackingValue } }; DataWrapper.UpdateFields(pageItem, pageFields); var toDb = DataWrapper.GetDatabase("web"); PublishWrapper.PublishItem(pageItem, new[] { toDb }, new[] { DataWrapper.ContentLanguage }, true, false, false); alteredPages++; } return(ConversationResponseFactory.Create(KeyName, string.Format( Translator.Text("Chat.Intents.AssignProfileCard.Response"), profileCardItem.DisplayName, alteredPages))); }