Пример 8.1. Простой способ создания списка получателей на основе членов определенной роли Sitecore?

Вопрос: Есть ли уловка "из коробки" для создания нового списка получателей для Email Experience Manager на основе участников из определенной роли Sitecore?

Я провел некоторые исследования, и ListManager в EXM (ECM) позволяет импортировать только контактный файл CSV без интеграции с модулем Sitecore UserManager.

Основываясь на этой статье: http://blog.boro2g.co.uk/sitecore-export-users-role/ можно было бы реализовать экспорт в CSV из "Члены роли" и импортировать его обратно в базу данных EXM.

2 ответа

Решение

Это можно сделать с расширением условий для менеджера списков. Предполагается, что преобразование базы данных Google Analytics из DMS в 8 прошло успешно, и у вас есть контакты-пользователь, которые ранее соответствовали вашим посетителям-пользователям. Вы можете создать "Сегментированный список" контактов, который будет соответствовать некоторой роли. Для таблицы сегментации вы должны создать новое пользовательское условие, которое будет фильтровать ваши контакты. (Логика может быть достаточно простой: вы знаете контактный адрес электронной почты, затем вы находите пользователя по этому адресу и проверяете его роли).

Сначала вам нужно добавить поле "Роль пользователя" в ваши контакты в sitecore_analytics_index. Для этого вы должны добавить новое вычисляемое поле в <fields hint="raw:AddComputedIndexField"> раздел Sitecore.ContentSearch.Lucene.Index.Analytics.config (Я предполагаю, что вы используете Lucene).

Вот пример:

<field fieldName="Contact.ProfileProperties.UserRole" emptyString="_EMPTY_" nullValue="_NULL_" storageType="YES" indexType="UNTOKENIZED">Your.Type.Name, Your.Assembly</field>

Ваш тип должен получить роль индексируемого пользователя по идентификатору.

После этого добавьте новое условие с именем "UserRole" в /sitecore/system/Settings/Rules/Definitions/Elements/Segment Builder, где поле "Text" будет:

where the userrole [operatorid,StringOperator,,compares to] [value,,,specific userrole]

И "Тип" указывает на ваш пользовательский класс, как показано ниже:

public class UserRoleCondition<T> : TypedQueryableStringOperatorCondition<T, IndexedContact> where T : VisitorRuleContext<IndexedContact>
{
    protected override Expression<Func<IndexedContact, bool>> GetResultPredicate(T ruleContext)
    {
        var userrole = this.Value ?? string.Empty;

        return
            this.GetCompareExpression(
                c => (string)c[(ObjectIndexerKey)"contact.profileproperties.userrole"], userrole);

    }
}

Теперь вы можете использовать новое условие роли пользователя в сегментации для своего сегментированного списка.

Другие вопросы по тегам