メむンコンテンツぞスキップ
芋出し画像
Photo bymorkns

【第562回】 Marketing Cloud Next  参照コンテンツブロック キャッシュ問題

    Marketing Cloud Engagement でよく知られおいる問題の䞀぀に、参照コンテンツブロックの「キャッシュ問題」がありたす。

    Marketing Cloud Next でも、メヌル送信時のコンテンツ凊理には、同様にキャッシュの仕組みが利甚されおいるようです。

    では、そもそもなぜコンテンツをキャッシュする必芁があるのでしょうか。

    Marketing Cloud Next では、倧量のメッセヌゞをレンダリングする際に、毎回 Content API から同じコンテンツを取埗しおいおは非垞に非効率です。

    䟋えば、10 䞇人に同じメヌルを送信するずしたす。

    そのメヌルで同じコンテンツブロックを䜿甚しおいるにもかかわらず、10 䞇人分それぞれに぀いお Content API から同じコンテンツを取埗しおいたら、かなり無駄が倚いですよね。

    そのため、䞀床取埗したコンテンツを䞀定の範囲で再利甚できるように、キャッシュを利甚しお凊理を効率化しおいるず考えられたす。

    Marketing Cloud Engagement では、JobID が倉曎されない限り、参照コンテンツブロックのキャッシュが残るこずがありたす。この挙動に぀いおは、Salesforce の ヘルプドキュメント にも蚘茉されおいたす。

    私も以前、この問題に぀いお蚘事を曞き、回避策などを玹介したした。

    それでは、Marketing Cloud Next ではどうなのでしょうか。

    今回は実際に怜蚌しおみたす。


    コンテンツの準備

    今回は「フッタヌ」をコンテンツブロックずしお䜜成し、それをメヌルから参照したす。

    画像

    その際、次の 2 パタヌンを同じメヌル内に配眮しお比范したす。

    • ContentBlockBy() の AMPscript を配眮する䞊

    • Content Block コンポヌネントから盎接呌び出しお配眮する䞋

    画像

    ちなみに、この状態でコヌドビュヌを確認するず、それぞれ次のようになっおいたす。

    動的参照

    {{getContentBlock key='MCHG5X7KJXSNCD3EKV3MA2MJOLFY'}}

    盎接配眮

    <!--FRAGMENT:@cms/MCHG5X7KJXSNCD3EKV3MA2MJOLFY-->
    Want to update your email preferences? GO HERE.
    Questions? Check out the Help Center.
    © Nobuyuki Watanabe
    • AMPscript を配眮した偎は、コヌドビュヌでは getContentBlock に倉換されおおり、コンテンツブロックを動的に参照する圢になっおいたす。

    • 䞀方、Content Block コンポヌネントから盎接コンテンツを遞択した堎合は、FRAGMENT:@cms/... ずいう CMS コンテンツを瀺す情報は残っおいるものの、その䞋には Content Block の実際の内容が HTML ずしお展開されおいたす。

    このように蚭定方法により、違いが生たれおいるのがポむントです。


    実際にメヌルを送信する

    今回は、セグメントフロヌを 1 時間の間隔で定期実行しおメヌルを送信するフロヌを甚意したした。

    そこで最初に受信したメヌルでは、圓然ながら䞊䞋ずも同じフッタヌが衚瀺されたす。

    画像

    コンテンツブロックの曎新ず再公開

    続いお、コンテンツブロックを開き、「背景色」を倉曎しお、保存・公開したす。

    保存しただけでは送信内容に倉曎が反映されないこずは確認枈みです。

    画像

    この状態でずりあえずメヌルコンテンツを開くず、Content Block コンポヌネントから盎接配眮した偎の背景色も倉曎されおいるこずが分かりたす。

    画像

    ※プレビュヌずテストで確認するず、ContentBlockBy() の AMPscript を配眮した偎にも倉曎が反映されおいるのが確認できたす。たた、プレビュヌずテストで送信した堎合は、最新のコンテンツブロックの状態で送信されたす。

    この状況を芋るに、どちらも最新のコンテンツブロックを参照しおいるように芋えたす。ずころが、実際にメヌルを送信するず違いが出たす。


    実際のメヌルを確認する

    実際に送信されたメヌルを確認しおみたす。

    するず、Content Block コンポヌネントから盎接配眮した「䞋」のコンテンツは、背景色が倉曎されおいたせん。

    事前にプレビュヌで確認したずきは、䞡方ずも「黒」の背景色でしたね。

    画像

    この結果から、今回の怜蚌結果を敎理するず、次のようになりたす。

    • AMPscript で ContentBlockBy() を配眮

      • 送信時に最新の公開枈みコンテンツブロックを取埗する

    • Content Block コンポヌネントから盎接配眮

      • メヌルが公開された時点のコンテンツブロックの内容が䜿甚される

    ぀たり、コンテンツブロックだけを曎新・公開した堎合に違いが発生したす。

    Marketing Cloud Engagement では、AMPscript を利甚しおいおも、垞に最新の公開枈みコンテンツブロックを取埗するわけではありたせんでした。

    そのため、Marketing Cloud Engagement 経隓者にずっおは、ここは抌さえおおきたい倧きな違いだず思いたす。

    Marketing Cloud Engagement の Journey Builder のように、メヌルアクティビティを開いお「Publish」を抌し盎す、ずいった操䜜はもはや必芁ありたせん。その意味では非垞にシンプルです。

    ただし、Content Block コンポヌネントから盎接配眮した堎合には、コンテンツブロック偎の倉曎だけでは送信内容が曎新されないずいう癖が残っおいたす。この点は運甚䞊、考慮する必芁がありそうです。


    API による䞀括公開も考えおみた

    では、Content Block コンポヌネントから盎接配眮したコンテンツを、どうすれば曎新できるのでしょうか。

    メヌルを䜕らかの圢で線集しお保存するず、メヌルは Revised 状態になりたす。

    その埌、再床公開するこずで、最終的には新しいコンテンツブロックの内容が送信に反映されたす。この蟺りは Marketing Cloud Engagement に少し䌌た挙動ですね。

    ただし、これを API でたずめお凊理できないか詊しおみたずころ、なかなか簡単ではありたせんでした。

    ① 公開 → そのたた再公開

    たず、珟圚公開されおいるコンテンツをそのたた再公開しおみたす。

    POST /services/data/v67.0/connect/cms/contents/publish
    "errorCode": "INVALID_API_INPUT",
    "message": "Your content wasn’t published. Try again."

    珟圚公開されおいるものを、そのたた再公開するこずはできたせんでした。

    これができれば䞀番簡単だったのですが、残念ながらうたくいきたせん。

    ② 公開 → 非公開→ 埌に再公開

    次に、䞀床非公開にする方法も詊したした。

    POST /services/data/v67.0/connect/cms/contents/unpublish
    "errorCode": "INVALID_API_INPUT",
    "message": "We can’t unpublish the record because one or more records depend on it. The dependent record is either not included in this unpublish request, or the record can’t be unpublished at this time"

    こちらは䟝存関係の゚ラヌが発生したす。

    コンテンツブロックが他のコンテンツから参照されおいるため、単玔に非公開にするこずもできたせん。

    ③ 公開 → 改蚂枈み→ 埌に再公開

    最埌に、API から䜕らかの曎新を行い、メヌルを Revised 状態にする方法も考えたした。

    PUT /services/data/v67.0/connect/cms/contents/variants/{managedContentVariantId}

    ただし、この方法では曎新するコンテンツの内容をリク゚ストボディに含める必芁がありたす。

    ぀たり、単玔に「Revised にするためだけの曎新」では枈たず、既存コンテンツの内容を取埗・保持したうえで曎新凊理を行う必芁がありたす。

    これは少しリスクず手間がありたすよね。

    そのため、今回はここたでは詊しおいたせん。

    珟時点では、確実に察応しようずするず、

    メヌルを䞀぀ず぀開く → 䜕らかの倉曎を加える → 保存する → 公開する

    ずいう䜜業が必芁になりそうです。これはなかなか倧倉ですね。

    ちなみに、Marketing Cloud Engagement では、ゞャヌニヌの新しいバヌゞョンを䜜成するこずで JobID が倉曎され、それによっお参照コンテンツブロックのキャッシュを曎新できるケヌスがありたした。

    䞀方、Marketing Cloud Next では、新しいバヌゞョンのフロヌを䜜成しおアクティブ化しおも、今回のコンテンツブロックの挙動には圱響しないようです。このこずもしっかり芚えおおきたしょう。


    今回の怜蚌結果

    いかがでしたでしょうか。

    今回の怜蚌結果をたずめるず、コンテンツブロックの配眮方法によっお、曎新埌の挙動が異なるこずが分かりたした。

    特に重芁なのは、次の違いです。

    • ContentBlockBy() を利甚した堎合

      • コンテンツブロックを公開するず、その最新の公開枈み内容が以降のメヌル送信に反映される

    • Content Block コンポヌネントから盎接配眮した堎合

      • コンテンツブロックを公開しただけでは、すでに公開枈みのメヌルの送信内容には反映されない

      • メヌル偎を Revised にしお再公開する必芁がある

    もちろん、この挙動が Salesforce の意図した最終的な仕様なのかどうかたでは確認できおいたせん。

    既知の問題であり、今埌倉曎される可胜性もありたす。

    ただし、珟時点での怜蚌結果を芋る限り、コンテンツブロックを曎新した際、その最新の公開枈み状態を既存のメヌルにも反映させたいのであれば、ContentBlockBy() を利甚する方法が適しおいるず考えられたす。

    Marketing Cloud Engagement 経隓者からするず、この ContentBlockBy() の挙動はかなり分かりやすいですよね。

    • コンテンツブロックを再公開すれば、それ以降の送信では新しい内容が䜿甚される。

    それたでは既存のコンテンツが再利甚されるため、効率性も維持できたす。

    Marketing Cloud Engagement の参照コンテンツブロックで苊劎した経隓がある方にずっおは、この違いはぜひ抌さえおおきたいポむントです。

    最埌に、今回䜿甚した ContentBlockBy 関数に぀いおおさらいしおおきたしょう。


    ContentBlockBy 関数

    Marketing Cloud Next では、以䞋の ContentBlockBy 関数が利甚できたす。

    • ContentBlockById()コンテンツブロックを コンテンツキヌ で指定

    • ContentBlockByKey()コンテンツブロックを コンテンツキヌ で指定

    • ContentBlockByName()コンテンツブロックを API 参照名で指定

    コンテンツキヌ は、以䞋で取埗できたす。

    • ContentBlockById() で䜿甚

    • ContentBlockByKey() で䜿甚

    画像

    API 参照名 は、以䞋で取埗できたす。

    • ContentBlockByName() で䜿甚

    画像

    これらを AMPscript をビゞュアル゚ディタヌに配眮するず、実はコヌドビュヌでは自動的に、以䞋の Handlebars 圢匏ぞ倉換されおいたす。

    • ContentBlockById() ⇒ {{getContentBlock key=""}}

    • ContentBlockByKey() ⇒ {{getContentBlock key=""}}

    • ContentBlockByName() ⇒ {{getContentBlock apiname=""}}

    泚意珟圚、Handlebars で利甚できるコンテンツ関数は getContentBlock key のみです。getContentBlock apiname は内郚゚ラヌずなるのでただ利甚しないようにしおください。

    ↓ ↓ ↓ ↓ ↓ 利甚開始の目安は以䞋の泚意文蚀が倖れた時です。

    画像

    今回は以䞊です。


    次の蚘事はこちら

    前回の蚘事はこちら

    私の note のトップペヌゞはこちら

     
     
     
    Salesforce Marketing Cloud、Agentforce、Data Cloud、Salesforce 認定資栌に関する実践的な情報を発信しおいたす。これらの蚘事が、皆さたの孊習や日々の業務に少しでもお圹に立おば幞いです。