Extensie manifest

NOTE
Adobe Experience Platform Launch is omgedoopt tot een reeks technologieën voor gegevensverzameling in Adobe Experience Platform. Diverse terminologische wijzigingen zijn als gevolg hiervan in de productdocumentatie doorgevoerd. Gelieve te verwijzen naar het volgende documentvoor een geconsolideerde verwijzing van de terminologieveranderingen.

In de basismap van de extensie moet u een bestand met de naam extension.json maken. Dit bevat belangrijke informatie over uw extensie waarmee Adobe Experience Platform deze correct kan gebruiken. Sommige inhoud wordt gevormd na de manier van npm package.json.

Een voorbeeld extension.json kan de uitbreiding van de Wereld van Hellobewaarplaats GitHub worden gevonden.

Een extensiemanifest moet uit het volgende bestaan:

Eigenschap
Beschrijving
name
De naam van de extensie. Het moet van alle andere uitbreidingen uniek zijn en moet het noemen regelsnaleven. dit wordt gebruikt door markeringen als herkenningsteken en zou niet moeten worden veranderd nadat u uw uitbreiding publiceert.
platform
Het platform voor uw extensie. De enige waarde die op dit moment wordt geaccepteerd, is web .
version
De versie van uw extensie. Het moet het semverversioning formaat volgen. Dit is verenigbaar met npm versiegebied.
displayName
De leesbare naam van de extensie. Dit zal aan de gebruikers van het Platform worden getoond. Het is niet nodig om "tags" of "extensie" te vermelden. Gebruikers weten dan al dat ze naar een extensie voor tags kijken.
description
De beschrijving van de extensie. Dit zal aan de gebruikers van het Platform worden getoond. Als uw extensie gebruikers de mogelijkheid biedt om uw product te implementeren op hun website, moet u beschrijven wat uw product doet. Het is niet nodig om "tags" of "extensie" te vermelden. Gebruikers weten dan al dat ze naar een extensie voor tags kijken.
iconPath (Optioneel)
Het relatieve pad naar het pictogram dat voor de extensie wordt weergegeven. Het mag niet beginnen met een slash. De extensie moet verwijzen naar een SVG-bestand met de extensie .svg . De SVG moet vierkant zijn en kan op Platform worden geschaald.
author

De "auteur" is een object met de volgende structuur:

  • name: De naam van de auteur van de extensie. De bedrijfsnaam kan hier ook worden gebruikt.
  • url (Facultatief): Een URL waar u meer over de uitbreidingsauteur kunt weten.
  • email (Facultatief): Het e-mailadres van de auteur van de uitbreiding.

Dit is verenigbaar met npm auteursgebiedregels.

exchangeUrl (Vereist voor openbare extensies)
De URL naar de aanbieding van uw extensie op Adobe Exchange. Deze moet overeenkomen met het patroon https://www.adobeexchange.com/experiencecloud.details.######.html .
viewBasePath
Het relatieve pad naar de submap met al uw weergaven en aan de weergave gerelateerde bronnen (HTML, JavaScript, CSS, afbeeldingen). Platform host deze map op een webserver en laadt hierin iframe-inhoud. Dit is een verplicht veld en mag niet beginnen met een schuine streep. Als bijvoorbeeld al uw weergaven zich in src/view/ bevinden, is de waarde van viewBasePath gelijk aan src/view/ .
hostedLibFiles (Optioneel)
Veel van onze gebruikers hebben de voorkeur aan het hosten van alle op tags betrekking hebbende dossiers op hun eigen server. Dit biedt gebruikers meer zekerheid over de beschikbaarheid van bestanden tijdens runtime en kan de code gemakkelijk scannen op beveiligingskwetsbaarheden. Als het bibliotheekgedeelte van uw extensie JavaScript-bestanden tijdens runtime moet laden, wordt u aangeraden deze eigenschap te gebruiken om deze bestanden weer te geven. De weergegeven bestanden worden samen met de tagruntimebibliotheek gehost. Uw uitbreiding kan de dossiers via URL dan laden die gebruikend wordt teruggewonnen getHostedLibFileUrlmethode.

deze optie bevat een serie met relatieve wegen van derdebibliotheekdossiers die moeten worden ontvangen.
main (Optioneel)
Het relatieve pad van een bibliotheekmodule die bij uitvoering moet worden uitgevoerd.

deze module zal altijd inbegrepen in de runtime bibliotheek en uitgevoerd zijn. Omdat de module altijd is opgenomen in de runtimebibliotheek, raden we u aan alleen een 'main'-module te gebruiken als dit absoluut noodzakelijk is en de codegrootte minimaal te houden.

Deze module wordt gegarandeerd niet eerst worden uitgevoerd; andere modules kunnen vóór het worden uitgevoerd.
configuration (Optioneel)
Dit beschrijft het gedeelte van de uitbreidingsconfiguratievan de uitbreiding. Dit is nodig als u wilt dat gebruikers algemene instellingen voor de extensie opgeven. Zie bijlagevoor details op hoe dit gebied zou moeten worden gestructureerd.
events (Optioneel)
Een serie van gebeurtenistypedefinities. Zie de bijlage sectie op typedefinitiesvoor de structuur van elk voorwerp in de serie.
conditions (Optioneel)
Een serie van voorwaardetypedefinities. Zie de bijlage sectie op typedefinitiesvoor de structuur van elk voorwerp in de serie.
actions (Optioneel)
Een serie van actietypedefinities. Zie de bijlage sectie op typedefinitiesvoor de structuur van elk voorwerp in de serie.
dataElements (Optioneel)
Een serie van gegevens elementtypedefinities. Zie de bijlage sectie op typedefinitiesvoor de structuur van elk voorwerp in de serie.
sharedModules (Optioneel)

Een array van gezamenlijke moduledefinitieobjecten. Elk gezamenlijk moduleobject in de array moet als volgt zijn gestructureerd:

  • name: De naam van de gedeelde module. Merk op dat deze naam zal worden gebruikt wanneer het van verwijzingen voorzien van gedeelde modules van andere uitbreidingen zoals die in Gedeelde Modulesworden beschreven. Deze naam wordt nooit weergegeven in een gebruikersinterface. Het zou van de namen van andere gedeelde modules binnen uw uitbreiding uniek moeten zijn en moet het noemen regelsnaleven. dit wordt gebruikt door markeringen als herkenningsteken en zou niet moeten worden veranderd nadat u uw uitbreiding publiceert.
  • libPath: Het relatieve pad naar de gedeelde module. Het mag niet beginnen met een slash. Er moet worden verwezen naar een JavaScript-bestand met een extensie .js .

Bijlage

Naamgevingsregels naming-rules

De waarde van elk name veld in extension.json moet aan de volgende regels voldoen:

  • Moet uit maximaal 214 tekens bestaan
  • Mag niet met een punt of een onderstrepingsteken beginnen
  • Mag geen hoofdletters bevatten
  • Alleen URL-veilige tekens bevatten

Deze zijn verenigbaar met npm pakketnaamregels.

Eigenschappen van Configuration-objecten config-object

Het configuratieobject moet als volgt zijn gestructureerd:

Eigenschap
Beschrijving
viewPath
De relatieve URL naar de configuratieweergave van de extensie. Deze moet relatief zijn ten opzichte van viewBasePath en mag niet beginnen met een schuine streep. De extensie moet verwijzen naar een HTML-bestand met de extensie .html . Achtervoegsels van queryreeksen en -fragmenten (hashes) zijn acceptabel.
schema

Een voorwerp van JSON Schemabeschrijvend het formaat van een geldig voorwerp dat van de mening van de uitbreidingsconfiguratie wordt bewaard. Aangezien u de ontwikkelaar van de configuratiemening bent, is het uw verantwoordelijkheid om ervoor te zorgen dat om het even welk die montagesvoorwerp aan dit schema aanpast. Dit schema wordt ook gebruikt voor validatie wanneer gebruikers gegevens proberen op te slaan met behulp van de platformservices.

een voorwerp van het voorbeeldschema is als volgt:

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

Wij adviseren gebruikend een hulpmiddel zoals JSON- Schema validatorom uw schema manueel te testen.

transforms (Optioneel)
Een array van objecten waarin elk object een transformatie vertegenwoordigt die op elk overeenkomend instellingsobject moet worden uitgevoerd wanneer het wordt uitgestraald in de runtimebibliotheek. Zie transformeertsectie voor meer informatie over waarom dit kan nodig zijn en hoe het wordt gebruikt.

Typedefinities type-definitions

Een typedefinitie is een voorwerp dat wordt gebruikt om een gebeurtenis, een voorwaarde, een actie, of type van gegevenselement te beschrijven. Het object bestaat uit het volgende:

Eigenschap
Beschrijving
name
De naam van het type. Dit moet een unieke naam zijn binnen de extensie. De naam moet het noemen regelsnaleven. dit wordt gebruikt door markeringen als herkenningsteken en zou niet moeten worden veranderd nadat u uw uitbreiding publiceert.
displayName
De tekst die zal worden gebruikt om het type binnen het gebruikersinterface van de Inzameling van Gegevens te vertegenwoordigen. Het moet leesbaar zijn voor de mens.
categoryName (Optioneel)
Als deze optie wordt opgegeven, wordt de displayName weergegeven onder categoryName in de gebruikersinterface. Alle typen met dezelfde categoryName worden in dezelfde categorie vermeld. Als uw extensie bijvoorbeeld een gebeurtenistype keyUp en een gebeurtenistype keyDown heeft en beide een categoryName van Keyboard hebben, worden beide gebeurtenistypen weergegeven onder de categorie Keyboard terwijl de gebruiker een optie selecteert uit de lijst met beschikbare gebeurtenistypen wanneer een regel wordt gemaakt. De waarde van categoryName moet leesbaar zijn voor de mens.
libPath
Het relatieve pad naar de bibliotheekmodule van de tekst. Het mag niet beginnen met een slash. Er moet worden verwezen naar een JavaScript-bestand met een extensie .js .
viewPath (Optioneel)
De relatieve URL ten opzichte van de tekstweergave. Deze moet relatief zijn ten opzichte van viewBasePath en mag niet beginnen met een schuine streep. De extensie moet verwijzen naar een HTML-bestand met de extensie .html . Zoektekenreeksen en fragmentid's (hashes) zijn acceptabel. Als de de bibliotheekmodule van uw type geen montages van een gebruiker gebruikt, kunt u dit bezit uitsluiten en Platform zal in plaats daarvan placeholder tonen verklaren dat geen configuratie noodzakelijk is.
schema

Een voorwerp van JSON Schemabeschrijvend het formaat van een geldig montagesvoorwerp dat door de gebruiker kan worden bewaard. De montages worden gewoonlijk gevormd en door een gebruiker bewaard gebruikend het gebruikersinterface van de Inzameling van Gegevens. In deze gevallen kan de weergave van de extensie de nodige stappen ondernemen om door de gebruiker opgegeven instellingen te valideren. Anderzijds kiezen sommige gebruikers ervoor om tags-API's rechtstreeks te gebruiken zonder de hulp van een gebruikersinterface. Het doel van dit schema is Platform toe te staan om behoorlijk te bevestigen dat de montagesobjecten die door gebruikers worden bewaard, ongeacht of een gebruikersinterface wordt gebruikt, in een formaat zijn dat met de bibliotheekmodule compatibel is die op het montagesobject tijdens runtime zal handelen.

een voorwerp van het voorbeeldschema is als volgt:

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

Wij adviseren gebruikend een hulpmiddel zoals JSON- Schema validatorom uw schema manueel te testen.

transforms (Optioneel)
Een array van objecten waarin elk object een transformatie vertegenwoordigt die op elk overeenkomend instellingsobject moet worden uitgevoerd wanneer het wordt uitgestraald in de runtimebibliotheek. Zie de sectie op transformeertvoor meer informatie over waarom dit kan nodig zijn en hoe het wordt gebruikt.

Transformaties transforms

Voor bepaalde specifieke gebruiksgevallen hebben extensies de instellingsobjecten die zijn opgeslagen vanuit een weergave nodig om door Platform te worden getransformeerd voordat ze worden uitgestraald in de runtimebibliotheek van de tag. U kunt vragen dat een of meer van deze transformaties plaatsvinden door de eigenschap transforms in te stellen wanneer u een typedefinitie definieert binnen uw extension.json . De eigenschap transforms is een array van objecten waarin elk object een transformatie vertegenwoordigt die moet plaatsvinden.

Voor alle transformaties zijn een type en een propertyPath vereist. De instructie type moet function , remove en file zijn en beschrijft welk transformatieplatform op het instellingsobject moet worden toegepast. propertyPath is een door een punt gescheiden tekenreeks die tags doorgeeft waar de eigenschap moet worden gevonden die binnen het instellingsobject moet worden gewijzigd. Hier is een voorwerp van voorbeeldmontages en sommige propertyPath s:

{
  foo: {
    bar: "A string",
    baz: [
      "A",
      "B",
      "C"
    ]
  }
}
  • Als u een propertyPath van foo.bar instelt, transformeert u de "A string" -waarde.
  • Als u een propertyPath van foo.baz[] instelt, transformeert u elke waarde in de baz -array.
  • Als u een propertyPath van foo.baz instelt, transformeert u de array baz .

Eigenschapspaden kunnen elke combinatie van array- en objectnotatie gebruiken om transformaties toe te passen op elk niveau van het instellingsobject.

WARNING
Het gebruik van arraynotatie in het kenmerk propertyPath (bijvoorbeeld foo.baz[] ) wordt nog niet ondersteund in de uitbreidingssandbox*tool.

In de onderstaande secties worden de beschikbare transformaties beschreven en hoe u deze kunt gebruiken.

Functietransformatie

Met de functietransformatie kan code die door platformgebruikers wordt geschreven, worden uitgevoerd door een bibliotheekmodule binnen de uitgestraalde runtimebibliotheek.

Laten we aannemen dat we een handelingstype 'aangepast script' willen opgeven. De actieweergave "aangepast script" kan een tekstgebied bevatten waarin de gebruiker code kan invoeren. Laten we aannemen dat een gebruiker de volgende code in het tekstgebied heeft ingevoerd:

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

Wanneer de gebruiker de regel opslaat, ziet het instellingsobject dat in de weergave is opgeslagen er mogelijk als volgt uit:

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

Wanneer een regel die onze actie gebruikt, in de runtimebibliotheek van de tag wordt geactiveerd, willen we de code van de gebruiker uitvoeren en deze een gebruikersnaam doorgeven.

Op het punt dat het instellingsobject wordt opgeslagen vanuit de weergave van het handelingstype, is de code van de gebruiker gewoon een tekenreeks. Dit is goed omdat het behoorlijk aan en van JSON kan behoorlijk in series worden vervaardigd; nochtans, is het ook slecht omdat het typisch in de markering runtime bibliotheek als koord evenals in plaats van een uitvoerbare functie zou worden uitgestoten. Hoewel u kon proberen om de code binnen de de bibliotheekmodule van uw actietype uit te voeren gebruikend evalof de aannemer van de Functie van a 🔗, is het hoogst ontmoedigd toe te schrijven aan inhoudsveiligheidsbeleidpotentieel blokkerend uitvoering.

Als tussenoplossing voor deze situatie, vertelt het gebruiken van de functietransformatie Platform om de code van de gebruiker in een uitvoerbare functie te verpakken wanneer het in de markering runtime bibliotheek wordt uitgegeven. Om ons voorbeeldprobleem op te lossen, zouden wij de transformatie op de typedefinitie in extension.json als volgt bepalen:

{
  "transforms": [
    {
      "type": "function",
      "propertyPath": "foo.bar",
      "parameters": ["username"]
    }
  ]
}
  • type definieert het type transformatie dat op het instellingsobject moet worden toegepast.
  • propertyPath is een door een punt gescheiden tekenreeks die Platform opgeeft waar de eigenschap moet worden gevonden die binnen het instellingsobject moet worden gewijzigd.
  • parameters is een array met parameternamen die moeten worden opgenomen in de handtekening van de functie wrapping.

Wanneer het instellingsobject wordt uitgestraald in de tagruntime-bibliotheek, wordt het als volgt getransformeerd:

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

Uw bibliotheekmodule kan vervolgens de functie met de code van de gebruiker aanroepen en het argument username doorgeven.

Bestandstransformatie

Met de bestandstransformatie kan code die door platformgebruikers is geschreven, worden verzonden naar een bestand dat losstaat van de runtimebibliotheek. Het bestand wordt samen met de tagruntime-bibliotheek gehost en kan vervolgens tijdens runtime naar wens worden geladen door de extensie.

Laten we aannemen dat we een handelingstype 'aangepast script' willen opgeven. De weergave van het handelingstype kan een tekstgebied bevatten waarin de gebruiker code kan invoeren. Laten we aannemen dat een gebruiker de volgende code in het tekstgebied heeft ingevoerd:

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

Wanneer de gebruiker de regel opslaat, ziet het instellingsobject dat in de weergave is opgeslagen er mogelijk als volgt uit:

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

We willen dat de code van de gebruiker in een afzonderlijk bestand wordt geplaatst in plaats van in de runtimebibliotheek van de tag. Wanneer een regel die onze actie gebruikt in de tagruntime-bibliotheek wordt geactiveerd, willen we de code van de gebruiker laden door een scriptelement aan de hoofdtekst van het document toe te voegen. Om ons voorbeeldprobleem op te lossen, zouden wij de transformatie op de definitie van actietype in extension.json als volgt bepalen:

{
  "transforms": [
    {
      "type": "file",
      "propertyPath": "foo.bar"
    }
  ]
}
  • type definieert het type transformatie dat op het instellingsobject moet worden toegepast.
  • propertyPath is een door een punt gescheiden tekenreeks die Platform opgeeft waar de eigenschap moet worden gevonden die binnen het instellingsobject moet worden gewijzigd.

Wanneer het instellingsobject wordt uitgestraald in de tagruntime-bibliotheek, wordt het als volgt getransformeerd:

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

In dit geval is de waarde van foo.bar getransformeerd naar een URL. De exacte URL wordt bepaald op het moment dat de bibliotheek wordt gemaakt. Het bestand krijgt altijd de extensie .js en wordt geleverd met een JavaScript-georiënteerd MIME-type. In de toekomst kunnen we ondersteuning toevoegen voor andere MIME-typen.

Transformatie verwijderen

Standaard worden alle eigenschappen van het instellingsobject weergegeven in de runtimebibliotheek van de tag. Als bepaalde eigenschappen alleen worden gebruikt voor de extensieweergave, vooral als deze vertrouwelijke informatie bevatten (bijvoorbeeld geheime token), moet u de transformatie voor verwijderen gebruiken om te voorkomen dat de informatie wordt uitgestoten in de runtimebibliotheek van de tag.

Laten we aannemen dat we een nieuw actietype willen aanbieden. De weergave van het actietype kan een invoer bevatten waarin de gebruiker een geheime sleutel kan invoeren die verbinding met een specifieke API mogelijk maakt. Laten we aannemen dat een gebruiker de volgende tekst in de invoer heeft ingevoerd:

ABCDEFG

Wanneer de gebruiker de regel opslaat, ziet het instellingsobject dat in de weergave is opgeslagen er mogelijk als volgt uit:

{
  foo: {
    bar: "ABCDEFG"
  }
}

De eigenschap bar wordt niet opgenomen in de runtimebibliotheek van de tag. Om ons voorbeeldprobleem op te lossen, zouden wij de transformatie op de definitie van actietype in extension.json als volgt bepalen:

{
  "transforms": [
    {
      "type": "remove",
      "propertyPath": "foo.bar"
    }
  ]
}
  • type definieert het type transformatie dat op het instellingsobject moet worden toegepast.
  • propertyPath is een door een punt gescheiden tekenreeks die Platform opgeeft waar de eigenschap moet worden gevonden die binnen het instellingsobject moet worden gewijzigd.

Wanneer het instellingsobject wordt uitgestraald in de tagruntime-bibliotheek, wordt het als volgt getransformeerd:

{
  foo: {
  }
}

In dit geval is de waarde van foo.bar verwijderd uit het instellingenobject.

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