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


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

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