Campaign:在AEM中變更範本位置後,AEM範本同步化失敗
當Adobe Campaign嘗試透過.campaign.link.json端點同步AEM電子郵件範本時,即使範本似乎存在且基本同步似乎有效,操作仍可能失敗,並出現JST-310000 JSON.parse錯誤。 當自訂AEM電子郵件頁面元件使用絕對存放庫路徑而不是Sling servlet解析所預期的相對資源型別從電子郵件核心元件頁面繼承時,可能會發生此問題。
說明 description
客戶回報舊版AEM電子郵件範本可繼續運作,但基於電子郵件頁面元件的新範本在從Campaign開啟或同步時失敗。
Campaign中顯示的症狀是在編譯指令碼’nms:amcIntegration.js’時發生 JST-310000錯誤,原因為JSON.parse。
客戶正嘗試從AEM推送新的行銷活動範本頁面,這些範本是以電子郵件核心元件為基礎建立,本質上可編輯。
使用的資源型別為: /apps/aem-crm/components/email/page,而superType為: /apps/core/email/components/page/v1/page,此為Adobe建議的舊版mcm元件即將淘汰。
整體而言,AEM與Campaign之間的同步正在運作,且範本可在選取專案清單中看見,但若選取電子郵件核心元件上的新範本,則會出現錯誤。
客戶已將適當的值新增至Campaign中的AEMResourceTypeFilter選項:
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/v1/page
解決方法 resolution
根本原因
同步作業失敗,因為未針對有問題的範本叫用AEM的LinkServlet (它會處理.campaign.link.json端點並傳回Campaign預期的JSON)。 相反地,Sling的預設POST處理常式會執行並傳回HTML回應,然後Campaign無法剖析(JSON.parse錯誤)。
發生此情況是因為客戶的元件/apps/aem-crm/components/email/page使用絕對路徑宣告其sling:resourceSuperType:
sling:resourceSuperType = “/apps/core/email/components/page/v1/page”
LinkServlet會針對相對表單core/email/components/page/v1/page (不含/apps/)進行註冊。 Sling將這些專案視為不同的鍵,因此無法透過瀏覽元件階層來找到servlet。
解析度
在客戶的自訂元件定義(其AEM專案來源中的/apps/aem-crm/components/email/page/.content.xml)中,將sling:resourceSuperType從絕對路徑變更為相對形式:
< ! — 之前 — >
sling:resourceSuperType=“/apps/core/email/components/page/v1/page”
< ! — 之後 — >
sling:resourceSuperType=“core/email/components/page/v1/page”
在此變更後重新部署元件封裝。 接著Sling會正確執行superType鏈並叫用LinkServlet,將JSON傳回Campaign並解決同步錯誤。