Campaign: la sincronizzazione dei modelli di AEM non riesce dopo la modifica della posizione dei modelli in AEM
Quando Adobe Campaign tenta di sincronizzare un modello e-mail di AEM tramite l’endpoint .campaign.link.json, l’operazione può non riuscire con un errore JST-310000 JSON.parse anche se il modello sembra esistere e la sincronizzazione di base sembra funzionare. Questo problema può verificarsi quando un componente della pagina e-mail di AEM personalizzato eredita dalla pagina dei componenti core E-mail utilizzando un percorso assoluto dell’archivio invece del tipo di risorsa relativo previsto dalla risoluzione del servlet Sling.
Descrizione description
Un cliente ha segnalato che i precedenti modelli e-mail di AEM continuavano a funzionare, ma i modelli più recenti basati su un componente pagina e-mail non riuscivano quando venivano aperti o sincronizzati da Campaign.
Il sintomo visibile in Campaign è stato un errore JST-310000 durante la compilazione dello script ‘nms:amcIntegration.js’ causato da JSON.parse.
Il cliente stava tentando di inviare da AEM una nuova pagina di modelli di campagna basati sul componente core e-mail e modificabili per sua natura.
Il tipo di risorsa utilizzato era : /apps/aem-crm/components/email/page and superType era : /apps/core/email/components/page/v1/page consigliato da Adobe in quanto i vecchi componenti mcm diventeranno obsoleti.
Nel complesso, la sincronizzazione tra AEM e Campaign funzionava e i modelli erano visibili nell’elenco di selezione, ma quando sono stati selezionati i nuovi modelli sul componente core e-mail, è stato visualizzato l’errore.
Il cliente ha aggiunto i valori appropriati all’opzione AEMResourceTypeFilter in Campaign:
mcm/campaign/components/newsletter,mcm/campaign/components/campaign_newsletterpage,mcm/neolane/components/newsletter,/apps/aem-crm/templates/campaign-newsletter-template-2025,/apps/aem-crm/components/email/page,/apps/core/email/components/page/page/v1/page
Risoluzione resolution
Causa principale
La sincronizzazione non riesce perché LinkServlet di AEM (che gestisce l’endpoint .campaign.link.json e restituisce il JSON previsto da Campaign) non viene richiamato per un modello problematico. Viene invece eseguito il gestore POST predefinito di Sling e restituisce una risposta HTML, che Campaign non riesce ad analizzare (errore JSON.parse).
Ciò si verifica perché il componente del cliente /apps/aem-crm/components/email/page dichiara il proprio sling:resourceSuperType utilizzando un percorso assoluto:
sling:resourceSuperType = “/apps/core/email/components/page/v1/page”
LinkServlet è registrato per il modulo relativo core/email/components/page/v1/page (senza /apps/). Sling tratta questi elementi come chiavi diverse, pertanto non è in grado di trovare il servlet camminando nella gerarchia dei componenti.
Risoluzione
Nella definizione del componente personalizzato del cliente (/apps/aem-crm/components/email/page/.content.xml nella propria origine di progetto AEM), modifica sling:resourceSuperType dal percorso assoluto al modulo relativo:
< !— Prima di —>
sling:resourceSuperType=“/apps/core/email/components/page/v1/page”
< !— Dopo —>
sling:resourceSuperType=“core/email/components/page/v1/page”
Ridistribuisci il pacchetto dei componenti dopo questa modifica. Sling quindi percorrerà correttamente la catena dei superType e richiamerà LinkServlet, restituendo JSON a Campaign e risolvendo l’errore di sincronizzazione.