新增動態內容至電子郵件訊息

提示

如果要免費試用 Dynamics 365 Customer Insights,您可以註冊 30 天試用

重要

本文章僅適用於推播式行銷

動態內容會在訊息傳送至特定個人之前完成解析。 您通常會使用動態內容將來自收件者連絡人記錄的資訊合併 (像是名字和姓氏)、放置特殊連結,以及放置來自內容設定的資訊和連結。 如果您習慣使用程式碼,也可以建立包含條件陳述式、for-each 迴圈等的自訂邏輯。 您可以在訊息本文各處使用動態內容,也能在訊息標題欄位 (主旨、寄件者地址和寄件者名稱) 中使用少數幾種動態值。

使用內容設定為電子郵件訊息設定標準和必要值存放庫

內容設定是一組標準和必要值,可供用於行銷電子郵件訊息。 每個各包含一個訂閱中心連結、轉寄給朋友連結、社群媒體連結、您的郵寄地址,以及可以利用個人化功能放入訊息中做為動態值的其他資訊。

Dynamics 365 Customer Insights - Journeys 隨附單一預設內容設定記錄,此記錄已預先設定為使用預設訂閱中心 (一併隨附,現成可用)。 如有需要,您可以自訂此記錄,您也可以建立其他記錄。 您會將每個客戶旅程設定為使用特定的內容設定記錄,這表示該旅程傳送的所有訊息都將使用相同的記錄。 不過,每個旅程可以使用不同的記錄,這表示,您可以在兩個或更多客戶旅程中使用相同的行銷電子郵件設計,各指定不同的內容設定記錄。 如果您有多個內容設定記錄,將只有其中一組會是預設值,並且會自動套用至您建立的每個新客戶旅程。

內容設定的值會在傳送時先行評估,這表示您隨時可以編輯內容設定記錄,而所有擱置和未來的電子郵件訊息都將自動使用最新的值。

您所使用的每種內容設定記錄,都一定會提供負責管理電子郵件組件和寄送之外部行銷服務所使用。 因此,每當您建立新的內容設定記錄時,都必須選擇上線來加以發佈。

Note

如果您有其他經常在電子郵件中使用和/或要在客戶旅程層級管理的值類型,則可以將這些類型當做自訂欄位新增至內容設定實體,就像您可以在 Dynamics 365 中新增的其他類型實體一樣。 不過,在目前版本中,內容設定實體的所有自訂欄位都必須是文字類型 (字串)。 其他資訊:自訂 Customer Insights - Journeys

若要檢視、編輯或建立內容設定記錄:

  1. 移至推播式行銷>行銷範本>內容設定

  2. 標準清單頁面可供您在其中檢視、排序、搜尋和篩選清單,以找出特定記錄,還可使用命令列中按鈕來新增或移除記錄。 選取並開啟一筆記錄,即可進行編輯,或選取命令列上的新增,建立新記錄。

  3. 內容設定表單隨即開啟。 如果您正在編輯的記錄已經上線,則必須先在命令列中選擇編輯,才能編輯該記錄。 如果您正在建立新記錄,則可以直接開始填入欄位。

    內容設定表單。

  4. 視需要進行下列設定:

    • 名稱:輸入客戶設定記錄的名稱。 這是您將內容設定指派給客戶旅程或電子郵件訊息預覽時顯示的名稱。
    • 負責人:顯示建立記錄的 Dynamics 365 Customer Insights - Journeys 使用者。
    • 主要地址:輸入您組織郵寄地址的主要部分。 所有行銷電子郵件訊息都必須包括來自內容設定記錄的有效主要地址。 選取 個人化按鈕。 按鈕,以便使用個人化來輸入參考現有記錄中欄位 (例如特定客戶記錄中的地址欄位) 的運算式。
    • 地址行 2:輸入補充的郵寄地址資訊 (如有需要)。 選取 個人化按鈕。 按鈕,以便使用個人化來輸入參考現有記錄中欄位 (例如特定客戶記錄中的地址欄位) 的運算式。
    • 預設:設為,可讓目前的內容設定記錄成為所有新客戶旅程的預設值。 預設值一律只能有一個;如果您變更預設值,現有的預設值將自動變更為
    • 負責業務單位的預設值:此設定僅在啟用業務單位範圍設定時可用。 將此值設為,可讓目前的內容設定記錄業務單位內所有新客戶旅程的預設值。 業務單位範圍的預設內容設定一律只能有一個;如果您變更預設值,現有的預設值將自動變更為
    • LinkedIn URLTwitter URLFacebook URLInstagram URLYouTube URL,以及 Google Plus URL:針對每一項社群媒體服務,輸入您組織的登陸頁面 URL。
    • 訂閱中心:指定設定為訂閱中心的現有行銷頁面。 所有行銷電子郵件訊息都必須包括來自內容設定記錄的有效訂閱中心連結。 選取 個人化按鈕。 按鈕,以便使用個人化來輸入參考所要使用特定頁面之完整頁面 URL 欄位的運算式。 產生的運算式看起來像這樣 (其中 GUID 會根據您使用個人化所選擇的記錄而有所不同):
      {{msdyncrm_marketingpage(3343053c-8daf-e911-a85e-000d3a3155d5).msdyncrm_full_page_url}}
    • 轉寄給朋友:指定已記錄為轉寄給朋友頁面的現有行銷頁面。 選取 個人化按鈕。 按鈕,即可從可用頁面的清單選擇。 選取 個人化按鈕 按鈕,以便使用個人化來輸入參考所要使用特定頁面之完整頁面 URL 欄位的運算式。 產生的運算式看起來像這樣 (其中 GUID 會根據您使用個人化所選擇的記錄而有所不同):
      {{msdyncrm_marketingpage(36458a9e-72af-e911-a859-000d3a3159df).msdyncrm_full_page_url}}
  5. 選取視窗右下角的儲存按鈕,以儲存設定。

  6. 如果您正在編輯的內容設定記錄已經上線,則會自動在您儲存記錄時,重新發佈該記錄。 如果您正在建立新記錄,請選取命令列中的上線將其發佈至行銷服務,如此就可以開始使用該記錄。

使用個人化放置動態欄位值

個人化會協助您建構有效的動態運算式,讓您放置來自收件者連絡人記錄的欄位值、訊息內容設定,以及其他資料庫值。 只要您在圖形化設計工具中選取文字項目,此按鈕就會在文字格式設定工具列上提供。 此按鈕另外也可針對像是主旨、寄件者地址和寄件者名稱等設定欄位提供使用。

Note

個人化對話方塊僅顯示與行銷見解服務同步的實體及關聯。 如果您需要顯示資訊,或使用一個或多個未列出之實體的關聯,請要求系統管理員將相關實體新增至 Marketing Insights 服務。 如果您是系統管理員,請參閱選擇要與 Marketing Insights 服務同步的實體以取得相關指示。

使用個人化放置動態運算式

若要使用個人化:

  1. 將游標放在要插入動態文字的欄位或文字元素中,然後選取個人化按鈕 個人化按鈕。 隨即開啟個人化對話框。

    個人化,第 1 頁。

  2. 執行下列其中一項動作:

    • 選取動態內容以放置可根據您使用訊息所在內容變更的值,然後從這裡的下拉式清單選擇下列其中一項:
      • 連絡人:放置收件者連絡人記錄中的欄位值,例如名字。 這些值會因收件者而異。
      • ContentSettings:放置內容設定中的欄位值。 這裡可以使用訂閱中心 URL、轉寄 URL 和寄件者郵寄地址等值。 這些值可能會依使用訊息所在的客戶旅程而異。
      • FormDoiSubmission:放置表單雙向確認加入的動態欄位。 此欄位不需要關聯值,如下所述。
      • 訊息:放置與訊息本身相關的值;這類值目前僅包括做為網頁開啟 URL 和雙向確認加入電子郵件中使用的各種不同動態值。
    • 選取靜態內容可放置特定記錄 (例如近期事件的名稱) 中的固定值。 無論訊息用於何處或由何人接收,這個值都是相同的。 接著進行下列設定,以找出包含所需值的實體和記錄:
      • 選取選項 (頂端下拉式方塊):選取實體 (例如事件或客戶)。 若要搜尋實體,請將游標放在此方塊中,並開始鍵入其名稱,直到顯示您要的實體為止。
      • 選擇記錄 (底部下拉式清單):依名稱選取特定記錄。 此清單會顯示所選實體中的所有記錄。 如同實體一樣,您也可以在這裡搜尋。
  3. 現在必須找出您要放置的特定欄位。 執行下列其中一項:

    • 選取相關實體,從與上一頁所選實體相關的實體中尋找欄位。 接著進行下列設定,以找出要顯示的關聯和欄位:
      • 選取關聯性:關聯性定義您要跳轉到的第二個實體,以及您到達該處所採取的路徑。 若要搜尋關聯,請將游標放在此方塊中,並開始鍵入其名稱,直到顯示您要的關聯後加以選取。 如需有關如何了解關聯在此處表示方式的詳細資訊,請參閱下一節
      • 選取欄位:選擇要顯示的欄位名稱。 如同關聯一樣,您也可以在這裡搜尋。 只有在您選擇了 N:1 關聯時,才會提供此下拉清單。
  4. 在對話方塊底部,現在會看到最終的運算式。 選取插入以放置該運算式。

    個人化,第 2 頁。

重要

使用 for-each 迴圈建立的清單不會按特定順序呈現,並且不可按任何欄位排序。

個人化呈現資料庫關聯的方式

選取個人化中的關聯性時,將會使用下列其中一個命名慣例來顯示選項:

  • FieldName (PrimaryEntity) -> SecondaryEntity
    當主要實體位於括弧中並顯示欄位名稱時,它是一個從次要實體通向單一記錄的多對一 (N:1) 關聯。 因此您通常應該使用第二個下拉式清單從次要實體選擇要與運算式一起顯示的欄位。
  • PrimaryEntity -> FieldName (SecondaryEntity)
    當次要實體位於括弧中並顯示欄位名稱時,它是一個從次要實體通向多個記錄的一對多 (1:N) 關聯。 因此您無法選擇欄位 (第二個下拉式清單已停用),必須改用此關聯做為 for/each 迴圈的一部分,以顯示每個可用相關記錄的值。
  • PrimaryEntity -> SecondaryEntity
    當這兩個實體都不在括弧中時,它是可以雙向連接多個記錄的多對多 (N:N) 關聯。 因此您無法選擇欄位 (第二個下拉清單已停用),也無法使用此關聯性進行個人化。 這是因為關係由中繼實體維護,並且只能從主要實體周遊到中繼實體。

其中:

  • PrimaryEntity 是關聯起始端的實體。 這永遠顯示在箭頭的左側。 這是您在個人化對話方塊的上一個頁面所選擇的實體。 例如,連絡人 (主要實體) 可以透過連絡人的公司名稱欄位 (欄位名稱) 關聯至客戶 (次要實體);這會顯示為:公司名稱 (連絡人) -> 客戶
  • FieldName 一律顯示在實體名稱旁邊 (位於括號中)。 這是藉以建立關聯之欄位的名稱。 具名欄位屬於括弧中的實體,並顯示箭頭另一側實體的值 (但實際上包含的是從中取值之相關記錄的識別碼)。 在某些情況下,您會發現原先那兩個實體之間有關聯,每個實體流經不同的欄位。
  • SecondaryEntity 是關聯的目的地。 這永遠顯示在箭頭的右側。 與最終運算式一起顯示的值會來自屬於次要實體的欄位。

Note

如果是 N:N 關聯,則不顯示欄位值。 這表示,如果原先那兩個實體之間有多個 N:N 關聯,您會在下拉式清單中看到多個外觀相同的關聯。 這種情況非常罕見,但若看到,就必須反覆試驗來找出要使用的正確關聯。 若要確認,您可以檢查產生之運算式,看看是否像是選擇了正確的關聯 (這裡顯示關聯的方式不一樣,可能有跡可尋),或者設定包含這兩個 N:N 關聯版本的測試訊息,並使用測試客戶旅程,將其傳遞給您自己。

以下是一些範例:

  • 公司名稱 (連絡人) -> 客戶連絡人實體使用此關聯在連絡人記錄的公司名稱欄位中顯示來自客戶實體的資訊。 換句話說,它會連結至連絡人任職的公司 (客戶)。
  • 管理合作夥伴 (連絡人) -> 客戶連絡人實體使用此關聯在連絡人記錄的管理合作夥伴欄位中顯示來自客戶實體的資訊。 換句話說,它會連結至正在為連絡人管理合作夥伴的公司 (客戶)。
  • 連絡人 -> 主要連絡人 (客戶)客戶實體使用此關聯在客戶記錄的主要連絡人欄位中顯示來自連絡人實體的資訊。 換句話說,它會尋找所有目前已指派為主要連絡人之連絡人的客戶。
  • 連絡人 -> 連絡人 (事件註冊)事件註冊實體使用此關聯在事件註冊記錄的連絡人欄位中顯示來自連絡人實體的資訊。 換句話說,它會尋找所有由 (或針對) 目前連絡人所進行的事件註冊。

個人化所建立的運算式

個人化會建立使用像下列這樣格式的運算式:

  • {{EntityName.FieldName}}
  • {{EntityName(RecordID).FieldName}}
  • {{EntityName.RelationshipName.FieldName}}
  • {{EntityName(RecordID).RelationshipName.FieldName}}

請注意,結果運算式中用於關聯名稱的標記法,與個人化對話方塊中表示這些名稱的方式不相符。 以下是一些所產生之運算式的範例:

  • {{contact.firstname}}
    放置收件者的名字。
  • {{msdyncrm_marketingpage(3343053c-8daf-e911-a85e-000d3a3155d5).msdyncrm_full_page_url}}
    將 GUID 所指定行銷頁面記錄中的 msdyncrm_full_page_url 欄位值放在括弧中。 您通常可能會在內容設定記錄中使用此表單的運算式來指定訂閱中心或 [轉寄給朋友] 頁面。
  • {{msdyncrm_contentsettings.msdyncrm_subscriptioncenter}}
    放置專為客戶旅程 (將傳送訊息) 設定之內容設定中所識別訂閱中心頁面的 URL。
  • {{msdyncrm_contentsettings.msdyncrm_forwardtoafriend}}
    放置專為客戶旅程 (將傳送訊息) 設定之內容設定中所識別轉寄頁面的 URL。
  • {{Message.ViewAsWebpageURL}}
    放置在網頁瀏覽器中開啟目前訊息的 URL。
  • {{msevtmgt_event(8a519395-856c-4e22-b560-650ce6d6a79d).msevtmgt_webinarurl}}
    放置指定的事件 ID (以括號括住) 所識別之事件的網路研討會 URL。
  • {{msdyn_survey(39128da2-c968-4627-9595-f030b6571be4).msdyn_name}}
    放置指定的問卷 ID (以括號括住) 所識別之問卷的名稱。
  • {{contact.contact_account_parentcustomerid.name}}
    這個運算式會尋找連絡人服務公司的客戶名稱。
  • {{contact.contact_account_msa_managingpartnerid.name}}
    這個運算式會尋找連絡人服務公司的管理合作夥伴名稱。

有了可運作的運算式後,您就可以隨處複製並貼上此運算式。 您不需要每次都使用個人化。

重要

欄位運算式中最多可以含有兩個躍點 (句號)。 不要試著透過將更多躍點新增至個人化所產生的運算式,來建立更複雜的運算式。

小費

如果您需要個人化所支援的資料類型,通常最好使用個人化功能來放置程式碼,而非嘗試從頭開始輸入程式碼。 如此可確保實體、關聯及欄位名稱與資料庫中所使用的那些名稱相符,有助於避免拼字錯誤。

附註

Dynamics 365 Customer Insights - Journeys 的電子郵件發送功能不支援導出欄位。

在收件者、寄件者名稱、寄件者地址和回覆等欄位中的動態值

行銷電子郵件表單中的摘要索引標籤上,您可以從寄件者和收件者區段為您的訊息設定不同的非內容相關設定。 這個設定包括用來建立收件者、寄件者名稱、寄件者地址和回覆等值 (訊息將會採用) 的數值和運算式。

電子郵件訊息的寄件者和收件者設定。

一個充分利用這項功能的典型方法是,將寄件者名稱寄件者地址設定為連絡人記錄的負責人。 然後,只要將每個連絡人記錄的負責人指派給管理該連絡人的銷售人員,收件者就會收到行銷電子郵件,顯示他們可能認識的某個人的寄件者地址,這樣可以大幅提高開啟率。 方法如下:

  1. 如果您的 Customer Insights - Journeys 執行個體尚未設定將使用者 (systemuser) 實體與 Marketing Insights 服務同步,請洽詢您的系統管理員進行此設定。 如果您是管理員,請參閱選擇要與 Marketing Insights 服務同步的實體以取得相關指示。
  2. 開啟您的電子郵件訊息,並移至摘要索引標籤。
  3. 刪除寄件者名稱欄位的內容,然後選取此欄位旁邊的個人化按鈕 個人化按鈕
  4. 在個人化對話方塊的第一頁上,選取關聯性,並將其設定為連絡人。 然後選取下一步
  5. 在個人化對話方塊的第二頁上,選取相關實體,然後:
    • 將頂端下拉式清單 (關聯) 設定為擁有使用者 (連絡人) -> 使用者
    • 將底部下拉式清單 (欄位) 設定為全名
  6. 選取確定以放置運算式,這應該是:{{contact.contact_systemuser_owninguser.fullname}}
  7. 刪除寄件者地址欄位的內容,然後選取此欄位旁邊的個人化按鈕 個人化按鈕
  8. 在個人化對話方塊的第一頁上,選取關聯性,並將其設定為連絡人。 然後選取下一步
  9. 在個人化對話方塊的第二頁上,選取相關實體,然後:
    • 將頂端下拉式清單 (關聯) 設定為擁有使用者 (連絡人) -> 使用者
    • 將底部下拉式清單 (欄位) 設定為主要電子郵件
  10. 選取確定以放置運算式,這應該是:{{contact.contact_systemuser_owninguser.internalemailaddress}}

您可以使用類似的技術,將擁有使用者的名稱或電子郵件地址放置在訊息內容中的任何位置。 您可以使用個人化這樣做,或複製/貼上 handlebar 運算式,甚至手動輸入 handlebar 運算式。

您可以使用動態運算式來定義影像元素的來源 URL。 若要這麼做,請選取影像元素、移至其屬性面板,然後選取來源欄位旁邊的個人化按鈕 個人化按鈕,以放置動態文字做為 URL 的一部分。 您通常會將此部分與靜態文字混合,以組合成完整的 URL。 例如,您可以包含收件者的連絡人識別碼或公司名稱,以選取與個別收件者相關的影像。

您同樣可以使用個人化,協助建構用於設定影像連結目的地的動態運算式。

附註

Dynamics 365 Customer Insights - Journeys 檔案庫會為您上傳的每個影像產生一個基於 GUID 的唯一檔案路徑,這表示檔案庫中的影像具有不包含原始檔案名稱的不可預知 URL。 因此,若要使用此處描述的技術,您必須在您自己的網站或任何協力廠商代管服務上代管您的影像,其中 URL 是可預測的,並且可以包含一個您可以輕鬆地從 Dynamics 365 欄位提取的值。

尋找記錄識別碼

非關聯式欄位運算式 (其使用表單 {{EntityName(RecordID).FieldName}}) 需要使用記錄 ID,以便識別該值的必要來源特定記錄。 個人化通常可協助您尋找這些識別碼,但有時可能需要在設計訊息的動態功能時手動尋找識別碼。 若要尋找任何記錄的 ID:

  1. 開啟要參照的記錄
  2. 查看出現在您的瀏覽器網址列中的 URL,這時顯示的 URL 應如下所示:
    https://<MyOrg>.crm.dynamics.com/main.aspx?appid=c8cba597-4754-e811-a859-000d3a1be1a3&pagetype=entityrecord&etn=msevtmgt_event&id=5acc43d5-356e-e811-a960-000d3a1cae35
  3. 尋找 URL 的組成部分,其開頭為 &id=,後面跟著您目前記錄的 ID 號碼。 複製該號碼 (僅數值),並將其用於您的運算式。

進階動態內容

您可以在電子郵件設計中新增進階邏輯處理,讓內容迅速回應收件者、人口統計資料和關聯內容。 這類自訂要求您具備基本的指令碼和程式設計知識。

正如先前範例所示,動態內容會以雙大括號 ({{}}) 括住。 這個內容同時包括由您使用個人化功能新增的標準欄位值,以及本節所介紹的更進階程式設計結構。

小費

如果您希望在訊息中顯示雙大括號,而非使用大括號來代表程式碼區塊的開始或結束,則請在第一個大括號前面加上 (逸出) 反斜線,例如,\{{\}}。 最後呈現的訊息不會顯示這些斜線,但會顯示雙大括號。

條件陳述式和比較式

條件式 (if-then-else) 陳述式會根據一或多個條件運算式解析為 True 或 False 的結果來呈現內容。 您可以將其置於文字元素中,或將自訂程式碼元素置於其他設計元素之間,以新增建立這些陳述式所需的程式碼。 其他資訊:如何在設計師中輸入進階動態內容

條件陳述式採用下列格式:

{{#if (<operator> <value1> <value2>)}}
   Content displayed when the expression is true
{{else if (<operator> <value1> <value2>)}}
   Content displayed when the first expression is false and the second one is true
.
.
.
{{else}}
   Content displayed when all expressions are false
{{/if}}

其中:

  • 條件式區塊的開頭一律為 {{#if … }}
  • 條件運算式必須以括弧括住。
  • 條件運算式開頭的 <operator> 必須是下表所列出的其中一個值。 這個運算子會決定如何比較第一個值和第二個值。
  • <value1><value2> 是條件運算式要進行比較的兩個值,而這兩個值分別可為動態值或常數值。 如果 <value1><value2> 是常數字串值 (而非數字或運算式),則其必須以單引號 (') 括住;如果是實數,則使用句號 (.) 做為小數點導標。
  • 如果 <value1> 是布林值欄位 (在 Dynamics 365 中也稱為兩選項欄位),則不包含 <operator><value2> 或括弧。 布林值欄位的值永遠是 true 或 false,因此只需直接用來建立條件即可,例如:{{#if contact.is_vip}}
  • {{else}}{{else if … }} 子句是選用項目。
  • 條件式區塊的結尾一律為 {{/if}}

下表列出可供您用於條件運算式中的所有運算子。 其他運算子目前無法使用,而且您也無法在條件運算式中使用複雜布林運算式 (例如,搭配 AND 或 OR 運算子)。

Dynamics 365 Customer Insights - Journeys 語法 (區分大小寫) 運算子
eq 等於
ne 不等於
lt 小於
gt 大於
lte 小於或等於
gte 大於或等於

例如,建立因應每個訊息收件者之不同國家/地區訊息問候語中使用的語言時,不能使用這個條件陳述式:

<p>{{#if (eq contact.address1_country 'Denmark')}}
    Hej
{{else if (eq contact.address1_country 'US')}}
    Hi
{{/if}} {{contact.firstname}}!</p>

以下是基於布林值 (兩選項) 欄位 (名為 is_vip) 的條件陳述式範例;請注意,布林值永遠傳回 true 或 false 的值,因此沒有運算子、比較值或括弧包含在條件中:

<!-- {{#if contact.is_vip}} -->
    <h3>Be sure to show your VIP card to receive a 20% discount!</h3>
<!-- {{/if}} -->

小費

您可以使用下列方式來測試空白欄位的值:

{{#if (eq contact.lastname '')}}

其中 '' 為兩個單引號,而不是雙引號。 這個設定會尋找空的欄位,而不是尋找 Null 欄位。

小費

雖然您不能在條件運算式中使用複雜布林運算式,但是您可以依照下列方式來執行類似的功能:

不受支援:

{{#if A and B}}<DisplayedContent>{{/if}

等於 (支援):

{{#if A}}{{#if B}}<DisplayedContent>{{/if}}{{/if}}

 
不受支援:

{{#if A or B}}<DisplayedContent>{{/if}

等於 (支援):

{{#if A}}<DisplayedContent>{{/if}} {{#if B}}<DisplayedContent>{{/if}}

小費

要測試資料庫中儲存為選項組的值時,請使用選項組的索引值,而非顯示值。 例如,您可能有一個名為 contact.customertypecode 的欄位,其中保存可識別客戶類型的整數。 每個客戶類型代碼也都有顯示名稱,例如 0 = "銅級"、1 = "銀級",以及 2 = "金級"。 在這種情況下,您必須將運算式設定為使用索引 (整數),而非相應的顯示值。 因此,如果您正在尋找金級客戶,就應該使用:

{{#if (eq contact.customertypecode 2)}}

小費

測試大型數值 (例如 "1,932,333") 時,請在比較陳述式中省略數千位分隔符號 (,),即使您可能經常在 UI 中看到這些分隔符號。 為了測試此值,運算式因此看起來會像這樣:

{{#if (eq contact.customernumber 1932333)}}

For-each 迴圈

For-each 迴圈可讓您逐步處理與目前特定資料相關的一系列記錄。例如,提供與指定連絡人相關的全部最近交易。 您可以將其置於文字元素中,或將自訂程式碼元素置於其他設計元素之間,以新增建立這些陳述式所需的程式碼。 其他資訊:如何在設計師中輸入進階動態內容

For-each 迴圈會採用下列格式:

{{#each Entity.RelationshipName }}
   ...
   {{this.RelatedField1}}
   ...
   {{this.RelatedField2}}
   ...
{{/each}}

其中:

  • 迴圈區塊的開頭一律為 {{#each … }}
  • Entity.RelationshipName 會識別迴圈反覆查看的一組相關記錄。
  • 迴圈會從第一個可用的記錄開始處理,然後重複處理每個可用的相關記錄,直到所有相關記錄皆已列入清單為止。 請注意,相關記錄將會依據任意和無法預測的順序傳回。
  • {{this.RelatedField<n>}} 會識別相關記錄中的欄位名稱。 在此運算式中的「this」部分將會參照至目前迴圈反覆中正在處理的相關記錄,因此後面一定會跟上該相關實體的有效欄位名稱。 您可以在每個迴圈中包括任意數目的欄位。
  • 迴圈區塊的結尾一律為 {{/each}}

例如,您的資料庫可能包括連絡人的已訂購產品名單。 您可以使用下列程式碼,在電子郵件訊息中列出這些產品:

<p>You have purchased:</p>
<ul>
<!-- {{#each contact.contact_product_productid}} -->
<li>{{this.name}}</li>
<!-- {{/each}} -->
</ul>

在此範例中,Dynamics 365 Customer Insights - Journeys 系統已自訂成包括稱為 產品自訂實體,此實體在 productid 欄位上已設定成 連絡人產品 實體間的 1:N 關係。 如果是可用於電子郵件訊息的產品實體,也必須與 Marketing Insights 服務同步處理 (像往常一樣)。

重要

只有前 1,000 個相關項目會添加到關係中,以便電子郵件呈現。 電子郵件範本中不支援使用包含 1,000 個以上項目的關係,這可能會導致意外結果。

另請注意,不支援第二級關係。 因此,不允許使用以下語法:

{{#each Entity.RelationshipOnEntity}} 
    ... 
    {{#each this.RelationshipOnRelatedEntity}}
        ...
    {{/each}}
    ... 
{{/each}}

如何在設計師中輸入進階動態內容

您在設計師中輸入進階動態程式碼時務必謹慎,因為有許多 (有時是非預期的) 方式會造成錯誤,因而中斷程式碼。 以下介紹如何輸入和測試程式碼的幾個秘訣:

  • 使用自訂程式碼元素,將程式碼片段放置在設計師索引標籤的設計元素之間。這會比使用 HTML 索引標籤將程式碼直接放入 HTML 中,要明瞭且可靠得多。不過,您也可以在文字元素使用動態程式碼,此時可能就需要在 HTML 索引標籤上清理該程式碼,如本清單稍後所提及的。 (在整頁編輯器中工作時,選取自訂程式碼元素以編輯其內容)。
    自訂程式碼元素。
  • 設計師索引標籤的文字元素中輸入程式碼時,任何您新增的額外空格及換行字元都會在程式碼中建立 &nbsp;<p> 標籤,這可能會中斷程式碼。 事後一定要前往 HTML 索引標籤查看所有這些額外標籤,務必加以移除。
  • 在文字元素中輸入程式碼時,您所有的動態內容程式碼必須包含在一組開始與結束標籤內 (例如 <p></p>),或者包含在 HTML 註解中 (與顯示文字完全區隔的程式碼)。 不要將程式碼放置在註解或有效 HTML 標籤對 (或自訂程式碼元素) 外面,否則會造成編輯器混淆 (尤其是在您切換 HTML設計索引標籤時)。 您必須使用 HTML 索引標籤,檢查和更正文字元素中的 HTML。
  • 不要將歸位字元放在屬於相同運算式的程式碼元素之間 (例如在 for-each 迴圈中),除非將每一行括在其本身的一組 HTML 標籤中 (如本清單後面提供的 for-each 迴圈範例所示)。
  • 個人化功能通常有助於建構可從資料庫擷取值的運算式,因為此功能可協助您尋找資料庫資料表、欄位和關聯名稱。 在設計師索引標籤的文字元素中工作時,以及在輸入值是某些支援它的欄位 (例如電子郵件主旨) 時,會提供此工具。 在 HTML 索引標籤上或自訂程式碼元素中工作時無法使用個人化,因此您可以先在任何文字元素中使用個人化,再將產生的運算式剪下,貼到自訂程式碼元素或 HTML 中。
  • 建立迴圈或放置查詢值時使用的關聯名稱必須符合 Marketing Insights 服務中使用的關聯名稱。 此關聯名稱不一定與用於進行 Dynamics 365 自訂的關聯名稱相同。 若要尋找正確的關聯名稱,請使用個人化功能。

例如,您可以在設計師的 HTML 索引標籤中 (文字元素內部或外部) 輸入下列程式碼,即可設定電子郵件訊息的一行問候語:

<p>{{#if (eq contact.address1_country 'Denmark')}}Hej{{else if (eq contact.address1_country 'US')}}Hi{{/if}}{{contact.firstname}}!</p>

下列範例 (先前亦有顯示) 會示範如何使用註解,括住完全超出顯示內容之外的程式碼 (同樣發生在 HTML 索引標籤上):

<p>You have purchased:</p>
<ul>
<!-- {{#each contact.contact_product_productid}} -->
<li>{{this.name}}</li>
<!-- {{/each}} -->
</ul>