事件描述 event-description
事务性消息传递数据模型 about-transactional-messaging-datamodel
事务性消息传递依赖于Adobe Campaign数据模型,并使用两个额外的单独表。 这些表、NmsRtEvent 和 NmsBatchEvent 包含相同的字段,允许您一方面管理实时事件,另一方面管理批处理事件。
SOAP方法 soap-methods
此部分详细介绍与事务性消息模块架构关联的SOAP方法。
两个 PushEvent 或 PushEvents SOAP方法链接到两个 nms:rtEvent 和 nms:BatchEvent 数据架构。 它是确定事件是“批处理”还是“实时”类型的信息系统。
- PushEvent 允许您在消息中插入单个事件,
- PushEvents 允许您在消息中插入一系列事件。
用于访问这两种方法的WSDL路径为:
- http://hostname/nl/jsp/schemawsdl.jsp?schema=nms:rtEvent 以访问实时类型架构。
- http://hostname/nl/jsp/schemawsdl.jsp?schema=nms:batchEvent 以访问批处理类型架构。
有关生成WSDL文件的详细信息,请参阅本节。
这两种方法都包含用于登录到事务性消息传递模块的 <urn:sessiontoken>
元素。 我们建议使用通过受信任的IP地址进行标识的方法。 要检索会话令牌,请执行登录SOAP调用,然后执行get令牌和注销。 对多个RT调用使用相同的令牌。 此部分中包含的示例正在使用会话令牌方法,建议使用此方法。
如果您使用的是负载平衡服务器,则可以使用用户/密码身份验证(在RT消息的级别)。 例如:
<PushEvent xmlns="urn:nms:rtEvent">
<sessiontoken>mc/PASSWORD</sessiontoken>
<domEvent>
<rtEvent wishedChannel="41" type="rt_MobileJourney_iOS_Push" registrationToken="c3ddc8aaecc24822df25d0f49865cca61ea3f86c61bfa53ae4d37294e37f4a1c" hashlpId="27EE7571EC14DBA23B9B5CC0EF79BB782DAECF4C03C88E5D92CC9B9DAC4E5DDA" correlationId="415b7593-4f6f-e911-811f-00505691247c" xmlns="">
<mobileApp uuid="236B24DC-C073-412F-8BCB-AC7207096258" _operation="none"/>
<ctx>...</ctx>
</rtEvent>
</domEvent>
</PushEvent>
PushEvent 方法由包含该事件的 <urn:domevent>
参数组成。
PushEvents 方法由包含事件的 <urn:domeventcollection>
参数组成。
使用PushEvent的示例:
<urn:PushEvent>
<sessiontoken>___921f9b38-72ac-49ad-b481-ab32973efc50</sessiontoken>
<urn:domEvent>
<rtEvent>
...
</rtEvent>
</urn:domEvent>
</urn:PushEvent>
<rtevent>
**元素的框架。使用PushEvents的示例:
<urn:PushEvents>
<sessiontoken>___921f9b38-72ac-49ad-b481-ab32973efc50</sessiontoken>
<urn:domEventCollection>
<Events>
<rtEvent>... </rtEvent>
<rtEvent>... </rtEvent>
...
</Events>
</urn:domEventCollection>
</urn:PushEvents>
<rtevent>
和 <batchevent>
元素具有一组属性以及一个用于集成消息数据的强制性子元素: <ctx>
。
<batchevent>
**元素,可将事件添加到“批处理”队列。 <rtevent>
将该事件添加到“实时”队列。<rtevent>
和 <batchevent>
元素的必需属性为@type和@email。 @type的值必须与配置执行实例时定义的明细列表值相同。 此值允许您定义在投放期间链接到事件内容的模板。
<rtevent> configuration example:
<rtEvent type="order_confirmation" email="john.doe@domain.com" origin="eCommerce" wishedChannel="0" externalId="1242" mobilePhone="+33620202020">
在此示例中,提供了两个渠道:电子邮件地址和手机号码。 wishedChannel 允许您选择在将事件转换为消息时要使用的渠道。 “0”值对应于电子邮件渠道,“1”值对应于移动渠道,依此类推。
如果要延迟事件投放,请添加 scheduled 字段,后跟首选日期。 该事件将在此日期转换为消息。
我们建议使用数值填充@wishedChannel和@emailFormat属性。 在数据架构描述中找到用于链接数值和标签的函数表。
<ctx>
元素包含消息数据。 其XML内容是开放的,这意味着可以根据要交付的内容对其进行配置。
数据示例:
<ctx>
<client>
<firstname>John</firstname>
<lastname>Doe</lastname>
</client>
<action>
<type>Order confirmation</type>
<number>CN23453</number>
</action>
<orderdetails>
<article num="1">
<name>Generic USB key</name>
<price>20</price>
</article>
</orderdetails>
</ctx>
SOAP调用返回的信息 information-returned-by-the-soap-call
Adobe Campaign在收到事件时生成一个唯一的返回ID。 这是事件的存档版本的ID。
-
事件处理成功时方法返回的标识符示例:
code language-none <SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns="http://xml.apache.org/xml-soap" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <urn:PushEventResponse SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:urn="urn:nms:rtEvent"> <plId xsi:type="xsd:long">72057594037935966</plId> </urn:PushEventResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
如果返回标识符的值完全大于零,则表示已在Adobe Campaign中成功存档该事件。
但是,如果无法处理该事件,此方法将返回一条错误消息或一个等于零的值。
-
查询不包含登录名或指定的运算符没有所需权限时失败的事件处理示例:
code language-none <SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Client</faultcode> <faultstring xsi:type="xsd:string">Error while reading parameters of method 'PushEvent' of service 'nms:rtEvent'.</faultstring> <detail xsi:type="xsd:string">Invalid login or password. Connection denied.</detail> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
-
由于查询中的错误而失败的事件示例(不遵循XML分类):
code language-none <SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Client</faultcode> <faultstring xsi:type="xsd:string">The XML SOAP message is invalid (service 'PushEvent', method 'nms:rtEvent').</faultstring> <detail xsi:type="xsd:string"><![CDATA[(16:8) : Expected end of tag 'rtevent' Error while parsing XML string '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:nms:rtEvent"> <soapenv:Header/> <soapenv:Body> <urn:PushEvent> <urn:sessiontoken>mc/</urn:sessiontoken> <urn:domEvent> <rtevent type="create_account" email="esther.hall@adobe.com" origin="eCommerce" wishedChannel="email" externalId="1596" language="english" country="EN" emailFormat="2" mobilePhone="+447700123123"> <ctx> <website name="eCommerce" url="http://www.eCo']]></detail> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
-
失败并返回零标识符(错误的方法名称)的事件示例:
code language-none <SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns="http://xml.apache.org/xml-soap" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <urn:PushEventResponse SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:urn="urn:nms:rtEvent"> <plId xsi:type="xsd:long">0</plId> </urn:PushEventResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>