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)));
        }
示例#2
0
        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)));
        }
示例#3
0
        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)));
        }
示例#4
0
        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)));
        }
示例#7
0
        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);
            }
        }
示例#10
0
        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)));
        }