Исходный код вики Рекомендации
Последние авторы
| author | version | line-number | content |
|---|---|---|---|
| 1 | (% class="lead" %) | ||
| 2 | Функционал рекомендаций позволяет выводить в текст сообщений товары, подобранные по одному из поддерживаемых алгоритмов на основе прошлых действий данного клиента. | ||
| 3 | |||
| 4 | {{info}} | ||
| 5 | Функционал рекомендаций поддерживается только при настроенной интеграции с модулем Loymax AI. | ||
| 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 запрос, содержащий: | ||
| 20 | 1*. идентификатор клиента, | ||
| 21 | 1*. название алгоритма рекомендации, | ||
| 22 | 1*. параметры алгоритма (например, сколько продуктов рекомендовать). | ||
| 23 | 1. Loymax AI возвращает массив продуктов, сформированный по указанному алгоритму. | ||
| 24 | 1. Loymax Smart Communications отправляет сообщение с рекомендациями. | ||
| 25 | |||
| 26 | == Настройка рекомендаций == | ||
| 27 | |||
| 28 | Чтобы просмотреть список созданных рекомендаций, на панели слева нажмите на узел **Рекомендации**. | ||
| 29 | |||
| 30 | |(% style="border-color:#ffffff; text-align:center" %){{lightbox image="recommendations.png" width="660"/}} | ||
| 31 | |||
| 32 | Вы можете совершать следующие действия с рекомендациями: | ||
| 33 | |||
| 34 | * Создать новую рекомендацию ([[image:1.png]]). | ||
| 35 | * Отсортировать таблицу по содержимому любого столбца ([[image:2.png]]). | ||
| 36 | * Редактировать, копировать или удалить рекомендацию ([[image:3.png]]). Вы также можете редактировать рекомендацию по клику на её код или наименование. | ||
| 37 | |||
| 38 | По нажатию кнопки создания новой или редактирования существующей рекомендации откроется окно редактирования рекомендации. | ||
| 39 | |||
| 40 | |(% style="border-color:white; width:70%" %)((( | ||
| 41 | Заполните обязательные поля рекомендации: | ||
| 42 | |||
| 43 | * **Код рекомендации** — короткий код, который будет использоваться для добавления рекомендаций в сообщения. | ||
| 44 | * **Наименование рекомендации** — человекочитаемое имя, которое будет отображаться в списке настроенных рекомендаций. | ||
| 45 | * **Алгоритм рекомендации** — выберите требуемый алгоритм из списка. Подробнее о поддерживаемых алгоритмах см. в [[отдельной статье>>doc:Main.General_information.Loymax_Loyalty.recommendation_systems.Commercial_recommendations.WebHome]]. | ||
| 46 | |||
| 47 | Настройте параметры рекомендации. Набор доступных параметров зависит от выбранного алгоритма. | ||
| 48 | |||
| 49 | * **Количество рекомендаций** — количество продуктов, которые будет возвращать модуль Loymax AI. | ||
| 50 | * **Рассчитывать на основе** — источник, из которого Loymax Smart Communications будет брать продукты (для расчёта рекомендаций по алгоритмам //Совместные покупки//, //Похожие товары//) или категории (для расчёта рекомендаций по алгоритму //Популярные товары в категории//). | ||
| 51 | )))|(% style="border-color:white; text-align:center; width:30%" %){{lightbox image="recommendation_edit.png" width="400"/}} | ||
| 52 | |||
| 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 | |||
| 80 | == Подстановка рекомендаций в сообщение == | ||
| 81 | |||
| 82 | Для отображения рекомендаций в сообщениях необходимо использовать конструкции [[шаблонизатора>>doc:Main.Using.Smart_Communications.Mass_mailings.Template_builder.WebHome]]. | ||
| 83 | |||
| 84 | Рассмотрим пример добавления рекомендаций в сообщения. Мы хотим отправить клиентам email-рассылку с рекомендациями по алгоритму //Совместные покупки// (для этого в Системе создана рекомендация с кодом ##sov_pok##). У некоторых клиентов еще нет истории покупок, поэтому для них будем выдавать рекомендации по алгоритму //Популярные товары// (для этого в Системе создана рекомендация с кодом ##popular##). | ||
| 85 | |||
| 86 | Для удобства работы определим переменную и проверим, можем ли мы рекомендовать клиенту хотя бы три продукта по алгоритму //Совместные покупки//. | ||
| 87 | |||
| 88 | {{code}} | ||
| 89 | {% set Rec=client.recommendations.sov_pok %} | ||
| 90 | {% if not Rec or Rec|length < 3 %} | ||
| 91 | {% set Rec=client.recommendations.popular %} | ||
| 92 | {% endif %} | ||
| 93 | |||
| 94 | {{/code}} | ||
| 95 | |||
| 96 | |||
| 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 %}(%%)## | ||
| 107 | |||
| 108 | == Механизм получения товарных рекомендаций == | ||
| 109 | |||
| 110 | ((( | ||
| 111 | * ((( | ||
| 112 | === Получение товарных рекомендаций целевым методом === | ||
| 113 | ))) | ||
| 114 | ))) | ||
| 115 | |||
| 116 | Пример запроса с использованием целевого метода (Примечание: значение в кавычках отличается в зависимости от используемого метода): | ||
| 117 | |||
| 118 | (% class="box" %) | ||
| 119 | ((( | ||
| 120 | ##{% set clientRecommendation=client.recommendations('RelatedPurchases') %}## | ||
| 121 | ))) | ||
| 122 | |||
| 123 | * ((( | ||
| 124 | === Получение товарных рекомендаций методом "Популярные" === | ||
| 125 | ))) | ||
| 126 | |||
| 127 | Если после обработки целевым методом товаров нет или недостаточно, то выполняется запрос по методу **Популярные**: | ||
| 128 | |||
| 129 | (% class="box" %) | ||
| 130 | ((( | ||
| 131 | ##{% if not clientRecommendation or clientRecommendation|length < 3 %} | ||
| 132 | {% set clientRecommendation=client.recommendations('Popular') %} | ||
| 133 | {% endif %}## | ||
| 134 | ))) | ||
| 135 | |||
| 136 | В результате создаётся массив отфильтрованных товаров, которые соответствуют условиям ниже: | ||
| 137 | |||
| 138 | (% class="box" %) | ||
| 139 | ((( | ||
| 140 | ##{% set count_recs=0 %} | ||
| 141 | {% set filteredRecommendation=[] %} | ||
| 142 | {% for recommendation in clientRecommendation %} | ||
| 143 | {% set item=recommendation %}## | ||
| 144 | ))) | ||
| 145 | |||
| 146 | Далее из массива товаров выбираются только те товары, в которых атрибут ##eComAvailable=='Y'##. Аналогичным образом товары добавляются в массив отсортированных до тех пор, пока не наберётся 9 штук: | ||
| 147 | |||
| 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 %} | ||
| 153 | {% endif %} | ||
| 154 | {% endfor %}## | ||
| 155 | ))) | ||
| 156 | |||
| 157 | * ((( | ||
| 158 | === Вывод товаров === | ||
| 159 | ))) | ||
| 160 | |||
| 161 | Товары выводятся строго по 3 штуки на 1 строку: | ||
| 162 | |||
| 163 | (% class="box" %) | ||
| 164 | ((( | ||
| 165 | ##{% for batchrecommendation in filteredRecommendation|batch(3) %} | ||
| 166 | {% if batchrecommendation|length==3 %} | ||
| 167 | {% for recommendation in batchrecommendation %}}## | ||
| 168 | ))) | ||
| 169 | |||
| 170 | * ((( | ||
| 171 | === Вывод цен === | ||
| 172 | ))) | ||
| 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 | ))) |