Tovább a tartalomhoz

Egyedi automatizálás-cél (mérföldkő)

Saját cél (benchmark) regisztrálása PHP-ból, amellyel az automatizálás a saját eseményedre léphet tovább.

A cél (más néven mérföldkő, benchmark) olyan különleges automatizálás-lépés, amely akkor teljesül, ha egy feltétel igazzá válik. Tipikus példák:

  • új rendelés teljesült,
  • lista hozzárendelve,
  • címke hozzárendelve.

Ha egy cél teljesül, a FluentCRM a kapcsolattartót előreugrathatja az adott lépésre, kihagyhatja a köztes műveleteket, vagy a beállításaid szerint folytathatja. Egyedi céllal a saját bővítményed eseményeit is bekötheted.

Típus Kampó neve Mire való
Filter fluentcrm_funnel_blocks Felveszi az egyedi cél blokkját a szerkesztőbe.
Filter fluentcrm_funnel_block_fields Megadja a cél beállítómezőit.
Action fluentcrm_funnel_benchmark_start_{benchmark_name} Lefuttatja a logikádat, amikor a cél teljesül. A {benchmark_name} helyére a saját azonosítód kerül.

A példában a cél azonosítója custom_benchmark, a futásidejű kampó tehát fluentcrm_funnel_benchmark_start_custom_benchmark.

Hozz létre egy PHP-osztályt (például Custom\Goals\CustomBenchmark), amely:

  • regisztrálja a cél blokkját,
  • megadja a beállítómezőket,
  • kezeli az eseményt, amikor a cél teljesül.
<?php
namespace Custom\Goals;
use FluentCrm\App\Services\Funnel\BaseBenchMark;
use FluentCrm\App\Services\Funnel\FunnelHelper;
use FluentCrm\App\Services\Funnel\FunnelProcessor;
use FluentCrm\Framework\Support\Arr;
class CustomBenchmark
{
protected $triggerName;
protected $actionArgNum;
protected $priority;
public function __construct()
{
$this->triggerName = 'custom_benchmark';
$this->actionArgNum = 3;
$this->priority = 20;
// 1) A cél blokkjának felvétele a szerkesztőbe
add_filter(
'fluentcrm_funnel_blocks',
[$this, 'addBenchmark'],
$this->priority,
1
);
// 2) A cél beállítómezői
add_filter(
'fluentcrm_funnel_block_fields',
[$this, 'pushBlockFields'],
$this->priority,
2
);
// 3) A cél kezelése, amikor elindul
add_action(
'fluentcrm_funnel_benchmark_start_' . $this->triggerName,
[$this, 'handle'],
$this->priority,
2
);
}
/**
* A cél blokkjának regisztrálása.
*/
public function addBenchmark($benchmarks)
{
$benchmark = $this->getBlock();
if ($benchmark) {
$benchmark['type'] = 'benchmark';
$benchmarks[$this->triggerName] = $benchmark;
}
return $benchmarks;
}
/**
* A beállítómezők hozzárendelése a célhoz.
*/
public function pushBlockFields($fields, $funnel)
{
$fields[$this->triggerName] = $this->getBlockFields($funnel);
return $fields;
}
/**
* Példa a cél típusát megadó mezőre.
*/
public function benchmarkTypeField()
{
return [
'label' => 'Cél típusa',
'type' => 'radio',
'options' => [
[
'id' => 'optional',
'title' => '[Választható pont] Ez egy nem kötelező indítási pont'
],
[
'id' => 'required',
'title' => '[Alapvető pont] Ennek a lépésnek teljesülnie kell a további műveletek előtt'
],
],
'inline_help' => 'Ha a [Választható pont] lehetőséget választod, nem kötelező indítópontként működik; egyébként az automatizálás megvárja, amíg ez teljesül.',
];
}
/**
* A blokk alapadatai és alapértelmezett beállításai.
*/
public function getBlock()
{
return [
'title' => 'Egyedi cél',
'description' => 'Akkor fut, amikor egy adott rendelés teljesül a rendszeredben',
'icon' => 'fc-icon-edd',
'settings' => $this->getDefaultSettings(),
];
}
/**
* A cél alapértelmezett beállításai.
*/
public function getDefaultSettings()
{
return [
'product_ids' => [],
'product_categories' => [],
'purchase_type' => 'all',
'type' => 'required',
];
}
/**
* A cél beállítópaneljének mezői.
*/
public function getBlockFields($funnel)
{
return [
'title' => 'Sikeres új rendelés az EDD-ben',
'sub_title' => 'A cél akkor fut, amikor egy új rendelés teljesül az EDD-ben',
'fields' => [
'product_ids' => [
'type' => 'multi-select',
'label' => 'Célzott termékek',
'help' => 'Válaszd ki, mely termékek teljesítik ezt a célt.',
'options' => [
['id' => 123, 'title' => 'Első minta termék'],
['id' => 124, 'title' => 'Második minta termék'],
],
'inline_help' => 'Hagyd üresen, ha bármelyik termék megvásárlása számítson.',
],
// Itt további mezőket is felvehetsz (kategóriák, vásárlás típusa, cél típusa stb.)
],
];
}
/**
* A fő kezelő, amely a cél elindulásakor fut.
*
* @param object $benchmark A cél lépésének aktuális beállításai.
* @param array $originalArgs Az eseménynek átadott argumentumok.
*/
public function handle($benchmark, $originalArgs)
{
// Ide jön a saját logikád arra az esetre, amikor a cél teljesül.
error_log(print_r([$benchmark, $originalArgs], true));
}
}

A pushBlockFields() metódus adja vissza a beállítópanel szerkezetét az automatizálás-szerkesztőhöz, a handle() pedig akkor hívódik meg, amikor a cél teljesül, így te valósíthatod meg a saját célkezelő logikádat. A „Célzott termékek” mező a getBlockFields() leírásból készül; további mezőtípusokat az Űrlapmezők kódszerkezete fejezetben találsz.

Az osztályt akkor példányosítsd, amikor a FluentCRM Pro már betöltődött; szokásos hely a plugins_loaded kampó:

add_action('plugins_loaded', function () {
if (defined('FLUENTCAMPAIGN_DIR_FILE')) {
new \Custom\Goals\CustomBenchmark();
}
});

Ezután:

  1. Az „Egyedi cél” blokk megjelenik az automatizálás-szerkesztő céllistájában.
  2. A blokk beállításaiban megadhatod a célzott termékeket és a többi opciót.
  3. Amikor az egyedi esemény bekövetkezik és a cél teljesül, a FluentCRM a fluentcrm_funnel_benchmark_start_custom_benchmark kampón át meghívja a handle() metódusodat, így a saját célfeltételeid alapján léptetheted tovább a kapcsolattartókat az automatizálásban.

Készült:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások