Extension manifest

NOTE
Adobe Experience Platform Launch har omklassificerats som en serie datainsamlingstekniker i Adobe Experience Platform. Som ett resultat av detta har flera terminologiska förändringar införts i produktdokumentationen. I följande dokument finns en konsoliderad referens till de ändrade terminologin.

I tilläggets baskatalog måste du skapa filen extension.json. Detta innehåller viktig information om tillägget som gör att Adobe Experience Platform kan använda det korrekt. En del av innehållet formateras efter sättet för npm:s package.json.

Ett exempel extension.json finns i GitHub-databasen Hello World-tillägget.

Ett tilläggsmanifest måste bestå av följande:

Egenskap
Beskrivning
name
Namnet på tillägget. Den måste vara unik från alla andra tillägg och måste uppfylla namnreglerna. Detta används av taggar som identifierare och bör inte ändras efter att du har publicerat tillägget.
platform
Plattformen för tillägget. Det enda värde som accepteras för tillfället är web.
version
Versionen av tillägget. Den måste följa versionshanteringsformatet server. Detta stämmer överens med npm-versionsfältet.
displayName
Tilläggets läsbara namn. Detta visas för plattformsanvändare. Du behöver inte ange"taggar" eller"tillägg". Användarna vet redan att de tittar på ett taggtillägg.
description
Beskrivningen av tillägget. Detta visas för plattformsanvändare. Om tillägget ger användarna möjlighet att implementera produkten på sin webbplats, beskriv vad produkten gör. Du behöver inte ange"taggar" eller"tillägg". Användarna vet redan att de tittar på ett taggtillägg.
iconPath (Valfritt)
Den relativa sökvägen till ikonen som ska visas för tillägget. Det får inte börja med ett snedstreck. Den måste referera till en SVG-fil med filnamnstillägget .svg. SVG ska vara fyrkantig och kan skalas av Platform.
author

"Författaren" är ett objekt som ska struktureras enligt följande:

  • name: Namnet på tilläggsförfattaren. Du kan också använda företagsnamnet här.
  • url (Valfritt): En URL där du kan ta reda på mer om tilläggsförfattaren.
  • email (Valfritt): E-postadressen till tilläggsförfattaren.

Detta är förenligt med npm-reglerna för författarfält.

exchangeUrl (Krävs för offentliga tillägg)
URL:en till tilläggets lista på Adobe Exchange. Det måste matcha mönstret https://www.adobeexchange.com/experiencecloud.details.######.html.
viewBasePath
Den relativa sökvägen till underkatalogen som innehåller alla vyer och visningsrelaterade resurser (HTML, JavaScript, CSS, images). Plattformen har den här katalogen på en webbserver och läser in iframe-innehåll från den. Detta är ett obligatoriskt fält och ska inte börja med ett snedstreck. Om alla dina vyer till exempel finns i src/view/ blir värdet viewBasePath src/view/.
hostedLibFiles (Valfritt)
Många av våra användare föredrar att ha alla taggrelaterade filer på sin egen server. Detta ger användarna en ökad säkerhet vad gäller filtillgänglighet vid körning och de kan enkelt söka efter säkerhetsluckor i koden. Om biblioteksdelen av tillägget behöver läsa in JavaScript-filer vid körning bör du använda den här egenskapen för att lista dessa filer. De listade filerna lagras tillsammans med taggens körtidsbibliotek. Tillägget kan sedan läsa in filerna via en URL som hämtats med metoden getHostedLibFileUrl .

Det här alternativet innehåller en matris med relativa sökvägar för biblioteksfiler från tredje part som måste lagras.
main (Valfritt)
Den relativa sökvägen för en biblioteksmodul som ska köras vid körning.

Den här modulen inkluderas alltid i körningsbiblioteket och körs. Eftersom modulen alltid ingår i körningsbiblioteket rekommenderar vi att du bara använder huvudmodulen när det är absolut nödvändigt och att kodstorleken är minimal.

Det går inte att garantera att den här modulen körs först. Andra moduler kan köras innan.
configuration (Valfritt)
Detta beskriver delen tilläggskonfiguration i tillägget. Detta är nödvändigt om du vill att användarna ska ange globala inställningar för tillägget. Mer information om hur det här fältet ska struktureras finns i bilagan.
events (Valfritt)
En array med event-typdefinitioner. I avsnittet om tillägg för typdefinitioner finns strukturen för varje objekt i arrayen.
conditions (Valfritt)
En array med condition-typdefinitioner. I avsnittet om tillägg för typdefinitioner finns strukturen för varje objekt i arrayen.
actions (Valfritt)
En matris med åtgärd-typdefinitioner. I avsnittet om tillägg för typdefinitioner finns strukturen för varje objekt i arrayen.
dataElements (Valfritt)
En array med dataelement-typdefinitioner. I avsnittet om tillägg för typdefinitioner finns strukturen för varje objekt i arrayen.
sharedModules (Valfritt)

En array med definierade objekt för delade moduler. Varje objekt i en delad modul i arrayen ska struktureras på följande sätt:

  • name: Namnet på den delade modulen. Observera att det här namnet kommer att användas när delade moduler från andra tillägg refereras enligt beskrivningen i Delade moduler. Det här namnet visas aldrig i något användargränssnitt. Den ska vara unik från namnen på andra delade moduler i tillägget och måste uppfylla namnreglerna. Detta används av taggar som identifierare och bör inte ändras efter att du har publicerat tillägget.
  • libPath: Den relativa sökvägen till den delade modulen. Det får inte börja med ett snedstreck. Den måste referera till en JavaScript-fil med tillägget .js.

Bilaga

Namngivningsregler naming-rules

Värdet för alla name-fält i extension.json måste följa följande regler:

  • Måste innehålla högst 214 tecken
  • Får inte börja med en punkt eller ett understreck
  • Får inte innehålla versaler
  • Får endast innehålla URL-säkra tecken

Dessa är kompatibla med reglerna för npm-paketnamnet.

Egenskaper för konfigurationsobjekt config-object

Konfigurationsobjektet ska struktureras på följande sätt:

Egenskap
Beskrivning
viewPath
Den relativa URL:en till tilläggskonfigurationsvyn. Den ska vara relativ till viewBasePath och ska inte börja med ett snedstreck. Den måste referera till en HTML-fil med filnamnstillägget .html. Frågesträngar och fragment-ID (hash-suffix) kan användas.
schema

Ett objekt av JSON-schema som beskriver formatet för ett giltigt objekt som sparas från tilläggskonfigurationsvyn. Eftersom du är utvecklare av konfigurationsvyn är det ditt ansvar att se till att alla sparade inställningsobjekt matchar det här schemat. Det här schemat används även för validering när användare försöker spara data med hjälp av plattformstjänster.

Ett exempelschemaobjekt är följande:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "delay": {
      "type": "number",
      "minimum": 1
    }
  },
  "required": [
    "delay"
  ],
  "additionalProperties": false
}

Vi rekommenderar att du använder ett verktyg som JSON-schemavalideraren för att manuellt testa ditt schema.

transforms (Valfritt)
En array med objekt där varje objekt representerar en omformning som ska utföras på alla motsvarande inställningsobjekt när det skickas till körningsbiblioteket. I avsnittet transforms finns mer information om varför detta kan behövas och hur det används.

Typdefinitioner type-definitions

En typdefinition är ett objekt som används för att beskriva en händelse, ett villkor, en åtgärd eller en dataelementtyp. Objektet består av följande:

Egenskap
Beskrivning
name
Namnet på typen. Det här måste vara ett unikt namn i tillägget. Namnet måste uppfylla namnreglerna. Detta används av taggar som identifierare och bör inte ändras efter att du har publicerat tillägget.
displayName
Den text som ska användas för att representera typen i användargränssnittet för datainsamling. Den ska vara läsbar för människor.
categoryName (Valfritt)
Om det anges kommer displayName att listas under categoryName i användargränssnittet. Alla typer med samma categoryName listas under samma kategori. Om tillägget till exempel innehöll en keyUp-händelsetyp och en keyDown-händelsetyp, och båda hade categoryName av Keyboard, skulle båda händelsetyperna listas under kategorin Tangentbord medan användaren väljer i listan över tillgängliga händelsetyper när en regel skapas. Värdet för categoryName ska vara läsbart för människor.
libPath
Den relativa sökvägen till textens biblioteksmodul. Det får inte börja med ett snedstreck. Den måste referera till en JavaScript-fil med tillägget .js.
viewPath (Valfritt)
Den relativa URL:en till typvyn. Den ska vara relativ till viewBasePath och ska inte börja med ett snedstreck. Den måste referera till en HTML-fil med filnamnstillägget .html. Frågesträngar och fragment-ID:n (hash) tillåts. Om typens biblioteksmodul inte använder några inställningar från en användare, kan du exkludera den här egenskapen. I stället visas en platshållare som anger att ingen konfiguration behövs.
schema

Ett objekt av JSON Schema som beskriver formatet för ett giltigt inställningsobjekt som kan sparas av användaren. Inställningarna konfigureras och sparas vanligtvis av en användare med användargränssnittet i Datainsamling. I dessa fall kan tilläggsvyn vidta nödvändiga åtgärder för att validera de inställningar som användaren anger. Å andra sidan väljer vissa användare att använda tagg-API:er direkt utan hjälp av något användargränssnitt. Syftet med det här schemat är att göra det möjligt för Platform att på rätt sätt validera att inställningsobjekt som sparats av användare, oavsett om ett användargränssnitt används, har ett format som är kompatibelt med biblioteksmodulen som ska agera på inställningsobjektet vid körning.

Ett exempelschemaobjekt är följande:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "delay": {
      "type": "number",
      "minimum": 1
    }
  },
  "required": [
    "delay"
  ],
  "additionalProperties": false
}

Vi rekommenderar att du använder ett verktyg som JSON-schemavalideraren för att manuellt testa ditt schema.

transforms (Valfritt)
En array med objekt där varje objekt representerar en omformning som ska utföras på alla motsvarande inställningsobjekt när det skickas till körningsbiblioteket. Mer information om varför det här kan behövas och hur det används finns i avsnittet transforms.

Omformningar transforms

För vissa specifika användningsområden behöver tillägg inställningsobjekten som har sparats från en vy omvandlas av plattformen innan de skickas till taggens körtidsbibliotek. Du kan begära att en eller flera av dessa omformningar äger rum genom att ange egenskapen transforms när du definierar en typdefinition i extension.json. Egenskapen transforms är en array med objekt där varje objekt representerar en omformning som ska utföras.

Alla omformningar kräver en type och en propertyPath. type måste vara en av function, remove och file och beskriver vilken transformeringsplattform som ska användas för inställningsobjektet. propertyPath är en periodavgränsad sträng som anger var taggar ska hitta den egenskap som behöver ändras i inställningsobjektet. Här är ett exempel på inställningsobjekt och några propertyPaths:

{
  foo: {
    bar: "A string",
    baz: [
      "A",
      "B",
      "C"
    ]
  }
}
  • Om du anger propertyPath av foo.bar omformas värdet "A string".
  • Om du anger propertyPath av foo.baz[] omformas varje värde i arrayen baz.
  • Om du anger propertyPath av foo.baz omformas arrayen baz.

Egenskapssökvägar kan använda valfri kombination av array- och objektnotation för att tillämpa omformningar på alla nivåer i inställningsobjektet.

WARNING
Det finns ännu inget stöd för att använda matrisnotation i attributet propertyPath (t.ex. foo.baz[]) i verktyget för tilläggssandlåda*.

Avsnitten nedan beskriver de tillgängliga omformningarna och hur de används.

Funktionsomformning

Funktionstransformeringen gör att kod som skrivits av plattformsanvändare kan köras av en biblioteksmodul i det utsända taggbiblioteket.

Låt oss anta att vi vill tillhandahålla en"anpassad manusåtgärd". Åtgärdsvyn för anpassade skript kan innehålla ett textområde där användaren kan ange kod. Låt oss anta att en användare har angett följande kod i textområdet:

console.log('Welcome, ' + username +'. This is ZomboCom.');

När användaren sparar regeln kan inställningsobjektet som sparas av vyn se ut så här:

{
  foo: {
    bar: "console.log('Welcome, ' + username +'. This is ZomboCom.');"
  }
}

När en regel som använder vår åtgärd utlöses i taggens körtidsbibliotek, vill vi köra användarens kod och skicka den till ett användarnamn.

När inställningsobjektet sparas från åtgärdstypens vy är användarens kod bara en sträng. Detta är bra eftersom det kan serialiseras till och från JSON, men det är också dåligt eftersom det vanligtvis skulle ha släppts som en sträng i taggens körningsbibliotek i stället för som en körbar funktion. Även om du kan försöka köra koden i åtgärdstypens biblioteksmodul med eval eller en funktionskonstruktor , rekommenderas det inte eftersom skyddsprofiler eventuellt blockerar körningen.

Som en tillfällig lösning på den här situationen kan du använda funktionsomformningen för att få Platform att kapsla in användarens kod i en körbar funktion när den släpps ut i taggens körningsbibliotek. För att lösa vårt exempelproblem definierar vi transformeringen för typdefinitionen i extension.json enligt följande:

{
  "transforms": [
    {
      "type": "function",
      "propertyPath": "foo.bar",
      "parameters": ["username"]
    }
  ]
}
  • type definierar den typ av omformning som ska användas på inställningsobjektet.
  • propertyPath är en periodavgränsad sträng som anger för plattformen var den egenskap som behöver ändras i inställningsobjektet ska hittas.
  • parameters är en array med parameternamn som ska inkluderas i radbrytningsfunktionens signatur.

När inställningsobjektet skickas i taggens körningsbibliotek omvandlas det till följande:

{
  foo: {
    bar: function(username) {
      console.log('Welcome, ' + username +'. This is ZomboCom.');
    }
  }
}

Din biblioteksmodul kan sedan anropa funktionen som innehåller användarens kod och skicka argumentet username.

Filomvandling

Med filtransformeringen kan kod som skrivits av plattformsanvändare skickas till en fil som är separat från taggens körningsbibliotek. Filen lagras tillsammans med taggens körtidsbibliotek och kan sedan läsas in efter behov av tillägget vid körning.

Låt oss anta att vi vill tillhandahålla en"anpassad manusåtgärd". Åtgärdstypens vy kan innehålla ett textområde där användaren kan ange kod. Låt oss anta att en användare har angett följande kod i textområdet:

console.log('This is ZomboCom.');

När användaren sparar regeln kan inställningsobjektet som sparas av vyn se ut så här:

{
  foo: {
    bar: "console.log('This is ZomboCom.');"
  }
}

Vi vill att användarens kod ska placeras i en separat fil i stället för att inkluderas i taggens körningsbibliotek. När en regel som använder vår åtgärd utlöses i taggens körtidsbibliotek, vill vi läsa in användarens kod genom att lägga till ett skriptelement i dokumentets brödtext. För att lösa vårt exempelproblem definierar vi transformeringen för åtgärdstypdefinitionen i extension.json enligt följande:

{
  "transforms": [
    {
      "type": "file",
      "propertyPath": "foo.bar"
    }
  ]
}
  • type definierar den typ av omformning som ska användas på inställningsobjektet.
  • propertyPath är en periodavgränsad sträng som anger för plattformen var den egenskap som behöver ändras i inställningsobjektet ska hittas.

När inställningsobjektet skickas i taggens körningsbibliotek omvandlas det till följande:

{
  foo: {
    bar: "//launch.cdn.com/path/abc.js"
  }
}

I det här fallet har värdet foo.bar omvandlats till en URL. Den exakta URL:en bestäms när biblioteket skapas. Filen får alltid tillägget .js och levereras med en JavaScript-orienterad MIME-typ. Vi kan lägga till stöd för andra MIME-typer i framtiden.

Ta bort omformning

Som standard skickas alla egenskaper för inställningsobjektet i taggens körtidsbibliotek. Om vissa egenskaper bara används för tilläggsvyn, särskilt om de innehåller känslig information (t.ex. hemlig token) bör du använda omformningen remove för att förhindra att informationen skickas till taggens körningsbibliotek.

Låt oss anta att vi vill tillhandahålla en ny åtgärdstyp. Åtgärdstypens vy kan innehålla en inmatning där användaren kan ange en hemlig nyckel som tillåter anslutning till ett visst API. Låt oss anta att en användare har angett följande text i indata:

ABCDEFG

När användaren sparar regeln kan inställningsobjektet som sparas av vyn se ut så här:

{
  foo: {
    bar: "ABCDEFG"
  }
}

Vi vill inte inkludera egenskapen bar i taggens körningsbibliotek. För att lösa vårt exempelproblem definierar vi transformeringen för åtgärdstypdefinitionen i extension.json enligt följande:

{
  "transforms": [
    {
      "type": "remove",
      "propertyPath": "foo.bar"
    }
  ]
}
  • type definierar den typ av omformning som ska användas på inställningsobjektet.
  • propertyPath är en periodavgränsad sträng som anger för plattformen var den egenskap som behöver ändras i inställningsobjektet ska hittas.

När inställningsobjektet skickas i taggens körningsbibliotek omvandlas det till följande:

{
  foo: {
  }
}

I det här fallet har värdet foo.bar tagits bort från inställningsobjektet.

recommendation-more-help
12b4e4a9-5028-4d88-8ce6-64a580811743