アクティビティタイプからの連絡先およびインタラクションデータへのアクセス

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

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

処理中のコンテキストContactと、インタラクションの結果としてアクティビティが呼び出された場合はInteractionにアクセスできます。

大事な

Interactionプロパティは、インタラクションの結果としてアクティビティが呼び出されている場合にのみ設定されます。コンタクトファセットが更新された結果としてアクティビティが呼び出された場合、Interactionプロパティはnullになります。使用する前にnullを確認してください。

次の例は、アクティビティのコンテキストで連絡先、現在のインタラクション(利用可能な場合)、ファセット、およびイベントにアクセスする方法を示しています。

using System;
using System.Linq;
using Sitecore.Xdb.MarketingAutomation.Model.Processing;
using Sitecore.Xdb.MarketingAutomation.Model.Results;
using Sitecore.Xdb.MarketingAutomation.Model.Rules;
using Sitecore.XConnect.Collection.Model;

namespace Documentation.Examples
{
    public class MidweekSalesReminder : IActivity
    {
        public IActivityServices Services { get; set; }

        public ActivityResult Invoke(IContactProcessingContext context)
        {
            if (context.Interaction != null)
            {
                // Get event of specific type from CURRENT interaction
                var purchaseEvent = context.Interaction.Events
                    .OrderByDescending(e => e.Timestamp)
                    .FirstOrDefault(evt => evt.DefinitionId == Guid.Parse("9FF6AB6D-AA45-4DDA-BFB3-674170BE2448"));

                                    // Get web facet
                                    var webFacet = context.Interaction.WebVisit();
            }

            // Get contact facet
            var personalFacet = context.Contact.Personal();

            return new SuccessStay();
        }
    }
}

返されるデータの量を制限する

使用可能なインタラクション、インタラクションファセット、およびコンタクトファセットの数は、コンタクトローダによって制御されます。コンタクト ローダーは、xConnectインストール フォルダー、\App_data\jobs\continuous\AutomationEngine\App_Data\Config\sitecore\MarketingAutomationフォルダー、sc.MarketingAutomation.ContactLoader.xmlファイルで構成されます。

デフォルトでは、過去30日間のインタラクションが返されます。

<MarketingAutomation.Loading.FixedHistoryConfigurator>
    <Type>Sitecore.Xdb.MarketingAutomation.Loading.FixedHistoryConfigurator, Sitecore.Xdb.MarketingAutomation</Type>
    <As>Sitecore.Xdb.MarketingAutomation.Core.Loading.IContactExpandOptionsConfigurator, Sitecore.Xdb.MarketingAutomation.Core</As>
    <LifeTime>Singleton</LifeTime>
    <Options>
    <MaximumAge>30.00:00:00</MaximumAge>
    </Options>
</MarketingAutomation.Loading.FixedHistoryConfigurator>

使用可能なコンタクトファセットとインタラクションファセットを指定するには、関連するファセットキーをIncludeFacetNamesセクションに追加する必要があります。

<!-- Contact facets -->
<MarketingAutomation.Loading.ContactFacetsConfigurator>
    <Type>Sitecore.Xdb.MarketingAutomation.Loading.ContactFacetsConfigurator, Sitecore.Xdb.MarketingAutomation</Type>
    <As>Sitecore.Xdb.MarketingAutomation.Core.Loading.IContactExpandOptionsConfigurator, Sitecore.Xdb.MarketingAutomation.Core</As>
    <LifeTime>Singleton</LifeTime>
    <Options>
    <IncludeFacetNames>
        <Facet1>MyIncludeFacet</Facet1>
        <Facet2>MyIncludeFacet2</Facet2>
    </IncludeFacetNames>
    <ExcludeFacetNames>
        <Facet1>MyExcludeFacet</Facet1>
        <Facet2>MyExcludeFacet2</Facet2>
    </ExcludeFacetNames>
    </Options>
</MarketingAutomation.Loading.ContactFacetsConfigurator>

<!-- Interaction facets -->
 <MarketingAutomation.Loading.InteractionFacetsConfigurator>
    <Type>Sitecore.Xdb.MarketingAutomation.Loading.InteractionFacetsConfigurator, Sitecore.Xdb.MarketingAutomation</Type>
    <As>Sitecore.Xdb.MarketingAutomation.Core.Loading.IContactExpandOptionsConfigurator, Sitecore.Xdb.MarketingAutomation.Core</As>
    <LifeTime>Singleton</LifeTime>
    <Options>
    <IncludeFacetNames>
        <Facet1>MyIncludeFacet</Facet1>
        <Facet2>MyIncludeFacet2</Facet2>
    </IncludeFacetNames>
    <ExcludeFacetNames>
        <Facet1>MyExcludeFacet</Facet1>
        <Facet2>MyExcludeFacet2</Facet2>
    </ExcludeFacetNames>
    </Options>
</MarketingAutomation.Loading.InteractionFacetsConfigurator>
メモ

AutomationPlanEnrollmentCacheファセットとAutomationPlanExitファセットはエンジンで必要であり、常に使用できます。

オンデマンドで追加の連絡先データをロードする

コンタクトまたはインタラクションのすべてのファセットを常にロードすることは、それらのファセットがあまり使用されない単一のアクティビティタイプでのみ必要とされる場合、非効率的です。アクティビティ タイプの実装には、アクティビティ タイプのServices.Collectionプロパティを通じてxConnectクライアントへのアクセスが許可されます。このクライアントを使用すると、エンジン全体の構成を変更せずに追加データをロードできます。

using System;
using System.Linq;
using Sitecore.Xdb.MarketingAutomation.Model.Processing;
using Sitecore.Xdb.MarketingAutomation.Model.Results;
using Sitecore.Xdb.MarketingAutomation.Model.Rules;
using Sitecore.XConnect.Collection.Model;

namespace Documentation.Examples
{
    public class CustomFacetEvaluator : IActivity
    {
        public IActivityServices Services { get; set; }

        public ActivityResult Invoke(IContactProcessingContext context)
                    {
                            var contact = context.Contact;

                            // check to see if the "custom1" facet was loaded already
                            if (!contact.ExpandOptions.FacetKeys.Contains("custom1"))
                            {
                                    var expandOptions = new ContactExpandOptions("custom1");
                                    contact = Services.Collection.GetContactAsync(contact, expandOptions).ConfigureAwait(false).GetAwaiter().GetResult();
                            }

                            var facet = contact.GetFacet<CustomFacet>("custom1");

            return new SuccessStay();
        }
    }
}
この記事を改善するための提案がある場合は、 お知らせください!