Ejemplo n.º 1
0
        /// <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);
        }
        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);
        }
Ejemplo n.º 3
0
        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);
        }
        /// <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);
        }
Ejemplo n.º 5
0
        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];
                    string text = (string)dictionary2["type"];
                    if (text != null)
                    {
                        if (!(text == "image"))
                        {
                            if (!(text == "html-fragment") && !(text == "star-rating"))
                            {
                                if (text == "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);
                                    }
                                }
                            }
                            else
                            {
                                swrveConversation.queueFontAsset(dictionary2);
                            }
                        }
                        else
                        {
                            swrveConversation.queueImageAsset(dictionary2);
                        }
                    }
                }
                List <object> list4 = (List <object>)dictionary["controls"];
                for (int l = 0; l < list4.Count; l++)
                {
                    Dictionary <string, object> content2 = (Dictionary <string, object>)list4[l];
                    swrveConversation.queueFontAsset(content2);
                }
            }
            swrveConversation.Conversation = Json.Serialize(conversationData);
            if (conversationData.ContainsKey("priority"))
            {
                swrveConversation.Priority = MiniJsonHelper.GetInt(conversationData, "priority");
            }
            return(swrveConversation);
        }