Obsługa zdarzeń

System pozwala na określenie akcji jaka ma być wykonana przy określonych zdarzeniach systemu.

Definicja obsługi zdarzeń składa się listy zdarzeń, gdzie kluczem jest nazwa zdarzenia, a wartością jest obiekt składający się z dodatkowej konfiguracji - config oraz listy funkcji do wykonania podczas wywołania zdarzenia - listeners.

Przykład:

{
  "events": {
    "entity.changed": {
      "config": {},
      "listeners": ["..."]
    },
    "campaign.saved": {
      "config": {},
      "listeners": ["..."]
    }
  }
}

Defincja funkcji składa się z pola type oznaczającą nazwę funkcji oraz dodatkowej konfiguracji - config.

Przykład:

{
  "events": {
    "entity.changed": {
      "config": {},
      "listeners": [
        {
          "type": "findEntityInCampaign",
          "config" : {
            "...": "..."
          }
        }
      ]
  }
}

Możliwa jest również definicja składająca się tylko z nazwy, jeśli w określonym przypadku nie jest wymagana konfiguracja(np. gdy poprzednia funkcja ustawi odpowiednie parametry):

Przykład:

{
  "events": {
    "entity.changed": {
      "config": {},
      "listeners": [
        "reloadCampaigns"
      ]
    }
  }
}

Funkcje są uruchamiana zgodnie z kolejnością z jaką zostały zdefiniowane - z góry na dół. Funkcje mogą zapisywać parametry do wykorzystania w następnej funkcji. Konfiguracje funkcji są wstępnie

Dostępne zdarzenia

Zmiana encji systemowej - entity.changed

Zdarzenie wyłowywane w momencie zapisu określonej encji systemowej - szablonu oraz zgodę web-push, personalizacji, treść statyczna oraz grupy testowej.

Zdarzenie posiada następujące właściwości:

Parametr Opis Uwagi
type typ zapisanej encji personalizationTemplate, productFeed, testGroup, staticContent, notificationsTemplate, notificationsPromptTemplate
entity obiekt zapisanej encji  

Pomyślne zintegrowanie systemu - integration.completed

Zdarzenie wyłowywane w momencie gdy użytkownik pomyślne zakończy proces integracji.

Zdarzenie posiada następujące właściwości:

Parametr Opis Uwagi
system obiekt zintegrowanego systemu  
systemAccount obiekt zintegrowanego konta w systemie  

Pomyślne usunięcie zintegrowanego systemu - integration.deleted

Zdarzenie wyłowywane w momencie gdy użytkownik pomyślne usunie integrację z konta

Zdarzenie posiada następujące właściwości:

Parametr Opis Uwagi
system obiekt zintegrowanego systemu  
systemAccount obiekt zintegrowanego konta w systemie  

Uruchamianie kampanii - campaign.starting

Zdarzenie wywoływane podczas uruchamiania kampanii.

Zdarzenie posiada następujące właściwości:

Parametr Opis Uwagi
account obiekt konta systemu  
campaign obiekt kampanii  

Uruchamianie bloczka kampanii - campaign.node.starting

Podobne jak campaign.starting tylko wywołane dla każdego bloczka w kampanii

Parametr Opis Uwagi
block obiekt uruchamianego bloczka  
campaign obiekt kampanii  
session obiekt konta systemu  

Uruchomiona kampania - campaign.started

Zdarzenie wywoływane przed zakończeniem procesu uruchamiana kampanii.

Zdarzenie posiada następujące właściwości:

Parametr Opis Uwagi
account obiekt konta systemu  
campaign obiekt kampanii  

Uruchamianie bloczka kampanii - campaign.node.started

Podobne jak campaign.started tylko wywołane dla każdego bloczka w kampanii

Parametr Opis Uwagi
block obiekt uruchamianego bloczka  
campaign obiekt kampanii  
session obiekt konta systemu  

Dostępne funkcję obsługi zdarzeń

Wyszukiwanie encji w kampanii - findEntityInCampaign

Funkcja pozwala na wyszukanie kampanii w których użyta jest dana encja.

Konfiguracja:

Parametr Opis Wymagane Uwagi
campaigns Pozwala na ograniczenie kampanii do wyszukania NIE  
entityId Lista gdzie kluczem jest identyfikator pola ustawień bloczka, a wartością jest właściwość encji powiązana z polem TAK identyfikatory grup testowych - test_group_id

Parametry ograniczenia wyszukiwania kampanii - campaigns

Parametr Opis Wymagane Uwagi
functionality Funkcjunalność do wyszukania w kampanii NIE  
status Status kampanii NIE active - aktywne, inactive - wstrzymane

Przykład z użyciem zdarzenia entity.changed:

{
  "events": {
    "entity.changed": {
      "config": {},
      "listeners": [
        {
          "type": "findEntityInCampaign",
          "config": {
            "campaigns": {
              "functionality": [
                "email",
                "database",
                "mobile"
              ],
              "status": "active"
            },
            "entityId": {
              "@anyOf": {
                "items": [
                  {
                    "if": "event.getType() = 'testGroup'",
                    "content": {
                      "test_group_id": "{{event.getEntity().getId()}}"
                    }
                  },
                  {
                    "if": "event.getType() = 'personalizationTemplate'",
                    "content": {
                      "personalization_template_id": "{{event.getEntity().getId()}}",
                      "data_source_cart": "{{event.getEntity().getId()}}",
                      "data_source_recommendation": "{{event.getEntity().getId()}}"
                    }
                  }
                ],
              "options": {
                "merge": true
              }
            }
            }
          }
        }
      ]
    }
  }
}

Funkcja zapisuje wyszukanie identyfikatory w parametrze campaigns w właściwości id.

Ponowne uruchomienie kampanii - reloadCampaigns

Funkcja pozwala na przeładowanie kampanii w koncie.

Konfiguracja:

Parametr Opis Wymagane Uwagi
campaigns Pozwala na ograniczenie kampanii do wyszukania TAK  

Parametry ograniczenia wyszukiwania kampanii - campaigns

Parametr Opis Wymagane Uwagi
id Id kampanii NIE  
status Status kampanii NIE active - aktywne, inactive - wstrzymane
type Typ kampanii NIE  

Przykład:

{
  "events": {
    "entity.changed": {
      "config": {},
      "listeners": [
        {
          "type": "reloadCampaigns",
          "config": {
            "campaigns": {
              "id": "{{params['campaigns']['id']}}"
            }
          }
        }
      ]
    }
  }
}

Jeśli poprzednia funkcja zapisała parametr campaigns (np. findEntityInCampaign), funkcję reloadCampaigns można zapisać bez konfiguracji

Przykład:

{
  "events": {
  "entity.changed": {
    "config": {},
    "listeners": [
      {
        "type": "findEntityInCampaign",
        "config": {
          "campaigns": {
            "functionality": [
              "email",
              "database",
              "mobile"
            ],
            "status": "active"
          },
          "entityId": {
            "@anyOf": {
              "items": [
                {
                  "if": "event.getType() = 'testGroup'",
                  "content": {
                    "test_group_id": "{{event.getEntity().getId()}}"
                  }
                },
              ],
              "options": {
                "merge": true
              }
            }
          }
        }
      },
      "reloadCampaigns"
    ]
  }
}

Wywołanie API - api-call

Funkcja służy do wywołania zapytania do API

Konfiguracja:

Parametr Opis Wymagane Uwagi
client Klient API Guzzle TAK  
request Konfiguracja żądania TAK  

Konfiguracja żądania:

Parametr Opis Wymagane Uwagi
method Metoda HTTP TAK GET, POST itp.
url Url do zasobu TAK  
options Opcję żądania TAK Opcję zgodne z Guzzle.

Przykład:

{
  "events": {
    "campaign.starting": {
      "config": {},
      "listeners": [
        {
          "type": "api-call",
          "config": {
            "client": "test_api",
            "request": {
              "method": "PUT",
              "url": "hubs/{{event.getAccount().id}}/campaigns/{{event.getCampaign().getId()}}/test",
              "options": {
                "json": {
                  "test": 1
                }
              }
            }
          }
        }
      ]
    }
  }
}