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并解决同步错误。