Геймификация (акции с заданиями)
Список методов АПИ для акций с заданиями
С помощью модуля Manzana Loyalty Online можно настроить такую механику акции, при которой участник ПЛ вступает в игру в мобильном приложении и последовательно выполняет задания с возможностью пропуска, получает за них награды и видит прогресс прохождения игры у себя в личном кабинете.
Например, компания проводит акцию «Больше покупок-больше скидка», необходимо в течение месяца каждую неделю покупать определенное количество товаров из разных категорий и получать за выполнение заданий растущую скидку на приобретение товаров премиум коллекции.

Рис. Акция с заданиями
Для настройки акции с заданиями в модуле лояльности предусмотрено 3 ключевых сущности: Коллекции заданий, Задания и Награды за выполнение заданий.
Также предусмотрено специальное Правило для акций с заданиями.
Коллекции заданий
Для каждой отдельной акции через интерфейс настраиваются «Коллекции заданий», и к этой сущности привязывается набор заданий с определенной последовательностью выполнения, а также набор наград, которые будут выдаваться за выполнение заданий.
Для того чтобы создать Коллекции заданий, необходимо перейти через раздел меню Правила программы => в Акции с заданиями.
На каждом проекте настраивается своя кампания и партнер.
Параметры настройки Коллекции заданий:
| Поле | Описание | Обязательное поле | Редактирование |
| Наименование | Наименование коллекции заданий (акции с заданиями). Отображается в личном кабинете. | Да | Поле доступно для редактирования, заполняется вручную. |
| Внешний идентификатор | Уникальное текстовое значение. Используется для интеграции записей с внешними системами. | Нет | Поле доступно для редактирования, заполняется вручную |
| Изображение | Параметр передается в ответе на запросы МП и ЛК и используется для отображения картинки. | Нет | Поле доступно для редактирования, заполняется вручную |
| Партнер | Ссылка на партнера в системе. Можно выбрать из выпадающего списка или создать партнера из карточки. | Да | Поле доступно для редактирования, заполняется вручную |
| Дата начала действия | Дата начала действия коллекции заданий. | Да | Поле доступно для редактирования, заполняется вручную |
| Дата окончания действия | Дата окончания действия коллекции заданий. | Да | Поле доступно для редактирования, заполняется вручную |
| Возможность выбора задания контактом | Активация параметра позволяет контакту предоставить возможность акцептовать задания. Возможные значения:
| Да | Параметр доступен для редактирования, активируется вручную |
| Возможность отмены/пропуска задания контактом | Активация параметра позволяет контакту предоставить возможность отменить акцептованное задание или пропустить. Возможные значения:
| Да | Параметр доступен для редактирования, активируется вручную |
| Описание | Обобщенная информация об условиях акции с заданиями. | Нет | Поле доступно для редактирования, заполняется вручную |
| Фильтр по маркетинговым спискам | Параметр, значение которого позволяет отнести к правилу начисления произвольное количество маркетинговых списков для организации фильтрации по контактам. Возможные значения:
Значение по умолчанию Не используется. |
Нет | Поле доступно для редактирования, заполняется вручную |
| Фильтр по спискам магазинов | Представление, в котором показываются списки магазинов, которые относятся к фильтру Возможные значения:
Значение по умолчанию: Не используется. |
Нет | Поле доступно для редактирования, заполняется вручную |

Рис. Настроенная Коллекция заданий
Задания
Задания, которые относятся к Коллекции заданий, настраиваются в одноименном подразделе меню: Правила программы => Акции с заданиями => Задания.
Можно выбрать 1 задание:
- Приобрести товаров на определенную сумму чеков за период.
В Задании прикрепляется награда, которая будет выдаваться за его выполнение.
Задания могут принимать 7 статусов:
1 Текущее
2 Выполнено
3 Доступно для выполнения, то есть не текущее и ещё не выполнено (все остальные незавершенные задания коллекции)
4 Просрочено, если задание не выполнено и завершено по сроку действия
5 Время задания не наступило (если задание не выполнено, и дата начала еще не наступила)
6 Отменено - присваивается по POST GameTask/Cancel. Отменённое задание можно повторно выбрать вручную, но нельзя назначить автоматически.
7 Пропущено - присваивается заданиям с меньшим номером, когда пользователь выбирает задание с бо́льшим номером. Пропущенное задание может быть назначено автоматически.
Статусы вычисляются динамически методом GET GameTask/GetAllByContactAndCollection.
Каждому Заданию из коллекции соответствует порядковый номер его выполнения. Номер Заданию проставляется автоматически при создании задания из Коллекции. Каждому новому заданию назначается следующий по очереди порядковый номер (цифра) в рамках коллекции.
При привязке Контакта к Коллекции автоматически перебираются задания по порядковому номеру, проверяются сроки действия и назначается первое доступное задание текущим (статус=1)
Если коллекция не акцептована контактом, но 1-ое Задания будет иметь статус «Пропущено»
В рамках одной Коллекции задания контакту может быть присвоено только одно Задание. После выполнения задания автоматически активируется следующее (по порядку), если текущая дата укладывается в период действия задания. Если текущее задание завершило действие, и контакт не выполнил это задание, то для него текущим становится следующее по порядку незавершенное задание. Если контакт пропускает задание, оно может быть назначено позже (ночной джоб назначает первое доступное задание с наименьшим номером). Если отменяет задание — оно не назначается автоматически повторно.
Порядок выполнения заданий в коллекции можно поменять. Чтобы задание заработало на процессинге, оно должно быть переведено в статус «Активно».
Параметры настройки Задания:
| Поле | Описание | Обязательное поле | Редактирование |
| Общие сведения | |||
| Наименование | Наименование задания. Отображается при поиске, а также в личном кабинете. | Да | Поле доступно для редактирования, заполняется вручную. |
| Внешний идентификатор | Уникальное текстовое значение. Используется для интеграции записей с внешними системами. | Нет | Поле доступно для редактирования, заполняется вручную |
| Изображение | Параметр передается в ответе на запросы МП и ЛК и используется для отображения картинки. | Нет | Поле доступно для редактирования, заполняется вручную |
| Дата начала действия | Дата начала действия задания. | Да | Поле доступно для редактирования, заполняется вручную |
| Дата окончания действия | Дата окончания действия задания. | Да | Поле доступно для редактирования, заполняется вручную |
| Коллекция заданий | Ссылка на коллекцию заданий. Можно выбрать из выпадающего списка или создать из карточки. | Да | Поле доступно для редактирования, заполняется вручную |
| Номер | Числовое значение. Номер задания, задающий порядок выполнения заданий в коллекции. | Да | Поле доступно для редактирования, заполняется вручную |
| Тип задания | Параметр, определяющий тип выполнения задания. Возможные значения:
| Да | Поле доступно для редактирования, заполняется вручную |
| Тип покупки | Параметр, определяющий вариант выполнения задания по выбранному типу. Возможные значения:
| Да | Поле доступно для редактирования, заполняется вручную |
| Описание | Обобщенная информация об условиях выполнения задания. | Нет | Поле доступно для редактирования, заполняется вручную |
| Настройки задания, если в поле Тип покупки выбрано значение «Товары за период» | |||
| Дата начала периода | Дата начала периода для выполнения задания | Нет | Поле доступно для редактирования, заполняется вручную |
| Дата окончания периода | Дата окончания периода для выполнения задания | Нет | Поле доступно для редактирования, заполняется вручную |
| Количество товаров от | Количество товаров из списка, которое необходимо купить, чтобы считать задание выполненным | Нет | Поле доступно для редактирования, заполняется вручную |
| Тип товарной общности | Совокупность элементов товарного каталога, объединенных в списки | Нет | Поле доступно для редактирования, заполняется вручную |
| Список товаров | Список товаров, из которого необходимо купить заданное условиями задания количество товаров, чтобы считать задание выполненным | Нет | Поле доступно для редактирования, заполняется вручную |
| Список подгрупп товаров | Список подгрупп товаров, из которых необходимо купить заданное условиями задания количество товаров, чтобы считать задание выполненным | Нет | Поле доступно для редактирования, заполняется вручную |
| Список групп товаров | Список групп товаров, из которых необходимо купить заданное условиями задания количество товаров, чтобы считать задание выполненным | Нет | Поле доступно для редактирования, заполняется вручную |
| Список подкатегорий товаров | Список подкатегорий товаров, из которых необходимо купить заданное условиями задания количество товаров, чтобы считать задание выполненным | Нет | Поле доступно для редактирования, заполняется вручную |
| Список категорий товаров | Список категорий товаров, из которых необходимо купить заданное условиями задания количество товаров, чтобы считать задание выполненным | Нет | Поле доступно для редактирования, заполняется вручную |
| Список брендов | Список брендов, из которых необходимо купить заданное условиями задания количество товаров, чтобы считать задание выполненным | Нет | Поле доступно для редактирования, заполняется вручную |
| Список производителей | Список производителей, из которых необходимо купить заданное условиями задания количество товаров, чтобы считать задание выполненным | Нет | Поле доступно для редактирования, заполняется вручную |
| Награды за выполнения задания | |||
| Награда | Ссылка на награду за выполнение задания. Можно выбрать из выпадающего списка или создать из карточки. | Нет | Поле доступно для редактирования, заполняется вручную |
В интерфейсе настроенная карточка Задания выглядит так:

Рис. Настроенная карточка Задания (детализация)
Остаток от совершённых покупок, превышающий целевое значение для выполнения текущего задания, учитывается при расчёте результатов следующего задания той же самой коллекции, если они попадают в период его действия. Например, купил 5 товар вместо 3, остаток из 2 товаров добавляются в результат другого задания на покупку товаров. Работает только для типа покупки «Товары за период».
Награды необходимо прикреплять к заданиям в 2 местах интерфейса:
- непосредственно в настройке Задания в виде ссылки
- как связанное представление по кнопке «+Добавление нового элемента»

Награды за выполнение заданий
Награды за выполнение заданий, которые относятся к Коллекциям заданий, настраиваются в одноименном подразделе меню: Правила программы => Акции с заданиями => Награды за выполнение заданий.
Возможными вариантами наград могут быть:
- Начисление бонусов
- Выпуск купона
- Акция (предложение), в этом случае для контакта создается расширенный атрибут с ключом из определения в наборе РА контакта, со значением, в зависимости от типа атрибута в этом наборе. РА используется в фильтрации правила для начисления поощрения.
После сохранения заполненной формы Награды, к ней можно прикрепить задание, за которое она дается. Для предоставления награды она должна быть переведена в статус «Активно».
Параметры настройки Награды за выполнение заданий:
| Поле | Описание | Обязательное поле | Редактирование |
| Общие сведения | |||
| Наименование | Наименование награды. Отображается при поиске, а также в личном кабинете. | Да | Поле доступно для редактирования, заполняется вручную. |
| Внешний идентификатор | Уникальное текстовое значение. Используется для интеграции записей с внешними системами. | Нет | Поле доступно для редактирования, заполняется вручную |
| Изображение | Параметр передается в ответе на запросы МП и ЛК и используется для отображения картинки. | Нет | Поле доступно для редактирования, заполняется вручную |
| Коллекция заданий | Ссылка на коллекцию заданий. Можно выбрать из выпадающего списка или создать из карточки. | Да | Поле доступно для редактирования, заполняется вручную |
| Медаль | Визуализация награды в ЛК участника ПЛ. Возможные значения:
| Да | Параметр доступен для редактирования, активируется вручную |
| Название медали | Название медали, которое будет отображаться в ЛК участника ПЛ. | Нет | Поле доступно для редактирования, заполняется вручную |
| Изображение медали | Параметр передается в ответе на запросы МП и ЛК и используется для отображения картинки. | Нет | Поле доступно для редактирования, заполняется вручную |
| Описание медали | Обобщенная информация о медали. | Нет | Поле доступно для редактирования, заполняется вручную |
| Тип награды | Параметр, в котором можно выбрать тип награды за выполнение задания. Возможные значения:
| Нет | Поле доступно для редактирования, заполняется вручную |
| Описание | Обобщенная информация о награде за выполнение задания | Да | Поле доступно для редактирования, заполняется вручную |
| Настройки награды, если в поле Тип награды выбрано значение «Начисление бонусов» | |||
| Значение бонуса | Числовое значение поощрения в виде бонуса. | Нет | Поле доступно для редактирования, заполняется вручную |
| Статусный бонус | Параметр, определяющий, какие бонусы будут начисляться: статусные или нет. Возможные значения:
Значение по умолчанию: Нет. | Нет | Поле доступно для редактирования, активируется вручную |
| Кампания | Ссылка на кампанию, в рамках которой будут начислены бонусы. Можно выбрать из выпадающего списка или создать из карточки. | Нет | Поле доступно для редактирования, заполняется вручную |
| Тип вычисления даты начала действия | Тип вычисления даты начала действия бонусов. Возможные значения:
Если данное поле установлено в значение «Дата начисления», то бонусы начинают своё действие с момента того, как выполнилось задание. «Дата начисления + период неактивности» позволяет установить срок начала действия баллов не в момент выполнения здания, а через некоторый срок, который регламентируется полем «Период неактивности». Значение по умолчанию: Дата начисления. | Нет | Поле доступно для редактирования, заполняется вручную |
| Дата начала действия | Дата начала действия бонусов, начисленных при получении награды. | Нет | Поле доступно для редактирования, заполняется вручную |
| Период неактивности | Период неактивности бонусов. В поле указывается число, которое в зависимости от значения поля «Тип периода неактивности» означает на сколько дней или, например, месяцев откладывается начало действия бонусов. | Нет | Поле доступно для редактирования, заполняется вручную |
| Тип периода неактивности | Параметр определяет единицы измерения числа, указанного в поле «Период неактивности». Возможные значения:
Значение по умолчанию Дни. | Нет | Поле доступно для редактирования, заполняется вручную |
| Тип вычисления даты окончания действия | Тип вычисления даты окончания действия бонусов. Возможные значения: • Дата начала + период действия • Фиксированная дата Если значение поля = «Дата начала + период действия», то дата окончания действия бонусов вычисляется на основании даты начала действия бонусов, к которой добавляется значение поля «Период действия». Само значение этого поля может быть выражено в днях, месяцах, кварталах, годах. | Нет | Поле доступно для редактирования, заполняется вручную |
| Дата окончания действия | Дата окончания действия бонусов. | Нет | Поле доступно для редактирования, заполняется вручную |
| Период действия | Период действия бонусов. В поле указывается число, которое в зависимости от значения поля «Тип периода действия» означает сколько дней или, например, месяцев действуют бонусы. | Нет | Поле доступно для редактирования, заполняется вручную |
| Тип периода действия | Тип периода действия бонусов. Возможные значения: • Дни • Месяцы • Кварталы • Года | Нет | Поле доступно для редактирования, заполняется вручную |
| Округление даты окончания действия | Округление даты окончания действия бонусов. В этом случае если установить значение поля «Да», то бонус перестанет быть активным не в момент, когда он стал активным + период действия, а сразу по окончании того периода, на который приходится этот момент (округление зависит от типа периода действия). Т.е. округление даты окончания действия балла происходит в большую сторону до 00:00 ч следующих суток. | Нет | Поле доступно для редактирования, активируется вручную |
| Настройки награды, если в поле Тип награды выбрано значение «Выпуск купона» | |||
| Период неактивности | Период неактивности купона. В поле указывается число, которое в зависимости от значения поля «Тип периода неактивности» означает на сколько дней или, например, месяцев откладывается начало действия бонусов. | Нет | Поле доступно для редактирования, заполняется вручную |
| Тип периода неактивности | Параметр определяет единицы измерения числа, указанного в поле «Период неактивности». Возможные значения: • Дни • Месяцы • Кварталы • Года Значение по умолчанию Дни. | Нет | Поле доступно для редактирования, заполняется вручную |
| Округление даты начала действия | Округление даты начала действия купона. Возможные значения: • Да • Нет Значение по умолчанию: Да | Нет | Поле доступно для редактирования, активируется вручную |
| Период действия | Период действия купона. В поле указывается число, которое в зависимости от значения поля «Тип периода действия» означает сколько дней или, например, месяцев действует купон. | Нет | Поле доступно для редактирования, заполняется вручную |
| Тип периода действия | Тип периода действия купона. Возможные значения:
| Нет | Поле доступно для редактирования, заполняется вручную |
| Округление даты окончания действия | Округление даты окончания действия купона. Значение по умолчанию: Да | Нет | Поле доступно для редактирования, активируется вручную |
| Выпуск купона | Ссылка на созданный выпуск купонов. | Нет | Поле доступно для редактирования, заполняется вручную |
| Количество купонов | Количество купонов, положенных за выполнение задания в качестве награды. | Нет | Поле доступно для редактирования, заполняется вручную |
| Настройки награды, если в поле Тип награды выбрано значение «Акция (предложение)» | |||
| Набор РА контакта | Ссылка на создание набора расширенных атрибутов контакта. Можно выбрать из выпадающего списка или создать из карточки. | Нет | Поле доступно для редактирования, заполняется вручную |
| Задание к награде | |||
| Задание | Добавляется как связанное представление после сохранения заполненной формы Награды. | ||
Настроенная награда в виде купона за выполнение задания:

Рис. Настроенная награда (выпуск купона) за выполнение задания
Для того, чтобы получить скидку 3% по купону необходимо настроить правило начисления Поощрение за купон, связанное с выпуском этого купона.
Запуск Акции с заданиями
После того как настроены Коллекции заданий, Задания, Награды за их выполнение и правила начисления для наград, акцию необходимо запустить. Запуск Коллекции заданий осуществляется по кнопке «Запустить».

Для успешного запуска все задания, прикрепленные к коллекции, должны быть в статусе «Активно». Если при попытке запуска не все связанные задания активны, пользователь видит сообщение в интерфейсе лояльности «Внимание! Не все связанные задания активны. Коллекция может быть запущена, если есть хотя бы одно связанное активное задание».

После запуска статус в коллекции меняется на «Запущена».

Рис. Коллекция заданий со связанными Заданиями

Рис. Коллекция заданий со связанными Наградами за выполнение заданий
Помимо запуска акции в карточке коллекции заданий, необходимо включить партнерскую настройку Loyalty.Processing.Gametaskcollection. Если данная настройка установлена в одной из значений 1, у или Y – то функционал считается активным.
Пользователь Manzana Loyalty Online может отслеживать выполнение контактом заданий и получение наград через карточку контакта.
В карточке Контакта отображаются связанные представления «Коллекции заданий», «Задания контакта», «Награды контакта» во вкладке «Правила» после подтаба «Клубы контакта». Во вкладке «Задания контакта» отображаются только задания в статусе «Текущие», т.е. с наименьшим доступным порядковым номером после выбора коллекции.

В карточке контакта также можно видеть информацию по начисленным бонусам и выданным купонам в качестве наград за выполнение заданий. Во вкладке «Бонусы» в параметре «Источник» начисления проставляется «Выполнение задания» для бонусов, начисленных за выполнение заданий в рамках коллекций. Во вкладке «Купоны» отображается информация по получению и гашению купонов, полученных за выполнение заданий в рамках коллекций с указанием выпуска купонов, по которому они были выпущены. Во вкладке «Выпуски» хранится информация по выпуску купонов, выданных в рамках коллекций заданий.

Рис. Бонусы, начисленные за выполнение задания, в карточке Контакта
Список методов АПИ для акций с заданиями
Для работы и отображения заданий геймификации в Личном кабинете/Мобильном приложении реализованы методы веб-сервиса OData для всех сервисов:
- Получить все коллекции заданий - GET GameTaskCollection/GetAll
- Получить коллекцию заданий по ее идентификатору - GET GameTaskCollection/Get
- Получить все задания по коллекции заданий - GET GameTask/GetAllByCollection
- Получить задание по его идентификатору - GET GameTask/Get
- Получить коллекции заданий по контакту - GET GameTaskCollection/GetAllByContact
- Добавить контакт в коллекцию - POST GameTaskCollection/BindContact
- Получить все задания по контакту и коллекции - GET GameTask/GetAllByContactAndCollection
- Выбрать текущее задание контакта - POST GameTask/BindContact
- Отменить текущее задание контакта - POST GameTask/Cancel
- Получить награду по ее идентификатору - GET GameReward/Get
- Получить все награды по коллекции - GET GameReward/GetAllByCollection
- Получить все награды по контакту и коллекции - GET GameReward/GetAllByContactAndCollection
- Получить все задания для получения награды - GET GameTask/GetAllByReward
- Получить награды по заданию - GET GameReward/GetAllByGameTask
При проверке выполнения задания учитываются возвраты. Возвраты по завершённым заданиям не уходят в минус текущего задания, вычитаются сначала из текущего задания, потом из последнего выполненного. При возврате выполненное задание может вернуться в статус «Доступно», но выданные награды не отнимаются и повторно не выдаются.
Пример:
Для задания нужно купить 6 определенных товаров.
Купили 7, товары по заданиям распределились следующим образом:
Задание 1 выполнено: 6 товаров
Задание 2: 1 товар, задание в статусе "текущее"
После вернули 2 товара.
Задание 1 поменяло статус на доступное (незавершенное) : 5 товаров
Задание 2 - текущее: 0 товаров.
Проверка выполнения заданий и начисление наград осуществляется каждые 20 секунд ежедневно джобом «gamification run».