Show Menu
主题×

触发事件

在JavaScript中处理事件

JavaScript文件

管道使用JavaScript函数处理每条消息。 此函数是用户定义的。
它在“JSConnector” NmsPipeline_Config 属性下的选项中配置。 每次收到事件时都会调用此javascript。 它由流程运 pipelined 行。
示例JS文件为cus:triggers.js。

JavaScript函数

Javascript pipelined 必须开始特定的函数。
每个事件调用此函数一次:
function processPipelineMessage(xmlTrigger) {}

它应返回为
<undefined/>

编辑 pipelined JS后重新启动。

触发数据格式

数 trigger 据将传递到JS函数。 它采用XML格式。
  • @triggerId 性包含名称 trigger。
  • JSON 格式 的扩充元素包含由Analytics生成的数据,并附加到触发器。
  • @offset 是消息的“指针”。 它指示消息在队列中的顺序。
  • @partitio ​n是队列中消息的容器。 偏移量相对于分区。
    队列中有大约15个分区。
示例:
<trigger offset="1500435" partition="4" triggerId="LogoUpload_1_Visits_from_specific_Channel_or_ppp">
 <enrichments>{"analyticsHitSummary":{"dimensions":{" eVar01":{"type":"string","data":["PI4INE1ETDF6UK35GO13X7HO2ITLJHVH"],"name":" eVar01","source":"session summary"}, "timeGMT":{"type":"int","data":[1469164186,1469164195],"name":"timeGMT","source":"session summary"}},"products":{}}}</enrichments>
 <aliases/>
 </trigger>

扩充数据格式

它是各种可能实现的一个特定示例。
内容在Analytics中为每个触发器定义。 它采用JSON格式。 例如,在触发器LogoUpload_uploading_Victs中:
  • eVar01 can contain Shopper ID, which is used to reconcile with活动收件人。 它采用字符串格式。
    它必须协调以查找Shopper ID,它是主键。
  • timeGMT 可以在分析端包含触发时间。 它采用UTC Epoc格式(自01/01/1970 UTC起的秒)。
示例:
{
 "analyticsHitSummary": {
 "dimensions": {
 "eVar01": {
 "type": "string",
 "data": ["PI4INE1ETDF6UK35GO13X7HO2ITLJHVH"],
 "name": " eVar01",
 "source": "session summary"
 },
 "timeGMT": {
 "type": "int",
 "data": [1469164186, 1469164195],
 "name": "timeGMT",
 "source": "session summary"
 }
 },
 "products": {}
 }
 }

事件处理顺序

事件按偏移顺序一次处理一个。 每个线程处 pipelined 理不同的分区。
上次检索的事件的“偏移”存储在数据库中。 因此,如果进程停止,则从最后一条消息重新启动。 此模式存储在内置的xtk:pipelineOffset中。
此指针特定于每个实例和每个用户。 因此,当许多实例以不同的用户访问同一管道时,它们会以相同的顺序获得所有消息。
管道选项的“consumer”参数标识调用实例。
当前,无法为“暂存”或“开发”等单独环境设置不同的队列。

日志记录和错误处理

日志(如logInfo())被定向到日 pipelined 志。 日志中写入了logError()等 pipelined 错误,导致事件被置于重试队列中。 检查管道日志。 错误消息在选项中设置的持续时间内重试 pipelined 多次。
为了调试和监控,将完全触发数据写入触发表。 它位于XML格式的“数据”字段中。 或者,包含触发器数据的logInfo()也具有相同的用途。

解析数据

此示例JS代码解析eVar中的扩充01。
function processPipelineMessage(xmlTrigger)
 {
 (…)
 var shopper_id = ""
 if (xmlTrigger.enrichments.length() > 0)
 {
 if (xmlTrigger.enrichments.toString().match(/eVar01/) != undefined)
 {
 var enrichments = JSON.parse(xmlTrigger.enrichments.toString())
 shopper_id = enrichments.analyticsHitSummary.dimensions. eVar01.data[0]
 }
 }
 (…)
 }

分析时要小心,以避免出错。 由于此代码用于所有触发器,因此大多数数据都不是必需的。 因此,当不存在时,它可以留空。

存储触发器

它是各种可能实现的一个特定示例。
此示例JS代码将触发器保存到数据库。
function processPipelineMessage(xmlTrigger)
 {
 (…)
 var event = 
 <pipelineEvent
 xtkschema = "cus:pipelineEvent"
 _operation = "insert"
 created = {timeNow}
 lastModified = {timeNow}
 triggerType = {triggerType}
 timeGMT = {timeGMT}
 shopper_id = {shopper_id}
 data = {xmlTrigger.toXMLString()}
 />
 xtk.session.Write(event)
 return <undef/>; 
 }

约束

此代码的性能必须是最佳的,因为它在高频率下运行。 其他营销活动可能会受到负面影响。 尤其是当在营销服务器上每小时处理超过100万个触发事件时。 或者,如果它没有被正确调整。
此Javascript的上下文有限。 并非API的所有功能都可用。 例如,getOption()或getCurrentdate()不起作用。
要实现更快的处理,将同时执行此脚本的多个线程。 代码必须是线程安全的。

存储事件

它是各种可能实现的一个特定示例。

管道事件模式

事件存储在数据库表中。 营销活动使用它来目标客户,并使用触发器丰富电子邮件。 尽管每个触发器都可以具有不同的数据结构,但所有触发器都可以放在一个表中。 triggerType字段标识数据从哪个触发器发起。
以下是此表的示例模式代码:
属性
类型
标签
说明
pipelineEventId
主键
触发器的内部主键。
数据
备忘录
触发数据
以XML格式触发数据的完整内容。 用于调试和审核目的。
triggerType
字符串50
TriggerType
触发器的名称。 确定客户在网站上的行为。
shopper_id
字符串32
shopper_id
购物者的内部标识符。 由对帐工作流设置。 如果为零,则表示活动中的客户未知。
shopper_key
shopper_key
Analytics捕获的购物者外部标识符。
已创建
日期时间
已创建
在活动中创建事件的时间。
lastModified
日期时间
上次修改时间
事件上次以Adobe修改的时间。
timeGMT
日期时间
时间戳
在Analytics中生成事件的时间。

显示事件

事件可以基于事件模式以简单的形式显示。
管道事件节点未内置,需要添加,并且相关表单需要在活动中创建。 这些操作仅限专家用户。 有关此内容的详细信息,请参阅以下部分: 导航层次 编辑表单

处理事件

对帐工作流

对帐是将客户从Analytics匹配到活动库的过程。 例如,匹配的条件可以是shopper_id。
由于性能原因,匹配必须由工作流在批处理模式下完成。 必须将频率设置为15分钟,以优化工作量。 因此,在Adobe Campaign中的事件接收与由营销工作流处理之间的延迟最多为15分钟。

JavaScript中的单元协调选项

理论上,可以在JavaScript中为每个触发器运行协调查询。 它对性能的影响更大,效果更快。 当需要反应性时,可能需要这种反应性。
如果未在shopper_id上设置索引,则可能很难执行此操作。 如果标准位于与营销服务器不同的单独的数据库服务器上,则它使用数据库链接,该链接的性能很差。

清除工作流

触发器在一小时内得到处理,因此没有理由长期保留它们。 每小时的触发量可达100万个。 它解释了清除工作流必须到位的原因。 清除将删除所有早于三天且每天运行一次的触发器。

活动工作流

触发活动工作流通常类似于已使用的其他循环活动。 例如,它可以开始触发器上的查询,在最后一天查找特定事件。 该目标用于发送电子邮件。 扩充或数据可能来自触发器。 Marketing可以安全地使用它,因为它不需要配置。