Исходный код вики Товарные рекомендации


Последние авторы
1 (% class="lead" %)
2 Функциональность товарных рекомендаций позволяет выводить в текст сообщений продукты, подобранные по одному из поддерживаемых алгоритмов на основе предпочтений клиентов.
3
4 {{info}}
5 Функциональность товарных рекомендаций поддерживается только при настроенной интеграции с модулем [[Loymax AI>>doc:Main.General_information.Loymax_AI.WebHome]].
6 {{/info}}
7
8 (% class="box" %)
9 (((
10 **Содержание:**
11
12 {{toc depth="3" start="2"/}}
13 )))
14
15 Общий процесс генерации рекомендаций выглядит следующим образом:
16
17 1. Маркетолог создаёт рекомендацию в АРМ.
18 1. Маркетолог вставляет код рекомендации в сообщение.
19 1. При формировании сообщения Loymax Smart Communications отправляет в [[Loymax AI>>doc:Main.General_information.Loymax_AI.WebHome]] запрос рекомендованных продуктов.
20 1. Loymax AI возвращает массив продуктов, сформированный по указанному алгоритму.
21 1. Loymax Smart Communications отправляет персонализированное сообщение с рекомендациями.
22
23 == Создание рекомендаций с использованием алгоритмов Loymax AI ==
24
25 Чтобы просмотреть список созданных рекомендаций, на панели слева перейдите в раздел **Рекомендации**.
26
27 |(% style="border-color:#ffffff; text-align:center" %){{lightbox image="recommendations.png" width="660"/}}
28
29 В разделе **Рекомендации** доступны следующие действия:
30
31 * Создать новую рекомендацию ([[image:1.png]]).
32 * Отсортировать таблицу по содержимому любого столбца ([[image:2.png]]).
33 * Редактировать, копировать или удалить рекомендацию ([[image:3.png]]). Вы также можете редактировать рекомендацию по клику на её код или наименование.
34
35 По нажатию кнопки создания новой или редактирования существующей рекомендации откроется окно редактирования рекомендации.
36
37 |(% style="border-color:white; width:70%" %)(((
38 Заполните обязательные поля рекомендации:
39
40 * **Код рекомендации** — короткий код, который будет использоваться для добавления рекомендаций в сообщения.
41 * **Наименование рекомендации** — человекочитаемое имя, которое будет отображаться в списке настроенных рекомендаций.
42 * **Алгоритм рекомендации** — выберите требуемый алгоритм из списка:
43 ** [[Популярные товары>>doc:Main.General_information.Loymax_Loyalty.recommendation_systems.Commercial_recommendations.WebHome||anchor="H41043B43343E44043844243C2241F43E43F44343B44F44043D44B43544243E43243044044B22"]]. Алгоритм, предлагающий самые популярные продукты из всего каталога, независимо от истории клиента.
44 ** [[Популярные товары в категории>>doc:Main.General_information.Loymax_Loyalty.recommendation_systems.Commercial_recommendations.WebHome||anchor="H41043B43343E44043844243C2241F43E43F44343B44F44043D44B43544243E43243044044B43243A43044243543343E44043843822"]]. Алгоритм, предлагающий самые популярные продукты из категорий, к которым проявлял интерес клиент (просматривал, покупал, заказывал).
45 ** [[Похожие товары>>doc:Main.General_information.Loymax_Loyalty.recommendation_systems.Commercial_recommendations.WebHome||anchor="H41043B43343E44043844243C2241F43E44543E43643843544243E43243044044B22"]]. Алгоритм, предлагающий продукты, похожие на те, к которым проявлял интерес клиент.
46 ** [[Совместные покупки>>doc:Main.General_information.Loymax_Loyalty.recommendation_systems.Commercial_recommendations.WebHome||anchor="H41043B43343E44043844243C2242143E43243C43544144243D44B43543F43E43A44343F43A43822"]]. Алгоритм, предлагающий продукты, которые часто покупают вместе с продуктами, к которым проявлял интерес клиент.
47 ** [[Персональные товарные рекомендации>>doc:Main.General_information.Loymax_Loyalty.recommendation_systems.Commercial_recommendations.WebHome||anchor="H41043B43343E44043844243C2241F43544044143E43D43043B44C43D44B43544243E43243044043D44B43544043543A43E43C43543D43443044643843822"]]. Алгоритм, прогнозирующий будущие покупки клиента исходя из его истории и предлагающий продукты на основании данного прогноза.
48 ** [[Ручные рекомендации>>||anchor="H41D43044144244043E43943A43044044344743D44B44544043543A43E43C43543D434430446438439"]]. Алгоритм, предлагающий продукты на основании правил соответствия категорий без использования модуля Loymax AI.
49
50 Настройте параметры рекомендации. Набор доступных параметров зависит от выбранного алгоритма.
51
52 * **Количество рекомендаций** — количество продуктов, которые будет возвращать модуль Loymax AI.
53 * **Рассчитывать на основе** — источник, из которого Loymax Smart Communications будет брать продукты (для расчёта рекомендаций по алгоритмам [[Совместные покупки>>doc:Main.General_information.Loymax_Loyalty.recommendation_systems.Commercial_recommendations.WebHome||anchor="H41043B43343E44043844243C2242143E43243C43544144243D44B43543F43E43A44343F43A43822"]], [[Похожие товары>>doc:Main.General_information.Loymax_Loyalty.recommendation_systems.Commercial_recommendations.WebHome||anchor="H41043B43343E44043844243C2241F43E44543E43643843544243E43243044044B22"]]) или категории (для расчёта рекомендаций по алгоритму [[Популярные товары в категории>>doc:Main.General_information.Loymax_Loyalty.recommendation_systems.Commercial_recommendations.WebHome||anchor="H41043B43343E44043844243C2241F43E43F44343B44F44043D44B43544243E43243044044B43243A43044243543343E44043843822"]]).
54 )))|(% style="border-color:white; text-align:center; width:30%" %){{lightbox image="recommendation_edit.png" width="400"/}}
55
56 == Создание ручных рекомендаций ==
57
58 |(% style="border-color:white; width:70%" %)(((
59 Ручные рекомендации отличаются от всех остальных алгоритмов тем, что расчёт рекомендаций полностью осуществляется на стороне Loymax Smart Communications. Ручные рекомендации рассчитываются раз в сутки в соответствии с настроенными параметрами.
60
61 При расчёте ручных рекомендаций Система проверяет заданный источник (поле **Рассчитывать на основе**) на наличие продуктов, относящихся к заданной **Целевой категории**. Затем Система подбирает продукты из **Рекомендованных категорий**, которые чаще всего присутствуют в чеках вместе с целевым продуктом. Алгоритм вернёт N наиболее популярных продуктов, где N — значение, заданное в поле **Количество**.
62
63 Рекомендации можно дополнительно ограничить: если заданы **Продвинутые настройки соответствия**, алгоритм будет предлагать только продукты, у которых значения заданных параметров соответствуют значениям параметров целевого продукта.
64
65 Для ручных рекомендаций доступны следующие настройки:
66
67 * **Рекомендовать продукты на основе региона** ([[image:1.png]]). В зависимости от данной настройки, рекомендуемые продукты будут фильтроваться по значению поля **Регион** либо в [[профиле клиента>>doc:Main.Using.Smart_Communications.Customers.All_clients.WebHome||anchor="H41F44043E44443843B44C43A43B43843543D442430"]], либо в последней web-сессии клиента.
68 * **Период расчета** ([[image:2.png]]). Период, за который будут анализироваться чеки, чтобы определить продукты, чаще всего покупаемые вместе с целевыми.
69 * **Рассчитывать на основе** ([[image:3.png]]). Аналогично остальным алгоритмам, источник, из которого Loymax Smart Communications будет брать целевые продукты.
70 * **Целевая категория** ([[image:4.png]]). Категория, к продуктам из которой будут рассчитываться рекомендации. Чтобы добавить целевую категорию, нажмите **+ Добавить соответствие** в левом нижнем углу окна.
71 * **Рекомендуемая категория** ([[image:5.png]]). Категория, продукты из которой будут предлагаться в качестве рекомендаций. К одной целевой категории можно выбрать несколько рекомендуемых. Чтобы добавить рекомендуемую категорию, нажмите **+ Добавить категорию**.
72 * **Количество** ([[image:5.png]]). Количество продуктов из данной рекомендуемой категории, которое вернёт алгоритм. Количество задаётся отдельно для каждой рекомендуемой категории.
73 * **Продвинутые настройки соответствия** ([[image:6.png]]). Нажмите **+ Добавить соответствие** в правой части окна, чтобы добавить поле, по которому требуется отфильтровать выдачу алгоритма. Продвинутые настройки соответствия задаются отдельно для каждой целевой категории (т.е. распространяются на все рекомендуемые категории).
74
75 {{success}}
76 * Для полей с числовыми типами данных, а также с типом данных **дата** доступен флажок **Точное соответствие**. Если он установлен, продукт будет рекомендован только при полном совпадении значения со значением соответствующего атрибута целевого продукта.
77 * Для полей с типами данных **строка** и **логическое** всегда требуется точное соответствие.
78 * Если флажок **Точное соответствие** снят, продукт попадёт в рекомендации, если он отличается от целевого продукта по значению атрибута не более чем на 15%.
79 {{/success}}
80 )))|(% style="border-color:white; text-align:center; width:30%" %){{lightbox image="recommendation_manual.png" width="400"/}}
81
82 == Подстановка рекомендаций в сообщение ==
83
84 Для отображения рекомендаций в сообщениях необходимо использовать конструкции [[шаблонизатора>>doc:Main.Using.Smart_Communications.Mass_mailings.Template_builder.WebHome]].
85
86 Рассмотрим пример добавления рекомендаций в сообщения. Требуется отправить клиентам email-рассылку с рекомендациями по алгоритму [[Совместные покупки>>doc:Main.General_information.Loymax_Loyalty.recommendation_systems.Commercial_recommendations.WebHome||anchor="H41043B43343E44043844243C2242143E43243C43544144243D44B43543F43E43A44343F43A43822"]] (для этого в Системе создана рекомендация с кодом ##sov_pok##). У некоторых клиентов ещё нет истории покупок, поэтому для них будут выдаваться рекомендации по алгоритму [[Популярные товары>>doc:Main.General_information.Loymax_Loyalty.recommendation_systems.Commercial_recommendations.WebHome||anchor="H41043B43343E44043844243C2241F43E43F44343B44F44043D44B43544243E43243044044B22"]] (для этого в Системе создана рекомендация с кодом ##popular##).
87
88 Вёрстка письма предполагает размещение от 3 до 9 карточек продукта — от одного до трёх рядов по три карточки. Рекомендовать можно только те продукты, которые можно заказать в Интернет-магазине. Также необходимо вывести в сообщение цену продукта, а если цена менялась — старую и новую цену.
89
90 1. Определим переменную ##Rec## и запишем в нее массив объектов Продукт (##product##), подобранных по алгоритму [[Совместные покупки>>doc:Main.General_information.Loymax_Loyalty.recommendation_systems.Commercial_recommendations.WebHome||anchor="H41043B43343E44043844243C2242143E43243C43544144243D44B43543F43E43A44343F43A43822"]], а если клиент не совершил достаточного количества покупок, то по алгоритму [[Популярные товары>>doc:Main.General_information.Loymax_Loyalty.recommendation_systems.Commercial_recommendations.WebHome||anchor="H41043B43343E44043844243C2241F43E43F44343B44F44043D44B43544243E43243044044B22"]].
91
92 {{code language="twig"}}
93 {% set Rec=client.recommendations.sov_pok %}
94 {% if not Rec or Rec|length < 3 %}
95 {% set Rec=client.recommendations.popular %}
96 {% endif %}
97
98 {{/code}}
99
100 (% start="2" %)
101 1. Отфильтруем массив рекомендованных продуктов, оставив только те, которые можно купить в интернет-магазине (значение логического пользовательского [[поля>>doc:Main.Using.Smart_Communications.Settings_SC.Data_field.WebHome]] ##eComAvailable## — ##true##). Для этого определим переменную ##filteredRec##, в которую будут записываться отфильтрованные рекомендации.
102 1. Для вывода в сообщение понадобится не более 9 продуктов (три ряда по три продукта). Определим переменную ##count_recs##, которая будет служить в качестве счётчика: при каждом добавлении продукта в массив отфильтрованных рекомендаций значение счётчика будет увеличиваться на 1.
103 1. Переберём все продукты и добавим в массив те из них, которые не были добавлены ранее (на случай, если модуль Loymax AI вернул один и тот же продукт дважды) и которые доступны для заказа в интернет-магазине. Также проверим значение счётчика и добавим продукт, только если ещё не набралось 9 рекомендаций.
104
105 {{code language="twig"}}
106 {% set count_recs=0 %}
107 {% set filteredRec=[] %}
108 {% for product in Rec %}
109 {% if product not in filteredRec and product.eComAvailable=='Y' and count_recs < 9 %}
110  {% set filteredRec=filteredRec|merge([product]) %}
111  {% set count_recs=count_recs + 1 %}
112 {% endif %}
113 {% endfor %}
114 {{/code}}
115
116 (% start="5" %)
117 1. Разобьём отфильтрованные рекомендации на группы по три.
118 1. Если в процессе фильтрации получилось количество подходящих продуктов, не кратное 3, в последней группе будет меньше 3 продуктов (например, 7=3+3+1). Проверим и выведем в сообщение только те группы, в которых ровно три продукта.
119 1. Для каждого продукта выведем наименование и изображение.
120
121 {{code language="twig"}}
122 {% for batch in filteredRec|batch(3) %}
123    {% if batch|length==3 %}
124       {% for recommendation in batch %}
125 {{ recommendation.name }}
126 {{ recommendation.image_url }}
127 {{/code}}
128
129 (% start="8" %)
130 1. Далее реализуем такой сценарий:
131 1*. если цена продукта менялась (значения полей текущей цены в интернет-магазине и старой цены не равны), выведем старую и новую цену;
132 1*. если цена продукта не менялась и поле цены в интернет-магазине заполнено, выведем текущую цену;
133 1*. если поле цены в интернет-магазине не заполнено, выведем "Цена уточняется".
134
135 {{code language="twig"}}
136 {% if recommendation.priceim and recommendation.oldprice and recommendation.priceim != recommendation.oldprice %}
137   Цена: {{ recommendation.priceim }}
138    Старая цена: {{ recommendation.oldprice }}
139 {% elseif recommendation.priceim %}
140    Цена: {{ recommendation.priceim }}
141 {% else %}
142   Цена уточняется
143 {% endif %}
144 {% endfor %}
145 {{/code}}
146
147 В итоге получим следующую конструкцию:
148
149 {{code language="twig"}}
150 {% set Rec=client.recommendations.sov_pok %}
151 {% if not Rec or Rec|length < 3 %}
152 {% set Rec=client.recommendations.popular %}
153 {% endif %}
154 {% set count_recs=0 %}
155 {% set filteredRec=[] %}
156 {% for product in Rec %}
157 {% if product not in filteredRec and product.eComAvailable=='Y' and count_recs < 9 %}
158  {% set filteredRec=filteredRec|merge([product]) %}
159  {% set count_recs=count_recs + 1 %}
160 {% endif %}
161 {% endfor %}
162 {% for batch in filteredRec|batch(3) %}
163    {% if batch|length==3 %}
164       {% for recommendation in batch %}
165 {{ recommendation.name }}
166 {{ recommendation.image_url }}
167 {% if recommendation.priceim and recommendation.oldprice and recommendation.priceim != recommendation.oldprice %}
168   Цена: {{ recommendation.priceim }}
169   Старая цена: {{ recommendation.oldprice }}
170 {% elseif recommendation.priceim %}
171   Цена: {{ recommendation.priceim }}
172 {% else %}
173   Цена уточняется
174 {% endif %}
175 {% endfor %}
176 {% endif %}
177 {% endfor %}
178 {{/code}}
179
180 (% class="box" %)
181 (((
182 **Читайте также:**
183
184 * [[Алгоритмы товарных рекомендаций>>doc:Main.General_information.Loymax_Loyalty.recommendation_systems.Commercial_recommendations.WebHome]]
185 * [[Шаблонизатор сообщений>>doc:Main.Using.Smart_Communications.Mass_mailings.Template_builder.WebHome]]
186 )))