REST Email Marketing API DocumentationExample 4 — Add to a workflow
Workflows in Symphonie can be triggered by many different conditions: polling from a segment, a new recipient added to the system, an open
or click-through, adding to an Offline Event, or by explicitly adding a recipient using the API. This example demonstrates adding a recipient to an existing,
known workflow. Workflows can be configured to allow a recipient to enter only one time, to allow multiple entries for the same recipient once the workflow
has completed, or to allow the recipient to be in the workflow many times simultaneously. The API will report an error if the recipient cannot be inserted. |
private class wfRecipientAddStatus
{
public System.Collections.Generic.List<string> notInDatabase = new System.Collections.Generic.List<string>();
public System.Collections.Generic.List<string> duplicateInFile = new System.Collections.Generic.List<string>();
public System.Collections.Generic.List<string> currentlyInWorkflow = new System.Collections.Generic.List<string>();
public System.Collections.Generic.List<string> previouslyInWorkflow = new System.Collections.Generic.List<string>();
}
private static void RestExample4(System.Collections.Generic.List<string> emailAddresses)
{
try
{
string url = "http://www.example.com/api/rest/Workflows/Add";
System.Text.StringBuilder sb = new StringBuilder();
sb.Append("{'accountName':'acme', 'login':'ApiUser', 'password':'dfbdsf7udf5dfg78dfs', 'workflowName':'API Add Test','emailAddresses':[");
sb.AppendFormat("'{0}'", emailAddresses[0]);
for (int loop = 1; loop < emailAddresses.Count; loop++)
sb.AppendFormat(", '{0}'", emailAddresses[loop]);
sb.Append("]}");
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = sb.Length;
using (Stream webStream = request.GetRequestStream())
using (StreamWriter requestWriter = new StreamWriter(webStream, System.Text.Encoding.ASCII))
requestWriter.Write(sb.ToString());
string results;
using (System.Net.WebResponse webResponse = request.GetResponse())
using (Stream webStream = webResponse.GetResponseStream())
using (StreamReader responseReader = new StreamReader(webStream))
results = responseReader.ReadToEnd();
if (results[0] == '[')
{
System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
wfRecipientAddStatus rd = jss.Deserialize<wfRecipientAddStatus>(results);
foreach (string row in rd.notInDatabase)
System.Console.WriteLine(row + " is not in the database");
foreach (string row in rd.previouslyInWorkflow)
System.Console.WriteLine(row + " has already been in the workflow");
foreach (string row in rd.duplicateInFile)
System.Console.WriteLine(row + " was duplicated in the input");
}
else
System.Console.WriteLine(results);
}
catch ( System.Exception e )
{
System.Diagnostics.Debug.Fail(e.Message);
}
}
# encoding: utf-8
require 'rest-client'
require 'json'
emails = ["bert@example.com","joe@example.com","Pdhhdffgd", "joe@example.com"]
url = "http://www.example.com/api/rest/Workflows/Add"
data = {"accountName":"acme", "login":"ApiUser", "password":"sfgdfgh45wthbf", "workflowName":"API Add Test",
'emailAddresses':[]}
data["emailAddresses"] = emails
resp = RestClient.post url, data.to_json, {"Content-Type": "application/json"}
if resp.code != 200
puts "Add to workflow failed!"
puts resp.code
return
end
if resp.body[0] == "{"
data = JSON.parse resp.body
for row in data["notInDatabase"]
puts row + " in not in the database"
end
for row in data["previouslyInWorkflow"]
puts row + " has already been in the workflow"
end
for row in data["duplicateInFile"]
puts row + " was duplicated in the input"
end
else
puts resp.text
end
import requests
import json
def workflows(emails = []):
url = "http://www.example.com/api/rest/Workflows/Add"
data = {"accountName":"acmew", "login":"ApiUser", "password":"xdhw6w7ehd56wg", "workflowName":"API Add Test",
'emailAddresses':[]}
data["emailAddresses"] += emails
resp = requests.post(url, json=data, headers={"Content-Type": "application/json"})
if resp.status_code != 200:
print "Add to workflow failed!"
print resp.status_code
return
if resp.text[0] == "[":
data = json.loads(resp.text)
for row in data["notInDatabase"]:
print row + " is not in the database"
for row in data["previouslyInWorkflow"]:
print row + " has already been in the workflow"
for row in data["duplicateInFile"]:
print row + " was duplicated in the input"
else:
print resp.text
workflows(["joe@example.com","sam@example.com","Pdhhdffgd", "sam@example.com"])