[Premium]{class="badge positive" title="查看Target Premium中包含的内容。"}
自定义实体属性
在Adobe Target Recommendations中使用单值和多值自定义实体属性来定义有关目录中项目的其他信息。
限制 limits
您最多可以包含 100 个自定义实体属性,来对目录中的项目定义其他相关信息。例如,您可以创建一个名为 entity.genre
的自定义属性,用来定义一本书籍或一部电影。或者,票务供应商可以为活动场地创建属性以包括辅助表演,例如体育赛事中的客队或音乐会上的开场表演。
单值实体自定义属性的最大长度为 15,000 个字符(对于单字节和双字节 UTF-8 编码语言,例如英语和其他拉丁文字字母)或 10,000 字符(对于三字节 UTF-8 编码语言,例如中文、日语和韩语)。
多值实体自定义属性最多可以包含 500 个值。每个值的限制为 100 个字符。所有值的字符总数必须符合单值实体自定义属性的最大长度限制(请参阅上文)。
自定义实体属性值 section_313331A9F8194A89B5EDD89363018651
自定义实体属性可以包含单个值或多个值。实体属性值会显示在产品视图中。
具有单个值的自定义实体属性的构成方式与单值预定义实体属性相同:
entity.genre=genre1
多值自定义实体属性必须作为有效的 JSON 数组来发送:
entity.genre=["genre1", "genre2"]
Recommendations 支持的有效 JSON 数组的示例:
["AB","BC"]
所有值均为字符串[1,2]
所有值均为数字
["AB",1,true, [1,2,3]]
是有效的 JSON 数组,但在 Recommendations 中不受支持,因为它包含混合值类型(字符串、数字、布尔值、对象)。将自定义属性作为有效的 JSON 数组发送后,该属性会被视为目录中所有产品的多值属性。
限制:
- 您无法将预定义实体属性的名称用于自定义实体属性。(请参阅实体属性。)
entity.environment
属性由系统保留,该属性不能用于自定义实体属性。尝试使用entity.environment
、信息源或 API 来传递targetPageParams
的操作将会被忽略。- 数组必须包含单值类型。不支持混合值数组 (
["AB",1,true]
)。 - 包含嵌套 JSON 数组 (
[10,12,[1,2,3]]
) 的多值属性会被视为单值属性。
实施多值属性 section_80FEFE49E8AF415D99B739AA3CBA2A14
使用信息源(CSV)、targetPageParams
和交付API上传产品时,支持多值自定义实体属性。 新值会替换当前值,而不进行附加。空数组( [])被视为没有值。
必须对双引号进行转义。例如,"[""test"", ""value""]"
是可在 CSV 中使用的有效 JSON 数组。
您最多可以在多值属性中包含 500 个值。
使用targetPageParams
以下示例显示了如何使用 targetPageParams
。
function targetPageParams() {
return {
'entity.id': '123',
'entity.categoryId': '["A", "A:B", "A:B:C", "A:B:C:D"]',
'entity.MultiValueAttribute': '["X", "Y", "Z"]',
'entity.event.detailsOnly': 'true',
'excludedIds": '[123, 3232, 2323, 4344]',
'orderId": '123456',
'orderTotal": '195.32',
'productPurchaseId": '[001,002,003]'
};
}
使用CSV
您可以使用文本编辑器以原始格式管理 CSV 文件,也可以使用电子表格软件。
原始 CSV 将如下所示:
电子表格中的相同目录将如下所示:
转换为.csv格式时,电子表格软件会在单元格内容两侧添加双引号,以防止单元格内的逗号充当列分隔符。 它还会在自定义多值属性中包含的 JSON 字符串值两侧添加双引号标记。这样可直接处理庞杂的原始文件。例如:
- 电子表格:
["1","2","3"]
- 原始:
"[""1"",""2"",""3""]"
直接编辑原始目录 CSV 文件时务必要小心。
使用API
您可以使用投放API在mbox参数中传递多值属性,作为包含转义JSON数组的字符串值。
"execute": {
"mboxes": [
{
"index": 0,
"name": "first-mbox",
"parameters": {
"entity.id": "32323",
"entity.categoryId": "My Category",
"entity.MultiValueAttribute": "[\"X\", \"Y\", \"Z\"]"
}
}
]
}
有关使用交付和保存实体API的信息,请参阅Adobe Recommendations API文档。
将运算符用于多值属性 section_83C2288A805242D9A02EBC4F07DEE945
在算法包含规则、目录规则和排除规则中将运算符应用于多值自定义属性时,如果列表中至少有一个值符合运算规则(布尔运算“或”**),则结果将为 true。
在以下示例中,规则是message contains abc
。
- 用例 1:
entity.genre = ["ab", "bc", "de"]
。结果为 false,因为没有值包含abc
。 - 用例 2:
entity.genre = ["abcde","de","ef"]
结果为 true,因为有一个值包含abc
。
对于否定运算符,所有属性值必须都符合运算规则(布尔运算“和”**)。例如,如果运算符为notEquals
,则当有任何值匹配时,结果将为 false。
有关算法包含规则、目录规则和排除规则中的运算符行为,请参阅以下部分。
等于
如果有任何属性值等于输入值,则结果为 true。
示例: genre equals abc
- 用例 1:
entity.genre = ["ab", "bc", "de"]
。结果为 false,因为没有值等于abc
。 - 用例 2:
entity.genre = ["abc", "de", "ef"]
结果为 true,因为有一个值等于abc
。 - 用例3:
entity.genre = ["abcde", "de", "ef"]
。 结果为 false,因为abc
不等于列表中的任何元素。
不等于
如果没有属性值等于输入值,则结果为 true。
示例: genre not equals abc
- 用例 1:
entity.genre = ["ab", "bc", "de"]
。结果为 true,因为没有值等于abc
。 - 用例 2:
entity.genre = ["abc", "de", "ef"]
结果为 false,因为有一个值等于abc
。 - 用例3:
entity.genre = ["abcde", "de", "ef"]
。 结果为 true,因为abc
不等于列表中的任何元素。
包含
如果有任何属性值包含输入值,则结果为 true。
示例: genre contains abc
- 用例 1:
entity.genre = ["ab", "bc", "de"]
。结果为 false,因为没有值包含abc
。 - 用例 2:
entity.genre = ["abcde", "de", "ef"]
结果为 true,因为有一个值包含abc
。
不包含
如果没有属性值包含输入值,则结果为 true。
示例: genre does not contain abc
- 用例 1:
entity.genre = ["ab", "bc", "de"]
。结果为 true,因为没有值包含abc
。 - 用例 2:
entity.genre = ["abcde", "de", "ef"]
结果为 false,因为有一个值包含abc
。
开始于
如果有任何属性值以输入值开头,则结果为 true。
示例: genre starts with abc
- 用例 1:
entity.genre = ["ab", "bc", "de"]
。结果为 false,因为没有值开始于abc
。 - 用例 2:
entity.genre = ["abcde", "de", "ef"]
结果为 true,因为有一个值开始于abc
。 - 用例3:
entity.genre = ["ab", "de", "abc"]
。 结果为 true,因为有一个值开始于abc
(不一定是列表中的第一个元素)。
结束于
如果有任何属性值以输入值结尾,则结果为 true。
示例: genre ends with abc
- 用例 1:
entity.genre = ["ab", "bc", "de"]
。结果为 false,因为没有值结束于abc
。 - 用例 2:
entity.genre = ["deabc", "de", "ef"]
结果为 true,因为有一个值结束于abc
。
大于或等于(仅限数字值)
属性值会被转换为双精度类型。运行规则时将跳过无法转换的属性。
处理后,任何大于或等于输入值的属性值都将导致结果为true。
示例: price greater than or equal to 100
- 用例 1:
entity.price = ["10", "20", "45"]
。结果为 false,因为没有值大于或等于 100。跳过了值de
,因为无法将其转换为双精度类型。 - 用例 2:
entity.price = ["100", "101", "90", "80"]
结果为 true,因为有两个值大于或等于 100。
小于或等于(仅限数字值)
属性值会被转换为双精度类型。运行规则时将跳过无法转换的属性。
处理后,任何小于或等于输入值的属性值都将导致结果为true。
示例: price less than or equal to 100
- 用例 1:
entity.price = ["101", "200", "141"]
。结果为 false,因为没有值小于或等于 100。跳过了值de
,因为无法将其转换为双精度类型。 - 用例 2:
entity.price = ["100", "101", "90", "80"]
结果为 true,因为有两个值小于或等于 100。
动态匹配(仅在基于项目的算法中可用)
如果有任何属性值与输入值匹配,则结果为 true。
示例: genre matches abc
- 用例 1:
entity.genre = ["ab", "bc", "de"]
。结果为 false,因为没有值与abc
。 - 用例 2:
entity.genre = ["abc", "de", "ef"]
结果为 true,因为有一个值与abc
。
动态不匹配(仅在基于项目的算法中可用)
如果有任何属性值与输入值匹配,则结果为 false。
示例: genre does not match abc
- 用例 1:
entity.genre = ["ab", "bc", "de"]
。结果为 true,因为没有值与abc
。 - 用例 2:
entity.genre = ["abc", "de", "ef"]
结果为 false,因为有一个值与abc
。
动态范围(仅在基于项目的算法中可用,仅限数字值)
如果有任何数字属性值位于指定的范围内,则结果为true。
示例: price dynamically ranges in 80% to 120% of 100
- 用例 1:
entity.price = ["101", "200", "125"]
。结果为 true,因为101
在 100 的 80% 到 120% 范围内。跳过了值de
,因为无法将其转换为双精度类型。 - 用例 2:
entity.price = ["130", "191", "60", "75"]
结果为 false,因为没有值在 100 的 80% 到 120% 范围内。
设计中的多值属性 section_F672E4F6E1D44B3196B7ADE89334ED4A
在设计中所引用的多值属性会显示为以逗号分隔的列表。
示例:
当 entity.genre=["genre1","genre2"]
在设计中以 $entity<N>.genre
方式引用时,结果为 genre1, genre2
。