インタラクションを追加する

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

client.AddInteraction()拡張メソッドを使用して、新規または既存のコンタクトに新しいインタラクションを追加します。インタラクションには、少なくとも1つのイベント (コア コレクション モデル イベントまたはカスタム イベント) が必要です。インタラクションには、コンストラクタパラメータとして渡す必要がある次の必須プロパティがあります。

  • インタラクションが属するコンタクト

  • インタラクションの開始者(ユーザーやブランドなど)

  • インタラクションを作成しているアプリケーションまたはサービスのユーザーエージェント(「Chrome」など)

  • インタラクションにつながったチャンネルのID(YouTube広告やアフィリエイトの紹介など)

メモ

新しいインタラクションは、インタラクションがxConnectに送信された後、コンタクトのInteractionsコレクションで利用できなくなります。新しいインタラクションを表示するには、コンタクトを再度リクエストし、展開オプションを使用してコンタクトのインタラクションを取得する必要があります。

新しい連絡先にインタラクションを追加する

次の例は、新しいコンタクトに新しいインタラクションを追加する方法を示しています。このインタラクションには1つのPageViewEventがあります。

手記

xConnectが新しいコンタクトの作成に失敗した場合、新しいインタラクションを追加する操作も失敗します。

using Sitecore.XConnect.Collection.Model;
using Sitecore.XConnect;
using System;
using Sitecore.XConnect.Client;

namespace Documentation
{
    public class AddInteraction
    {
        // Async example
        public async void ExampleAsync()
        {
            using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
            {
                try
                {
                    // New anonymous contact
                    var newContact = new Sitecore.XConnect.Contact();
                    client.AddContact(newContact);

                    Guid channelId = Guid.Parse("86c7467a-d019-460d-9fa9-85d6d5d77fc4"); // Replace with real channel ID GUID
                    string userAgent = "Sample User Agent";

                    // Interaction
                    var interaction = new Interaction(newContact, InteractionInitiator.Brand, channelId, userAgent);

                    var fakeItemID = Guid.Parse("5746c4f3-7e16-40d9-ba1d-14c70875724c"); // Replace with real item ID

                    Sitecore.XConnect.Collection.Model.PageViewEvent pageView = new PageViewEvent(DateTime.UtcNow, fakeItemID, 3, "en")
                    {
                        Duration = new TimeSpan(0, 0, 30),
                        Url = "/test/url/test/url?query=testing"
                    };

                    interaction.Events.Add(pageView);

                    client.AddInteraction(interaction);

                    await client.SubmitAsync();
                }
                catch (XdbExecutionException ex)
                {
                    // Handle exception
                }
            }
        }

        // Sync example
        public void ExampleSync()
        {
            using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
            {
                try
                {
                    // New anonymous contact
                    var newContact = new Sitecore.XConnect.Contact();
                    client.AddContact(newContact);

                    Guid channelId = Guid.Parse("86c7467a-d019-460d-9fa9-85d6d5d77fc4"); // Replace with real channel ID GUID
                    string userAgent = "Sample User Agent";

                    // Interaction
                    var interaction = new Interaction(newContact, InteractionInitiator.Brand, channelId, userAgent);

                    var fakeItemID = Guid.Parse("5746c4f3-7e16-40d9-ba1d-14c70875724c"); // Replace with real item ID

                    Sitecore.XConnect.Collection.Model.PageViewEvent pageView = new PageViewEvent(DateTime.UtcNow, fakeItemID, 3, "en")
                    {
                        Duration = new TimeSpan(0, 0, 30),
                        Url = "/test/url/test/url?query=testing"
                    };

                    interaction.Events.Add(pageView);

                    client.AddInteraction(interaction);

                    client.Submit();
                }
                catch (XdbExecutionException ex)
                {
                    // Handle exception
                }
            }
        }
    }
}

既存の連絡先にインタラクションを追加する

次の例では、インタラクションが既存のコンタクトに追加されています。

using Sitecore.XConnect;
using Sitecore.XConnect.Client;
using Sitecore.XConnect.Collection.Model;
using System;

namespace Documentation
{
    public class AddInteractionExistingContact
    {
        public async void ExampleAsync()
        {
            using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
            {
                try
                {
                    var existingContactTask = client.GetAsync<Sitecore.XConnect.Contact>(new Sitecore.XConnect.IdentifiedContactReference("twitter", "myrtlesitecore"), new ContactExecutionOptions(new Sitecore.XConnect.ContactExpandOptions()));

                    var existingContact = await existingContactTask;

                    if (existingContact != null)
                    {
                        Guid channelId = Guid.Parse("86c7467a-d019-460d-9fa9-85d6d5d77fc4"); // Replace with real channel ID GUID
                        string userAgent = "Sample User Agent";

                        // Interaction
                        var interaction = new Interaction(existingContact, InteractionInitiator.Brand, channelId, userAgent);

                        var fakeItemID = Guid.Parse("5746c4f3-7e16-40d9-ba1d-14c70875724c"); // Replace with real item ID

                        Sitecore.XConnect.Collection.Model.PageViewEvent pageView = new PageViewEvent(DateTime.UtcNow, fakeItemID, 3, "en")
                        {
                            Duration = new TimeSpan(0, 0, 30),
                            Url = "/test/url/test/url?query=testing"
                        };

                        interaction.Events.Add(pageView);

                        client.AddInteraction(interaction);

                        await client.SubmitAsync();
                    }
                }
                catch (XdbExecutionException ex)
                {
                    // Handle exception
                }
            }
        }

        // Sync example
        public void ExampleSync()
        {
            using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
            {
                try
                {
                    var existingContact = client.Get<Sitecore.XConnect.Contact>(new Sitecore.XConnect.IdentifiedContactReference("twitter", "myrtlesitecore"), new ContactExecutionOptions(new Sitecore.XConnect.ContactExpandOptions()));

                    if (existingContact != null)
                    {
                        Guid channelId = Guid.Parse("86c7467a-d019-460d-9fa9-85d6d5d77fc4"); // Replace with real channel ID GUID
                        string userAgent = "Sample User Agent";

                        // Interaction
                        var interaction = new Interaction(existingContact, InteractionInitiator.Brand, channelId, userAgent);

                        var fakeItemID = Guid.Parse("5746c4f3-7e16-40d9-ba1d-14c70875724c"); // Replace with real item ID

                        Sitecore.XConnect.Collection.Model.PageViewEvent pageView = new PageViewEvent(DateTime.UtcNow, fakeItemID, 3, "en")
                        {
                            Duration = new TimeSpan(0, 0, 30),
                            Url = "/test/url/test/url?query=testing"
                        };

                        interaction.Events.Add(pageView);

                        client.AddInteraction(interaction);

                        client.Submit();
                    }
                }
                catch (XdbExecutionException ex)
                {
                    // Handle exception
                }
            }
        }
    }
}
この記事を改善するための提案がある場合は、 お知らせください!