/// <summary> /// This enumerates all sends /// </summary> /// <returns>The sends.</returns> /// <param name="startDate">Start date.</param> /// <param name="endDate">End date.</param> /// <param name="daysToCountBackForSends">Days to count back for sends.</param> public IEnumerable <APIObject> GetSends(DateTime startDate, DateTime endDate, int daysToCountBackForSends = 30) { SimpleFilterPart dateFilter = new SimpleFilterPart(); dateFilter.Property = "SendDate"; dateFilter.SimpleOperator = SimpleOperators.between; dateFilter.DateValue = new DateTime[2]; dateFilter.DateValue[0] = startDate.AddDays(-1 * daysToCountBackForSends); dateFilter.DateValue[1] = endDate; var rr = new RetrieveRequest(); rr.ClientIDs = new ClientID[] { new ClientID() { ID = _auth.ClientId.Value, IDSpecified = true } }; rr.ObjectType = "Send"; rr.Properties = new string[] { "ID", "Additional", "SendDate", "SentDate", "EmailName" }; rr.Filter = dateFilter; var result = RetrieveAsync(rr); if (result.OverallStatus.ToLower().StartsWith("error")) { var err = String.Format("ExactTarget API returned status: {0} requestId: {1}", result.OverallStatus, result.RequestID); throw new Exception(err); } return(result.Results); }
public static void RetrieveImportResultsSummary(SoapClient soapClient, string TaskID) { RetrieveRequest rr = new RetrieveRequest(); rr.ObjectType = "ImportResultsSummary"; SimpleFilterPart sf = new SimpleFilterPart(); sf.Property = "TaskResultID"; sf.SimpleOperator = SimpleOperators.equals; sf.Value = new String[] { TaskID }; rr.Filter = sf; rr.Properties = new string[] { "ImportStatus" }; string sStatus = ""; string sRequestId = ""; APIObject[] rResults; sStatus = soapClient.Retrieve(rr, out sRequestId, out rResults); Console.WriteLine("Status: " + sStatus); Console.WriteLine("RequestID: " + sRequestId); foreach (ImportResultsSummary irs in rResults) { // Possible values for ImportStatus are New, Processing, Completed, Error, IOWork, and Unknown Console.WriteLine("ImportStatus: " + irs.ImportStatus); } }
public void descargaOpen(String jobid, BackgroundWorker bgw) { EmailInfo einf = new EmailInfo(); Send objSend = einf.getEmailInformationOpenSent(jobid); double deci = Convert.ToDouble(objSend.UniqueOpens); Conexion conex =new Conexion(); RetrieveRequest rr = new RetrieveRequest(); rr.ObjectType = "OpenEvent"; String[] props = { "SubscriberKey" }; rr.Properties = props; /** * Details for single JobId/SendId */ SimpleFilterPart filter = new SimpleFilterPart(); filter.Property = "SendID"; String[] vlaues = { jobid + " " }; filter.Value = vlaues; rr.Filter = filter; APIObject[] results = null; String requestId = null; String status; List<String> lista = new List<String>(); int k = 0; int porcentaje; do { status = conex.cliente.Retrieve(rr, out requestId, out results); for (int i = 0; i < results.Length; i++) { OpenEvent deo = results[i] as OpenEvent; string parte3 = deo.SubscriberKey; var newLine = string.Format("{0}", parte3); lista.Add(newLine); porcentaje = Convert.ToInt32((k / deci) * 100); if (porcentaje > 100) porcentaje = 100; bgw.ReportProgress(porcentaje); k++; } rr = new RetrieveRequest(); rr.ContinueRequest = requestId; System.Console.Out.WriteLine("Procesando...."); System.Console.Out.WriteLine(results.Length); } while (status.Equals("MoreDataAvailable")); List<String> sinDup = lista.Distinct().ToList(); System.Console.Out.WriteLine("Descarga Completa!"); StreamWriter file = new StreamWriter(@"D:\ET_EXTRACTOR\Open_" + jobid + ".txt", true); System.Console.Out.WriteLine("Formateando"); for (int j = 0; j < sinDup.Count; j++) { file.WriteLine(sinDup.ElementAt(j)); } file.Close(); bgw.ReportProgress(0); }
public void RetrieveFolderStructure(string id, ET_Client etClient, string contentType, string path) { // Create the SOAP binding for call. BasicHttpBinding binding = new BasicHttpBinding(); binding.Name = "UserNameSoapBinding"; binding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential; binding.MaxReceivedMessageSize = 2147483647; var client = new FuelSDK.SoapClient(binding, etClient.soapclient.Endpoint.Address); client.ClientCredentials.UserName.UserName = "******"; client.ClientCredentials.UserName.Password = "******"; using (var scope = new OperationContextScope(client.InnerChannel)) { // Add oAuth token to SOAP header. XNamespace ns = "http://exacttarget.com"; var oauthElement = new XElement(ns + "oAuthToken", etClient.internalAuthToken); var xmlHeader = MessageHeader.CreateHeader("oAuth", "http://exacttarget.com", oauthElement); OperationContext.Current.OutgoingMessageHeaders.Add(xmlHeader); List<object> folders = new List<object>(); String requestID; String status; APIObject[] results; SimpleFilterPart sfp = new SimpleFilterPart(); sfp.Property = "ContentType"; sfp.SimpleOperator = SimpleOperators.equals; sfp.Value = new string[] { contentType }; SimpleFilterPart rf = new SimpleFilterPart(); rf.Property = "ParentFolder.ID"; rf.SimpleOperator = SimpleOperators.equals; rf.Value = new string[] { id }; ComplexFilterPart cfp = new ComplexFilterPart(); cfp.LeftOperand = sfp; cfp.LogicalOperator = LogicalOperators.AND; cfp.RightOperand = rf; RetrieveRequest rr = new RetrieveRequest(); rr.ObjectType = "DataFolder"; rr.Properties = new string[] { "ID", "Name", "ParentFolder.ID", "ParentFolder.Name" }; rr.Filter = cfp; status = client.Retrieve(rr, out requestID, out results); if (results.Count() > 0) { foreach (DataFolder df in results) { RetrieveObjectsByFolderID(df.ID.ToString(), etClient, path + "/" + df.Name + "/", contentType); RetrieveFolderStructure(df.ID.ToString(), etClient, contentType, path + "/" + df.Name + "/"); } } } }
public Dictionary <string, Dictionary <string, string> > GetDataExtension() { Dictionary <string, Dictionary <string, string> > dict = new Dictionary <string, Dictionary <string, string> >(); SoapClient client = new SoapClient(); client.ClientCredentials.UserName.UserName = "******"; client.ClientCredentials.UserName.Password = "******"; APIObject[] Results; String requestID; String status; RetrieveRequest1 rr1 = new RetrieveRequest1(); RetrieveRequest rr = new RetrieveRequest(); rr.ObjectType = "DataExtensionObject[Alert_Inbox]"; rr.Properties = new string[] { "Alert_Category", "Alert_Subject" }; rr1.RetrieveRequest = rr; SimpleFilterPart sf = new SimpleFilterPart(); sf.SimpleOperator = SimpleOperators.equals; sf.Property = "ET_Surrogate_ID"; try { //var result = Task.Run(async () => client.RetrieveAsync(rr1)); // var values = result.GetAwaiter().GetResult().GetAwaiter().GetResult(); var results = client.Retrieve(rr, out requestID, out Results); if (Results.Length > 0) { for (int i = 0; i < Results.Length; i++) { DataExtensionObject deo = (DataExtensionObject)Results[i]; Dictionary <string, string> props = new Dictionary <string, string>(); string transactionID = ""; foreach (APIProperty prop in deo.Properties) { if (prop.Name == "ET_Transaction_ID") { transactionID = prop.Value; } props[prop.Name] = prop.Value; } dict[transactionID] = props; } } } catch (Exception e) { } //var results = client.RetrieveAsync(rr1); return(dict); }
public Subscriber GetSubscriberByEmail(string email) { SimpleFilterPart sfp = new SimpleFilterPart(); sfp.Property = "EmailAddress"; sfp.Value = new string[] { email }; return(_client.Get <Subscriber>(sfp, _defaultColumns)); }
//private static string[] _defaultSubscriberColumns = new string[] { "ID", "SubscriberKey" }; public Subscriber GetSubscriberBySLXID(string slxId) { SimpleFilterPart sfp = new SimpleFilterPart(); sfp.Property = "SubscrierKey"; sfp.Value = new string[] { slxId }; sfp.SimpleOperator = SimpleOperators.equals; return(_client.Get <Subscriber>(sfp, _defaultColumns)); }
public IEnumerable <ListSubscriber> GetSubscribersOnList(ExactTargetClient.List list) { SimpleFilterPart filter = new SimpleFilterPart(); filter.Property = "ListID"; filter.SimpleOperator = SimpleOperators.equals; filter.Value = new string[] { list.ID.ToString() }; return(_client.GetMany <ListSubscriber>(filter, new string[] { "SubscriberKey", "Status" })); }
public ExactTargetClient.List GetList(int listID) { SimpleFilterPart sfp = new SimpleFilterPart(); sfp.Property = "ID"; sfp.SimpleOperator = SimpleOperators.equals; sfp.Value = new string[] { listID.ToString() }; var client = new ETClient(); return(client.Get <List>(sfp, new string[] { "ObjectID", "ListName", "ID" })); }
public static void RetrieveAutomation(SoapClient soapClient, string iAutomationCustomerKey) { RetrieveRequest rr = new RetrieveRequest(); rr.ObjectType = "Automation"; SimpleFilterPart sf = new SimpleFilterPart(); sf.Property = "CustomerKey"; sf.SimpleOperator = SimpleOperators.equals; sf.Value = new String[] { iAutomationCustomerKey }; rr.Filter = sf; rr.Properties = new string[] { "ObjectID", "Name", "Description", "Schedule.ID", "CustomerKey", "IsActive", "CreatedDate", "ModifiedDate", "Status" }; string sStatus = ""; string sRequestId = ""; APIObject[] rResults; sStatus = soapClient.Retrieve(rr, out sRequestId, out rResults); Console.WriteLine("Status: " + sStatus); Console.WriteLine("RequestID: " + sRequestId); foreach (Automation automation in rResults) { Console.WriteLine("ObjectID: " + automation.ObjectID); Console.WriteLine("Name: " + automation.Name); Console.WriteLine("Description: " + automation.Description); if (automation.Schedule != null) { Console.WriteLine("Schedule.ID: " + automation.Schedule.ID); } Console.WriteLine("CustomerKey: " + automation.CustomerKey); Console.WriteLine("IsActive: " + automation.IsActive); Console.WriteLine("CreatedDate: " + automation.CreatedDate.ToString()); Console.WriteLine("ModifiedDate: " + automation.ModifiedDate); Console.WriteLine("Status: " + automation.Status); } }
public static void RetrieveAutomation(SoapClient soapClient, string iAutomationCustomerKey) { RetrieveRequest rr = new RetrieveRequest(); rr.ObjectType = "Automation"; SimpleFilterPart sf = new SimpleFilterPart(); sf.Property = "CustomerKey"; sf.SimpleOperator = SimpleOperators.equals; sf.Value = new String[] { iAutomationCustomerKey }; rr.Filter = sf; rr.Properties = new string[] { "ObjectID", "Name", "Description", "Schedule.ID", "CustomerKey", "IsActive", "CreatedDate", "ModifiedDate", "Status"}; string sStatus = ""; string sRequestId = ""; APIObject[] rResults; sStatus = soapClient.Retrieve(rr, out sRequestId, out rResults); Console.WriteLine("Status: " + sStatus); Console.WriteLine("RequestID: " + sRequestId); foreach (Automation automation in rResults) { Console.WriteLine("ObjectID: " + automation.ObjectID); Console.WriteLine("Name: " + automation.Name); Console.WriteLine("Description: " + automation.Description); if (automation.Schedule != null) { Console.WriteLine("Schedule.ID: " + automation.Schedule.ID); } Console.WriteLine("CustomerKey: " + automation.CustomerKey); Console.WriteLine("IsActive: " + automation.IsActive); Console.WriteLine("CreatedDate: " + automation.CreatedDate.ToString()); Console.WriteLine("ModifiedDate: " + automation.ModifiedDate); Console.WriteLine("Status: " + automation.Status); } }
public static void RetrieveSend(SoapClient soapClient, string JobID) { RetrieveRequest rr = new RetrieveRequest(); rr.ObjectType = "Send"; SimpleFilterPart sf = new SimpleFilterPart(); sf.Property = "ID"; sf.SimpleOperator = SimpleOperators.equals; sf.Value = new String[] { JobID }; rr.Filter = sf; rr.Properties = new string[] { "ID", "SendDate", "NumberSent", "NumberDelivered", "HardBounces", "SoftBounces", "OtherBounces", "Unsubscribes", "Status" }; string sStatus = ""; string sRequestId = ""; APIObject[] rResults; sStatus = soapClient.Retrieve(rr, out sRequestId, out rResults); Console.WriteLine("Status: " + sStatus); Console.WriteLine("RequestID: " + sRequestId); foreach (Send s in rResults) { Console.WriteLine("ID (JobID): " + s.ID); Console.WriteLine("SendDate: " + s.SendDate.ToString()); Console.WriteLine("NumberSent: " + s.NumberSent); Console.WriteLine("NumberDelivered: " + s.NumberDelivered); Console.WriteLine("SoftBounces: " + s.SoftBounces); Console.WriteLine("OtherBounces: " + s.OtherBounces); Console.WriteLine("Unsubscribes: " + s.Unsubscribes); Console.WriteLine("Status: " + s.Status); } }
public Send getEmailInformationOpenSent(String jobid) { Conexion conex = new Conexion(); RetrieveRequest rr = new RetrieveRequest(); rr.ObjectType = "Send"; String[] props = { "UniqueOpens", "NumberSent" }; rr.Properties = props; SimpleFilterPart filter = new SimpleFilterPart(); filter.Property = "ID"; String[] vlaues = { jobid + " " }; filter.Value = vlaues; rr.Filter = filter; APIObject[] results = null; String requestId = null; String status; List<String> lista = new List<String>(); Send obj=null; status = conex.cliente.Retrieve(rr, out requestId, out results); while (status.CompareTo("OK") != 0) { status = conex.cliente.Retrieve(rr, out requestId, out results); } for (int i = 0; i < results.Length; i++) { Send deo = results[i] as Send; obj = deo; } return obj; }
public void GetDataExtension() { client.ClientCredentials.UserName.UserName = "******"; client.ClientCredentials.UserName.Password = "******"; APIObject[] Results; String requestID; String status; RetrieveRequest1 rr1 = new RetrieveRequest1(); RetrieveRequest rr = new RetrieveRequest(); rr.ObjectType = "DataExtensionObject[Alert_Inbox]"; rr.Properties = new string[] { "Alert_Category", "Alert_Subject" }; rr1.RetrieveRequest = rr; SimpleFilterPart sf = new SimpleFilterPart(); sf.SimpleOperator = SimpleOperators.equals; sf.Property = "ET_Surrogate_ID"; //var results = client.RetrieveAsync(rr1); var result = Task.Run(async() => client.RetrieveAsync(rr1)); var values = result.GetAwaiter().GetResult().GetAwaiter().GetResult(); }
static void TestET_Folder() { string NewFolderName = "Testing C Sharp SDK"; int ParentIDForEmail = 0; string ContentType = "email"; ET_Client myclient = new ET_Client(); Console.WriteLine("--- Testing Folder ---"); Console.WriteLine("\n Retrieve All Folder with GetMoreResults"); ET_Folder getAllFolder = new ET_Folder(); getAllFolder.AuthStub = myclient; getAllFolder.Props = new string[] { "ID", "Client.ID", "ParentFolder.ID", "ParentFolder.CustomerKey", "ParentFolder.ObjectID", "ParentFolder.Name", "ParentFolder.Description", "ParentFolder.ContentType", "ParentFolder.IsActive", "ParentFolder.IsEditable", "ParentFolder.AllowChildren", "Name", "Description", "ContentType", "IsActive", "IsEditable", "AllowChildren", "CreatedDate", "ModifiedDate", "Client.ModifiedBy", "ObjectID", "CustomerKey", "Client.EnterpriseID", "Client.CreatedBy" }; GetReturn grAllFolder = getAllFolder.Get(); Console.WriteLine("Get Status: " + grAllFolder.Status.ToString()); Console.WriteLine("Message: " + grAllFolder.Message.ToString()); Console.WriteLine("Code: " + grAllFolder.Code.ToString()); Console.WriteLine("Results Length: " + grAllFolder.Results.Length); while (grAllFolder.MoreResults) { Console.WriteLine("\n Continue Retrieve All Folders with GetMoreResults"); grAllFolder = getAllFolder.GetMoreResults(); Console.WriteLine("Get Status: " + grAllFolder.Status.ToString()); Console.WriteLine("Message: " + grAllFolder.Message.ToString()); Console.WriteLine("Code: " + grAllFolder.Code.ToString()); Console.WriteLine("Results Length: " + grAllFolder.Results.Length); } Console.WriteLine("\n Retrieve Specific Folder for Email Folder ParentID"); ET_Folder getFolder = new ET_Folder(); getFolder.AuthStub = myclient; SimpleFilterPart ParentFolderFilter = new SimpleFilterPart() { Property = "ParentFolder.ID", SimpleOperator = SimpleOperators.equals, Value = new string[] { "0" } }; SimpleFilterPart ContentTypeFilter = new SimpleFilterPart() { Property = "ContentType", SimpleOperator = SimpleOperators.equals, Value = new string[] { "Email" } }; getFolder.SearchFilter = new ComplexFilterPart() { LeftOperand = ParentFolderFilter, RightOperand = ContentTypeFilter, LogicalOperator = LogicalOperators.AND }; getFolder.Props = new string[] { "ID", "Name", "Description" }; GetReturn grFolder = getFolder.Get(); Console.WriteLine("Get Status: " + grFolder.Status.ToString()); Console.WriteLine("Message: " + grFolder.Message.ToString()); Console.WriteLine("Code: " + grFolder.Code.ToString()); Console.WriteLine("Results Length: " + grFolder.Results.Length); foreach (ET_Folder ef in grFolder.Results) { ParentIDForEmail = ef.ID; } if (ParentIDForEmail != 0) { Console.WriteLine("\n Create Folder"); ET_Folder fold = new ET_Folder(); fold.Name = NewFolderName; fold.Description = NewFolderName; fold.CustomerKey = NewFolderName; fold.AuthStub = myclient; fold.ParentFolder = new ET_Folder(); fold.ParentFolder.ID = ParentIDForEmail; fold.ContentType = ContentType; fold.IsEditable = true; PostReturn prFolder = fold.Post(); Console.WriteLine("Post Status: " + prFolder.Status.ToString()); Console.WriteLine("Message: " + prFolder.Message.ToString()); Console.WriteLine("Code: " + prFolder.Code.ToString()); Console.WriteLine("Results Length: " + prFolder.Results.Length); foreach (ResultDetail rd in prFolder.Results) { Console.WriteLine("--Status Code: " + rd.StatusCode); Console.WriteLine("--Status Message: " + rd.StatusMessage); } Console.WriteLine("\n Retrieve newly created Folder"); ET_Folder getNewFolder = new ET_Folder(); getNewFolder.AuthStub = myclient; getNewFolder.SearchFilter = new SimpleFilterPart() { Property = "CustomerKey", SimpleOperator = SimpleOperators.equals, Value = new string[] { NewFolderName } }; getNewFolder.Props = new string[] { "ID", "Name", "Description" }; GetReturn grNewFolder = getNewFolder.Get(); Console.WriteLine("Get Status: " + grNewFolder.Status.ToString()); Console.WriteLine("Message: " + grFolder.Message.ToString()); Console.WriteLine("Code: " + grNewFolder.Code.ToString()); Console.WriteLine("Results Length: " + grNewFolder.Results.Length); foreach (ET_Folder ef in grNewFolder.Results) { Console.WriteLine("--Name: " + ef.Name + " - Description:" + ef.Description); } Console.WriteLine("\n UpdateFolder"); ET_Folder patchFolder = new ET_Folder(); patchFolder.AuthStub = myclient; patchFolder.CustomerKey = NewFolderName; patchFolder.Description = "Now with a new Description"; PatchReturn patchResponse = patchFolder.Patch(); Console.WriteLine("Patch Status: " + patchResponse.Status.ToString()); Console.WriteLine("Message: " + patchResponse.Message.ToString()); Console.WriteLine("Code: " + patchResponse.Code.ToString()); Console.WriteLine("Results Length: " + patchResponse.Results.Length); if (patchResponse.Status) { Console.WriteLine("\n Retrieve updated Folder"); grNewFolder = getNewFolder.Get(); Console.WriteLine("Get Status: " + grNewFolder.Status.ToString()); Console.WriteLine("Message: " + grFolder.Message.ToString()); Console.WriteLine("Code: " + grNewFolder.Code.ToString()); Console.WriteLine("Results Length: " + grNewFolder.Results.Length); foreach (ET_Folder ef in grNewFolder.Results) { Console.WriteLine("--Name: " + ef.Name + " - Description:" + ef.Description); } } Console.WriteLine("\n Delete Folder"); ET_Folder delFolder = new ET_Folder(); delFolder.AuthStub = myclient; delFolder.CustomerKey = NewFolderName; FuelSDK.DeleteReturn drFolder = delFolder.Delete(); Console.WriteLine("Delete Status: " + drFolder.Status.ToString()); Console.WriteLine("Message: " + drFolder.Message.ToString()); Console.WriteLine("Code: " + drFolder.Code.ToString()); Console.WriteLine("Results Length: " + drFolder.Results.Length); foreach (ResultDetail rd in drFolder.Results) { Console.WriteLine("--Status Code: " + rd.StatusCode); Console.WriteLine("--Status Message: " + rd.StatusMessage); } Console.WriteLine("\n Retrieve Folder to confirm deletion"); grNewFolder = getNewFolder.Get(); Console.WriteLine("Get Status: " + grNewFolder.Status.ToString()); Console.WriteLine("Message: " + grFolder.Message.ToString()); Console.WriteLine("Code: " + grNewFolder.Code.ToString()); Console.WriteLine("Results Length: " + grNewFolder.Results.Length); foreach (ET_Folder ef in grNewFolder.Results) { Console.WriteLine("--Name: " + ef.Name + " - Description:" + ef.Description); } } }
public void ProcessRequest(HttpContext context) { try { // Local Variables. APIObject[] results = null; String requestId = null; String SOAPEndPoint = context.Session["SOAPEndPoint"].ToString(); String internalOauthToken = context.Session["internalOauthToken"].ToString(); String search = context.Request.QueryString["search"].ToString().Trim(); // Create the SOAP binding for call. BasicHttpBinding binding = new BasicHttpBinding(); binding.Name = "UserNameSoapBinding"; binding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential; binding.MaxReceivedMessageSize = 2147483647; var client = new SoapClient(binding, new EndpointAddress(new Uri(SOAPEndPoint))); client.ClientCredentials.UserName.UserName = "******"; client.ClientCredentials.UserName.Password = "******"; using (var scope = new OperationContextScope(client.InnerChannel)) { // Add oAuth token to SOAP header. XNamespace ns = "http://exacttarget.com"; var oauthElement = new XElement(ns + "oAuthToken", internalOauthToken); var xmlHeader = MessageHeader.CreateHeader("oAuth", "http://exacttarget.com", oauthElement); OperationContext.Current.OutgoingMessageHeaders.Add(xmlHeader); // Setup RetrieveRequest for Subscriber object. RetrieveRequest retrieveRequest = new RetrieveRequest(); retrieveRequest.ObjectType = "Subscriber"; String[] props = { "ID", "EmailAddress", "SubscriberKey", "Status" }; retrieveRequest.Properties = props; // Query filter using Simplefilter. SimpleFilterPart sfp = new SimpleFilterPart(); sfp.Property = "SubscriberKey"; sfp.SimpleOperator = SimpleOperators.like; sfp.Value = new String[] { search.Trim() }; // Query filter using Simplefilter. SimpleFilterPart sfp2 = new SimpleFilterPart(); sfp2.Property = "EmailAddress"; sfp2.SimpleOperator = SimpleOperators.like; sfp2.Value = new String[] { search.Trim() }; // Complexfilter to OR the two SimpleFilters. ComplexFilterPart cfp = new ComplexFilterPart(); cfp.LeftOperand = sfp; cfp.RightOperand = sfp2; cfp.LogicalOperator = LogicalOperators.OR; // Use the ComplexFilter in RetrieveRequest. retrieveRequest.Filter = cfp; // Retrieve the subscribers. String response = client.Retrieve(retrieveRequest, out requestId, out results); // If results returned, loop through them a convert to JSON. if (response != null && response.ToLower().Equals("ok")) { String strResults = string.Empty; strResults += @"{""subscribers"": ["; if (results != null && results.Length > 0) { int i = 1; foreach (Subscriber sub in results) { // Converting desired properties into JSON. strResults += @"{""ID"":" + JsonConvert.SerializeObject(sub.ID).ToString().Trim() + ", "; strResults += @"""EmailAddress"":" + JsonConvert.SerializeObject(sub.EmailAddress).ToString().Trim() + ", "; strResults += @"""SubscriberKey"":" + JsonConvert.SerializeObject(sub.SubscriberKey).ToString().Trim() + ", "; strResults += @"""Status"":" + JsonConvert.SerializeObject(sub.Status.ToString()).ToString().Trim() + " }"; if (i < results.Length) strResults += ", "; i++; } strResults += " ]}"; // Return the resulting JSON from handler. context.Response.Write(strResults); } else context.Response.Write(@"{""subscribers"": []}"); } else { context.Response.Write(@"{""subscribers"": []}"); } } } catch (Exception ex) { context.Response.Write(ex); } }
public void ProcessRequest(HttpContext context) { try { // Local Variables. APIObject[] results = null; String requestId = null; String SOAPEndPoint = context.Session["SOAPEndPoint"].ToString(); String internalOauthToken = context.Session["internalOauthToken"].ToString(); String id = context.Request.QueryString["id"].ToString().Trim(); // Create the SOAP binding for call. BasicHttpBinding binding = new BasicHttpBinding(); binding.Name = "UserNameSoapBinding"; binding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential; binding.MaxReceivedMessageSize = 2147483647; var client = new SoapClient(binding, new EndpointAddress(new Uri(SOAPEndPoint))); client.ClientCredentials.UserName.UserName = "******"; client.ClientCredentials.UserName.Password = "******"; using (var scope = new OperationContextScope(client.InnerChannel)) { // Add oAuth token to SOAP header. XNamespace ns = "http://exacttarget.com"; var oauthElement = new XElement(ns + "oAuthToken", internalOauthToken); var xmlHeader = MessageHeader.CreateHeader("oAuth", "http://exacttarget.com", oauthElement); OperationContext.Current.OutgoingMessageHeaders.Add(xmlHeader); // Setup RetrieveRequest for Subscriber object. RetrieveRequest retrieveRequest = new RetrieveRequest(); retrieveRequest.ObjectType = "Subscriber"; //Object Type to retrieve String[] props = { "ID", "EmailAddress", "SubscriberKey", "Status", "CreatedDate" }; retrieveRequest.Properties = props; // Query filter using Simplefilter. SimpleFilterPart sfp = new SimpleFilterPart(); sfp.Property = "ID"; sfp.SimpleOperator = SimpleOperators.equals; sfp.Value = new String[] { id }; // Use the SimpleFilter in RetrieveRequest. retrieveRequest.Filter = sfp; // Retrieve the subscribers. String response = client.Retrieve(retrieveRequest, out requestId, out results); // If results returned, loop through them a convert to JSON. if (response != null && response.ToLower().Equals("ok")) { String strResults = string.Empty; strResults += @"{""subscribers"": ["; if (results != null && results.Length > 0) { int i = 1; foreach (Subscriber sub in results) { // Converting desired properties into JSON. strResults += @"{""ID"":" + JsonConvert.SerializeObject(sub.ID.ToString()).ToString().Trim() + ", "; strResults += @"""EmailAddress"":" + JsonConvert.SerializeObject(sub.EmailAddress).ToString().Trim() + ", "; strResults += @"""SubscriberKey"":" + JsonConvert.SerializeObject(sub.SubscriberKey).ToString().Trim() + ", "; strResults += @"""Status"":" + JsonConvert.SerializeObject(sub.Status.ToString()).ToString().Trim() + ", "; strResults += @"""CreatedDate"":" + JsonConvert.SerializeObject(sub.CreatedDate.ToString()).ToString().Trim() + " }"; if (i < results.Length) { strResults += ", "; } i++; } strResults += " ]}"; // Return the resulting JSON from handler. context.Response.Write(strResults); } else { context.Response.Write(@"{""subscribers"": []}"); } } else { context.Response.Write(@"{""subscribers"": []}"); } } } catch (Exception ex) { context.Response.Write(ex); } }
public void RetrieveObjectsByFolderID(string folderId, ET_Client etClient, string path, string contentType) { // Create the SOAP binding for call. BasicHttpBinding binding = new BasicHttpBinding(); binding.Name = "UserNameSoapBinding"; binding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential; binding.MaxReceivedMessageSize = 2147483647; var client = new FuelSDK.SoapClient(binding, etClient.soapclient.Endpoint.Address); client.ClientCredentials.UserName.UserName = "******"; client.ClientCredentials.UserName.Password = "******"; using (var scope = new OperationContextScope(client.InnerChannel)) { // Add oAuth token to SOAP header. XNamespace ns = "http://exacttarget.com"; var oauthElement = new XElement(ns + "oAuthToken", etClient.internalAuthToken); var xmlHeader = MessageHeader.CreateHeader("oAuth", "http://exacttarget.com", oauthElement); OperationContext.Current.OutgoingMessageHeaders.Add(xmlHeader); List<object> folders = new List<object>(); string cType = "Email"; switch (contentType) { case "media": cType = "Portfolio"; break; case "dataextension": cType = "DataExtension"; break; case "content": cType = "ContentArea"; break; } string requestID; // Filter by the Folder/Category SimpleFilterPart sfp = new SimpleFilterPart(); sfp.Property = "CategoryID"; sfp.SimpleOperator = SimpleOperators.equals; sfp.Value = new string[] { folderId }; // Create the RetrieveRequest object RetrieveRequest request = new RetrieveRequest(); request.ObjectType = cType; request.Filter = sfp; request.Properties = new string[] { "CustomerKey", "Name", "CreatedDate", "ModifiedDate" }; if(contentType == "media") request.Properties = new string[] { "CustomerKey", "FileName", "CreatedDate", "ModifiedDate" }; // Execute the Retrieve APIObject[] results; string status = client.Retrieve(request, out requestID, out results); for (int cntr = 0; cntr < results.Length; cntr++) { string sql = "INSERT INTO [Results] ([IdResult] ,[CustomerKey] ,[Name] ,[ResultType] ,[Path] ,[URL],[ThumbnailURL],[CreatedDate],[ModifiedDate],[IdContactIndex])VALUES (@IdResult ,@CustomerKey ,@Name ,@ResultType ,@Path ,@URL,@ThumbnailURL,@CreatedDate,@ModifiedDate,@IdContactIndex)"; switch (contentType) { case "media": var portfolio = (Portfolio)results[cntr]; using (System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["FindIt.Data.Entities"].ConnectionString)) using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql, cn)) { cmd.Parameters.Add("@IdResult", System.Data.SqlDbType.UniqueIdentifier).Value = Guid.NewGuid(); cmd.Parameters.Add("@CustomerKey", System.Data.SqlDbType.VarChar).Value = portfolio.CustomerKey; cmd.Parameters.Add("@Name", System.Data.SqlDbType.VarChar).Value = portfolio.FileName; cmd.Parameters.Add("@ResultType", System.Data.SqlDbType.VarChar).Value = contentType; cmd.Parameters.Add("@Path", System.Data.SqlDbType.VarChar).Value = path; cmd.Parameters.Add("@URL", System.Data.SqlDbType.VarChar).Value = ""; cmd.Parameters.Add("@ThumbnailURL", System.Data.SqlDbType.VarChar).Value = ""; cmd.Parameters.Add("@CreatedDate", System.Data.SqlDbType.DateTime).Value = portfolio.CreatedDate; cmd.Parameters.Add("@ModifiedDate", System.Data.SqlDbType.DateTime).Value = portfolio.ModifiedDate; cmd.Parameters.Add("@IdContactIndex", System.Data.SqlDbType.UniqueIdentifier).Value = new Guid("A08D166C-F310-4F2D-8D44-5DD8F1564B8F"); cn.Open(); cmd.ExecuteNonQuery(); } break; case "dataextension": var dataextension = (DataExtension)results[cntr]; using (System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["FindIt.Data.Entities"].ConnectionString)) using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql, cn)) { cmd.Parameters.Add("@IdResult", System.Data.SqlDbType.UniqueIdentifier).Value = Guid.NewGuid(); cmd.Parameters.Add("@CustomerKey", System.Data.SqlDbType.VarChar).Value = dataextension.CustomerKey; cmd.Parameters.Add("@Name", System.Data.SqlDbType.VarChar).Value = dataextension.Name; cmd.Parameters.Add("@ResultType", System.Data.SqlDbType.VarChar).Value = contentType; cmd.Parameters.Add("@Path", System.Data.SqlDbType.VarChar).Value = path; cmd.Parameters.Add("@URL", System.Data.SqlDbType.VarChar).Value = ""; cmd.Parameters.Add("@ThumbnailURL", System.Data.SqlDbType.VarChar).Value = ""; cmd.Parameters.Add("@CreatedDate", System.Data.SqlDbType.DateTime).Value = dataextension.CreatedDate; cmd.Parameters.Add("@ModifiedDate", System.Data.SqlDbType.DateTime).Value = dataextension.ModifiedDate; cmd.Parameters.Add("@IdContactIndex", System.Data.SqlDbType.UniqueIdentifier).Value = new Guid("A08D166C-F310-4F2D-8D44-5DD8F1564B8F"); cn.Open(); cmd.ExecuteNonQuery(); } break; case "content": var content = (ContentArea)results[cntr]; using (System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["FindIt.Data.Entities"].ConnectionString)) using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql, cn)) { cmd.Parameters.Add("@IdResult", System.Data.SqlDbType.UniqueIdentifier).Value = Guid.NewGuid(); cmd.Parameters.Add("@CustomerKey", System.Data.SqlDbType.VarChar).Value = content.CustomerKey; cmd.Parameters.Add("@Name", System.Data.SqlDbType.VarChar).Value = content.Name; cmd.Parameters.Add("@ResultType", System.Data.SqlDbType.VarChar).Value = contentType; cmd.Parameters.Add("@Path", System.Data.SqlDbType.VarChar).Value = path; cmd.Parameters.Add("@URL", System.Data.SqlDbType.VarChar).Value = ""; cmd.Parameters.Add("@ThumbnailURL", System.Data.SqlDbType.VarChar).Value = ""; cmd.Parameters.Add("@CreatedDate", System.Data.SqlDbType.DateTime).Value = content.CreatedDate; cmd.Parameters.Add("@ModifiedDate", System.Data.SqlDbType.DateTime).Value = content.ModifiedDate; cmd.Parameters.Add("@IdContactIndex", System.Data.SqlDbType.UniqueIdentifier).Value = new Guid("A08D166C-F310-4F2D-8D44-5DD8F1564B8F"); cn.Open(); cmd.ExecuteNonQuery(); } break; default: var email = (Email)results[cntr]; using (System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["FindIt.Data.Entities"].ConnectionString)) using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql, cn)) { cmd.Parameters.Add("@IdResult",System.Data.SqlDbType.UniqueIdentifier).Value = Guid.NewGuid(); cmd.Parameters.Add("@CustomerKey", System.Data.SqlDbType.VarChar).Value = email.CustomerKey; cmd.Parameters.Add("@Name", System.Data.SqlDbType.VarChar).Value = email.Name; cmd.Parameters.Add("@ResultType", System.Data.SqlDbType.VarChar).Value = contentType; cmd.Parameters.Add("@Path", System.Data.SqlDbType.VarChar).Value = path; cmd.Parameters.Add("@URL", System.Data.SqlDbType.VarChar).Value = ""; cmd.Parameters.Add("@ThumbnailURL", System.Data.SqlDbType.VarChar).Value = ""; cmd.Parameters.Add("@CreatedDate", System.Data.SqlDbType.DateTime).Value = email.CreatedDate; cmd.Parameters.Add("@ModifiedDate", System.Data.SqlDbType.DateTime).Value = email.ModifiedDate; cmd.Parameters.Add("@IdContactIndex", System.Data.SqlDbType.UniqueIdentifier).Value = new Guid("A08D166C-F310-4F2D-8D44-5DD8F1564B8F"); cn.Open(); cmd.ExecuteNonQuery(); } break; } } } }
public IEnumerable<IMetricsProvider> GetMetrics(int days) { Dictionary<int, ProviderMetrics> dictionary = new Dictionary<int,ProviderMetrics>(); /////////////////////////////////////////////////////////////////// // // setup variables used throughout the routine // /////////////////////////////////////////////////////////////////// ET_Client client = CreateClient(); string[] properties = new string[] { "EventDate", "SendID", }; DateTime end = DateTime.Now; DateTime start = end - TimeSpan.FromDays(days); SimpleFilterPart filter = new SimpleFilterPart(); filter.Property = "EventDate"; filter.SimpleOperator = SimpleOperators.between; filter.DateValue = new DateTime[] { start, end }; /////////////////////////////////////////////////////////////////// // // count bounces // /////////////////////////////////////////////////////////////////// ET_BounceEvent bounce = new ET_BounceEvent(); bounce.GetSinceLastBatch = false; bounce.AuthStub = client; bounce.SearchFilter = filter; bounce.Props = properties; GetReturn results = bounce.Get(); foreach (ET_BounceEvent item in results.Results) { if (!dictionary.ContainsKey(item.SendID)) { dictionary[item.SendID] = new ProviderMetrics(); dictionary[item.SendID].Name = GetEmailName(client, item.SendID); } dictionary[item.SendID].Bounces++; } /////////////////////////////////////////////////////////////////// // // count clicks // /////////////////////////////////////////////////////////////////// ET_ClickEvent click = new ET_ClickEvent(); click.GetSinceLastBatch = false; click.AuthStub = client; click.SearchFilter = filter; click.Props = properties; results = click.Get(); foreach (ET_ClickEvent item in results.Results) { if (!dictionary.ContainsKey(item.SendID)) { dictionary[item.SendID] = new ProviderMetrics(); dictionary[item.SendID].Name = GetEmailName(client, item.SendID); } dictionary[item.SendID].Clicks++; } /////////////////////////////////////////////////////////////////// // // count opens // /////////////////////////////////////////////////////////////////// ET_OpenEvent open = new ET_OpenEvent(); open.GetSinceLastBatch = false; open.AuthStub = client; open.SearchFilter = filter; open.Props = properties; results = open.Get(); foreach (ET_OpenEvent item in results.Results) { if (!dictionary.ContainsKey(item.SendID)) { dictionary[item.SendID] = new ProviderMetrics(); dictionary[item.SendID].Name = GetEmailName(client, item.SendID); } dictionary[item.SendID].Opens++; } /////////////////////////////////////////////////////////////////// // // count sends // /////////////////////////////////////////////////////////////////// ET_SentEvent send = new ET_SentEvent(); send.GetSinceLastBatch = false; send.AuthStub = client; send.SearchFilter = filter; send.Props = properties; results = send.Get(); foreach (ET_SentEvent item in results.Results) { if (!dictionary.ContainsKey(item.SendID)) { dictionary[item.SendID] = new ProviderMetrics(); dictionary[item.SendID].Name = GetEmailName(client, item.SendID); } dictionary[item.SendID].Sends++; } /////////////////////////////////////////////////////////////////// // // count unsubscribes // /////////////////////////////////////////////////////////////////// ET_UnsubEvent unsubscribe = new ET_UnsubEvent(); unsubscribe.GetSinceLastBatch = false; unsubscribe.AuthStub = client; unsubscribe.SearchFilter = filter; unsubscribe.Props = properties; results = unsubscribe.Get(); foreach (ET_UnsubEvent item in results.Results) { if (!dictionary.ContainsKey(item.SendID)) { dictionary[item.SendID] = new ProviderMetrics(); dictionary[item.SendID].Name = GetEmailName(client, item.SendID); } dictionary[item.SendID].Unsubscribes++; } return dictionary.Values; }
public void BounceEventDetails(DateTime fromDate, DateTime toDate, string TriggeredSendDefinitionObjectID) { List <string> BounceSubscribers; RetrieveRequest retrieveRequest = new RetrieveRequest(); retrieveRequest.ObjectType = "BounceEvent"; String[] props = { "SubscriberKey", "BounceType", "SMTPCode", "SMTPReason", "BounceCategory", "EventDate", "EventType" }; retrieveRequest.Properties = props; SimpleFilterPart filter = new SimpleFilterPart(); //Use this only if you are retrieving for TriggeredSend filter.Property = "TriggeredSendDefinitionObjectID"; String[] vlaues = { TriggeredSendDefinitionObjectID }; //filter.Property = "SendID"; //String[] vlaues = { "28980" }; filter.Value = vlaues; SimpleFilterPart dateFilter = new SimpleFilterPart(); dateFilter.Property = "EventDate"; dateFilter.SimpleOperator = SimpleOperators.between; dateFilter.DateValue = new DateTime[2]; dateFilter.DateValue[0] = fromDate.Date; //BeingDate; dateFilter.DateValue[1] = toDate.Date; //EndDate; ComplexFilterPart cfilter = new ComplexFilterPart(); cfilter.LeftOperand = filter; cfilter.LogicalOperator = LogicalOperators.AND; cfilter.RightOperand = dateFilter; retrieveRequest.Filter = cfilter; /** * Use this only if you are retrieving data from sub-account */ retrieveRequest.ClientIDs = new ClientID[] { new ClientID() { ID = config.ClientId.Value, IDSpecified = true } }; APIObject[] results = null; String requestId = null; String response = _Client.Retrieve(retrieveRequest, out requestId, out results); BounceEvent bounceEvent = null; if (response != null && response.ToLower().Equals("ok")) { if (results != null && results.Count() > 0) { BounceSubscribers = results.Cast <BounceEvent>().Select(a => a.SubscriberKey).ToList(); Console.WriteLine("*******************************************************"); Console.WriteLine("*******************************************************"); Console.WriteLine("************* List of Bounce Subscribers **************"); Console.WriteLine("*******************************************************"); Console.WriteLine("*******************************************************"); foreach (var sub in BounceSubscribers) { Console.WriteLine(string.Format("Subscriber Key: {0}", sub)); } } } }
public IList <TrackingEvent> RetrieveTrackingEventData(Type eventType, DateTime sinceWhen, String eventTypeString, ClientID clientId = null, string TriggeredSendDefinitionObjectID = "") { //String filterField = "CreatedDate"; String filterField = "EventDate"; var properties = GetRetrivableProperties(eventTypeString).ToArray(); SimpleFilterPart filter = new SimpleFilterPart(); //Use this only if you are retrieving for TriggeredSend filter.Property = "TriggeredSendDefinitionObjectID"; String[] vlaues = { TriggeredSendDefinitionObjectID }; //filter.Property = "SendID"; //String[] vlaues = { "28980" }; filter.Value = vlaues; var dateFilter = new SimpleFilterPart { Property = filterField, SimpleOperator = SimpleOperators.greaterThanOrEqual, DateValue = new DateTime[] { sinceWhen } }; ComplexFilterPart cfilter = new ComplexFilterPart(); cfilter.LeftOperand = filter; cfilter.LogicalOperator = LogicalOperators.AND; cfilter.RightOperand = dateFilter; RetrieveRequest retrieveRequest = new RetrieveRequest { ObjectType = eventType.Name, Properties = properties, Filter = cfilter, ClientIDs = new ClientID[] { clientId } }; APIObject[] results = null; String requestId = null, message; SoapClient client = _client; String status = ""; IList <TrackingEvent> returnList = new List <TrackingEvent>(); do { status = client.Retrieve(retrieveRequest, out requestId, out results); if (!client.GetResult(status, results, out message)) { //WriteToLog(PIMCO.SMS.Logging.Category.Exception, message); //throw new ExactTargetException(message); } for (int i = 0; i < results.Length; i++) { returnList.Add((TrackingEvent)results[i]); } //This calls the API again to get the next 2500 records retrieveRequest = new RetrieveRequest(); retrieveRequest.ContinueRequest = requestId; } while (status.Equals("MoreDataAvailable")); return(returnList.ToList()); }
public Response GetDataExtension() { var response = new Response { Success = true, Warning = false }; try { //Retrieve Subscriber //Local variables APIObject[] Results; String requestID; String status; // Instantiate the retrieve request RetrieveRequest rr = new RetrieveRequest(); rr.ObjectType = "DataExtensionObject[P00 SF_ SC CumpleaƱos Mayo_PRUEBA_0001]";//required // Setting up a simple filter SimpleFilterPart sf = new SimpleFilterPart(); sf.SimpleOperator = SimpleOperators.equals; sf.Property = "EMAIL"; sf.Value = new String[] { "" }; //Add Filter //rr.Filter = sf; rr.Properties = new string[] { "EMAIL","NOMBRE","MONTO","VISITAS", "DNI" };//required //Any Column on the Data Extension status = conexion.ETCliente.Retrieve(rr, out requestID, out Results); Console.WriteLine("EMAIL \t\t NOMBRE \t MONTO \t VISITAS \t DNI"); for (int i = 0; i < Results.Length; i++) { DataExtensionObject deo = Results[i] as DataExtensionObject; for (int j = 0; j < deo.Properties.Length; j++) { //Console.Write(string.Format("{0}-{1} ", deo.Properties[j].Name, deo.Properties[j].Value)); Console.Write(string.Format("{0}\t", deo.Properties[j].Value)); } Console.WriteLine(); } response.Data += "\nTotal Registros: " + Results.Length; } catch (Exception ex) { response.Success = false; response.Message = ex.Message; } return response; }