Изменения документа Товарные рекомендации
<
>
отредактировано Андрей Рылов
на 16/01/2026 13:19
на 16/01/2026 13:19
отредактировано Андрей Рылов
на 26/12/2025 14:35
на 26/12/2025 14:35
Изменить комментарий:
К данной версии нет комментариев
Комментарий
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
-
Вложения (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -1,8 +1,8 @@ 1 1 (% class="lead" %) 2 -Функционал ьностьрекомендаций позволяет выводить в текст сообщений товары, подобранные по одному из поддерживаемых алгоритмов на основе предпочтений клиентов.2 +Функционал рекомендаций позволяет выводить в текст сообщений товары, подобранные по одному из поддерживаемых алгоритмов на основе прошлых действий данного клиента. 3 3 4 4 {{info}} 5 -Функционал ьностьрекомендаций поддерживается только при настроенной интеграции с модулем[[Loymax AI>>doc:Main.General_information.Loymax_AI.WebHome]].5 +Функционал рекомендаций поддерживается только при настроенной интеграции с модулем Loymax AI. 6 6 {{/info}} 7 7 8 8 (% class="box" %) ... ... @@ -16,16 +16,16 @@ 16 16 17 17 1. Маркетолог создаёт рекомендацию в АРМ. 18 18 1. Маркетолог вставляет код рекомендации в сообщение. 19 -1. При генерации сообщения Loymax Smart Communications отправляет в [[Loymax AI>>doc:Main.General_information.Loymax_AI.WebHome]]запрос, содержащий:19 +1. При генерации сообщения Loymax Smart Communications отправляет в Loymax AI запрос, содержащий: 20 20 1*. идентификатор клиента, 21 21 1*. название алгоритма рекомендации, 22 22 1*. параметры алгоритма (например, сколько продуктов рекомендовать). 23 23 1. Loymax AI возвращает массив продуктов, сформированный по указанному алгоритму. 24 -1. Loymax Smart Communications отправляет персонализированное сообщение с рекомендациями.24 +1. Loymax Smart Communications отправляет сообщение с рекомендациями. 25 25 26 26 == Настройка рекомендаций == 27 27 28 -Чтобы просмотреть список созданных рекомендаций, на панели слева перейдитев раздел**Рекомендации**.28 +Чтобы просмотреть список созданных рекомендаций, на панели слева нажмите на узел **Рекомендации**. 29 29 30 30 |(% style="border-color:#ffffff; text-align:center" %){{lightbox image="recommendations.png" width="660"/}} 31 31 ... ... @@ -47,7 +47,7 @@ 47 47 Настройте параметры рекомендации. Набор доступных параметров зависит от выбранного алгоритма. 48 48 49 49 * **Количество рекомендаций** — количество продуктов, которые будет возвращать модуль Loymax AI. 50 -* **Рассчитывать на основе** — источник, из которого 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"]]).50 +* **Рассчитывать на основе** — источник, из которого Loymax Smart Communications будет брать продукты (для расчёта рекомендаций по алгоритмам //Совместные покупки//, //Похожие товары//) или категории (для расчёта рекомендаций по алгоритму //Популярные товары в категории//). 51 51 )))|(% style="border-color:white; text-align:center; width:30%" %){{lightbox image="recommendation_edit.png" width="400"/}} 52 52 53 53 === Настройка ручных рекомендаций === ... ... @@ -69,9 +69,11 @@ 69 69 * **Продвинутые настройки соответствия** ([[image:5.png]]). Нажмите **+ Добавить соответствие** в правой части окна, чтобы добавить поле, по которому требуется отфильтровать выдачу алгоритма. Продвинутые настройки соответствия задаются отдельно для каждой целевой категории (т.е. распространяются на все рекомендуемые категории). 70 70 71 71 {{success}} 72 -* Для полей с числовыми типами данных, а также с типом данных "дата" доступен флажок **Точное соответствие**. Если он установлен, продукт будет рекомендован только при полном совпадении значения со значением соответствующего атрибута целевого продукта. 73 -* Для полей с типами данных "строка" и "логическое" всегда требуется точное соответствие. 74 -* Если флажок **Точное соответствие** снят, продукт попадёт в рекомендации, если он отличается от целевого продукта по значению атрибута не более чем на 15%. 72 +Для полей с числовыми типами данных, а также с типом данных "дата" доступен флажок **Точное соответствие**. Если он установлен, продукт будет рекомендован только при полном совпадении значения со значением соответствующего атрибута целевого продукта. 73 + 74 +Для полей с типами данных "строка" и "логическое" всегда требуется точное соответствие. 75 + 76 +Если флажок **Точное соответствие** снят, продукт попадёт в рекомендации, если он отличается от целевого продукта по значению атрибута не более чем на 15%. 75 75 {{/success}} 76 76 )))|(% style="border-color:white; text-align:center; width:30%" %){{lightbox image="recommendation_manual.png" width="400"/}} 77 77 ... ... @@ -79,8 +79,10 @@ 79 79 80 80 Для отображения рекомендаций в сообщениях необходимо использовать конструкции [[шаблонизатора>>doc:Main.Using.Smart_Communications.Mass_mailings.Template_builder.WebHome]]. 81 81 82 -Рассмотрим пример добавления рекомендаций в сообщения. Мы хотим отправить клиентам email-рассылку с рекомендациями по алгоритму //Совместные покупки// (для этого в Системе создана рекомендация с кодом ##sov_pok##). У некоторых клиентов ещ ёнет истории покупок, поэтому для них будем выдавать рекомендации по алгоритму //Популярные товары// (для этого в Системе создана рекомендация с кодом ##popular##).84 +Рассмотрим пример добавления рекомендаций в сообщения. Мы хотим отправить клиентам email-рассылку с рекомендациями по алгоритму //Совместные покупки// (для этого в Системе создана рекомендация с кодом ##sov_pok##). У некоторых клиентов еще нет истории покупок, поэтому для них будем выдавать рекомендации по алгоритму //Популярные товары// (для этого в Системе создана рекомендация с кодом ##popular##). 83 83 86 +Для удобства работы определим переменную и проверим, можем ли мы рекомендовать клиенту хотя бы три продукта по алгоритму //Совместные покупки//. 87 + 84 84 {{code}} 85 85 {% set Rec=client.recommendations.sov_pok %} 86 86 {% if not Rec or Rec|length < 3 %} ... ... @@ -89,96 +89,106 @@ 89 89 90 90 {{/code}} 91 91 92 -Теперь переменная ##Rec## хранит массив объектов Продукт (##product##), подобранных по алгоритму //Совместные покупки//, а если клиент не совершил достаточного количества покупок, то по алгоритму //Популярные товары//. 93 93 94 -Отфильтруем массив рекомендованных продуктов, оставив только те, которые можно купить в интернет-магазине (значение логического пользовательского [[поля>>doc:Main.Using.Smart_Communications.Settings_SC.Data_field.WebHome]] ##eComAvailable## — ##true##). Кроме того, для вывода в сообщение нам понадобится не более 9 продуктов (три ряда по три продукта). 97 +{% set count_recs=0 %}{% set filteredRecommendation=[] %} 98 +{% for recommendation in clientRecommendation %} 99 +{% set item=recommendation %} 100 +{% if item not in filteredRecommendation and item.eComAvailable=='Y' and count_recs < 9 %} 101 + {% set filteredRecommendation=filteredRecommendation|merge([item]) %} 102 + {% set count_recs=count_recs + 1 %} 103 +{% endif %} 104 +{% endfor %} 105 +{% for batchrecommendation in filteredRecommendation|batch(3) %}## 106 +(% style="font-family:Menlo,Monaco,Consolas,~"Courier New~",monospace; white-space:pre" %){% if batchrecommendation|length == 3 %}(%%)## 95 95 96 - Дляэтого определим две новыхпеременные: в массив ##filteredRec##мыбудем записыватьотфильтрованныерекомендации,а переменная ##count_recs## будет служить в качестве счётчика.108 +== Механизм получения товарных рекомендаций == 97 97 98 -Переберём все продукты и добавим в массив те из них, которые не были добавлены ранее (таким образом обеспечивается дедупликация продуктов) и которые доступны для заказа в интернет-магазине. Каждый раз, когда мы добавляем продукт в массив отфильтрованных рекомендаций, значение переменной-счётчика увеличивается на 1. Таким образом, есть два сценария выхода из цикла: либо мы перебрали все продукты, либо мы отобрали 9 подходящих для добавления в сообщение. сбоощение 110 +((( 111 +* ((( 112 +=== Получение товарных рекомендаций целевым методом === 113 +))) 114 +))) 99 99 100 -{{code}} 101 -{% set count_recs=0 %} 102 -{% set filteredRec=[] %} 103 -{% for product in Rec %} 104 - {% if product not in filteredRec and product.eComAvailable=='Y' and count_recs < 9 %} 105 - {% set filteredRec=filteredRec|merge([product]) %} 106 - {% set count_recs=count_recs + 1 %} 107 - {% endif %} 108 -{% endfor %} 109 -{{/code}} 116 +Пример запроса с использованием целевого метода (Примечание: значение в кавычках отличается в зависимости от используемого метода): 110 110 111 -Теперь разобьём отфильтрованные рекомендации на группы по три. 118 +(% class="box" %) 119 +((( 120 +##{% set clientRecommendation=client.recommendations('RelatedPurchases') %}## 121 +))) 112 112 113 -Если в процессе фильтрации мы получили количество подходящих продуктов, не кратное 3, в последней группе будет меньше 3 продуктов (например, 7=3+3+1). Проверим и выведем в сообщение только те группы, в которых ровно три продукта. 123 +* ((( 124 +=== Получение товарных рекомендаций методом "Популярные" === 125 +))) 114 114 115 - Длякаждогопродуктавыведемнаименованиеи изображение.127 +Если после обработки целевым методом товаров нет или недостаточно, то выполняется запрос по методу **Популярные**: 116 116 117 -{{code}} 118 -{% for batch in filteredRec|batch(3) %} 119 - {% if batch|length==3 %} 120 - {% for recommendation in batch %}} 121 - {{ recommendation.name }} 122 - {{ recommendation.image_url }} 123 -{{/code}} 129 +(% class="box" %) 130 +((( 131 +##{% if not clientRecommendation or clientRecommendation|length < 3 %} 132 + {% set clientRecommendation=client.recommendations('Popular') %} 133 +{% endif %}## 134 +))) 124 124 125 - Далеереализуем такойсценарий:136 +В результате создаётся массив отфильтрованных товаров, которые соответствуют условиям ниже: 126 126 127 -* если цена продукта менялась (значения полей текущей цены в интернет-магазине и старой цены не равны), выведем старую и новую цену; 128 -* если цена продукта не менялась и поле цены в интернет-магазине заполнено, выведем текущую цену; 129 -* если поле цены в интернет-магазине не заполнено, выведем "Цена уточняется". 138 +(% class="box" %) 139 +((( 140 +##{% set count_recs=0 %} 141 +{% set filteredRecommendation=[] %} 142 +{% for recommendation in clientRecommendation %} 143 + {% set item=recommendation %}## 144 +))) 130 130 131 -{{code}} 132 -{% if recommendation.priceim and recommendation.oldprice and recommendation.priceim != recommendation.oldprice %} 133 - Цена: {{ recommendation.priceim }} 134 - Старая цена: {{ recommendation.oldprice_19 }} 135 -{% elseif recommendation.priceim %} 136 - Цена: {{ recommendation.priceim }} 137 -{% else %} 138 - Цена уточняется 139 -{% endif %} 140 -{% endfor %} 141 -{{/code}} 146 +Далее из массива товаров выбираются только те товары, в которых атрибут ##eComAvailable=='Y'##. Аналогичным образом товары добавляются в массив отсортированных до тех пор, пока не наберётся 9 штук: 142 142 143 -В итоге получим следующую конструкцию: 144 - 145 -{{showhide showmessage="Показать пример" hidemessage="Скрыть пример"}} 146 -{{code}} 147 -{% set Rec=client.recommendations.sov_pok %} 148 -{% if not Rec or Rec|length < 3 %} 149 - {% set Rec=client.recommendations.popular %} 150 -{% endif %} 151 -{% set count_recs=0 %} 152 -{% set filteredRec=[] %} 153 -{% for product in Rec %} 154 - {% if product not in filteredRec and product.eComAvailable=='Y' and count_recs < 9 %} 155 - {% set filteredRec=filteredRec|merge([product]) %} 156 - {% set count_recs=count_recs + 1 %} 157 - {% endif %} 158 -{% endfor %} 159 -{% for batch in filteredRec|batch(3) %} 160 - {% if batch|length==3 %} 161 - {% for recommendation in batch %}} 162 - {{ recommendation.name }} 163 - {{ recommendation.image_url }} 164 - {% if recommendation.priceim and recommendation.oldprice and recommendation.priceim != recommendation.oldprice %} 165 - Цена: {{ recommendation.priceim }} 166 - Старая цена: {{ recommendation.oldprice_19 }} 167 - {% elseif recommendation.priceim %} 168 - Цена: {{ recommendation.priceim }} 169 - {% else %} 170 - Цена уточняется 171 - {% endif %} 172 - {% endfor %} 148 +(% class="box" %) 149 +((( 150 + ## {% if item not in filteredRecommendation and item.eComAvailable=='Y' and count_recs < 9 %} 151 + {% set filteredRecommendation=filteredRecommendation|merge([item]) %} 152 + {% set count_recs=count_recs + 1 %} 173 173 {% endif %} 174 -{% endfor %} 175 -{{/code}} 176 -{{/showhide}} 154 +{% endfor %}## 155 +))) 177 177 157 +* ((( 158 +=== Вывод товаров === 159 +))) 160 + 161 +Товары выводятся строго по 3 штуки на 1 строку: 162 + 178 178 (% class="box" %) 179 179 ((( 180 -**Читайте также:** 165 +##{% for batchrecommendation in filteredRecommendation|batch(3) %} 166 + {% if batchrecommendation|length==3 %} 167 + {% for recommendation in batchrecommendation %}}## 168 +))) 181 181 182 -* [[Рекомендации>>doc:Main.General_information.Loymax_Loyalty.recommendation_systems.Commercial_recommendations.WebHome]]183 - *[[Шаблонизаторсообщений>>doc:Main.Using.Smart_Communications.Mass_mailings.Template_builder.WebHome]]170 +* ((( 171 +=== Вывод цен === 184 184 ))) 173 + 174 +Если заполнены атрибуты старой и новой цены и они отличаются друг от друга, то выводятся обе цены: 175 + 176 +(% class="box" %) 177 +((( 178 +##{% if recommendation.priceim and recommendation.oldprice_19 and recommendation.priceim != recommendation.oldprice_19 %} 179 + ~{~{ recommendation.priceim }} 180 + ~{~{ recommendation.oldprice_19 }}## 181 +))) 182 + 183 +Если заполнен атрибут цены Интернет-магазина (##priceim)##, выводится цена Интернет-магазина: 184 + 185 +(% class="box" %) 186 +((( 187 +##{% elseif recommendation.priceim %} 188 + ~{~{ recommendation.priceim }}## 189 +))) 190 + 191 +Если нет данных, то отображается "n/a": 192 + 193 +(% class="box" %) 194 +((( 195 +##{% else %} 196 + n/a 197 +{% endif %}## 198 +)))
- recommendations.png
-
- Размер
-
... ... @@ -1,1 +1,1 @@ 1 - 23.1 KB1 +14.2 KB - Содержимое