To get contact id , you need to use analytics tracker object and then connect with xconnect client.
For this, you should add the below dll reference
- Sitecore.Analytics.Core.dll
- Sitecore.Analytics.dll
- Sitecore.Analytics.Model.dll
- Sitecore.Analytics.XConnect.dll
- Sitecore.XConnect.Client.Configuration.dll
- Sitecore.XConnect.Client.dll
- Sitecore.XConnect.Collection.Model.dll
- Sitecore.XConnect.Core.dll
- Sitecore.XConnect.dll
- Sitecore.XConnect.Segmentation.Predicates.dll
Here is the code reference to get contact id.
if (Sitecore.Analytics.Tracker.Current.Contact.IsNew)
{
var manager = Sitecore.Configuration.Factory.CreateObject("tracking/contactManager", true) as Sitecore.Analytics.Tracking.ContactManager;
if (manager != null)
{
Sitecore.Analytics.Tracker.Current.Contact.ContactSaveMode = ContactSaveMode.AlwaysSave;
manager.SaveContactToCollectionDb(Sitecore.Analytics.Tracker.Current.Contact);
var trackerIdentifier = new IdentifiedContactReference(Sitecore.Analytics.XConnect.DataAccess.Constants.IdentifierSource, Sitecore.Analytics.Tracker.Current.Contact.ContactId.ToString("N"));
using (XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
{
var contact = client.Get<Contact>(trackerIdentifier, new Sitecore.XConnect.ContactExpandOptions());
var contactid = contact.Id; // to get Contact id for new contact
}
}
}
else
{
var anyIdentifier = Sitecore.Analytics.Tracker.Current.Contact.Identifiers.FirstOrDefault();
using (XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
{
var contact = client.Get<Contact>(new IdentifiedContactReference(anyIdentifier.Source, anyIdentifier.Identifier), new Sitecore.XConnect.ContactExpandOptions(PersonalInformation.DefaultFacetKey));
var contactid = contact.Id; // to get Contact id for existing contact
}
}