Skapa anpassade tillägg
- Ämnen:
- Developing
Skapat för:
- Developer
När du implementerar ett projekt har du vanligtvis anpassad kod i både AEM och Adobe Campaign. Med det befintliga API:t kan du anropa din anpassade kod i Adobe Campaign från AEM eller från AEM till Adobe Campaign. I det här dokumentet beskrivs hur du gör det.
Förutsättningar
Du måste ha följande installerat:
- Adobe Experience Manager
- Adobe Campaign 6.1
Se Integrera AEM med Adobe Campaign 6.1 för mer information.
Exempel 1: AEM till Adobe Campaign
Standardintegrationen mellan AEM och Campaign baseras på JSON och JSSP (JavaScript Server Page). Dessa JSSP-filer finns i Campaign-konsolen och börjar med amc (Adobe Marketing Cloud).
I det här exemplet skapar vi en ny anpassad JSSP-fil och anropar den från AEM sida för att hämta resultatet. Detta kan till exempel användas för att hämta data från Adobe Campaign eller för att spara data i Adobe Campaign.
-
Om du vill skapa en ny JSSP-fil i Adobe Campaign klickar du på Nytt ikon.
-
Ange namnet på den här JSSP-filen. I det här exemplet använder vi cus:custom.jssp (d.v.s. i kus namnutrymme).
-
Lägg in följande kod i jssp-filen:
<% var origin = request.getParameter("origin"); document.write("Hello from Adobe Campaign, origin : " + origin); %>
-
Spara ditt arbete. Det återstående arbetet är i AEM.
-
Skapa en enkel servett på AEM sida för att anropa denna JSSP. I det här exemplet antar vi följande:
- Kopplingen fungerar mellan AEM och Campaign
- Kampanjmolntjänsten är konfigurerad på /content/geometrixx-outdoor
Det viktigaste objektet i det här exemplet är GenericCampaignConnector, som gör att du kan anropa (hämta och posta) jssp-filer på Adobe Campaign-sidan.
Här är ett litet kodfragment:
@Reference private GenericCampaignConnector campaignConnector; ... Map<String, String> params = new HashMap<String, String>(); params.put("origin", "AEM"); CallResults results = campaignConnector.callGeneric("/jssp/cus/custom.jssp", params, credentials); return results.bodyAsString();
-
Som du ser i det här exemplet måste du skicka inloggningsuppgifterna till samtalet. Du kan få detta via metoden getCredentials() där du skickar en sida som har molntjänsten Campaign konfigurerad.
// page containing the cloudservice for Adobe Campaign Configuration config = campaignConnector.getWebserviceConfig(page.getContentResource().getParent()); CampaignCredentials credentials = campaignConnector.retrieveCredentials(config);
Den fullständiga koden är följande:
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.sling.SlingServlet;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.day.cq.mcm.campaign.CallResults;
import com.day.cq.mcm.campaign.CampaignCredentials;
import com.day.cq.mcm.campaign.GenericCampaignConnector;
import com.day.cq.wcm.api.Page;
import com.day.cq.wcm.api.PageManager;
import com.day.cq.wcm.api.PageManagerFactory;
import com.day.cq.wcm.webservicesupport.Configuration;
@SlingServlet(paths="/bin/campaign", methods="GET")
public class CustomServlet extends SlingSafeMethodsServlet {
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Reference
private GenericCampaignConnector campaignConnector;
@Reference
private PageManagerFactory pageManagerFactory;
@Override
protected void doGet(SlingHttpServletRequest request,
SlingHttpServletResponse response) throws ServletException,
IOException {
PageManager pm = pageManagerFactory.getPageManager(request.getResourceResolver());
Page page = pm.getPage("/content/geometrixx-outdoors");
String result = null;
if ( page != null) {
result = callCustomFunction(page);
}
if ( result != null ) {
PrintWriter pw = response.getWriter();
pw.print(result);
}
}
private String callCustomFunction(Page page ) {
try {
Configuration config = campaignConnector.getWebserviceConfig(page.getContentResource().getParent());
CampaignCredentials credentials = campaignConnector.retrieveCredentials(config);
Map<String, String> params = new HashMap<String, String>();
params.put("origin", "AEM");
CallResults results = campaignConnector.callGeneric("/jssp/cus/custom.jssp", params, credentials);
return results.bodyAsString();
} catch (Exception e ) {
log.error("Something went wrong during the connection", e);
}
return null;
}
}
Exempel 2: Adobe Campaign till AEM
AEM erbjuder API:er som kan hämta objekt var som helst i platadminutforskarvyn.
För varje nod i Utforskaren finns det ett API som är länkat till det. Exempel:
API:t är:
Slutet av URL:en .1.json kan ersättas med .2.json, .3.json, enligt det antal undernivåer du är intresserad av att hämta För att få alla nyckelordet oändlighet kan användas:
För att nu kunna använda API:t måste vi veta att AEM som standard använder grundläggande autentisering.
Ett JS-bibliotek med namnet amcIntegration.js finns i 6.1.1 (build 8624 och senare) som implementerar den logiken bland flera andra.
AEM API-anrop
loadLibrary("nms:amcIntegration.js");
var cmsAccountId = sqlGetInt("select iExtAccountId from NmsExtAccount where sName=$(sz)","aemInstance")
var cmsAccount = nms.extAccount.load(String(cmsAccountId));
var cmsServer = cmsAccount.server;
var request = new HttpClientRequest(cmsServer+"/content/campaigns/geometrixx.infinity.json")
aemAddBasicAuthentication(cmsAccount, request);
request.method = "GET"
request.header["Content-Type"] = "application/json; charset=UTF-8";
request.execute();
var response = request.response;
Experience Manager
- Utveckla användarhandboken - översikt
- Introduktion för utvecklare
- Komma igång med utveckling i AEM Sites – WKND-självstudiekurs
- AEM kärnbegrepp
- Struktur för det AEM användargränssnittet med pekskärm
- Koncepten i det AEM användargränssnittet med pekskärm
- AEM - riktlinjer och bästa praxis
- Använda bibliotek på klientsidan
- Developing and Page Diff
- Begränsningar för redigerare
- CSRF Protection Framework
- Datamodellering - David Nueschelers modell
- Bidrar till AEM
- Dokumentskydd
- Referensmaterial
- Skapa en webbplats med alla funktioner (Classic UI)
- Designer och Designer (Classic UI)
- Plattform
- Fusklapp för Sling
- Använda Sling-adaptrar
- Taggbibliotek
- Mallar
- Använda Sling Resource Merger i AEM
- Övertäckningar
- Namnkonventioner
- Skapa en ny GRE-fältkomponent
- Query Builder
- Taggar
- Anpassa sidor som visas av felhanteraren
- Anpassade nodtyper
- Lägga till teckensnitt för grafikåtergivning
- Ansluta till SQL-databaser
- Extern URL
- Skapa och använda jobb för avlastning
- Konfigurerar cookie-användning
- Så här programmässigt kommer du åt AEM JCR
- Integrera tjänster med JMX-konsolen
- Developing the Bulk Editor
- Utveckla rapporter
- eCommerce
- Komponenter
- Kärnkomponenter
- Formatsystem
- Komponenter - översikt
- AEM - Grunderna
- Utveckla AEM
- Utveckla AEM - kodexempel
- JSON-exporterare för innehållstjänster
- Aktivera JSON-export för en komponent
- Bildredigeraren
- Dekoration-tagg
- Använda Dölj villkor
- Konfigurera flera redigerare på plats
- Utvecklarläge
- Testa användargränssnittet
- Komponenter för innehållsfragment
- Hämta sidinformation i JSON-format
- Internationalisering
- Klassiska gränssnittskomponenter
- Headless Experience Management
- Headless och Hybrid with AEM
- Aktivera JSON-export för en komponent
- Enkelsidiga program
- SPA introduktion och genomgång
- SPA WKND - självstudiekurs
- Getting Started with SPA in AEM - React
- Komma igång med SPA i AEM - Angular
- Implementera en React Component for SPA
- SPA djupdykning
- SPA
- Utveckla SPA för AEM
- SPA Blueprint
- SPA
- Dynamisk mappning av modell till komponent för SPA
- SPA
- SPA och Adobe Experience Platform Launch Integration
- SPA- och serveråtergivning
- SPA referensmaterial
- HTTP-API
- Innehållsfragment
- Experience Fragments
- Utvecklingsverktyg
- Utvecklingsverktyg
- AEM Modernization Tools
- Dialogruteredigeraren
- Verktyget Dialogkonvertering
- Utveckla med CRXDE Lite
- Hantera paket med Maven
- Utveckla AEM projekt med Eclipse
- Skapa AEM projekt med Apache Maven
- Utveckla AEM projekt med IntelliJ IDEA
- Så här använder du VLT-verktyget
- Så här använder du proxyserververktyget
- AEM Brackets Extension
- AEM Developer Tools for Eclipse
- AEM
- Personanpassning
- Utöka AEM
- Anpassa sidredigering
- Anpassa konsolerna
- Anpassa vyer av Sidegenskaper
- Konfigurera din sida för gruppredigering av sidegenskaper
- Anpassa och utöka Content Fragments
- Utöka arbetsflöden
- Utöka Multi Site Manager
- Spårning och analys
- Cloud Services
- Skapa anpassade tillägg
- Forms
- Integrera tjänster med JMX-konsolen
- Developing the Bulk Editor
- Utöka Classic UI
- Testning
- Bästa praxis
- Mobil webb