상속: Segmentio.Model.BaseAction
		public void SerializationOfIdentifyIncludesContextWithLanguage()
		{
			var identify = new Identify("99",
				 new Traits() { },
						DateTime.UtcNow,
						new Context()
							.SetLanguage("fr"));

			var settings = new JsonSerializerSettings
			{
				Converters = new List<JsonConverter> { new ContextSerializer() }
			};
			string json = JsonConvert.SerializeObject(identify, settings);
			Assert.IsTrue(json.Contains("\"language\":\"fr\""));
		}
		public void DemonstrateWhyContextSerializerIsNeeded()
		{
			var identify = new Identify("99",
				 new Traits() { },
						DateTime.UtcNow,
						new Context()
							.SetIp("12.212.12.49"));

			var settings = new JsonSerializerSettings
			{
				//notice, we are failing to specify a special converter
			};
			string json = JsonConvert.SerializeObject(identify, settings);
			Assert.IsFalse(json.Contains("12.212.12.49"));
		}
		public void SerializationOfIdentifyIncludesContextWithIPAddress()
		{
			var identify = new Identify("99",
				 new Traits() {},
                        DateTime.UtcNow,
                        new Context()
                            .SetIp("12.212.12.49"));

			var settings = new JsonSerializerSettings
			{
				Converters = new List<JsonConverter> { new ContextSerializer() }
			};
			string json = JsonConvert.SerializeObject(identify,settings);
			Assert.IsTrue(json.Contains("\"ip\":\"12.212.12.49\""));
		}
		public void SerializationOfIdentifyIncludesContextWithProviders()
		{
			var identify = new Identify("99",
				 new Traits() { },
						DateTime.UtcNow,
						new Context()
							.SetProviders(new Providers() {
                                { "all", false },
                                { "Mixpanel", true },
                                { "Salesforce", true }}));

			var settings = new JsonSerializerSettings
			{
				Converters = new List<JsonConverter> { new ContextSerializer() }
			};
			string json = JsonConvert.SerializeObject(identify, settings);
			Assert.IsTrue(json.Contains("\"providers\""));
		}
예제 #5
0
        /// <summary>
        /// Identifying a visitor ties all of their actions to an ID you
        /// recognize and records visitor traits you can segment by.
        /// </summary>
        ///
        /// <param name="userId">The visitor's identifier after they log in, or you know
        /// who they are. By
        /// explicitly identifying a user, you tie all of their actions to their identity.</param>
        ///
        /// <param name="traits">A dictionary with keys like "email", "name", “subscriptionPlan” or
        /// "friendCount”. You can segment your users by any trait you record.
        /// Pass in values in key-value format. String key, then its value
        /// { String, Integer, Boolean, Double, or Date are acceptable types for a value. } </param>
        ///
        /// <param name="timestamp">  If this event happened in the past, the timestamp
        /// can be used to designate when the identification happened. Careful with this one,
        /// if it just happened, leave it null.</param>
        /// <param name="context"> A dictionary with additional information thats related to the visit.
        /// Examples are userAgent, and IP address of the visitor.
        /// Feel free to pass in null if you don't have this information.</param>
        ///
        ///
        public void Identify(string userId, Traits traits,
               DateTime? timestamp, ContextSegmentIO context)
        {
            if (String.IsNullOrEmpty(userId))
                throw new InvalidOperationException("Please supply a valid userId to Identify.");

            Identify identify = new Identify(userId, traits, timestamp, context);

            Enqueue(identify);
        }