AEM:エンコードされたパーソナライゼーション区切り文字が原因のAdobe Campaign Classicでの配信エラー
この記事では、AEMで作成されたメールテンプレートに、アップグレード後に誤ってエンコードされたパーソナライゼーション出力ブロックが含まれている場合に、Adobe Campaign Classicで配信エラーが発生する問題について説明します。 特にカスタムリッチテキストエディターコンポーネントを使用する場合は、問題を特定および解決するための手順が提供されます。
説明 description
環境
- Adobe Experience Manager(AEM) 6.5 LTS (Service Pack 2以降)
- Adobe Campaign Classic リリース 8.9.3
症状
パーソナライゼーション出力ブロック(<%= recipient.firstName %>など)を含むAEMで作成したメールテンプレートをAdobe Campaign Classicに同期する場合、アップグレード後にカスタムリッチテキストエディター(RTE)コンポーネントを使用してテンプレートを作成または編集した場合、配信の準備が失敗します。 パーソナライゼーションオープナーの等号の署名はHTMLでエンコードされ(=)、書き出されたコンテンツに<%= recipient.firstName %>が含まれます。 Adobe Campaignでは、出力ブロックを認識するために<%の後にリテラルの等号が必要です。エンコードされたエンティティが認識されないため、コンパイルが失敗します。 Campaignのエラーメッセージには、次のものが含まれます。
- JST-310054警告:スクリプト 'content htmlContent’をコンパイルできませんでした
- SCR-160032 JavaScript: スクリプト 'content htmlContent’のコンパイル中にエラーが発生しました
- JST-310007 スクリプトをコンパイルできません(content htmlContent)
この問題は、新しく同期されたテンプレートと、更新または再同期された既存のテンプレートに影響します。 アップグレード前に同期され、再同期されていないテンプレートは影響を受けません。 この問題は、カスタム RTE コンポーネントを使用して作成または編集されたテンプレートに固有です。Adobeの公式の修正プログラムによってパッチが適用された標準コンポーネントは影響を受けません。
原因
AEM 6.5 LTS (サービスパック 2以降)のリグレッションにより、リッチテキストエディターでのXSS/シリアル化処理が厳しくなり、パーソナライゼーション区切り文字(<%=)のイコール署名がカスタムコンポーネントでHTML エンコードされるようになりました。 Adobeの公式修正プログラムは、標準のパーソナライゼーションコンポーネントにのみパッチを適用します。カスタムコンポーネントには、ターゲット設定の更新が必要です。
解決策 resolution
問題を解決するには、次の手順に従います。
- AEM インスタンスで、パーソナライゼーションブロックを含むメールテンプレートのオーサリングにカスタムリッチテキストエディター(RTE)コンポーネントを使用するかどうかを確認します。
- 書き出されたコンテンツに、影響を受けるテンプレートの
.campaign.content.json出力に<%=ではなく<%=が含まれていることを確認します。 - 標準のパーソナライゼーションコンポーネントのAdobeの公式な修正プログラムがインストールされているかどうか、およびどのコンポーネントをカバーしているかを確認します。 カスタムコンポーネントがカバーされていない場合は、次の手順に進みます。
- カスタム RTE コンポーネントの設定を更新して、
<%= %>区切り文字を保持し、等号のHTML エンコーディングを防ぎます。 正式な修正と同じ技術的アプローチを使用しますが、カスタムコンポーネントに適用します。 - 更新されたコンポーネントをステージング環境にデプロイします。
- パーソナライゼーションブロックを使用してテストメールテンプレートを作成し、それをAdobe Campaignに同期して、配信を試みます。
- パーソナライゼーションが正しくレンダリングされ、Campaignでコンパイルエラーが発生しないことを確認します。
- 検証が完了したら、内部リリースプロセスに従って、本番環境に修正をデプロイします。
- HTML以外の構文やテンプレートスタイルの構文を出力する可能性がある環境内の他のカスタム RTE コンポーネントも確認してください。