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


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

Новости
Обновления
Облако тегов
Словарь
Наш блог
YouTube и Rutube
Telegram