本文介绍了笔者在SAPMarketingCloud工作项目中使用RestfulAPISDK过程中积累的一些经验。成功登录SAPMarketingCloud系统后,您可以在菜单“快速启动”->“管理联系人”中找到MarketingCloud联系人管理应用。点击:在这里可以看到系统中的所有联系人列表。左边的1218377是系统中的联系人总数,正下方的Create按钮是新建按钮,可以用来打开联系人创建页面。右边的搜索栏是谷歌风格的模糊搜索入口。首次使用该界面时,需要注意一些提示。上图中突出显示的四个控件实际上是四个过滤器。比如当前系统中没有状态为ForReview的联系人,编号为0,那么点击这个filter后:表格会显示0条数据。这是用户预期的行为,所以如果您看到表是空的,请不要感到惊讶。单击联系人数据的超链接时,将跳转到联系人详细信息页面。下图中url中高亮显示的guid就是这个联系人在SAP数据库中的主键值。使用nodejs修改MarketingCloud的联系人主数据假设MarketingCloud中有这样一个联系人主数据:现在需求是使用nodejs等编程语言修改这个联系人实例的高亮属性。代码如下:varconfig=require("./mcConfig");varrequest=require('request');varurl=config.tokenURL;console.log("user:"+config.user+"password:"+配置.密码);vargetTokenOptions={url:url,method:"GET",json:true,headers:{'Authorization':'Basic'+newBuffer(config.user+":"+config.password).toString('base64'),"content-type":"application/json","x-csrf-token":"fetch"}};functiongetToken(){returnnewPromise(function(resolve,reject){varrequestC=request.defaults({jar:true});console.log("Step1:通过url获取csrf令牌:"+url);requestC(getTokenOptions,function(error,response,body){varcsrfToken=response.headers['x-csrf-token'];if(!csrfToken){reject({message:"tokenfetcherror:"+error});返回;}console.log("Step1:csrftokengot:"+csrfToken);解决(csrfToken);});});}functionupdateContact(token){returnnewPromise(function(resolve,reject){varsPostData="--batch_1f7d-bd35-caed"+"\n"+"Content-Type:multipart/mixed;boundary=changeset_8f9e-9a44-9f9e"+"\n"+"\n"+"--changeset_8f9e-9a44-9f9e"+"\n"+"Content-Type:application/http"+"\n"+"Content-传输编码:binary"+"\n"+"\n"+"MERGECon??sumers('02000A21209F1EE99CDF1A1FC9AA8065')?sap-client=100HTTP/1.1"+"\n"+"Cache-Control:max-age=360"+"\n"+"sap-contextid-accept:header"+"\n"+"Accept:application/json"+"\n"+"Accept-Language:en"+"\n"+"DataServiceVersion:2.0"+"\n"+"MaxDataServiceVersion:2.0"+"\n"+"x-csrf-token:fQ2Pwfmf0K_LVYoKV9QYUw=="+"\n"+"Content-Type:application/json"+"\n"+//"Content-Length:215"+"\n"+"\n"+"{\"YY1_CustomerType_ENH\":\"Jerry测试1\"}"+"\n"+"--changeset_8f9e-9a44-9f9e--"+"\n"+"\n"+"--batch_1f7d-bd35-caed--";varrequestC=request.defaults({jar:true});varcreateOptions={url:config.updateContactURL,方法:"POST",json:false,headers:{"content-type":"multipart/mixed;boundary=batch_1f7d-bd35-caed",'x-csrf-token':令牌},正文:sPostData};请求tC(createOptions,function(error,response,data){if(error){reject(error.message);}else{debugger;console.log("联系人更新成功");resolve(data);}});});}getToken().then(updateContact).catch((error)=>{console.log("error:"+error.message);});我在nodejs代码中分配需要更改的字段值对于“JerryTest1”:执行后,成功更新此属性:使用postman修改SAPMarketingCloud联系人主数据MarketingCloud中的联系人主数据。创建成功后,个人资料区并不是所有的字段都可以修改。可以修改。比如我在“客户属性”字段维护了一些值:然后点击保存:第二次批量操作是通过一个roundtrip读取contact模型下的多个子节点的数据,与我们修改的场景无关.使用postman修改:body字段维护如下内容:--batch_1f7d-bd35-caedContent-Type:multipart/mixed;边界=changeset_8f9e-9a44-9f9e--changeset_8f9e-9a44-9f9eContent-Type:application/httpContent-Transfer-Encoding:binaryMERGECon??sumers('02000A21209F1EE99CDF1A1FC9AA8065')?sap-client=100HTTP/1.1Cache-Control:max-age=360sap-contextid-accept:headerAccept:application/jsonAccept-Language:enDataServiceVersion:2.0MaxDatafVersion:-token:fQ2Pwfmf0K_LVYoKV9QYUw==Content-Type:application/jsonContent-Length:215{"__metadata":{"uri":"https://jerry.hybris.com/sap/opu/odata/sap/CUAN_CONTACT_SRV/Consumers('02000A21209F1EE99CDF1A1FC9AA8065')","type":"CUAN_CONTACT_SRV.Consumer"},"YY1_CustomerType_ENH":"JerryTest2"}--changeset_8f9e-9a44-9f9e----batch_1f7d-bd35-caed--我要修改的字段newvaluenewvalue:Jerrytest2执行postman后发现value已经更新了,修改是成功的。使用nodejs创建MarketingCloud联系人数据源码如下:varconfig=require("./mcConfig");varrequest=require('request');varurl=config.tokenURL;console.log("user:"+config.user+"password:"+config.password);vargetTokenOptions={url:url,method:"GET",json:true,headers:{'Authorization':'Basic'+newBuffer(config.user+":"+config.password).toString('base64'),"content-type":"application/json","x-csrf-token":"fetch"}};functiongetToken(){returnnewPromise(function(resolve,reject){varrequestC=request.defaults({jar:true});console.log("Step1:通过url获取csrf令牌:"+url);requestC(getTokenOptions,function(error,response,body){varcsrfToken=response.headers['x-csrf-token'];if(!csrfToken){reject({message:"tokenfetcherror:"+error});return;}console.log("Step1:csrftokengot:"+csrfToken);resolve(csrfToken);});});}functioncreateContact(token){returnnewPromise(function(resolve,reject){varoPostData={"国家代码":"CN","City":"Chengdu","FirstName":"Jerry4","LastName":"Wang2","PostalCode":"610093","RegionCode":"","Street":"天府软件园","HouseNumber":"天府软件园","DateofBirth":null,"ContactPersonFacets":[{"Id":"jerry1@sap.com","IdOrigin":"EMAIL","Obsolete":false,"无效的":false},{"Id":"","IdOrigin":"PHONE","Obsolete":false,"Invalid":false},{"Id":"","IdOrigin":"MOBILE",“过时”:false,“无效”:false},{“Id”:“”,“IdOrigin”:“FAX”,“过时”:false,“无效”:false}],“IsConsumer”:true,“过滤器":{"MarketingAreaId":"CXXGLOBAL"}};varrequestC=request.defaults({jar:true});varcreateOptions={url:config.createContactURL,method:"POST",json:true,headers:{"content-type":"application/json",'x-csrf-token':token},body:oPostData};requestC(createOptions,function(error,response,data){if(error){reject(error.message);}else{varoCreatedContact=data;console.log("createdcontactID:"+oCreatedContact.d.ContactPersonId);解决(数据);}});});}getToken().then(createContact).catch((error)=>{console.log("error:"+error.message);});这里我把创建的联系人的name字段硬编码到Jerry4中:用nodejs执行这个js文件,输出创建成功的联系人guid:在MarketingCloudUI上看到这个创建成功的联系人:总结本文第一次介绍SAPMarketingCloud登录系统后使用Node.js、Postman等常用工具消费MarketingCloudRestfulAP后的初始化方法我的一个具体例子
