支持的功能概述

Adobe Target的服务器端SDK使开发人员能够灵活地在数据的性能和新鲜度之间进行选择,以便做出决策。 换言之,如果通过机器学习提供最相关且最引人入胜的个性化内容对您来说最重要,则应进行实时服务器调用。 但是,当性能更为关键时,则应该做出设备上决策。 要使设备上决策正常工作,请参阅以下受支持功能列表:

  • 活动类型
  • 受众定位
  • 分配方法

活动类型

下表指明了设备上决策支持或不支持使用基于表单的体验编辑器创建的活动类型

活动类型
受支持
A/B 测试
自动分配
Auto-Target(自动定位)
Analytics for Target (A4T)
多变量测试 (MVT)
体验定位 (XT)
Automated Personalization (AP)
推荐

受众定位

下表指明了设备上决策支持或不支持的受众规则。

受众规则
设备上决策
地域
网络
移动设备
自定义参数
操作系统
网页
浏览器
访客轮廓
流量源
时间范围
Experience Cloud受众(来自Adobe Audience Manager、Adobe Analytics和Adobe Experience Manager的受众)

设备上决策的地理定位

为了对具有基于地理位置的受众的设备上决策活动保持近零延迟,Adobe建议您在调用getOffers时自行提供地理值。 为此,请在请求的Context中设置Geo对象。 这意味着您的服务器将需要一种方法来确定每个最终用户的位置。 例如,您的服务器可能会使用您配置的服务执行IP到地理位置的查找。 某些托管提供商(如Google Cloud)通过每个HttpServletRequest中的自定义标头提供此功能。

Node.js
code language-csharp line-numbers
const CONFIG = {
    client: "acmeclient",
    organizationId: "1234567890@AdobeOrg",
    decisioningMethod: "on-device"
};

const targetClient = TargetClient.create(CONFIG);

targetClient.getOffers({
    request: {
        context: {
            geo: {
                city: "SAN FRANCISCO",
                countryCode: "US",
                stateCode: "CA",
                latitude: 37.75,
                longitude: -122.4
            }
        },
        execute: {
            pageLoad: {}
        }
    }
})
Java
code language-javascript line-numbers
public class TargetRequestUtils {

    public static Context getContext(HttpServletRequest request) {
        Context context = new Context()
            .geo(ipToGeoLookup(request.getRemoteAddr()))
            .channel(ChannelType.WEB)
            .timeOffsetInMinutes(330.0)
            .address(getAddress(request));
        return context;
    }

    public static Geo ipToGeoLookup(String ip) {
        GeoResult geoResult = geoLookupService.lookup(ip);
        return new Geo()
            .city(geoResult.getCity())
            .stateCode(geoResult.getStateCode())
            .countryCode(geoResult.getCountryCode());
    }

}

但是,如果您无法在服务器上执行IP到地理位置的查找,但仍希望对包含基于地理位置的受众的getOffers请求执行设备端决策,则也支持此操作。 此方法的缺点是,它将使用远程IP到地理位置的查找,这将为每个getOffers调用添加延迟。 此延迟应低于远程getOffers调用,因为它点击了位于服务器附近的CDN。 您必须在请求的ContextGeo对象中仅提供ipAddress字段,以便SDK检索用户IP地址的地理位置。 如果提供除ipAddress之外的任何其他字段,Target SDK将不会获取地理位置元数据以进行解析。

Node.js
code language-csharp line-numbers
const CONFIG = {
    client: "acmeclient",
    organizationId: "1234567890@AdobeOrg",
    decisioningMethod: "on-device"
};

const targetClient = TargetClient.create(CONFIG);

targetClient.getOffers({
    request: {
        context: {
            geo: {
                ipAddress: "127.0.0.1"
            }
        },
        execute: {
            pageLoad: {}
        }
    }
})
Java
code language-javascript line-numbers
public class TargetRequestUtils {

    public static Context getContext(HttpServletRequest request) {
        Context context = new Context()
            .geo(new Geo().ipAddress(request.getRemoteAddr()))
            .channel(ChannelType.WEB)
            .timeOffsetInMinutes(330.0)
            .address(getAddress(request));
        return context;
    }

}

分配方法

下表指明了设备上决策支持或不支持的分配方法。

分配方法
受支持
手动
自动分配到最佳体验
自动定位以提供个性化体验
recommendation-more-help
target-dev-help-dev