אירוע או פעולה שמתחילים תגובה אוטומטית ספציפית, זה מה שאנו מכנים טריגר. לדוגמה, כאשר משתמש נרשם לניוזלטר, פעולה זו נחשבת כטריגר. טריגר הוא הבסיס לכל תהליך אוטומציה, הוא מתחיל את סדרת הפעולות שאחריה. הטריגר הוא השלב הראשון באוטומציה.
#< /a>יצירת טריגר
נגיד, אתה מספק כמה קורסים בתוסף שלך. תרצה להפעיל זרימות עבודה כאשר משתמש נרשם לקורס. אתה יכול להשתמש בטריגר רשום לקורס
כדי לעשות זאת. צור מחלקה שמרחיבה את FluentCrm\App\Services\Funnel\BaseTrigger
מחלקה.
<?php
מרחב השמות Your\Plugin\Name\Automation;
...
השתמש ב- FluentCrm\App\Services\Funnel\BaseTrigger;
class CourseEnrolledTrigger מרחיב את BaseTrigger {
}
1
2
3
4
5
6
7
8
9
עלינו לעקוף את שיטת הבנאי המוגדרת כברירת מחדל כדי להגדיר את מאפייני הטריגר. בונה הכיתה צריך להיות בעל הגוף הבא:
פונקציה ציבורית __construct()
{
$this->triggerName = 'רשום לקורס';
$this->priority = 20;
$this->actionArgNum = 1;
parent::__construct();
}
1
2
3
4
5
6
7
8
המאפיין triggerName
הוא שם האירוע שיפעיל זרימת עבודה זו. במקרה שלנו, בואו נקרא לזה רשום לקורס
. המאפיין priority
הוא העדיפות של הפעולה שתתווסף לפונקציה add_action
. המאפיין actionArgNum
הוא מספר הארגומנטים שיועברו להתקשרות חוזרת. לבסוף, עלינו לקרוא לבנאי האב.
עכשיו, עלינו להגדיר את שיטת getTrigger. שיטה זו אמורה להחזיר מערך של הגדרות ההדק.
פונקציה ציבורית getTrigger()
{
החזר [
'קטגוריה' => __('קורס מדהים', 'הפלאגין שלך'),
'תווית' => __('משתמש נרשם לקורס', 'הפלאגין שלך'),
'description' => __('התוסף יתחיל כאשר סטודנט ירשם לקורס', 'הפלאגין שלך')
'סמל' => 'fc-icon-wp_new_user_signup',
];
}
1
2
3
4
5
6
7
8
9
הגדר את שיטת getFunnelSettingsDefaults
. שיטה זו אמורה להחזיר מערך של הגדרות ברירת המחדל עבור זרימת העבודה.
פונקציה ציבורית getFunnelSettingsDefaults()
{
החזר [
'subscription_status' => 'נרשם'
];
}
1
2
3
4
5
6
7
הגדר את השיטה getSettingsFields
. שיטה זו אמורה להחזיר מערך של שדות ההגדרות שיוצגו בדף הגדרות זרימת העבודה. אתה יכול להתאים אישית את ההגדרות כרצונך. בקר ב מבנה קוד שדה טופס למידע נוסף.
פונקציה ציבורית getSettingsFields($funnel)
{
החזר [
'title' => __('משתמש נרשם לקורס', 'הפלאגין שלך'),
'sub_title' => __('זה יתחיל כאשר סטודנט ירשם לקורס', 'הפלאגין שלך'),
'fields' => [
'subscription_status' => [
'סוג' => 'בוררי_אפשרויות',
'option_key' => 'סטטוסים_ניתנים לשינוי',
'is_multiple' => שֶׁקֶר,
'תווית' => __('סטטוס מנוי', 'הפלאגין שלך'),
'placeholder' => __('בחר סטטוס', 'הפלאגין שלך')
]
]
];
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
צריכה להיות אפשרות לבחור את הקורסים הספציפיים שעבורם יש להפעיל את זרימת העבודה. ניתן לעשות זאת על ידי הוספת השיטה getConditionFields
.
פונקציה ציבורית getConditionFields($funnel)
{
$courseOptions = [
[
'id' => '2',
'title' => 'חשוב כמו מקצוען ב-JavaScript'
],
[
'id' => '3',
'title' => 'מאסטר בפיתוח תוסף וורדפרס'
]
];
החזר [
'update_type' => [
'סוג' => 'רָדִיוֹ',
'תווית' => __('אם איש קשר כבר קיים?', 'הפלאגין שלך'),
'עזרה' => __('אנא ציין מה יקרה אם המנוי כבר קיים במסד הנתונים', 'your-plugin'),
'options' => FunnelHelper::getUpdateOptions()
],
'course_ids' => [
'סוג' => 'בחירה מרובה',
'תווית' => __('קורסי יעד', 'הפלאגין שלך'),
'עזרה' => __('בחר עבור אילו קורסים האוטומציה הזו תפעל', 'הפלאגין שלך'),
'options' => $courseOptions,
'inline_help' => __('שמור אותו ריק כדי לרוץ לכל הרשמה לקורס', 'הפלאגין שלך')
],
'run_multiple' => [
'סוג' => 'כן_לא_בדוק',
'תווית' => '',
'check_label' => __('הפעל מחדש את האוטומציה מספר פעמים עבור איש קשר עבור אירוע זה. (הפעל רק אם אתה רוצה להפעיל מחדש את האוטומציה עבור אותו איש קשר)', 'fluentcampaign-pro'),
'inline_help' => __('אם תפעיל, אז זה יפעיל מחדש את האוטומציה של איש קשר אם איש הקשר כבר נמצא באוטומציה. אחרת, זה פשוט ידלג אם כבר קיים', 'fluentcampaign-pro')
]
];
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18< br>19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
בואו נאכלס כמה ערכי ברירת מחדל עבור שדות תנאי בשיטה getConditionDefaults
.
פונקציה ציבורית getConditionDefaults()
{
החזר [
'update_type' => 'עדכון', // skip_all_actions, skip_update_if_exist
'course_ids' => [],
'run_multiple' => 'לֹא'
];
}
1
2
3
4
5
6
7
8
יש להגדיר את שיטת handle
כדי שהיא תיקרא כאשר אירוע הטריגר מתרחש. כמעט סיימנו עם התהליך הזה. השיטה לוקחת שני טיעונים. הארגומנט הראשון הוא אובייקט המשפך והארגומנט השני הוא מערך הארגומנטים המועברים ל-callback. שים לב שעלינו להכין נתוני מנויים.
// ... ידית פונקציה ציבורית ($funnel, $originalArgs) { // להפריד בין הטיעונים $enrollmentReference = $originalArgs[0]; $courseId = $originalArgs[1]; $userId = $originalArgs[2]; // קבל את ההגדרות והתנאים של המשפך $settings = $funnel->settings; $conditions = $funnel->conditions; // הכן את נתוני המנוי $subscriberData = [ 'email' => '', // נדרש 'first_name' => '', 'last_name' => '', 'סטטוס' => $settings['subscription_status'] ]; // או, אתה יכול להשתמש בפונקציית העזר של FluentCRM כדי להכין את נתוני המנוי $subscriberData = FunnelHelper::prepareUserData($userId); // בדוק אם המשפך הזה מסוגל לעבד את הקורס הזה ולהפעיל את האוטומציה if(!$this->isProcessable($funnel, $courseId, $subscriberData)) { החזר שקר; } // סוף סוף התחל רצף משפך עבור מנוי זה (חדש \FluentCrm\App\Services\Funnel\FunnelProcessor())->startFunnelSequence($funnel, $subscriberData, [ 'source_trigger_name' => $this->triggerName, 'source_ref_id' => $courseId // אופציונלי ]); } // ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31< br>32
33
34
35
// ... // בדוק אם המשפך הזה מסוגל לעבד את הקורס הזה ולהפעיל את האוטומציה פונקציה פרטית isProcessable($funnel, $courseId, $subscriberData) { $conditions = $funnel->conditions; // בדוק את סוג_עדכון $updateType = Arr::get($conditions, 'update_type'); $subscriber = FunnelHelper::getSubscriber($subscriberData['email']); if ($subscriber && $updateType == 'skip_all_if_exist') { החזר שקר; } // בדוק את מזהי המוצרים if($conditions['course_ids'] && !in_array($courseId, $conditions['course_ids'])) { החזר שקר; } // בדוק run_only_one if ($subscriber && FunnelHelper::ifAlreadyInFunnel($funnel->id, $subscriber->id)) { $multipleRun = Arr::get($conditions, 'run_multiple') == 'כן'; if ($multipleRun) { FunnelHelper::removeSubscribersFromFunnel($funnel->id, [$subscriber->id]); } אחר { החזר שקר; } } החזר אמיתי; } // ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27< /p>
הכל מוכן ומוכן להפעלה. בואו נסתכל על קוד המקור המלא.
<?php
מרחב השמות Your\Plugin\Name\Automation;
...
השתמש ב- FluentCrm\App\Services\Funnel\BaseTrigger;
השתמש ב- FluentCrm\App\Services\Funnel\FunnelHelper;
השתמש ב- FluentCrm\Framework\Support\Arr;
השתמש ב- FluentCrm\App\Services\Funnel\FunnelProcessor;
class CourseEnrolledTrigger מרחיב את BaseTrigger {
פונקציה ציבורית __construct()
{
$this->triggerName = 'רשום לקורס';
$this->priority = 20;
$this->actionArgNum = 3;
parent::__construct();
}
פונקציה ציבורית getTrigger()
{
החזר [
'קטגוריה' => __('קורס מדהים', 'הפלאגין שלך'),
'תווית' => __('משתמש נרשם לקורס', 'הפלאגין שלך'),
'description' => __('התוסף יתחיל כאשר סטודנט ירשם לקורס', 'הפלאגין שלך')
'סמל' => 'fc-icon-wp_new_user_signup',
];
}
פונקציה ציבורית getFunnelSettingsDefaults()
{
החזר [
'subscription_status' => 'נרשם'
];
}
פונקציה ציבורית getSettingsFields($funnel)
{
החזר [
'title' => __('משתמש נרשם לקורס', 'הפלאגין שלך'),
'sub_title' => __('זה יתחיל כאשר סטודנט ירשם לקורס', 'הפלאגין שלך'),
'fields' => [
'subscription_status' => [
'סוג' => 'בוררי_אפשרויות',
'option_key' => 'סטטוסים_ניתנים לשינוי',
'is_multiple' => שֶׁקֶר,
'תווית' => __('סטטוס מנוי', 'הפלאגין שלך'),
'placeholder' => __('בחר סטטוס', 'הפלאגין שלך')
]
]
];
}
פונקציה ציבורית getConditionFields($funnel)
{
$courseOptions = [
[
'id' => '2',
'title' => 'חשוב כמו מקצוען ב-JavaScript'
],
[
'id' => '3',
'title' => 'מאסטר בפיתוח תוסף וורדפרס'
]
];
החזר [
'update_type' => [
'סוג' => 'רָדִיוֹ',
'תווית' => __('אם איש קשר כבר קיים?', 'הפלאגין שלך'),
'עזרה' => __('אנא ציין מה יקרה אם המנוי כבר קיים במסד הנתונים', 'your-plugin'),
'options' => FunnelHelper::getUpdateOptions()
],
'course_ids' => [
'סוג' => 'בחירה מרובה',
'תווית' => __('קורסי יעד', 'הפלאגין שלך'),
'עזרה' => __('בחר עבור אילו קורסים האוטומציה הזו תפעל', 'הפלאגין שלך'),
'options' => $courseOptions,
'inline_help' => __('שמור אותו ריק כדי לרוץ לכל הרשמה לקורס', 'הפלאגין שלך')
],
'run_multiple' => [
'סוג' => 'כן_לא_בדוק',
'תווית' => '',
'check_label' => __('הפעל מחדש את האוטומציה מספר פעמים עבור איש קשר עבור אירוע זה. (הפעל רק אם אתה רוצה להפעיל מחדש את האוטומציה עבור אותו איש קשר)', 'fluentcampaign-pro'),
'inline_help' => __('אם תפעיל, אז זה יפעיל מחדש את האוטומציה של איש קשר אם איש הקשר כבר נמצא באוטומציה. אחרת, זה פשוט ידלג אם כבר קיים', 'fluentcampaign-pro')
]
];
}
פונקציה ציבורית getConditionDefaults()
{
החזר [
'update_type' => 'עדכון', // skip_all_actions, skip_update_if_exist
'course_ids' => [],
'run_multiple' => 'לֹא'
];
}
ידית פונקציה ציבורית ($funnel, $originalArgs)
{
// להפריד בין הטיעונים
$enrollmentReference = $originalArgs[0];
$courseId = $originalArgs[1];
$userId = $originalArgs[2];
// קבל את ההגדרות והתנאים של המשפך
$settings = $funnel->settings;
$conditions = $funnel->conditions;
// הכן את נתוני המנוי
$subscriberData = [
'email' => '', // נדרש
'first_name' => '',
'last_name' => '',
'סטטוס' => $settings['subscription_status']
];
// אתה יכול להשתמש בפונקציית העזר כדי להכין את נתוני המנוי
$subscriberData = FunnelHelper::prepareUserData($userId);
// בדוק אם המשפך הזה מסוגל לעבד את הקורס הזה ולהפעיל את האוטומציה
if(!$this->isProcessable($funnel, $courseId, $subscriberData)) {
החזר שקר;
}
// סוף סוף התחל רצף משפך עבור מנוי זה
(חדש \FluentCrm\App\Services\Funnel\FunnelProcessor())->startFunnelSequence($funnel, $subscriberData, [
'source_trigger_name' => $this->triggerName,
'source_ref_id' => $courseId // אופציונלי
]);
}
// בדוק אם המשפך הזה מסוגל לעבד את הקורס הזה ולהפעיל את האוטומציה
פונקציה פרטית isProcessable($funnel, $courseId, $subscriberData)
{
$conditions = $funnel->conditions;
// בדוק את סוג_עדכון
$updateType = Arr::get($conditions, 'update_type');
$subscriber = FunnelHelper::getSubscriber($subscriberData['email']);
if ($subscriber && $updateType == 'skip_all_if_exist') {
החזר שקר;
}
// בדוק את מזהי המוצרים
if($conditions['course_ids'] && !in_array($courseId, $conditions['course_ids'])) {
החזר שקר;
}
// בדוק run_only_one
if ($subscriber && FunnelHelper::ifAlreadyInFunnel($funnel->id, $subscriber->id)) {
$multipleRun = Arr::get($conditions, 'run_multiple') == 'כן';
if ($multipleRun) {
FunnelHelper::removeSubscribersFromFunnel($funnel->id, [$subscriber->id]);
} אחר {
החזר שקר;
}
}
החזר אמיתי;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22< br>23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55< br>56
57
58
59
60
61
62
63< br>64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
8 4
85
86
87
88
89
90
91
92
93
94
95
96< br>97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116< br>117
118
119
120
121122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
13 9
140
141
142
143
144
145
146
147
148
149
150
151< br>152
153
154
155
156
#< /a>רישום הטריגר
הכול מוכן! הטריגר שלך מוכן לשימוש. התקשר לכיתה כדי לרשום את זרימת העבודה.
add_action('fluent_crm/after_init', function () {
new Your\Plugin\Name\Automation\CourseEnrolledTrigger();
});