Risoluzione dei problemi on-device decisioning

Convalida della configurazione

Riepilogo dei passaggi

  1. Verifica che logger sia configurato
  2. Assicurarsi che Target tracce siano abilitate
  3. Verificare che l'artefatto on-device decisioning regola sia stato recuperato e memorizzato nella cache in base all'intervallo di polling definito.
  4. Convalidare la distribuzione dei contenuti tramite l'artefatto della regola memorizzata nella cache creando un'attività di test on-device decisioning tramite il Compositore esperienza basato su moduli.
  5. Errori di notifica di invio Inspect

1. Verifica che il logger sia configurato

Quando inizializzi l’SDK, accertati di abilitare la registrazione.

Node.js

Per l'SDK di Node.js è necessario fornire un oggetto logger.

const CONFIG = {
  client: "<your client code>",
  organizationId: "<your organization ID>",
  logger: console
};

SDK Java

Per l'SDK Java logRequests su ClientConfig deve essere abilitato.

ClientConfig config = ClientConfig.builder()
  .client("<your client code>")
  .organizationId("<your organization ID>")
  .logRequests(true)
  .build();

Inoltre, la JVM deve essere avviata con il seguente parametro della riga di comando:

java -Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG ...

2. Assicurarsi che TargetTracce siano abilitate

L'abilitazione delle tracce genererà ulteriori informazioni da Adobe Target per quanto riguarda l'artefatto delle regole.

  1. Passare all'interfaccia utente Target in Experience Cloud.

    Alt immagine

  2. Passare a Administration > Implementation e fare clic su Generate New Authorization Token.

    Alt immagine

  3. Copia il token di autorizzazione appena generato negli Appunti e aggiungilo alla tua Target richiesta:

    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();
    
  4. Con il logger e la traccia posizionati, avvia l’app e monitora il terminale del server. L’output seguente del logger conferma che l’artefatto della regola è stato recuperato:

    SDK di 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. Verificare che l'artefatto on-device decisioning regola sia stato recuperato e memorizzato nella cache in base all'intervallo di polling definito.

  1. Attendi la durata dell'intervallo di polling (il valore predefinito è 20 minuti) e assicurati che l'artefatto venga recuperato dall'SDK. Vengono generati gli stessi registri del terminale.

    Inoltre, le informazioni della traccia Targetdevono essere inviate al terminale con i dettagli dell'artefatto della regola.

    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. Convalidare la distribuzione dei contenuti tramite l'artefatto della regola memorizzata nella cache creando un'attività di test on-device decisioning tramite il Compositore esperienza basato su moduli

  1. Passa all'interfaccia utente Target in Experience Cloud

    Alt immagine

  2. Crea una nuova attività Targeting esperienza utilizzando il Compositore esperienza basato su moduli.

    Alt immagine

  3. Immetti il nome mbox utilizzato nella richiestaTargetcome posizione per l'attività XT (questo dovrebbe essere un nome mbox univoco specificatamente a scopo di sviluppo).

    Alt immagine

  4. Modifica il contenuto in un’offerta HTML o in un’offerta JSON. Questo verrà restituito nella richiesta Target all'applicazione. Lascia il targeting per l’attività come "Tutti i visitatori" e seleziona la metrica desiderata. Assegna un nome all’attività, salvala e quindi attivala per assicurarti che la mbox/posizione in uso sia solo per lo sviluppo.

    Alt immagine

  5. Nell'applicazione, aggiungi le istruzioni di registro per il contenuto ricevuto nella risposta dalla tua Targetrichiesta

    SDK di 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);
    }
    
  6. Esamina i registri nel terminale per verificare che il contenuto sia consegnato e che sia stato consegnato tramite l’artefatto delle regole sul server. L'oggetto LD.DeciscionProvider viene restituito quando la qualificazione dell'attività e le decisioni sono state determinate sul dispositivo in base all'artefatto delle regole. Inoltre, a causa della registrazione di content, dovresti visualizzare <div>test</div> o comunque hai deciso che la risposta sarà al momento della creazione dell'attività di test.

    Output logger

    code language-text line-numbers
       AT: LD.DecisionProvider {...}
    AT: Response received {...}
    Response:  <div>test</div>
    

Errori di notifica di invio Inspect

Quando si utilizza il decisioning sul dispositivo, le notifiche vengono inviate automaticamente per le richieste di esecuzione getOffers. Queste richieste vengono inviate automaticamente in background. È possibile esaminare tutti gli errori sottoscrivendo un evento denominato sendNotificationError. Di seguito è riportato un esempio di codice che mostra come effettuare la sottoscrizione a errori di notifica utilizzando l’SDK di 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
  }
});

Scenari comuni per la risoluzione dei problemi

Verificare le funzionalità supportate per on-device decisioning quando si verificano problemi.

Attività di decisioning sul dispositivo non in esecuzione a causa di un pubblico o di un’attività non supportata

Un problema comune che può verificarsi è rappresentato dalle attività on-device decisioning non in esecuzione a causa del pubblico in uso o del tipo di attività non supportato.

(1) Utilizzando l’output del logger, controlla le voci nella proprietà trace nell’oggetto di risposta. Identifica in modo specifico la proprietà delle campagne:

Output di traccia

  "execute": {
  "mboxes": [
    {
      "name": "your-mbox-name",
      "index": 0,
      "trace": {
        "clientCode": "your-client-code",
        ...
        "campaigns": [],
        ...
      }
    }

Si noti che l'attività per la quale si sta tentando di qualificarsi non è inclusa nella proprietà campaigns perché il tipo di pubblico o di attività non è supportato. Se l'attività è elencata nella proprietà campaigns, il problema non è dovuto a un pubblico o a un tipo di attività non supportato.

(2) Inoltre, individuare il file rules.json osservando trace > artifact > artifactLocation nell'output del logger e notare che l'attività non è presente nella proprietà rules > mboxes:

Output logger

 ...
 rules: {
   mboxes: { },
   views: { }
 }

Infine, passa all'interfaccia utente Targete individua l'attività in questione: experience.adobe.com/target

Esamina le regole utilizzate nel pubblico e assicurati di utilizzare solo quelle di cui sopra che sono supportate. Inoltre, assicurati che il tipo di attività sia A/B o XT.

Alt immagine

Attività di decisioning sul dispositivo non in esecuzione a causa di un pubblico non qualificato

Se un’attività di decisioning sul dispositivo non è in esecuzione, ma hai verificato che il file rules.json contenga l’attività, esegui i seguenti passaggi:

(1) Assicurati che la mbox in esecuzione nell'applicazione sia la stessa utilizzata dall'attività:

rule.json
code language-text line-numbers
 ...
 rules: {
   mboxes: {
    target-only-node-sdk-mbox: [{ // this mbox name must match the mbox in your request
      ...
    }]
   }
 ...
SDK di Node.js
code language-js line-numbers
 const request = {
   trace: {
     authorizationToken: '2dfc1dce-1e58-4e05-bbd6-a6725893d4d6'
   },
   execute: {
     mboxes: [{
       address: getAddress(req),
       name: "target-only-node-sdk-mbox-two" // this mbox name must match the mbox the activity is using
     }]
   }};
SDK Java
code language-js line-numbers
Context context = new Context()
  .channel(ChannelType.WEB);
MboxRequest mbox = new MboxRequest()
  .name("target-only-node-sdk-mbox-two")
  .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);

(2) Assicurati di essere qualificato per il pubblico per l'attività esaminando la proprietà matchedRuleConditions o unmatchedRuleConditions dell'output di traccia:

Output di traccia

...
},
"campaignId": 368564,
"campaignType": "landing",
"matchedSegmentIds": [],
"unmatchedSegmentIds": [
  6188838
      ],
      "matchedRuleConditions": [],
          "unmatchedRuleConditions": [
            {
              "in": [
                "true",
                {
                  "var": "mbox.auth_lc"
                }
              ]
            }
          ]
    ...

Se le condizioni della regola non corrispondono, non sei qualificato per l’attività e pertanto l’attività non viene eseguita. Esamina le regole nel pubblico per capire perché non ti qualifichi.

L’attività di decisioning sul dispositivo non viene eseguita, ma il motivo non è evidente

Potrebbe non essere facilmente evidente il motivo per cui un’attività di decisioning sul dispositivo non viene eseguita. In questo caso, per identificare il problema, effettuare le seguenti operazioni:

(1) Leggi l’output di traccia del logger nella console e identifica la proprietà dell’artefatto, che sarà simile alla seguente:

Output di traccia

...
      "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"
        },
...

Osserva la data artifactLastRetrieved dell'artefatto e assicurati di aver scaricato nell'app l'ultimo file rules.json.

(2) Trovare la proprietà evaluatedCampaignTargets nell'output del logger:

Output logger

...
  "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) Esaminare i dati di context, page e referring per assicurarsi che siano come previsto, in quanto ciò può influire sulla qualifica di targeting dell'attività.

(4) Esaminare campaignId per assicurarsi che vengano valutate le attività che si prevede di eseguire. campaignId corrisponderà all'ID attività nella scheda panoramica attività nell'interfaccia utente Target:

Alt immagine

(5) Rivedi matchedRuleConditions e unmatchedRuleConditions per identificare i problemi di idoneità per le regole per il pubblico per una determinata attività.

(6) Esaminare il file rules.json più recente per assicurarsi che l'attività o le attività che si desidera eseguire localmente siano incluse. Al punto 1 si fa riferimento alla posizione.

(7) Assicurati di utilizzare gli stessi nomi mbox nella richiesta e nelle attività.

(8) Assicurati di utilizzare le regole per il pubblico supportate e i tipi di attività supportati.

Viene effettuata una chiamata al server anche se l'impostazione dell'attività in una mbox indica "Idoneo a Decisioning sul dispositivo" nell'interfaccia utente Target

Ci sono alcuni motivi per cui viene effettuata una chiamata al server anche se il dispositivo è idoneo per le decisioni sul dispositivo:

  • Quando la mbox utilizzata per un'attività "Idonea a Decisioning sul dispositivo" viene utilizzata anche per altre attività che non sono "Idonee a Decisioning sul dispositivo", la mbox è elencata nella sezione remoteMboxes dell'artefatto rules.json. Quando una mbox è elencata in remoteMboxes, qualsiasi chiamata getOffer(s) a tale mbox genera una chiamata al server.

  • Se imposti un'attività in un'area di lavoro o in una proprietà e non includi gli stessi dati durante la configurazione dell'SDK, ciò può causare il download di rules.josn dell'area di lavoro predefinita, che può utilizzare la mbox nella sezione remoteMboxes.

recommendation-more-help
6906415f-169c-422b-89d3-7118e147c4e3