← Zpět na články
Kapitola 6: Triggery
Publikováno: 31. 3. 2026 Autor: Michal Keller triggerytriggersagregacepodmínkypokročilé

Kapitola 6: Triggery

Triggery jsou pokročilým nástrojem BillingEngine pro podmínkové vytváření nových datových záznamů — od skalárních podmínek po agregační logiku nad historickými záznamy. Naučte se modelovat objemové bonusy, příplatky za překročení limitů i věrnostní programy.


Co jsou triggery?

Triggery jsou pokročilým mechanismem BillingEngine, který automaticky vytváří nové datové záznamy při splnění definovaných podmínek. Zatímco pravidla oceňování rozhodují, jaký ceník použít pro každý záznam, triggery reagují na příchod záznamu a generují nový DR na základě šablony (action_template).

Klíčový princip: trigger nemění ohodnocení existujícího záznamu — vytvoří samostatný nový záznam, který je pak oceněn standardním rating enginem přes pravidla oceňování.

Typické použití triggerů:

Struktura triggeru

Trigger se skládá z těchto polí:

PolePovinnéPopis
nameSrozumitelný název triggeru
conditionsPodmínky na atributy datového záznamu
action_templateŠablona nového DR, který se vytvoří při spuštění
aggregate_conditionsPodmínky nad kumulativními hodnotami
is_activeBoolean, výchozí true
POST /api/v1/triggers
Content-Type: application/json

{
  "name": "Příplatek za velkou SMS dávku",
  "conditions": {
    "code": "SMS",
    "quantity": { "op": "gt", "value": 500 }
  },
  "action_template": {
    "code": "SMS_PRIPLATEK",
    "quantity": 1
  },
  "is_active": true
}

action_template: šablona nového záznamu

action_template definuje, jak bude vypadat nový DR vytvořený při spuštění triggeru. Minimálně musí obsahovat code. Nový záznam automaticky zdědí partner_id, customer_id, time_from a time_to od záznamu, který trigger spustil.

Speciální hodnoty:

Nový záznam je po vytvoření ihned ohodnocen standardním ratingem — přes vámi nakonfigurovaná pravidla oceňování. Aby byl trigger funkční, musí existovat pravidlo oceňování pro kód použitý v action_template.

Skalární podmínky

Pole conditions je objekt, jehož klíče odpovídají názvům polí datového záznamu a hodnoty jsou buď skalár (rovnost) nebo objekt s operátorem:

{
  "conditions": {
    "code": "SMS",
    "quantity": { "op": "gt", "value": 500 }
  }
}

Při splnění skalárních podmínek se nový záznam vytvoří pro každý vyhovující DR.

Podporované operátory:

OperátorPopis
eqRovno (výchozí při hodnotě bez op)
neNerovno
gtVětší než
gteVětší nebo rovno
ltMenší než
lteMenší nebo rovno
likeTextový vzor (SQL LIKE)
inSeznam hodnot

Agregační podmínky

Agregační podmínky (aggregate_conditions) umožňují rozhodovat na základě kumulativních hodnot za aktuální měsíc. Pokud jsou splněny, trigger vytvoří jeden nový záznam na zákazníka (nikoliv per DR).

{
  "aggregate_conditions": [
    {
      "func": "sum",
      "field": "quantity",
      "filter": { "code": "VOICE_MIN" },
      "op": "gt",
      "value": 200,
      "group_by": "customer_id"
    }
  ]
}

Struktura agregační podmínky:

Kombinace podmínek

Trigger může mít obě sady podmínek najednou. Obě musí být splněny současně (logické AND):

{
  "name": "SMS věrnostní bonus",
  "conditions": {
    "code": "SMS"
  },
  "aggregate_conditions": [
    {
      "func": "count",
      "field": "id",
      "filter": { "code": "SMS" },
      "op": "gt",
      "value": 1000,
      "group_by": "customer_id"
    }
  ],
  "action_template": {
    "code": "SMS_LOYALTY",
    "quantity": 1
  },
  "is_active": true
}

Tento trigger se aktivuje pro zákazníka, který celkem odeslal více než 1 000 SMS A aktuální záznam je SMS. Výsledkem je JEDEN nový SMS_LOYALTY záznam na zákazníka.

Integrace s pravidly oceňování

Celý ceníkový mechanismus pro triggery funguje přes standardní pravidla oceňování:

  1. Vytvořte ceník s položkou pro kód použitý v action_template (např. SMS_PRIPLATEK)
  2. Vytvořte pravidlo oceňování odkazující na tento ceník
  3. Trigger při spuštění vytvoří DR s daným kódem — pravidlo ho automaticky ohodnotí

Příklad: trigger generuje záznamy SMS_PRIPLATEK → pravidlo s billing_category: "retail" odkazuje na ceník s položkou code: "SMS_PRIPLATEK" a cenou 2.50 CZK → zákazník dostane příplatek za každý aktivovaný trigger.

Příklady z praxe

Příklad 1: Příplatek za nadlimitní SMS

Operátor má základní tarif pro prvních 1 000 SMS za měsíc. Za každou SMS nad tímto limitem zákazník platí vyšší sazbu.

{
  "name": "Příplatek za nadlimitní SMS",
  "conditions": {
    "code": "SMS"
  },
  "aggregate_conditions": [
    {
      "func": "count",
      "field": "id",
      "filter": { "code": "SMS" },
      "op": "gte",
      "value": 1000,
      "group_by": "customer_id"
    }
  ],
  "action_template": {
    "code": "SMS_NADLIMIT",
    "quantity": 1
  },
  "is_active": true
}

Po dosažení 1 000 SMS za měsíc engine pro každou další SMS vygeneruje záznam SMS_NADLIMIT, který je oceněn vyšší sazbou.

Příklad 2: Měsíční hlasový bonus

Zákazníci, kteří v měsíci provolají více než 200 minut, obdrží jeden bonus záznam se zápornou cenou (sleva).

{
  "name": "Hlasový objem — měsíční bonus",
  "conditions": {
    "code": "VOICE_MIN"
  },
  "aggregate_conditions": [
    {
      "func": "sum",
      "field": "quantity",
      "filter": { "code": "VOICE_MIN" },
      "op": "gt",
      "value": 200,
      "group_by": "customer_id"
    }
  ],
  "action_template": {
    "code": "VOICE_BONUS",
    "quantity": 1
  },
  "is_active": true
}

Příklad 3: Věrnostní program

Zákazník, který za měsíc přesáhl 1 000 datových záznamů, obdrží věrnostní kredit.

{
  "name": "Věrnostní program — 1000+ záznamů",
  "conditions": {},
  "aggregate_conditions": [
    {
      "func": "count",
      "field": "id",
      "op": "gt",
      "value": 1000,
      "group_by": "customer_id"
    }
  ],
  "action_template": {
    "code": "LOYALTY_KREDIT",
    "quantity": 1
  },
  "is_active": true
}

Triggery vs. pravidla oceňování

AspektPravidla oceňováníTriggery
VýstupOhodnocení záznamuNový datový záznam
VyhodnoceníPer každý záznamPer záznam + historická data
PodmínkyZákazník/skupina + časAtributy DR + agregace
CenaPřímý ceníkCeník přes pravidlo pro kód action_template
PoužitíStandardní ceníkPříplatky, bonusy, věrnostní odměny

Pravidla oceňování a triggery se vzájemně doplňují — pravidla ohodnocují původní záznamy, triggery přidávají doplňkové záznamy pro speciální scénáře.

Doporučené postupy

Vždy vytvořte pravidlo pro kód action_template. Trigger generuje nový DR — bez odpovídajícího pravidla oceňování skončí nový záznam v chybovém stavu.

Pojmenovávejte kódy action_template jasně. SMS_NADLIMIT, VOICE_BONUS, LOYALTY_KREDIT jsou srozumitelná jména. Jasný kód usnadňuje konfiguraci ceníku i ladění.

Testujte na historických datech. Agregační podmínky závisí na historii zákazníka — při nasazení nového triggeru ověřte, jak se chová pro zákazníky s různými objemy.

Monitorujte záznamy s příznakěm source=trigger. Záznamy vytvořené triggery mají příznak source: "trigger". Sledujte jejich počet — neočekávaně vysoký výskyt signalizuje špatně nastavený práh.

Kombinujte s pravidly oceňování. Trigger + pravidlo = kompletní cenová logika. Standardní ceny přes pravidla, bonusy a příplatky přes triggery.

Závěr

Triggery jsou posledním dílem skládačky BillingEngine. Kombinací skalárních podmínek pro aktuální záznam a agregačních podmínek pro historická data umožňují modelovat libovolně komplexní cenové strategie — od jednoduchých příplatků po sofistikované věrnostní programy. Tímto se uzavírá přehled základních entit BillingEngine. Pro konkrétní integrační scénáře doporučujeme prostudovat dokumentaci API a testovací prostředí.

← Zpět na články Zpět na hlavní stránku