---
title: "ContactManager参照"
slug: "contactmanager-reference"
abstract: "ContactManagerクラスの概要。"
---
# ContactManager参照

ContactManagerクラスは内部的にSitecoreが基礎XConnectDataAdapterProviderにリクエストを渡すために使用され、xConnectで面を設定するために新しい匿名連絡先を保存するなど、限られた数のシナリオで必要とされます。

以下の例は、Sitecoreコンテキストでコンタクトマネージャーのインスタンスを取得する方法を示しています:

var manager = Sitecore.Configuration.Factory.CreateObject("tracking/contactManager", true) as Sitecore.Analytics.Tracking.ContactManager;

if (manager != null)
{
 // Use contact manager
}

> !注進行中のセッションがない連絡先を修正するには、[xConnect Client API](https://doc.sitecore.com/xp/ja/developers/103/sitecore-experience-platform/xconnect-client-api-overview.html "xConnect Client API overview")を使用します。 ContactRepositoryは使わないでください。進行中のセッションで連絡先を更新するには、ファセットの更新に関するこのトピックを参照してください。

## AddIdentifier(Guid id, ContactIdentifier identifier)

この方法は、バックグラウンドでxConnectを呼び出して現在の連絡先に識別子を追加します。現在の連絡先が *既知* で、追加の既知または匿名の識別子を追加したい場合はこの方法を使います。 AddIdentifier() に電話をかけると、まだ保存されていない連絡先はxConnectに保存されます。

> !注ここでのidは [トラッカー識別子](https://doc.sitecore.com/xp/ja/developers/103/sitecore-experience-platform/identifying-contacts.html "Identifying contacts")であり、xConnectによって生成される連絡先IDではありません。

以下の例でAddIdentifier()の使い方を示します:

var manager = Sitecore.Configuration.Factory.CreateObject("tracking/contactManager", true) as Sitecore.Analytics.Tracking.ContactManager;

if (manager != null)
{
 var currentContact = Sitecore.Analytics.Tracker.Current.Contact;

 manager.AddIdentifier(currentContact.ContactId, new ContactIdentifier(identifier.Source, identifier.Identifier, ContactIdentificationLevel.Known));
}

以下の点に注意してください:

-   送信しようとした識別子がすでに使用中の場合、xConnectは例外を投げます。
-   識別子が追加された後、 Sitecore.Analytics.Tracker.Current.Contact.Identifiers コレクションは現在再読み込み *されていません* 。

## CreateContact(NotNull ID ID)

このメソッドはトラッカーがセッション内で新しいトラッカーコンタクト(Sitecore.Analytics.Tracking.Contact)を作成するために使います。この時点で、xConnectにはコンタクトが存在せず、IsNewプロパティはtrueに設定されています。

> !注この文脈でのidは [トラッカー識別子](https://doc.sitecore.com/xp/ja/developers/103/sitecore-experience-platform/identifying-contacts.html "Identifying contacts") となり、最終的な接触IDではなく、xConnectによって生成されます。

## LoadContact(NotNull 文字列ソース,NotNull 文字列識別子)

この方法は、xDBから識別子/ソースの組み合わせが一致する連絡先を読み込み、Sitecore.Analytics.Tracker.Contactとして表現します。この方法で連絡先が存在するかどうかを確認できます。連絡先を更新するには、xConnect Client APIを使用します。

## LoadContact(Guid contactId,bool exclusive=true)

この方法は、xDBからcontactIdがそのトラ [ッカー識別子](https://doc.sitecore.com/xp/ja/developers/103/sitecore-experience-platform/identifying-contacts.html "Identifying contacts") と一致し、Sitecore.Analytics.Tracker.Contactとして表現する連絡先を読み込みます。稀に排他ロックが必要な場合は、SaveAndReleaseInSharedSessionStateを使って連絡先を解放することを忘れないでください。

> !注 *このロック* は共有セッション状態のロックであり、xConnectのロックではありません。他のソースはxConnect内の連絡先を更新できます。

## SaveAndReleaseInSharedSessionState(NotNull 連絡先)

この方法はLoadContact()と組み合わせて使われます。排他ロックを要求した場合は、この方法でロックを解除してください。

## SaveContactToCollectionDb(連絡先)

この方法は、進行中のセッションを中断せずに連絡先をxConnectに保存できます。匿名連絡先を設定する前に保存する必要がある場合はこの方法を使ってください。 contact.ContactSaveModeをContactSaveMode.AlwaysSaveに設定してください。

> !注SaveContactToCollectionDb(GuidcontactId) オーバーロードは使わないでください。

## RemoveFromSession(Guid contactId)

この方法は、共有セッション状態から連絡先を除去します。以下の例のように使用してください:

manager.RemoveFromSession(Sitecore.Analytics.Tracker.Current.Contact.ContactId);
Sitecore.Analytics.Tracker.Current.Session.Contact = manager.LoadContact(Sitecore.Analytics.Tracker.Current.Contact.ContactId);

次のリクエスト時に連絡先は共有セッション状態に再読み込みされます。xConnect Client APIを使って [その連絡先の面を変更し](https://doc.sitecore.com/xp/ja/developers/103/sitecore-experience-platform/set-contact-facets-in-session.html "Set contact facets in session")た後に再読み込みしたい場合は、この方法を使います。これにより、セッションにキャッシュされるデータが可能な限り最新の状態であることが保証されます。

## SetTrackingConsent(連絡先、bool isConsentGiven)

この方法は、現在のサイトのコンタクトのトラッキングコンセントを設定します。そして、コンタクトが新規でない場合は、すぐに選択をxConnectの面ConsentInformationに保存します。

manager.SetTrackingConsent(contact, true);

もし新しい連絡先であれば、現在のセッションが終了した際にConsentInformation面と同時に保存されます。