マーケティングオートメーション運用API

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

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

マーケティングオートメーションオペレーションAPIは、マーケティングオートメーションエンジンの外部から特定の操作を実行することを可能にします。

自動化運用APIへのアクセス

サービスロケーターを使ってSitecoreコンテキストでIAutomationOperationsClientにアクセスしてください:

using Sitecore.DependencyInjection; using Microsoft.Extensions.DependencyInjection; using System; using Sitecore.Xdb.MarketingAutomation.OperationsClient; using Sitecore.Xdb.MarketingAutomation.Core.Requests; using Sitecore.Xdb.MarketingAutomation.Core.Results; using System.Collections.Generic;

namespace Documentation { public class EnrollContact { public async void Example() { try { var operationsClient = ServiceLocator.ServiceProvider.GetService(); } } } }

作戦結果

各操作はリクエストの集合を受け入れます。各操作呼び出しの結果はバッチ結果です。バッチ結果には、バッチ全体が成功したか、1つ以上のリクエストが失敗したかを示すプロパティが含まれています。また、各リクエストの個別の結果も保持しています:

BatchRequestResult Success : bool // Indicates whether the entire batch succeeded Results : IReadOnlyCollection // The results of the request

結果の種類は演算によって決まります。

各個別の操作結果には、最低でもその要求に対して実行された操作が成功したかどうかと元の要求を示すプロパティが含まれています。元の要求を提供することで、結果をクライアントからの要求と連携させることができます。

RequestResult Success : bool // Indicates whether the result is success Request : TRequest // The request the result is for

作戦優先順位

リクエストオブジェクトのPriorityプロパティは、リクエストをワークプールにログアップする操作の処理優先度を決定します。

!注RegisterLiveEvent操作はプールをバイパスする唯一の操作です。この操作では優先度は無視されます。

運用

プランに連絡を取り入れてください

提供された連絡先を直接プランに登録し、オプションでプラン内のアクティビティにも直接登録します。オペレーションクライアント上のすべての操作は非同期かつバッチリクエストであり、たとえ1つの一括りであっても可能です。

!注リクエストにアクティビティが欠けている場合、その連絡先はプランのエントリーアクティビティに入力されます。

シングルプランへの連絡先登録

以下の例は、連絡先を単一のプランに登録する方法を示しています。

using Sitecore.DependencyInjection; using Microsoft.Extensions.DependencyInjection; using System; using Sitecore.Xdb.MarketingAutomation.OperationsClient; using Sitecore.Xdb.MarketingAutomation.Core.Requests; using Sitecore.Xdb.MarketingAutomation.Core.Results;

namespace Documentation { public class EnrollContact { public async void Example() { try { var operationsClient = ServiceLocator.ServiceProvider.GetService();

var contactXconnectId = Guid.Parse("{E7B756A1-3769-46F1-AE17-7B3A198F9290}"); var planId = Guid.Parse("{19FDD3A5-DBC2-4947-BEB4-69732ADEB0D8}"); var request = new EnrollmentRequest(contactXconnectId, planId); // Contact ID, Plan ID

request.Priority = 1; // Optional request.ActivityId = Guid.Parse("{C5B87651-EE70-4684-BDD9-0B464B79476D}"); // Optional request.CustomValues.Add("test", "test"); // Optional

BatchEnrollmentRequestResult result = await operationsClient.EnrollInPlanDirectAsync(new { request }); } catch (Exception ex) {

} } } }

複数のプランに連絡先を登録すること

以下の例は、複数のプランに同時に連絡先を登録する方法を示しています。

using Sitecore.DependencyInjection; using Microsoft.Extensions.DependencyInjection; using System; using Sitecore.Xdb.MarketingAutomation.OperationsClient; using Sitecore.Xdb.MarketingAutomation.Core.Requests; using Sitecore.Xdb.MarketingAutomation.Core.Results;

namespace Documentation { public class EnrollContact { public async void Example() { try { var operationsClient = ServiceLocator.ServiceProvider.GetService();

var contactXconnectId = Guid.Parse("{E7B756A1-3769-46F1-AE17-7B3A198F9290}"); var planId = Guid.Parse("{19FDD3A5-DBC2-4947-BEB4-69732ADEB0D8}"); var request = new EnrollmentRequest(contactXconnectId, planId); // Contact ID, Plan ID

request.Priority = 1; request.ActivityId = Guid.Parse("{C5B87651-EE70-4684-BDD9-0B464B79476D}"); // Optional request.CustomValues.Add("test", "test");

var plan2Id = Guid.Parse("{8F5BCFED-606D-46BF-A5CD-6801AC07DC3F}"); var secondRequest = new EnrollmentRequest(contactXconnectId, plan2Id); // Contact ID, Plan ID

secondRequest.Priority = 9; secondRequest.ActivityId = Guid.Parse("{3DB8A71A-37D6-4BC7-9F48-980B176A2C43}"); secondRequest.CustomValues.Add("test", "test");

BatchEnrollmentRequestResult result = await operationsClient.EnrollInPlanDirectAsync(new { request, secondRequest }); } catch (Exception ex) {

} } } }

入学申請結果

以下の例は、登録申請の全体結果を取得する方法と、各個別の登録申請に関する追加情報を取得する方法を示しています。

using Sitecore.DependencyInjection; using Microsoft.Extensions.DependencyInjection; using System; using Sitecore.Xdb.MarketingAutomation.OperationsClient; using Sitecore.Xdb.MarketingAutomation.Core.Requests; using Sitecore.Xdb.MarketingAutomation.Core.Results; using System.Collections.Generic;

namespace Documentation { public class EnrollContactResult { public async void Example() { try { var operationsClient = ServiceLocator.ServiceProvider.GetService();

BatchEnrollmentRequestResult result = await operationsClient.EnrollInPlanDirectAsync(new { new EnrollmentRequest(Guid.NewGuid(), Guid.NewGuid()) });

IReadOnlyCollection batchResults = result.Results; bool batchSucceeded = result.Success;

foreach (EnrollmentRequestResult requestResult in result.Results) { bool requestSucceeded = requestResult.Success; EnrollmentRequest originalRequest = requestResult.Request; } } catch (Exception ex) { // Handle exception }

} } }

ライブイベントに登録

Operations APIは、イベントがxConnectに提出される前にマーケティングオートメーションエンジンにイベントを提出することを可能にします。この機能は、セッション終了前やイベントデータがxConnectに提出される前に、トラッカー がマーケティングオートメーションエンジンにイベントを送信するために使われます。

単一のライブイベントに登録

以下の例は、単一のライブイベントを登録する方法を示しています:

using Sitecore.DependencyInjection; using Microsoft.Extensions.DependencyInjection; using System; using Sitecore.Xdb.MarketingAutomation.OperationsClient; using Sitecore.Xdb.MarketingAutomation.Core.Requests; using Sitecore.Xdb.MarketingAutomation.Core.Results; using Sitecore.XConnect; using Sitecore.Xdb.MarketingAutomation.Core.Collections; using Sitecore.Xdb.MarketingAutomation.Core.Pool; using Sitecore.XConnect.Collection.Model;

namespace Documentation { public class LiveEvent { public async void Example() { try { var operationsClient = ServiceLocator.ServiceProvider.GetService();

// Sample contact and interaction var contact = new Contact(); Guid channelId = Guid.Parse("{E99C8E17-3C9C-4B10-AC69-6B1BAFAE0711}"); string userAgent = "Sample User Agent"; var interaction = new Interaction(new ContactReference(contact.Id.Value), InteractionInitiator.Brand, channelId, userAgent);

// Sample event interaction.Events.Add(new SearchEvent(DateTime.UtcNow) { Keywords = "sitecore" });

// Automation custom values var customValues = new CustomValuesDictionary() { { "test", "test" } };

var liveEvent = new LiveEventData(contact.Id.Value, interaction, customValues); var liveEventRequest = new LiveEventRequest(contact.Id.Value, liveEvent) { Priority = 200 };

// Live event submitted BEFORE INTERACTION IS SUBMITTED // This means that the Automation Engine can respond to an event before it is available in xConnect BatchLiveEventRequestResult result = await operationsClient.RegisterLiveEventAsync(new { liveEventRequest }); } catch (Exception ex) { // Handle exception } } } }

ライブイベントリクエストの結果

BatchLiveEventRequestResultは、影響を受ける登録リストをUpdatedEnrollments物件を通じて提供しています。

var contact = new Contact(); Guid channelId = Guid.Parse("{E99C8E17-3C9C-4B10-AC69-6B1BAFAE0711}"); string userAgent = "Sample User Agent"; var interaction = new Interaction(new ContactReference(contact.Id.Value), InteractionInitiator.Brand, channelId, userAgent); var customValues = new CustomValuesDictionary() { { "test", "tst" } };

var eventData = new EventData(contact, interaction, customValues);

var liveEventRequest = new LiveEventRequest(contact.Id.Value, eventData);

BatchLiveEventRequestResult result = await operationsClient.RegisterLiveEventAsync(new { liveEventRequest });

IReadOnlyCollection batchResults = result.Results; bool batchSucceeded = result.Success;

foreach (LiveEventRequestResult requestResult in result.Results) { bool requestSucceeded = requestResult.Success; LiveEventRequest originalRequest = requestResult.Request;

// Get list of enrollments updated by event IEnumerable enrollments = requestResult.UpdatedEnrollments;

// Get first activity enrollment var firstEnrollment = enrollments.FirstOrDefault();

// Activity enrollment properties var attemptsToEnroll = firstEnrollment.Attempts; var entryDate = firstEnrollment.EntryDate; var timeoutDate = firstEnrollment.TimeoutDate; }

計画からの連絡を排除する

Operations APIを使って、特定のプランやすべてのプランから連絡先を削除することができます。

特定のプランからの連絡を排除する

以下の例は、特定のプランから連絡先を消す方法を示しています:

using Sitecore.DependencyInjection; using Microsoft.Extensions.DependencyInjection; using System; using Sitecore.Xdb.MarketingAutomation.OperationsClient; using Sitecore.Xdb.MarketingAutomation.Core.Requests; using System.Collections.Generic;

namespace Documentation { public class SinglePlanPurge { public async void Example() { try { var operationsClient = ServiceLocator.ServiceProvider.GetService();

var contactId = Guid.Parse("{B65CB77F-0338-49C1-B6AF-1360C9560A17}"); var planId = Guid.Parse("{3F894AC4-926F-4B26-A001-BEAB955C40F8}");

var purgeRequest = new List { new PurgeFromPlanRequest(contactId, planId) };

var result = await operationsClient.PurgeFromPlanAsync(purgeRequest); } catch (Exception ex) { // Handle exception } } } }

すべての計画から連絡を取り除け

以下の例は、すべてのプランから連絡先を消す方法を示しています:

!警告現在プールにあるすべての作業項目も削除されます。

using Sitecore.DependencyInjection; using Microsoft.Extensions.DependencyInjection; using System; using Sitecore.Xdb.MarketingAutomation.OperationsClient; using Sitecore.Xdb.MarketingAutomation.Core.Requests; using System.Collections.Generic;

namespace Documentation { public class AllPlanPurge { public async void Example() { try { var operationsClient = ServiceLocator.ServiceProvider.GetService();

var contactId = Guid.Parse("{B65CB77F-0338-49C1-B6AF-1360C9560A17}"); var purgeRequest = new List { new PurgeFromAllPlansRequest(contactId) };

var result = await operationsClient.PurgeFromAllPlansAsync(purgeRequest); } catch (Exception ex) { // Handle exception } } } }

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