Visão geral dos recursos compatíveis

Os SDKs do lado do servidor do Adobe Target oferecem aos desenvolvedores flexibilidade para escolher entre desempenho e atualização de dados para decisões. Em outras palavras, se o fornecimento do conteúdo personalizado mais relevante e envolvente por meio do aprendizado de máquina for mais importante para você, uma chamada de servidor em tempo real deverá ser feita. Mas quando o desempenho é mais crítico, uma decisão no dispositivo deve ser tomada. Para que a decisão no dispositivo funcione, consulte esta lista de recursos com suporte:

  • Tipos de atividades
  • Direcionamento de público
  • Método de Alocação

Tipos de atividades

A tabela a seguir indica quais tipos de atividade criados com o Experience Composer baseado em formulário têm ou não suporte para a decisão no dispositivo.

Direcionamento de público

A tabela a seguir indica quais regras de público-alvo são suportadas ou não para a decisão no dispositivo.

Regra de público-alvo
Decisão no dispositivo
Geografia
Sim
Rede
Não
Móvel
Não
Parâmetros personalizados
Sim
Sistema operacional
Sim
Páginas do site
Sim
Navegador
Sim
Perfil do visitante
Não
Fontes de Tráfego
Não
Intervalo de tempo
Sim
Públicos-alvo da Experience Cloud (públicos-alvo da Adobe Audience Manager, Adobe Analytics e Adobe Experience Manager)
Não

Direcionamento geográfico para decisão no dispositivo

Para manter uma latência próxima de zero para atividades de decisão no dispositivo com públicos baseados em localização geográfica, a Adobe recomenda que você forneça os valores geográficos você mesmo na chamada para getOffers. Faça isso definindo o objeto Geo no Context da solicitação. Isso significa que seu servidor precisará de uma maneira de determinar a localização de cada usuário final. Por exemplo, o servidor pode executar uma pesquisa de IP para Geo usando um serviço configurado por você. Alguns provedores de hospedagem, como a Google Cloud, fornecem essa funcionalidade por meio de cabeçalhos personalizados em cada 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());
    }

}

No entanto, se você não tiver a capacidade de executar pesquisas de IP para Geografia no servidor, mas ainda quiser executar a decisão no dispositivo para solicitações getOffers que contêm públicos com base geográfica, isso também é suportado. A desvantagem dessa abordagem é que ela usará uma pesquisa remota de IP para Geo, o que adicionará latência a cada chamada getOffers. Essa latência deve ser menor que uma chamada remota getOffers, pois atinge um CDN localizado próximo ao seu servidor. Você só deve fornecer o campo ipAddress no objeto Geo no Context de sua solicitação para que o SDK recupere a localização geográfica do endereço IP de seu usuário. Se qualquer outro campo além de ipAddress for fornecido, o SDK Target não buscará os metadados de localização geográfica para resolução.

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;
    }

}

Método de alocação

A tabela a seguir indica quais métodos de alocação têm ou não suporte para a decisão no dispositivo.

recommendation-more-help
target-dev-help-dev