Submit action do uaktualnienia danych kontaktu
Żeby używać Marketing Automation w Sitecore 9 potrzebujemy kontaktu w xDB. Idealnie, jeśli ten kontakt jest zidentyfikowany. Na szczęście Sitecore opublikował artykuł jak zaimplementować submit action w Forms, który mapuje pola z formularza na imię, nazwisko i adres email kontaktu w xDB. Nie musisz pisać tego kodu od zera, znajdziesz go w moim projekcie github, możesz też ściągnąć Sitecore package zawierający ten submit action, gotowy do użycia w aplikacji.
Akcja jest łatwa do użycia. W Forms designer, dodajesz ją do przycisku submit i mapujesz wybrane pola na Facet kontaktu:
Implementacja aktywności lub warunku
Niewiele mam tutaj do dodania, Sitecore opublikował bardzo dobre tutoriale jak stworzyć nową aktywność, lub dodać nowy warunek w Marketing Automation. Jeśli potrzebujesz przykładu gotowego do użycia, sprawdź mój projekt github, lub ściągnij paczkę. Po instalacji, pojawi się nowy warunek w rules engine, który możesz użyć w Marketing Automation. Nie zapomnij o zdeployowaniu go do marketing automation engine.
Deploy kodu do Marketing Automation Engine
Po zaimplementowaniu własnej aktywności albo warunku, powinieneś zdeployować plik .dll zawierający twój kod na serwer Sitecore’a, ale także do marketing automation engine, wraz z dodatkowym konfiguracyjnym plikiem .xml. Marketing Automation Engine to usługa Windows, instalowana wraz z xConnect. Domyślnie jest umieszczony w {xConnectRootFolder}\App_data\jobs\continuous\AutomationEngine
. Na przykład: C:\inetpub\wwwroot\sc90.xconnect\App_data\jobs\continuous\AutomationEngine
.
W solucji opartej na Helix, zwykle masz projekt(y) web ze swoim kodem, który publikujesz przez Visual Studio Publish. Aby automatycznie zdeployować ten kod do Marketing Automation, możesz wyedytować plik .csproj tego projektu i dodać w <Project>
:
1 2 3 4 5 6 7 8 9 |
<Target Name="CopyToAutomationEngine" AfterTargets="CopyAllFilesToSingleFolderForPackage"> <Copy SourceFiles="$(TargetPath)" DestinationFolder="$(AutomationEnginePath)" SkipUnchangedFiles="true" OverwriteReadOnlyFiles="true" Retries="3" RetryDelayMilliseconds="300" /> <ItemGroup> <ConfigItems Include="$(SolutionDir)\AutomationEngine\**\*" /> </ItemGroup> <Copy SourceFiles="@(ConfigItems)" DestinationFiles="@(ConfigItems->'$(AutomationEnginePath)\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="true" OverwriteReadOnlyFiles="true" Retries="3" RetryDelayMilliseconds="300" /> </Target> |
Ten target msbuild opublikuje plik dll projektu i pliki konfiguracyjne z wybranego katalogu, do katalogu automation engine, po opublikowaniu web’owego projektu z Visual Studio (możesz zmienić ten skrypt na <Target Name="AfterBuild">
aby zdeployować kod po zbudowaniu projektu).
Skrypt używa zmiennej @(AutomationEnginePath)
, którą zdefiniowałem w pliku publishingsettings.targets
(prawdopodobnie masz ten plik jeśli twoja solucja jest zbudowana na Sitecore Habitat). Ta zmienna wskazuje na katalog Marketing Automation Engine w xConnect:
1 2 3 4 5 6 |
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <publishUrl>http://sc90.local/</publishUrl> <AutomationEnginePath>C:\inetpub\wwwroot\sc90.xconnect\App_data\jobs\continuous\AutomationEngine\</AutomationEnginePath> </PropertyGroup> </Project> |
Odwołanie do pliku publishsettings.targets
znajduje się w projekcie webowym w Properties\PublishProfiles\{Profile-Name}.pubxml
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="..\..\..\..\..\..\publishsettings.targets" /> <PropertyGroup> <WebPublishMethod>FileSystem</WebPublishMethod> <LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration> <LastUsedPlatform>Any CPU</LastUsedPlatform> <SiteUrlToLaunchAfterPublish /> <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish> <ExcludeApp_Data>False</ExcludeApp_Data> <DeleteExistingFiles>False</DeleteExistingFiles> </PropertyGroup> </Project> |
Dodatkowo umieściłem w solucji plik .xml potrzebny w Marketing Automation Engine dla nowego warunku. Ponieważ ten plik nie jest potrzebny na serwerze Sitecore’a, nie dodałem go do projektu web. Skrypt skopiuje ten plik do katalogu Marketing Automation Engine zachowując strukturę katalogów:
Możesz sprawdzić ustawienia projektu gotowego do deploy’u do Marketing Automation Engine w solucji EmailValidatedRule w github.
Dubugowanie kodu zdeployowanego do Marketing Automation Engine
Aby debugować kod zdeployowany do Automation Engine powinieneś podłączyć się do procesu engine’a. W Visual Studio idź do Debug -> Attach to Process… i wybierz maengine.exe (jeśli nie widzisz go na liście zaznacz “Show process for all users”):