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. Raadpleeg het volgende document voor een geconsolideerde referentie van de terminologische wijzigingen.

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

Een voorbeeld extension.json kan de Hello World-extensie GitHub-opslagplaats.

Een extensiemanifest moet uit het volgende bestaan:

Eigenschap
Beschrijving
name
De naam van de extensie. Het moet uniek zijn van alle andere uitbreidingen en moet voldoen aan naamgevingsregels. Dit wordt gebruikt door tags als id en mag niet worden gewijzigd nadat u de extensie hebt gepubliceerd.
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 de semester versieopmaak. Dit is in overeenstemming met npm-versieveld.
displayName
De leesbare naam van de extensie. Dit zal aan de gebruikers van de Platform worden getoond. "tags" of "extensie" hoeven niet te worden vermeld; gebruikers weten al dat ze een tagextensie bekijken .
description
De beschrijving van de extensie. Dit zal aan de gebruikers van de 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. "tags" of "extensie" hoeven niet te worden vermeld; gebruikers weten al dat ze een tagextensie bekijken .
iconPath (Optioneel)
Het relatieve pad naar het pictogram dat voor de extensie wordt weergegeven. Het mag niet beginnen met een schuine streep. Het moet verwijzen naar een SVG-bestand met een .svg extensie. De SVG moet vierkant zijn en kan met Platform worden geschaald.
author

De "auteur" is een object dat als volgt moet worden gestructureerd:

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

Dit is in overeenstemming met npm-auteurveld regels.

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 zijn opgenomen in src/view/, de waarde van viewBasePath zou 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 extensie kan de bestanden vervolgens laden via een URL die is opgehaald met de getHostedLibFileUrl methode.

Deze optie bevat een array met relatieve paden van bibliotheekbestanden van derden die moeten worden gehost.
main (Optioneel)
Het relatieve pad van een bibliotheekmodule die bij uitvoering moet worden uitgevoerd.

Deze module wordt altijd opgenomen in de runtimebibliotheek en uitgevoerd. 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.

Het is niet gegarandeerd dat deze module eerst wordt uitgevoerd; andere modules kunnen vóór het worden uitgevoerd.
configuration (Optioneel)
Dit beschrijft de extensieconfiguratie deel van de extensie. Dit is nodig als u wilt dat gebruikers algemene instellingen voor de extensie opgeven. Zie de aanhangsel voor meer informatie over de structuur van dit veld.
events (Optioneel)
Een array van event typedefinities. Zie het aanhangsel over typedefinities voor de structuur van elk object in de array.
conditions (Optioneel)
Een array van voorwaarde typedefinities. Zie het aanhangsel over typedefinities voor de structuur van elk object in de array.
actions (Optioneel)
Een array van action typedefinities. Zie het aanhangsel over typedefinities voor de structuur van elk object in de array.
dataElements (Optioneel)
Een array van gegevenselement typedefinities. Zie het aanhangsel over typedefinities voor de structuur van elk object in de array.
sharedModules (Optioneel)

Een array van gezamenlijke moduledefinitieobjecten. Elk gezamenlijk module-object 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 modules. Deze naam wordt nooit weergegeven in een gebruikersinterface. Het zou uniek van de namen van andere gedeelde modules binnen uw uitbreiding moeten zijn en moet voldoen aan naamgevingsregels. Dit wordt gebruikt door tags als id en mag niet worden gewijzigd nadat u de extensie hebt gepubliceerd.
  • libPath: Het relatieve pad naar de gedeelde module. Het mag niet beginnen met een schuine streep. Er moet worden verwezen naar een JavaScript-bestand met een .js extensie.

Aanhangsel

Naamgevingsregels naming-rules

De waarde van name veld binnen extension.json moeten voldoen aan de volgende voorschriften:

  • 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 in overeenstemming met npm-pakketnaam regels.

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. Het moet in verhouding staan tot viewBasePath en mag niet met een schuine streep beginnen. Het moet verwijzen naar een HTML-bestand met een .html extensie. Achtervoegsels van queryreeksen en -fragmenten (hashes) zijn acceptabel.
schema

Een object van JSON Schema beschrijvend 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 zal ook voor bevestiging worden gebruikt wanneer de gebruikers proberen om gegevens te bewaren gebruikend de diensten van het Platform.

Een voorbeeldschemaobject is als volgt:

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

We raden u aan een gereedschap te gebruiken zoals JSON-schemavalidator om het schema handmatig 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 transformaties voor meer informatie over waarom dit nodig kan 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 voldoen aan naamgevingsregels. Dit wordt gebruikt door tags als id en mag niet worden gewijzigd nadat u de extensie hebt gepubliceerd.
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)
Indien verstrekt, displayName wordt vermeld onder de categoryName in de gebruikersinterface. Alle typen met hetzelfde categoryName worden onder dezelfde rubriek vermeld. Als uw extensie bijvoorbeeld een keyUp gebeurtenistype en een keyDown gebeurtenistype en beide hadden een categoryName van Keyboardbeide gebeurtenistypen worden vermeld onder de categorie Toetsenbord terwijl de gebruiker een regel maakt en een keuze maakt uit de lijst met beschikbare gebeurtenistypen. 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 schuine streep. Er moet worden verwezen naar een JavaScript-bestand met een .js extensie.
viewPath (Optioneel)
De relatieve URL ten opzichte van de weergave van het type. Het moet in verhouding staan tot viewBasePath en mag niet met een schuine streep beginnen. Het moet verwijzen naar een HTML-bestand met een .html extensie. 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 het Platform zal in plaats daarvan placeholder tonen verklaren die dat geen configuratie noodzakelijk is.
schema

Een object van JSON Schema beschrijvend het formaat van een geldig montagesobject 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 correct 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 voorbeeldschemaobject is als volgt:

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

We raden u aan een gereedschap te gebruiken zoals JSON-schemavalidator om het schema handmatig 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 over transformaties voor meer informatie over waarom dit nodig kan zijn en hoe het wordt gebruikt .

Transformaties transforms

Voor bepaalde specifieke gebruiksgevallen moeten de instellingsobjecten die zijn opgeslagen vanuit een weergave, door het Platform worden getransformeerd voordat ze worden uitgestraald in de runtimebibliotheek van de tag. U kunt verzoeken dat een of meer van deze transformaties plaatsvinden door het instellen van de transforms eigenschap bij het definiëren van een typedefinitie binnen uw extension.json. De transforms eigenschap is een array van objecten waarin elk object een transformatie vertegenwoordigt die moet plaatsvinden.

Voor alle transformaties is een type en propertyPath. De type moet een van function, remove, en file en beschrijft welk Platform van de transformatie op het montagesobject zou moeten van toepassing zijn. De propertyPath is een door een punt gescheiden tekenreeks die tags opgeeft waar de eigenschap moet worden gevonden die binnen het instellingsobject moet worden gewijzigd. Hier volgt een voorbeeld van een instellingenobject en enkele propertyPaths:

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

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

WARNING
Armatuurnotatie gebruiken in het dialoogvenster propertyPath kenmerk (bijvoorbeeld foo.baz[]) wordt nog niet ondersteund in de extensiesandbox*tool.

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

Functietransformatie

Met de functietransformatie kan code die door gebruikers van het Platform is geschreven, worden uitgevoerd door een bibliotheekmodule in de uitgestoten 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 worden geserialiseerd; het is echter ook ongeldig omdat het normaal gesproken ook als tekenreeks in de tagruntime-bibliotheek wordt weergegeven in plaats van als een uitvoerbare functie. Hoewel u kon proberen om de code binnen de de bibliotheekmodule van uw actietype uit te voeren gebruikend eval of Constructor Function, is het sterk ontmoedigd vanwege beleid voor inhoudsbeveiliging mogelijk blokkerende 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:

{
  "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 het Platform opgeeft waar de eigenschap moet worden gevonden die binnen het instellingsobject moet worden gewijzigd.
  • parameters is een array met parameternamen die moet worden opgenomen in de handtekening van de wrapping-functie.

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 dan de functie aanroepen die de code van de gebruiker bevat en de username argument.

Bestandstransformatie

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

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, binnen de tagruntime bibliotheek wordt geactiveerd, willen wij de code van de gebruiker laden door een scriptelement aan de documenttekst toe te voegen. Om ons voorbeeldprobleem op te lossen, zouden wij de transformatie op de definitie van actietype in extension.json als volgt:

{
  "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 het 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 dat geval moet de waarde van foo.bar is getransformeerd naar een URL. De exacte URL wordt bepaald op het moment dat de bibliotheek wordt gemaakt. Het bestand krijgt altijd een .js en 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"
  }
}

We willen de eigendom niet opnemen bar 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:

{
  "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 het 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 dat geval moet de waarde van foo.bar is verwijderd uit het instellingenobject.

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