syncLead
最近更新: 2024年8月13日
- 主题:
- SOAP
创建对象:
- 管理员
此函数插入或更新单个潜在客户记录。 在更新现有潜在客户时,会使用以下键之一标识该潜在客户:
- Marketo ID
- 外部系统ID(实现为
foreignSysPersonId
) - Marketo Cookie(由Munchkin JS脚本创建)
- 电子邮件
如果找到现有的匹配项,调用将执行更新。 否则,它会插入并创建一个潜在客户。 匿名潜在客户可以使用Marketo Cookie ID进行更新,并在更新时成为已知客户。
除电子邮件外,所有这些标识符都被视为唯一键。 Marketo ID优先于所有其他键。 如果潜在客户记录中同时存在foreignSysPersonId
和Marketo ID,则Marketo ID优先,并将为该潜在客户更新foreignSysPersonId
。 如果只提供了foreignSysPersonId
,则将其用作唯一标识符。 如果foreignSysPersonId
和电子邮件同时存在,但Marketo ID不存在,则foreignSysPersonId
优先,并将更新该潜在客户的电子邮件。
(可选)可以指定上下文标头来命名目标工作区。
启用Marketo工作区并使用标题时,将应用以下规则:
- 如果设置了分配规则并且新潜在客户符合任何已配置的规则,则会在分配规则定义的分区中创建新的潜在客户。 否则,将在指定工作区的主分区中创建新的潜在客户。
- 与Marketo潜在客户ID、外部系统ID或Marketo Cookie匹配的潜在客户必须存在于指定工作区的主分区中,否则返回错误
- 如果现有潜在客户与电子邮件匹配,则已命名的工作区将被忽略,并且潜在客户会在其当前分区中更新
启用Marketo工作区且不使用标题时,将应用以下规则:
- 如果设置了分配规则并且新潜在客户符合任何已配置的规则,则会在分配规则定义的分区中创建新的潜在客户。 否则,将在“默认”工作区的主分区中创建新的潜在客户。
- 现有潜在客户在其当前分区中更新
如果未启用Marketo工作区,则Target工作区必须是“默认”工作区。 无需传递标头。
请求
字段名称
必需/可选
描述
leadRecord->Id
必需 — 仅当电子邮件或
foreignSysPersonId
不存在时潜在客户记录的Marketo ID
leadRecord->电子邮件
必需 — 仅当ID或
foreignSysPersonId
不存在时与潜在客户记录关联的电子邮件地址
leadRecord->
foreignSysPersonId
必需 — 仅当ID或电子邮件不存在时
与潜在客户记录关联的外部系统ID
leadRecord->foreignSysType
可选 — 仅在
foreignSysPersonId
存在时才需要外部系统的类型。 可能的值: CUSTOM、SFDC、NETSUITE
leadRecord->leadAttributeList->attribute->attrName
必需
要更新其值的潜在客户属性的名称。
leadRecord->leadAttributeList->attribute->attrValue
必需
要设置为在attrName中指定的潜在客户属性的值。
returnLead
必需
为true时,会在更新时返回完整的更新商机记录。
请求XML
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.marketo.com/mktows/">
<SOAP-ENV:Header>
<ns1:AuthenticationHeader>
<mktowsUserId>bigcorp1_461839624B16E06BA2D663</mktowsUserId>
<requestSignature>92f05a7be4838ae1c0e5aafe814891ee72968a08</requestSignature>
<requestTimestamp>2013-07-31T12:38:47-07:00</requestTimestamp>
</ns1:AuthenticationHeader>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:paramsSyncLead>
<leadRecord>
<Email>t@t.com</Email>
<leadAttributeList>
<attribute>
<attrName>FirstName</attrName>
<attrValue>George</attrValue>
</attribute>
<attribute>
<attrName>LastName</attrName>
<attrValue>of the Jungle</attrValue>
</attribute>
</leadAttributeList>
</leadRecord>
<returnLead>false</returnLead>
</ns1:paramsSyncLead>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
响应XML
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://www.marketo.com/mktows/">
<SOAP-ENV:Body>
<ns1:successSyncLead>
<result>
<leadId>1089965</leadId>
<syncStatus>
<leadId>1089965</leadId>
<status>UPDATED</status>
<error xsi:nil="true" />
</syncStatus>
<leadRecord xsi:nil="true" />
</result>
</ns1:successSyncLead>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
示例代码 — PHP
<?php
$debug = true;
$marketoSoapEndPoint = ""; // CHANGE ME
$marketoUserId = ""; // CHANGE ME
$marketoSecretKey = ""; // CHANGE ME
$marketoNameSpace = "http://www.marketo.com/mktows/";
// Create Signature
$dtzObj = new DateTimeZone("America/Los_Angeles");
$dtObj = new DateTime('now', $dtzObj);
$timeStamp = $dtObj->format(DATE_W3C);
$encryptString = $timeStamp . $marketoUserId;
$signature = hash_hmac('sha1', $encryptString, $marketoSecretKey);
// Create SOAP Header
$attrs = new stdClass();
$attrs->mktowsUserId = $marketoUserId;
$attrs->requestSignature = $signature;
$attrs->requestTimestamp = $timeStamp;
$authHdr = new SoapHeader($marketoNameSpace, 'AuthenticationHeader', $attrs);
$options = array("connection_timeout" =20, "location" =$marketoSoapEndPoint);
if ($debug) {
$options["trace"] = true;
}
// Create Request
$leadKey = new stdClass();
$leadKey->Email = "george@jungle.com";
// Lead attributes to update
$attr1 = new stdClass();
$attr1->attrName = "FirstName";
$attr1->attrValue = "George";
$attr2= new stdClass();
$attr2->attrName = "LastName";
$attr2->attrValue = "of the Jungle";
$attrArray = array($attr1, $attr2);
$attrList = new stdClass();
$attrList->attribute = $attrArray;
$leadKey->leadAttributeList = $attrList;
$leadRecord = new stdClass();
$leadRecord->leadRecord = $leadKey;
$leadRecord->returnLead = false;
$params = array("paramsSyncLead" =$leadRecord);
$soapClient = new SoapClient($marketoSoapEndPoint ."?WSDL", $options);
try {
$result = $soapClient->__soapCall('syncLead', $params, $options, $authHdr);
}
catch(Exception $ex) {
var_dump($ex);
}
if ($debug) {
print "RAW request:\n" .$soapClient->__getLastRequest() ."\n";
print "RAW response:\n" .$soapClient->__getLastResponse() ."\n";
}
print_r($result);
?>
示例代码 — Java
import com.marketo.mktows.*;
import java.net.URL;
import javax.xml.namespace.QName;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Hex;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.Marshaller;
public class SyncLead {
public static void main(String[] args) {
System.out.println("Executing syncLead");
try {
URL marketoSoapEndPoint = new URL("https://100-AEK-913.mktoapi.com/soap/mktows/2_1" + "?WSDL");
String marketoUserId = "demo17_1_809934544BFABAE58E5D27";
String marketoSecretKey = "27272727aa";
QName serviceName = new QName("http://www.marketo.com/mktows/", "MktMktowsApiService");
MktMktowsApiService service = new MktMktowsApiService(marketoSoapEndPoint, serviceName);
MktowsPort port = service.getMktowsApiSoapPort();
// Create Signature
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
String text = df.format(new Date());
String requestTimestamp = text.substring(0, 22) + ":" + text.substring(22);
String encryptString = requestTimestamp + marketoUserId ;
SecretKeySpec secretKey = new SecretKeySpec(marketoSecretKey.getBytes(), "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(secretKey);
byte[] rawHmac = mac.doFinal(encryptString.getBytes());
char[] hexChars = Hex.encodeHex(rawHmac);
String signature = new String(hexChars);
// Set Authentication Header
AuthenticationHeader header = new AuthenticationHeader();
header.setMktowsUserId(marketoUserId);
header.setRequestTimestamp(requestTimestamp);
header.setRequestSignature(signature);
// Create Request
ParamsSyncLead request = new ParamsSyncLead();
LeadRecord key = new LeadRecord();
ObjectFactory objectFactory = new ObjectFactory();
JAXBElement<Stringemail = objectFactory.createLeadRecordEmail("george@jungle.com");
key.setEmail(email);
request.setLeadRecord(key);
Attribute attr1 = new Attribute();
attr1.setAttrName("FirstName");
attr1.setAttrValue("George2");
Attribute attr2 = new Attribute();
attr2.setAttrName("LastName");
attr2.setAttrValue("of the Jungle");
ArrayOfAttribute aoa = new ArrayOfAttribute();
aoa.getAttributes().add(attr1);
aoa.getAttributes().add(attr2);
QName qname = new QName("http://www.marketo.com/mktows/", "leadAttributeList");
JAXBElement<ArrayOfAttributeattrList = new JAXBElement(qname, ArrayOfAttribute.class, aoa);
key.setLeadAttributeList(attrList);
MktowsContextHeader headerContext = new MktowsContextHeader();
headerContext.setTargetWorkspace("default");
SuccessSyncLead result = port.syncLead(request, header, headerContext);
JAXBContext context = JAXBContext.newInstance(SuccessSyncLead.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(result, System.out);
}
catch(Exception e) {
e.printStackTrace();
}
}
}
示例代码 — Ruby
require 'savon' # Use version 2.0 Savon gem
require 'date'
mktowsUserId = "" # CHANGE ME
marketoSecretKey = "" # CHANGE ME
marketoSoapEndPoint = "" # CHANGE ME
marketoNameSpace = "http://www.marketo.com/mktows/"
#Create Signature
Timestamp = DateTime.now
requestTimestamp = Timestamp.to_s
encryptString = requestTimestamp + mktowsUserId
digest = OpenSSL::Digest.new('sha1')
hashedsignature = OpenSSL::HMAC.hexdigest(digest, marketoSecretKey, encryptString)
requestSignature = hashedsignature.to_s
#Create SOAP Header
headers = {
'ns1:AuthenticationHeader' ={ "mktowsUserId" =mktowsUserId, "requestSignature" =requestSignature,
"requestTimestamp" =requestTimestamp
}
}
client = Savon.client(wsdl: 'http://app.marketo.com/soap/mktows/2_3?WSDL', soap_header: headers, endpoint: marketoSoapEndPoint, open_timeout: 90, read_timeout: 90, namespace_identifier: :ns1, env_namespace: 'SOAP-ENV')
#Create Request
request = {
:lead_record ={
:Email ="t@t.com",
:lead_attribute_list ={
:attribute ={
:attr_name ="FirstName",
:attr_value ="George" },
:attribute! ={
:attr_name ="LastName",
:attr_value ="of the Jungle" }
}
},
:return_lead ="false"
}
response = client.call(:sync_lead, message: request)
puts response
recommendation-more-help
bb269a6d-047a-4bf7-9acd-23ad9a63dc59