99 lines
3.3 KiB
Markdown
99 lines
3.3 KiB
Markdown
# Automations a Funnel
|
||
|
||
## Přehled
|
||
|
||
Automační systém reaguje na eventy a pohybuje kontakty mezi stavy (sloupci) v segmentu. Při přechodu do nového sloupce se spouštějí akce (email, webhook, tag...).
|
||
|
||
```
|
||
FunnelEvent
|
||
│
|
||
▼
|
||
RulesEngine.evaluate()
|
||
│
|
||
├─ Projde FunnelRule záznamy pro aktivní segmenty kontaktu
|
||
├─ Vyhodnotí podmínky (when_event, conditions)
|
||
└─ Pokud pravidlo platí → FunnelState přesune kontakt do target_column
|
||
│
|
||
▼
|
||
RunFunnelActionsJob
|
||
│
|
||
▼
|
||
FunnelAction → ActionRunner → Driver
|
||
```
|
||
|
||
## Klíčové třídy
|
||
|
||
| Třída | Popis |
|
||
|-------|-------|
|
||
| `RulesEngine` | Vyhodnocuje pravidla pro daný event a kontakt |
|
||
| `FunnelAssigner` | Přiřazuje kontakt do segmentu (vytváří FunnelState) |
|
||
| `ActionRunner` | Spouští akce pro daný FunnelState |
|
||
| `DriverFactory` | Vrací správný driver podle typu akce |
|
||
|
||
## Modely
|
||
|
||
### FunnelRule
|
||
Pravidlo triggeru a přechodu.
|
||
|
||
| Pole | Popis |
|
||
|------|-------|
|
||
| `segment_id` | Ke kterému segmentu patří |
|
||
| `when_event` | Event který pravidlo triggeruje (např. `cart_upsert`) |
|
||
| `conditions` | JSON podmínky (payload hodnoty, tagy...) |
|
||
| `target_column_id` | Cílový sloupec po splnění pravidla |
|
||
| `apply_once` | Aplikovat jen jednou na kontakt |
|
||
| `priority` | Pořadí vyhodnocení |
|
||
|
||
### FunnelAction
|
||
Akce spouštěná při přechodu do sloupce.
|
||
|
||
| Pole | Popis |
|
||
|------|-------|
|
||
| `segment_id` | Příslušný segment |
|
||
| `column_id` | Sloupec který spouští akci |
|
||
| `trigger` | `on_enter` / `on_exit` / `scheduled` |
|
||
| `type` | Typ akce (viz níže) |
|
||
| `config` | JSON konfigurace akce |
|
||
| `throttle` | Omezení frekvence spuštění |
|
||
|
||
### FunnelState
|
||
Aktuální pozice kontaktu v segmentu.
|
||
|
||
| Pole | Popis |
|
||
|------|-------|
|
||
| `contact_id` | Kontakt |
|
||
| `segment_id` | Segment |
|
||
| `column_id` | Aktuální sloupec |
|
||
|
||
## Typy akcí (Drivers)
|
||
|
||
| Typ | Driver | Popis |
|
||
|-----|--------|-------|
|
||
| `send_mail` | `SendMailDriver` | Odeslání emailu |
|
||
| `set_tag` | `SetTagDriver` | Přidání tagu kontaktu |
|
||
| `set_flag` | `SetFlagDriver` | Nastavení příznaku |
|
||
| `move_to_column` | `MoveToColumnDriver` | Přesun do jiného sloupce |
|
||
| `webhook` | `WebhookDriver` | HTTP webhook |
|
||
| `slack` | `SlackDriver` | Slack notifikace |
|
||
| `notify` | `NotifyDriver` | Interní notifikace |
|
||
| `internal_note` | `InternalNoteDriver` | Poznámka ke kontaktu |
|
||
| `smartemailing_sync` | `SmartEmailingAddToListDriver` | Přidání do SmartEmailing listu |
|
||
| `smartemailing_add_tag` | `SmartEmailingAddTagDriver` | Tag v SmartEmailing |
|
||
| `smartemailing_unsubscribe` | `SmartEmailingUnsubscribeDriver` | Odhlášení v SmartEmailing |
|
||
|
||
## Placeholders v akcích
|
||
|
||
`PlaceholderReplacer` nahrazuje `{{contact.email}}`, `{{contact.name}}` apod. v textech akcí.
|
||
|
||
## Replay
|
||
|
||
Command `FunnelReplaySegment` / job `ReplaySegmentAutomationsJob` přehraje eventy pro všechny kontakty v segmentu – užitečné při změně pravidel.
|
||
|
||
## Inaktivita
|
||
|
||
Command `FunnelEvaluateInactivity` / job `FunnelInactivityJob` spouští pravidla pro kontakty které dlouho nevykazovaly aktivitu.
|
||
|
||
## Naplánované akce
|
||
|
||
`FunnelScheduledAction` – akce naplánované do budoucnosti (např. "pošli email za 3 dny"). Zpracovává `RunScheduledFunnelActionJob`.
|