/// <summary> /// Load a conversation from a JSON response. /// </summary> /// <param name="campaign"> /// Parent in-app campaign. /// </param> /// <param name="conversationData"> /// JSON object with the conversation data. /// </param> /// <returns> /// Parsed conversation wrapper for native layer. /// </returns> public static SwrveConversation LoadFromJSON(SwrveSDK sdk, SwrveConversationCampaign campaign, Dictionary <string, object> conversationData) { SwrveConversation conversation = new SwrveConversation(sdk, campaign); conversation.Id = MiniJsonHelper.GetInt(conversationData, "id"); List <object> pages = (List <object>)conversationData ["pages"]; for (int i = 0; i < pages.Count; i++) { Dictionary <string, object> page = (Dictionary <string, object>)pages [i]; List <object> contents = (List <object>)page ["content"]; for (int j = 0; j < contents.Count; j++) { Dictionary <string, object> content = (Dictionary <string, object>)contents[j]; if ("image" == (string)content ["type"]) { conversation.ConversationAssets.Add((string)content ["value"]); } } } conversation.Conversation = Json.Serialize(conversationData); if (conversationData.ContainsKey("priority")) { conversation.Priority = MiniJsonHelper.GetInt(conversationData, "priority"); } return(conversation); }
public static SwrveBaseCampaign LoadFromJSON(ISwrveAssetsManager swrveAssetsManager, Dictionary <string, object> campaignData, DateTime initialisedTime, SwrveQAUser qaUser, Color?defaultBackgroundColor) { int @int = MiniJsonHelper.GetInt(campaignData, "id"); SwrveBaseCampaign swrveBaseCampaign = null; if (campaignData.ContainsKey("conversation")) { swrveBaseCampaign = SwrveConversationCampaign.LoadFromJSON(swrveAssetsManager, campaignData, @int, initialisedTime); } else if (campaignData.ContainsKey("messages")) { swrveBaseCampaign = SwrveMessagesCampaign.LoadFromJSON(swrveAssetsManager, campaignData, @int, initialisedTime, qaUser, defaultBackgroundColor); } if (swrveBaseCampaign == null) { return(null); } swrveBaseCampaign.Id = @int; AssignCampaignTriggers(swrveBaseCampaign, campaignData); swrveBaseCampaign.MessageCenter = campaignData.ContainsKey("message_center") && (bool)campaignData["message_center"]; if (!swrveBaseCampaign.MessageCenter && swrveBaseCampaign.GetTriggers().Count == 0) { swrveBaseCampaign.LogAndAddReason("Campaign [" + swrveBaseCampaign.Id + "], has no triggers. Skipping this campaign.", qaUser); return(null); } AssignCampaignRules(swrveBaseCampaign, campaignData); AssignCampaignDates(swrveBaseCampaign, campaignData); swrveBaseCampaign.Subject = (campaignData.ContainsKey("subject") ? ((string)campaignData["subject"]) : ""); if (swrveBaseCampaign.MessageCenter) { SwrveLog.Log($"message center campaign: {swrveBaseCampaign.GetType()}, {swrveBaseCampaign.subject}"); } return(swrveBaseCampaign); }
public static SwrveConversationCampaign LoadFromJSON(ISwrveAssetsManager swrveAssetsManager, Dictionary <string, object> campaignData, int campaignId, DateTime initialisedTime) { SwrveConversationCampaign swrveConversationCampaign = new SwrveConversationCampaign(initialisedTime); swrveConversationCampaign.Conversation = SwrveConversation.LoadFromJSON(swrveAssetsManager, swrveConversationCampaign, (Dictionary <string, object>)campaignData["conversation"]); return(swrveConversationCampaign); }
new public static SwrveConversationCampaign LoadFromJSON(SwrveSDK sdk, Dictionary <string, object> campaignData, int campaignId, DateTime initialisedTime) { SwrveConversationCampaign campaign = new SwrveConversationCampaign(initialisedTime); campaign.Conversation = SwrveConversation.LoadFromJSON(sdk, campaign, (Dictionary <string, object>)campaignData ["conversation"]); return(campaign); }
public static SwrveBaseCampaign LoadFromJSONWithNoValidation(ISwrveAssetsManager swrveAssetsManager, Dictionary <string, object> campaignData, DateTime initialisedTime, UnityEngine.Color?defaultBackgroundColor, List <SwrveQaUserCampaignInfo> qaUserCampaignInfoList = null) { int id = MiniJsonHelper.GetInt(campaignData, ID_KEY); SwrveBaseCampaign campaign = null; if (campaignData.ContainsKey(CONVERSATION_KEY)) { campaign = SwrveConversationCampaign.LoadFromJSON(swrveAssetsManager, campaignData, id, initialisedTime); } else if (campaignData.ContainsKey(MESSAGES_KEY)) { campaign = SwrveInAppCampaign.LoadFromJSON(swrveAssetsManager, campaignData, id, initialisedTime, defaultBackgroundColor, qaUserCampaignInfoList); } else if (campaignData.ContainsKey(EMBEDDED_MESSAGE_KEY)) { campaign = SwrveEmbeddedCampaign.LoadFromJSON(campaignData, initialisedTime, qaUserCampaignInfoList); } if (campaign == null) { return(null); } campaign.Id = id; return(campaign); }
protected void LogAndAddReason(string reason, bool displayed, List <SwrveQaUserCampaignInfo> qaCampaignInfoList) { if (SwrveQaUser.Instance.loggingEnabled && qaCampaignInfoList != null) { SwrveQaUserCampaignInfo campaignInfo = null; if (this is SwrveConversationCampaign) { SwrveConversationCampaign conversationCampaign = (SwrveConversationCampaign)this; campaignInfo = new SwrveQaUserCampaignInfo(Id, conversationCampaign.Conversation.Id, conversationCampaign.GetCampaignType(), displayed, reason); } else if (this is SwrveInAppCampaign) { SwrveInAppCampaign inAppCampaign = (SwrveInAppCampaign)this; campaignInfo = new SwrveQaUserCampaignInfo(Id, inAppCampaign.Messages[0].Id, inAppCampaign.GetCampaignType(), displayed, reason); } else if (this is SwrveEmbeddedCampaign) { SwrveEmbeddedCampaign embeddedCampaign = (SwrveEmbeddedCampaign)this; campaignInfo = new SwrveQaUserCampaignInfo(Id, embeddedCampaign.Message.Id, embeddedCampaign.GetCampaignType(), displayed, reason); } if (campaignInfo != null) { qaCampaignInfoList.Add(campaignInfo); } } SwrveLog.Log(string.Format("{0} {1}", this, reason)); }
/// <summary> /// Load an in-app campaign from a JSON response. /// </summary> /// <param name="campaignData"> /// JSON object with the individual campaign data. /// </param> /// <param name="initialisedTime"> /// Time that the SDK was initialised. Used for rules checking. /// </param> /// <param name="assetPath"> /// Path to the folder that will store all the assets. /// </param> /// <returns> /// Parsed in-app campaign. /// </returns> public static SwrveBaseCampaign LoadFromJSON(SwrveSDK sdk, Dictionary <string, object> campaignData, DateTime initialisedTime, SwrveQAUser qaUser) { int id = MiniJsonHelper.GetInt(campaignData, ID_KEY); SwrveBaseCampaign campaign = null; if (campaignData.ContainsKey(CONVERSATION_KEY)) { campaign = SwrveConversationCampaign.LoadFromJSON(sdk, campaignData, id, initialisedTime); } else if (campaignData.ContainsKey(MESSAGES_KEY)) { campaign = SwrveMessagesCampaign.LoadFromJSON(sdk, campaignData, id, initialisedTime, qaUser); } if (campaign == null) { return(null); } campaign.Id = id; AssignCampaignTriggers(campaign, campaignData); campaign.MessageCenter = campaignData.ContainsKey(MESSAGE_CENTER_KEY) && (bool)campaignData[MESSAGE_CENTER_KEY]; if ((!campaign.MessageCenter) && (campaign.GetTriggers().Count == 0)) { campaign.LogAndAddReason("Campaign [" + campaign.Id + "], has no triggers. Skipping this campaign.", qaUser); return(null); } AssignCampaignRules(campaign, campaignData); AssignCampaignDates(campaign, campaignData); campaign.Subject = campaignData.ContainsKey(SUBJECT_KEY) ? (string)campaignData[SUBJECT_KEY] : ""; if (campaign.MessageCenter) { SwrveLog.Log(string.Format("message center campaign: {0}, {1}", campaign.GetType(), campaign.subject)); } return(campaign); }
private SwrveConversation(ISwrveAssetController assetController, SwrveConversationCampaign campaign) { this.assetController = assetController; this.Campaign = campaign; this.ConversationAssets = new List <string> (); }
/// <summary> /// Load a conversation from a JSON response. /// </summary> /// <param name="campaign"> /// Parent in-app campaign. /// </param> /// <param name="conversationData"> /// JSON object with the conversation data. /// </param> /// <returns> /// Parsed conversation wrapper for native layer. /// </returns> public static SwrveConversation LoadFromJSON(ISwrveAssetsManager swrveAssetsManager, SwrveConversationCampaign campaign, Dictionary <string, object> conversationData) { SwrveConversation conversation = new SwrveConversation(swrveAssetsManager, campaign); conversation.Id = MiniJsonHelper.GetInt(conversationData, "id"); List <object> pages = (List <object>)conversationData ["pages"]; for (int i = 0; i < pages.Count; i++) { Dictionary <string, object> page = (Dictionary <string, object>)pages [i]; // Add image and font assets to queue from content List <object> contents = (List <object>)page ["content"]; for (int j = 0; j < contents.Count; j++) { Dictionary <string, object> content = (Dictionary <string, object>)contents[j]; string contentType = (string)content ["type"]; switch (contentType) { case "image": conversation.queueImageAsset(content); break; case "html-fragment": case "star-rating": conversation.queueFontAsset(content); break; case "multi-value-input": conversation.queueFontAsset(content); // iterate through options List <object> jsonOptions = (List <object>)content ["values"]; for (int k = 0; k < jsonOptions.Count; k++) { Dictionary <string, object> optionData = (Dictionary <string, object>)jsonOptions [k]; conversation.queueFontAsset(optionData); } break; } } // Add font assets to queue from button control List <object> controls = (List <object>)page ["controls"]; for (int j = 0; j < controls.Count; j++) { Dictionary <string, object> buttonData = (Dictionary <string, object>)controls [j]; conversation.queueFontAsset(buttonData); } } conversation.Conversation = Json.Serialize(conversationData); if (conversationData.ContainsKey("priority")) { conversation.Priority = MiniJsonHelper.GetInt(conversationData, "priority"); } return(conversation); }
private SwrveConversation(ISwrveAssetsManager swrveAssetsManager, SwrveConversationCampaign campaign) { this.SwrveAssetsManager = swrveAssetsManager; this.Campaign = campaign; this.ConversationAssets = new HashSet <SwrveAssetsQueueItem> (); }
public static SwrveConversation LoadFromJSON(ISwrveAssetsManager swrveAssetsManager, SwrveConversationCampaign campaign, Dictionary <string, object> conversationData) { SwrveConversation swrveConversation = new SwrveConversation(swrveAssetsManager, campaign); swrveConversation.Id = MiniJsonHelper.GetInt(conversationData, "id"); List <object> list = (List <object>)conversationData["pages"]; for (int i = 0; i < list.Count; i++) { Dictionary <string, object> dictionary = (Dictionary <string, object>)list[i]; List <object> list2 = (List <object>)dictionary["content"]; for (int j = 0; j < list2.Count; j++) { Dictionary <string, object> dictionary2 = (Dictionary <string, object>)list2[j]; switch ((string)dictionary2["type"]) { case "image": swrveConversation.queueImageAsset(dictionary2); break; case "html-fragment": case "star-rating": swrveConversation.queueFontAsset(dictionary2); break; case "multi-value-input": { swrveConversation.queueFontAsset(dictionary2); List <object> list3 = (List <object>)dictionary2["values"]; for (int k = 0; k < list3.Count; k++) { Dictionary <string, object> content = (Dictionary <string, object>)list3[k]; swrveConversation.queueFontAsset(content); } break; } } } List <object> list4 = (List <object>)dictionary["controls"]; for (int j = 0; j < list4.Count; j++) { Dictionary <string, object> content2 = (Dictionary <string, object>)list4[j]; swrveConversation.queueFontAsset(content2); } } swrveConversation.Conversation = Json.Serialize(conversationData); if (conversationData.ContainsKey("priority")) { swrveConversation.Priority = MiniJsonHelper.GetInt(conversationData, "priority"); } return(swrveConversation); }