Egyedi automatizálás-művelet
Saját művelet regisztrálása PHP-ból, amelyet az automatizálás-szerkesztőben a beépített blokkokhoz hasonlóan lehet használni.
A műveletek az automatizálás lépései, amelyek valamit elvégeznek: például kapcsolattartó-tulajdonságot frissítenek, webhookot küldenek vagy A/B-tesztet osztanak szét. Saját műveletet is felvehetsz (például jegyzet küldése külső rendszerbe, API-hívás vagy egyedi adatok frissítése), amelyet az automatizálás-szerkesztőben ugyanúgy húzhatsz be, mint a beépítetteket.
Használt kampók
Szekció neve “Használt kampók”| Típus | Kampó neve | Mire való |
|---|---|---|
| Filter | fluentcrm_funnel_blocks |
Felveszi az egyedi blokkot a műveletek listájára. |
| Filter | fluentcrm_funnel_block_fields |
Megadja a beállítómezőket, amelyek a blokk kijelölésekor látszanak. |
| Action | fluentcrm_funnel_sequence_handle_{action_name} |
Lefuttatja a logikádat, amikor a művelet fut. Az {action_name} helyére a saját azonosítód kerül. |
A példában a művelet azonosítója custom_action_name, a futásidejű kampó tehát fluentcrm_funnel_sequence_handle_custom_action_name.
1. lépés: a művelet osztálya
Szekció neve “1. lépés: a művelet osztálya”Hozz létre egy PHP-osztályt (például Custom\Actions\CustomAction), amely:
- regisztrálja a művelet blokkját (
pushBlock), - megadja a blokk mezőit (
getBlockFields), - kezeli a végrehajtást (
handle).
<?php
namespace Custom\Actions;
class CustomAction{ protected $actionName; protected $priority; protected $funnel;
public function __construct() { $this->actionName = 'custom_action_name'; $this->priority = 99;
// 1) A blokk felvétele a szerkesztőbe add_filter( 'fluentcrm_funnel_blocks', [$this, 'pushBlock'], $this->priority, 2 );
// 2) A blokk beállítómezői add_filter( 'fluentcrm_funnel_block_fields', [$this, 'pushBlockFields'], $this->priority, 2 );
// 3) A művelet kezelése futáskor add_action( 'fluentcrm_funnel_sequence_handle_' . $this->actionName, [$this, 'handle'], 10, 4 ); }
/** * A blokk regisztrálása az automatizálás-szerkesztőben. */ public function pushBlock($blocks, $funnel) { $this->funnel = $funnel;
$block = $this->getBlock(); if ($block) { $block['type'] = 'action'; $blocks[$this->actionName] = $block; }
return $blocks; }
/** * A blokk beállítómezőinek regisztrálása. */ public function pushBlockFields($fields, $funnel) { $this->funnel = $funnel;
$fields[$this->actionName] = $this->getBlockFields();
return $fields; }
/** * A blokk alapadatai és alapértelmezett beállításai. */ public function getBlock() { return [ 'category' => 'My-plugin', 'title' => 'My-plugin jegyzet hozzáadása', 'description' => 'Jegyzet hozzáadása a My-pluginhoz', 'icon' => 'fc-icon-writing', 'settings' => [ 'note' => '', 'note_type' => 'private', ], ]; }
/** * A művelet beállítópaneljének mezői. */ public function getBlockFields() { $formattedOptions = [ [ 'id' => 'private', 'title' => 'Privát jegyzet', ], [ 'id' => 'customer', 'title' => 'Jegyzet a vásárlónak', ], ];
return [ 'title' => 'My-plugin jegyzet hozzáadása', 'sub_title' => 'Jegyzet hozzáadása a kapcsolódó My-plugin rendeléshez', 'fields' => [ 'note' => [ 'type' => 'input-text-popper', 'field_type' => 'textarea', 'label' => 'My-plugin jegyzet', 'help' => 'Írd be a jegyzetet, amelyet a rendeléshez adsz. Okoskódokat is használhatsz.', ], 'note_type' => [ 'type' => 'radio', 'label' => 'Jegyzet típusa', 'help' => 'Válaszd ki, hogyan legyen eltárolva a jegyzet a rendelésnél.', 'options' => $formattedOptions, ], ], ]; }
/** * A fő kezelő, amely a lépés végrehajtásakor fut. * * @param \FluentCrm\App\Models\Subscriber $subscriber * @param object $sequence * @param int $funnelSubscriberId * @param object $funnelMetric */ public function handle($subscriber, $sequence, $funnelSubscriberId, $funnelMetric) { // Ide jön a saját integrációs logikád. error_log(print_r( [$subscriber, $sequence, $funnelSubscriberId, $funnelMetric], true )); }}A pushBlockFields() metódus adja vissza a művelet beállítópaneljének szerkezetét, ebből rajzolja ki a FluentCRM a mezőket. A getBlockFields() mezőleírásai ugyanazt a szerkezetet követik, mint a többi FluentCRM-űrlapmező; további típusokat az Űrlapmezők kódszerkezete fejezetben találsz.
2. lépés: az osztály regisztrálása
Szekció neve “2. lépés: az osztály regisztrálása”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\Actions\CustomAction(); }});Ezután:
- A „My-plugin jegyzet hozzáadása” művelet megjelenik az automatizálás műveletlistájában.
- Bármelyik automatizálásban beállíthatod a jegyzet szövegét és típusát.
- A lépés futásakor a FluentCRM a
fluentcrm_funnel_sequence_handle_custom_action_namekampón át meghívja ahandle()metódusodat, ahol egyedi viselkedést vagy külső integrációt valósíthatsz meg.
Készült: