Solução de problemas on-device decisioning
Validando configuração
Resumo das etapas
- Verifique se o
logger
está configurado - Verifique se os rastreamentos de Target estão habilitados
- Verifique se o on-device decisioning artefato de regra foi recuperado e armazenado em cache de acordo com o intervalo de sondagem definido.
- Valide a entrega de conteúdo por meio do artefato de regra em cache criando uma atividade de teste on-device decisioning por meio do Experience Composer baseado em formulário.
- Erros de notificação de envio do Inspect
1. Verifique se o agente de log está configurado
Ao inicializar o SDK, ative o registro.
Node.js
Para o SDK do Node.js, um objeto logger
deve ser fornecido.
const CONFIG = {
client: "<your client code>",
organizationId: "<your organization ID>",
logger: console
};
SDK Java
Para o SDK Java logRequests
em ClientConfig
deve estar habilitado.
ClientConfig config = ClientConfig.builder()
.client("<your client code>")
.organizationId("<your organization ID>")
.logRequests(true)
.build();
Além disso, a JVM deve ser iniciada com o seguinte parâmetro de linha de comando:
java -Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG ...
2. Verifique se TargetRastreamentos está habilitado
A habilitação de rastreamentos resultará em informações adicionais de Adobe Target em relação ao artefato de regras.
-
Navegue até a TargetIU em Experience Cloud.
-
Navegue até Administration > Implementation e clique em Generate New Authorization Token.
-
Copie o token de autorização recém-gerado para a área de transferência e adicione-o à sua solicitação Target:
Node.js
code language-js line-numbers const request = { trace: { authorizationToken: "88f1a924-6bc5-4836-8560-2f9c86aeb36b" }, execute: { mboxes: [{ name: "sdk-mbox" }] }};
Java
code language-js line-numbers Trace trace = new Trace() .authorizationToken("88f1a924-6bc5-4836-8560-2f9c86aeb36b"); Context context = new Context() .channel(ChannelType.WEB); MboxRequest mbox = new MboxRequest() .name("sdk-mbox") .index(0); ExecuteRequest executeRequest = new ExecuteRequest() .mboxes(Arrays.asList(mbox)); TargetDeliveryRequest request = TargetDeliveryRequest.builder() .trace(trace) .context(context) .execute(executeRequest) .build();
-
Com o agente de log e o rastreamento em vigor, inicie o aplicativo e monitore o terminal do servidor. A seguinte saída do agente de log confirma que o artefato da regra foi recuperado:
SDK do Node.js
code language-text line-numbers AT: LD.ArtifactProvider fetching artifact - https://assets.adobetarget.com/your-client-code/production/v1/rules.json AT: LD.ArtifactProvider artifact received - status=200
3. Verifique se o on-device decisioning artefato de regra foi recuperado e armazenado em cache de acordo com o intervalo de sondagem definido.
-
Aguarde a duração do intervalo de pesquisa (o padrão é 20 minutos) e verifique se o artefato está sendo buscado pelo SDK. Os mesmos logs de terminal serão gerados.
Além disso, as informações do TargetRastreamento devem ser geradas no terminal com detalhes sobre o artefato da regra.
code language-text line-numbers "trace": { "clientCode": "your-client-code", "artifact": { "artifactLocation": "https://assets.adobetarget.com/your-client-code/production/v1/rules.json", "pollingInterval": 300000, "pollingHalted": false, "artifactVersion": "1.0.0", "artifactRetrievalCount": 10, "artifactLastRetrieved": "2020-09-20T00:09:42.707Z", "clientCode": "your-client-code", "environment": "production", "generatedAt": "2020-09-22T17:17:59.783Z" },
4. Valide a entrega de conteúdo por meio do artefato de regra em cache criando uma atividade de teste on-device decisioning por meio do Experience Composer baseado em formulário
-
Navegue até a TargetIU no Experience Cloud
-
Crie uma nova atividade de XT usando o Experience Composer baseado em formulário.
-
Insira o nome da mbox usada em sua solicitação Target como o local da atividade XT (observe que esse deve ser um nome de mbox exclusivo especificamente para fins de desenvolvimento).
-
Altere o conteúdo para uma oferta HTML ou oferta JSON. Isso será retornado na solicitação Target para o seu aplicativo. Deixe o direcionamento para a atividade como "Todos os visitantes" e selecione a métrica desejada. Nomeie a atividade, salve-a e ative-a para garantir que a mbox/localização em uso seja somente para desenvolvimento.
-
Em seu aplicativo, adicione instruções de log para o conteúdo recebido na resposta de sua solicitação Target
SDK do Node.js
code language-js line-numbers try { const response = await targetClient.getOffers({ request }); console.log('Response: ', response.response.execute.mboxes[0].options[0].content); } catch (error) { console.error('Something went wrong', error); }
SDK Java
code language-js line-numbers try { Context context = new Context() .channel(ChannelType.WEB); MboxRequest mbox = new MboxRequest() .name("sdk-mbox") .index(0); ExecuteRequest executeRequest = new ExecuteRequest() .mboxes(Arrays.asList(mbox)); TargetDeliveryRequest request = TargetDeliveryRequest.builder() .context(context) .decisioningMethod(DecisioningMethod.ON_DEVICE) .execute(executeRequest) .build(); TargetDeliveryResponse response = targetClient.getOffers(request); logger.debug("Response: ", response.getResponse().getExecute().getMboxes().get(0).getOptions().get(0).getContent()); } catch (Exception exception) { logger.error("Something went wrong", exception); }
-
Revise os logs no terminal para verificar se o conteúdo está sendo entregue e se foi entregue por meio do artefato de regras no servidor. O objeto
LD.DeciscionProvider
é gerado quando a qualificação e a decisão da atividade foram determinadas no dispositivo com base no artefato de regras. Além disso, devido ao registro decontent
, você deve ver<div>test</div>
ou como você decidiu que a resposta será ao criar a atividade de teste.Saída do agente de log
code language-text line-numbers AT: LD.DecisionProvider {...} AT: Response received {...} Response: <div>test</div>
Erros de notificação de envio do Inspect
Ao usar a Decisão no dispositivo, as notificações são enviadas automaticamente para as solicitações de execução de getOffers. Essas solicitações são enviadas silenciosamente em segundo plano. Todos os erros podem ser inspecionados ao assinar um evento chamado sendNotificationError
. Esta é uma amostra de código que mostra como assinar erros de notificação usando o SDK do Node.js.
const TargetClient = require("@adobe/target-nodejs-sdk");
let client;
function onSendNotificationError({ notification, error }) {
console.log(
`There was an error when sending a notification: ${error.message}`
);
console.log(`Notification Payload: ${JSON.stringify(notification, null, 2)}`);
}
async function targetClientReady() {
const request = {
context: { channel: "web" },
execute: {
mboxes: [{
name: "a1-serverside-ab",
index: 1
}]
}
};
const targetResponse = await client.getOffers({ request });
}
client = TargetClient.create({
events: {
clientReady: targetClientReady,
sendNotificationError: onSendNotificationError
}
});
Cenários comuns de solução de problemas
Certifique-se de revisar os recursos com suporte para on-device decisioning quando estiver com problemas.
As atividades de decisão no dispositivo não são executadas devido a público-alvo ou atividade não compatível
Um problema comum que pode ocorrer são on-device decisioning atividades não executadas devido ao público-alvo em uso ou o tipo de atividade não suportado.
(1) Usando a saída do agente de log, revise as entradas na propriedade trace no objeto de resposta. Identifique especificamente a propriedade das campanhas:
Rastrear saída
"execute": {
"mboxes": [
{
"name": "your-mbox-name",
"index": 0,
"trace": {
"clientCode": "your-client-code",
...
"campaigns": [],
...
}
}
Você observará que a atividade para a qual está tentando se qualificar não está na propriedade campaigns
, pois não há suporte para o público-alvo ou tipo de atividade. Se a atividade estiver listada na propriedade campaigns
, seu problema não será devido a um público ou tipo de atividade sem suporte.
(2) Além disso, localize o arquivo rules.json
observando trace
> artifact
> artifactLocation
na saída do log e observe que sua atividade está ausente na propriedade rules
> mboxes
:
Saída do agente de log
...
rules: {
mboxes: { },
views: { }
}
Finalmente, navegue até a Targetinterface e localize a atividade em questão: experience.adobe.com/target
Revise as regras usadas no público-alvo e certifique-se de usar somente as mencionadas acima que sejam compatíveis. Além disso, verifique se o tipo de atividade é A/B ou XT.
As atividades de decisão no dispositivo não são executadas devido ao público-alvo não qualificado
Se uma atividade de decisão no dispositivo não estiver em execução, mas você tiver verificado que seu arquivo rules.json contém a atividade, execute as seguintes etapas:
(1) Certifique-se de que a mbox que você está executando em seu aplicativo é a mesma que a atividade está usando:
code language-text line-numbers |
---|
|
code language-js line-numbers |
---|
|
code language-js line-numbers |
---|
|
(2) Verifique se você está qualificado para o público-alvo da sua atividade revisando a propriedade matchedRuleConditions
ou unmatchedRuleConditions
da sua saída de rastreamento:
Rastrear saída
...
},
"campaignId": 368564,
"campaignType": "landing",
"matchedSegmentIds": [],
"unmatchedSegmentIds": [
6188838
],
"matchedRuleConditions": [],
"unmatchedRuleConditions": [
{
"in": [
"true",
{
"var": "mbox.auth_lc"
}
]
}
]
...
Se você tiver condições de regra incompatíveis, você não estará qualificado para a atividade e, portanto, a atividade não será executada. Revise as regras no seu público-alvo para ver por que você não está qualificado.
A atividade de decisão no dispositivo não é executada, mas o motivo não é aparente
Pode não ser imediatamente evidente por que uma atividade de decisão no dispositivo não está sendo executada. Nesse caso, siga estas etapas de solução de problemas para identificar o problema:
(1) Leia a saída de rastreamento do agente de log no console e identifique a propriedade do artefato, que será semelhante ao seguinte:
Rastrear saída
...
"artifact": {
"artifactLocation": "https://assets.adobetarget.com/your-client-code/production/v1/rules.json",
"pollingInterval": 300000,
"pollingHalted": false,
"artifactVersion": "1.0.0",
"artifactRetrievalCount": 3,
"artifactLastRetrieved": "2020-10-16T00:56:27.596Z",
"clientCode": "adobeinterikleisch",
"environment": "production"
},
...
Verifique a data artifactLastRetrieved
do artefato e certifique-se de que você tenha o arquivo rules.json
mais recente baixado no seu aplicativo.
(2) Localize a propriedade evaluatedCampaignTargets
na saída do agente de log:
Saída do agente de log
...
"evaluatedCampaignTargets": [
{
"context": {
"current_timestamp": 1602812599608,
"current_time": "0143",
"current_day": 5,
"user": {
"browserType": "unknown",
"platform": "Unknown",
"locale": "en",
"browserVersion": -1
},
"page": {
"url": "localhost:3000/",
"path": "/",
"query": "",
"fragment": "",
"subdomain": "",
"domain": "3000",
"topLevelDomain": "",
"url_lc": "localhost:3000/",
"path_lc": "/",
"query_lc": "",
"fragment_lc": "",
"subdomain_lc": "",
"domain_lc": "3000",
"topLevelDomain_lc": ""
},
"referring": {
"url": "localhost:3000/",
"path": "/",
"query": "",
"fragment": "",
"subdomain": "",
"domain": "3000",
"topLevelDomain": "",
"url_lc": "localhost:3000/",
"path_lc": "/",
"query_lc": "",
"fragment_lc": "",
"subdomain_lc": "",
"domain_lc": "3000",
"topLevelDomain_lc": ""
},
"geo": {},
"mbox": {},
"allocation": 23.79
},
"campaignId": 368564,
"campaignType": "landing",
"matchedSegmentIds": [],
"unmatchedSegmentIds": [
6188838
],
"matchedRuleConditions": [],
"unmatchedRuleConditions": [
{
"in": [
"true",
{
"var": "mbox.auth_lc"
}
]
}
]
...
(3) Revise os dados context
, page
e referring
para garantir que sejam os esperados, pois isso pode afetar a qualificação de direcionamento da atividade.
(4) Revise o campaignId
para garantir que a atividade ou atividades que você espera executar sejam avaliadas. O campaignId
corresponderá à ID da atividade na guia de visão geral da atividade na interface do usuário Target:
(5) Revise o matchedRuleConditions
e unmatchedRuleConditions
para identificar problemas com a qualificação para as regras de público-alvo para uma determinada atividade.
(6) Revise o arquivo rules.json
mais recente para garantir que a atividade ou atividades que você deseja executar localmente estejam incluídas. O local é referenciado acima na etapa 1.
(7) Certifique-se de que você esteja usando os mesmos nomes de mbox em sua solicitação e atividades.
(8) Verifique se você está usando regras de público-alvo e tipos de atividades compatíveis.
Uma chamada de servidor é feita, embora a configuração da atividade em uma mbox diga "Qualificado para decisão no dispositivo" na interface do usuário do Target
Há alguns motivos pelos quais uma chamada de servidor é feita, mesmo que o dispositivo esteja qualificado para a tomada de decisão no dispositivo:
-
Quando a mbox usada para uma atividade "Qualificada para decisão no dispositivo" também é usada para outras atividades que não são "Qualificadas para decisão no dispositivo", a mbox é listada na seção
remoteMboxes
no artefatorules.json
. Quando uma mbox é listada emremoteMboxes
, qualquer chamada degetOffer(s)
para essa mbox resulta em uma chamada de servidor. -
Se você definir uma atividade em um espaço de trabalho/propriedade e não incluir o mesmo ao configurar o SDK, isso pode fazer com que o
rules.josn
do espaço de trabalho padrão seja baixado, que pode usar a mbox na seçãoremoteMboxes
.