Sitecore ListManager Contact Lists vs Segment Lists

灵火發表於2024-03-19

Sitecore List Manager 主要是用於管理使用者訂閱和取消訂閱的,當使用者訂閱之後,相關的使用者資訊就會儲存在對應的 List。
而 Sitecore 的 List 型別分為兩類:Contact List 和 Segment List。
有關文件:https://sitecorehacker.com/2018/12/15/list-manager-contact-lists-vs-segment-lists/

1. Contact Lists

特點:

  1. 可以直接在 ListManager 內部新增和刪除 contact;

2. Segment Lists

特點:

  1. 無法直接在 CM 的 ListManager 內操作 contact,即增刪;
  2. 可以轉換成 Contact Lists;
  3. 新增一個 contact 到此 List,並不算真正意義的加入了一個副本,只是引用了這個 contact;
    (比如:兩個 Segment Lists 都因觸發了 segment 加入了此 contact,但是資料庫內部只會存在這一個 contact,所以在各自的 segment lists 內部看到的都是同一個 contact,這點與 contact lists 是最大的區別)
  4. 可以設定多個 Segment(可以定義一些規則,當觸發這些事件時,使用者才會加入此List,比如使用者訂閱了某個活動等等)
    image

關於 List 的程式碼操作:

關於 ListSubscribeOperation 列舉說明,詳情看官方文件:https://doc.sitecore.com/xp/en/developers/exm/102/email-experience-manager/the-email-experience-manager-client-api.html

public enum ListSubscribeOperation
{
    Subscribe,
    Unsubscribe,
    UnsubscribeFromAll,
    AddToList,
    RemoveFromList,
}
// 透過 DI 獲取 IClientApiService
IClientApiService clientApiService = ServiceLocator.ServiceProvider.GetRequiredService<IClientApiService>();

// 使用 UpdateListSubscription 方法來呼叫對應的 operation
UpdateListSubscriptionMessage message = new UpdateListSubscriptionMessage
{
	// 主要透過 ListSubscribeOperation 列舉來控制
	ListSubscribeOperation = ListSubscribeOperation.Unsubscribe
	, ContactIdentifier = contactIdentifier
	, MessageId = messageId
	, ManagerRootId = mrId
	, ListId = listId
	// 等等其他引數...
};
ClientApiService.UpdateListSubscription(message);

相關文章