Problemen oplossen on-device decisioning
- Onderwerpen:
- APIs/SDKs
Gemaakt voor:
- Ontwikkelaar
Configuratie valideren
Overzicht van stappen
- Zorg ervoor dat
logger
is geconfigureerd - Zorgen Target traces is ingeschakeld
- Controleer de on-device decisioning regelartefact is opgehaald en in cache geplaatst volgens het gedefinieerde pollinginterval.
- Valideer de levering van inhoud via het in de cache geplaatste regelartefact door een test te creëren on-device decisioning activiteit via de op formulier gebaseerde ervaringscomposer.
- Inspect verzendt meldingsfouten
1. Zorg ervoor dat het logger is geconfigureerd
Zorg er bij het initialiseren van de SDK voor dat u logboekregistratie inschakelt.
Node.js
Voor Node.js SDK a logger
-object moet worden opgegeven.
const CONFIG = {
client: "<your client code>",
organizationId: "<your organization ID>",
logger: console
};
Java SDK
Voor Java SDK logRequests
op de ClientConfig
moet zijn ingeschakeld.
ClientConfig config = ClientConfig.builder()
.client("<your client code>")
.organizationId("<your organization ID>")
.logRequests(true)
.build();
De JVM moet ook worden gestart met de volgende opdrachtregelparameter:
java -Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG ...
2. ZorgenTargetTraces is ingeschakeld
Als u sporen inschakelt, wordt aanvullende informatie van Adobe Target wat betreft de artefact.
-
Ga naar deTargetUI in Experience Cloud.
-
Navigeren naar Administration > Implementation en klik op Generate New Authorization Token.
-
Kopieer het nieuwe machtigingstoken naar het klembord en voeg het toe aan uwTargetverzoek:
Node.js
const request = { trace: { authorizationToken: "88f1a924-6bc5-4836-8560-2f9c86aeb36b" }, execute: { mboxes: [{ name: "sdk-mbox" }] }};
Java
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();
-
Start uw app en controleer de serverterminal terwijl de registreerfunctie en tracering zijn ingeschakeld. De volgende output van registreerder bevestigt dat het regelartefact is teruggewonnen:
Node.js SDK
AT: LD.ArtifactProvider fetching artifact - https://assets.adobetarget.com/your-client-code/production/v1/rules.json AT: LD.ArtifactProvider artifact received - status=200
3. Controleer de on-device decisioning regelartefact is opgehaald en in cache geplaatst volgens het gedefinieerde pollinginterval.
-
Wacht de duur van het opiniepeilingsinterval (gebrek is 20 minuten) en zorg ervoor dat het artefact door SDK wordt gehaald. De zelfde eindlogboeken zullen output zijn.
Daarnaast wordt informatie van deTargetHet spoor zou aan de terminal met details over het regelartefact moeten worden uitgevoerd.
"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. Valideer de levering van inhoud via het caching regelartefact door een test te creëren on-device decisioning activiteit via de op formulier gebaseerde ervaringscomposer
-
Ga naar deTargetUI in Experience Cloud
-
Maak een nieuwe XT-activiteit met behulp van de Form-based Experience Composer.
-
Voer de naam van het selectievakje in die in deTargetaanvraag als de locatie voor de XT-activiteit (let op: dit moet een unieke naam van een box zijn, specifiek voor ontwikkelingsdoeleinden).
-
Wijzig de inhoud in een HTML-voorstel of een JSON-voorstel. Dit wordt geretourneerd in het dialoogvensterTargetverzoek aan uw toepassing. Geef voor de activiteit de focus op als Alle bezoekers en selecteer de gewenste metrische waarde. Geef een naam op voor de activiteit, sla deze op en activeer deze vervolgens om ervoor te zorgen dat de box/locatie in gebruik alleen voor ontwikkeling is.
-
Voeg in uw toepassing een logboekinstructies toe voor de inhoud die wordt ontvangen in het antwoord van uwTargetverzoek
Node.js SDK
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); }
Java SDK
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); }
-
Herzie de logboeken in uw terminal om te verifiëren dat uw inhoud wordt geleverd en dat het via het regelaarsfeit op uw server werd geleverd. De
LD.DeciscionProvider
-object wordt uitgevoerd wanneer de kwalificatie van de activiteit en de beslissing op het apparaat zijn bepaald op basis van de artefact van de regels. Bovendien is het door decontent
moet u<div>test</div>
of u hebt echter besloten dat de reactie moet zijn wanneer u de testactiviteit maakt.Uitvoer van logger
AT: LD.DecisionProvider {...} AT: Response received {...} Response: <div>test</div>
Inspect verzendt meldingsfouten
Wanneer het gebruiken van Beslissing op apparaat, worden de berichten verzonden automatisch voor getOffers voert verzoeken uit. Deze verzoeken worden op de achtergrond ongemerkt verzonden. Om het even welke fouten kunnen worden geïnspecteerd door zich op een geroepen gebeurtenis te abonneren sendNotificationError
. Hier is een codevoorbeeld dat toont hoe te aan berichtfouten in te tekenen gebruikend Node.js SDK.
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
}
});
Algemene scenario's voor probleemoplossing
Controleer dit ondersteunde functies for on-device decisioning wanneer u problemen tegenkomt.
Beslissingsactiviteiten op het apparaat die niet worden uitgevoerd vanwege niet-ondersteund publiek of activiteit
Een veel voorkomend probleem is on-device decisioning activiteiten die niet worden uitgevoerd vanwege het gebruikte publiek of het type activiteit dat niet wordt ondersteund.
(1) Gebruikend de logboekoutput, herzie de ingangen in het spoorbezit in uw reactievoorwerp. Identificeer specifiek het campagnebezit:
Uitvoer overtrekken
"execute": {
"mboxes": [
{
"name": "your-mbox-name",
"index": 0,
"trace": {
"clientCode": "your-client-code",
...
"campaigns": [],
...
}
}
Je zult zien dat de activiteit waarvoor je in aanmerking probeert te komen, zich niet in de campaigns
eigenschap omdat het publiek- of activiteitstype niet wordt ondersteund. Als de activiteit onder campaigns
eigenschap, is uw uitgave niet te wijten aan een niet-ondersteund publiek- of activiteitstype.
(2) Zoek bovendien de rules.json
bestand door naar het trace
> artifact
> artifactLocation
in de loggeruitvoer. U ziet dat uw activiteit ontbreekt in het gedeelte rules
> mboxes
eigenschap:
Uitvoer van logger
...
rules: {
mboxes: { },
views: { }
}
Ten slotte navigeert u naar deTargetUI en zoek de activiteit in kwestie: experience.adobe.com/target
Bekijk de regels die in het publiek worden gebruikt en zorg ervoor dat u alleen de hierboven vermelde regels gebruikt die worden ondersteund. Bovendien, zorg ervoor dat het activiteitstype of A/B of XT is.
Beslissingsactiviteiten op het apparaat die niet worden uitgevoerd vanwege een niet-gekwalificeerd publiek
Als een beslissingsactiviteit op het apparaat niet wordt uitgevoerd, maar u hebt geverifieerd dat het bestand rules.json de activiteit bevat, voert u de volgende stappen uit:
(1) Zorg ervoor dat de box die u uitvoert in uw toepassing dezelfde is als de activiteit:
...
rules: {
mboxes: {
target-only-node-sdk-mbox: [{ // this mbox name must match the mbox in your request
...
}]
}
...
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
}]
}};
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) Zorg ervoor dat u gekwalificeerd bent voor het publiek voor uw activiteit door het matchedRuleConditions
of unmatchedRuleConditions
eigenschap van uw traceringsuitvoer:
Uitvoer overtrekken
...
},
"campaignId": 368564,
"campaignType": "landing",
"matchedSegmentIds": [],
"unmatchedSegmentIds": [
6188838
],
"matchedRuleConditions": [],
"unmatchedRuleConditions": [
{
"in": [
"true",
{
"var": "mbox.auth_lc"
}
]
}
]
...
Als u niet-afgedekte regelvoorwaarden hebt, bent u niet gekwalificeerd voor de activiteit en wordt de activiteit dus niet uitgevoerd. Bekijk de regels in uw publiek om te zien waarom u niet in aanmerking komt.
Beslissingsactiviteit op het apparaat wordt niet uitgevoerd, maar de reden is onduidelijk
Het kan niet gemakkelijk duidelijk zijn waarom een beslissingsactiviteit op het apparaat niet wordt uitgevoerd. In dit geval voert u de volgende stappen uit om het probleem te identificeren:
(1) Lees door de logger spooroutput in uw console en identificeer het artefact bezit, dat aan het volgende gelijkaardig zal kijken:
Uitvoer overtrekken
...
"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"
},
...
Kijk naar de artifactLastRetrieved
datum van het artefact en zorg ervoor dat u de recentste hebt rules.json
naar uw app gedownload bestand.
(2) Zoek de evaluatedCampaignTargets
eigenschap in uw logboekuitvoer:
Uitvoer van 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) De context
, page
, en referring
gegevens om ervoor te zorgen dat deze gegevens op de verwachte wijze worden uitgevoerd, hetgeen van invloed kan zijn op de kwalificatie van de activiteit als doelgericht doel.
(4) Herzie de campaignId
om ervoor te zorgen dat de activiteit of activiteiten die u verwacht uit te voeren, worden geëvalueerd. De campaignId
komt overeen met de activiteit-id op het tabblad activity overview in het dialoogvensterTargetUI:
(5) De matchedRuleConditions
en unmatchedRuleConditions
om problemen te identificeren waarvoor de publieksregels voor een bepaalde activiteit in aanmerking komen.
(6) Controleer de meest recente rules.json
om te controleren of de activiteit of activiteiten die u lokaal wilt uitvoeren, zijn opgenomen. Naar de locatie wordt in stap 1 hierboven verwezen.
(7) Zorg ervoor dat u dezelfde mbox-namen gebruikt in uw aanvraag en activiteiten.
(8) Zorg ervoor dat u de ondersteunde publieksregels en ondersteunde activiteitstypen gebruikt.
Een servervraag wordt gemaakt alhoewel de activiteitenopstelling onder een brievenbus "op Apparaatbesluit in aanmerking komend"in hetTargetgebruikersinterface
Er zijn een paar redenen waarom een servervraag wordt gemaakt alhoewel het apparaat voor op-apparatenbesluit verkiesbaar is:
-
Wanneer de box die wordt gebruikt voor een in aanmerking komende activiteit "Op apparaat beslissend" ook wordt gebruikt voor andere activiteiten die niet in aanmerking komen voor "Op apparaat beslissende actie", wordt de box weergegeven onder de categorie
remoteMboxes
in derules.json
artefact. Wanneer een box onderremoteMboxes
, allegetOffer(s)
de vraag aan dat mbox resulteert in een servervraag. -
Als u een activiteit onder een werkruimte/eigenschap instelt en niet hetzelfde opneemt bij het configureren van de SDK, kan dit
rules.josn
van de standaardwerkruimte die moet worden gedownload. U kunt deze werkruimte onder deremoteMboxes
sectie.