Creatio development guide
PDF
Это документация Creatio версии 7.16.0. Мы рекомендуем использовать новую версию документации.

Добавление обработчика макроса в шаблоне email-сообщения

Glossary Item Box

Общие сведения

Шаблоны email-сообщений используются, например, при общении со службой поддержки. Шаблоны доступны в справочнике [Шаблоны email-сообщений] ([Email templates]). Подробнее об их настройке можно узнать из статьи "Настройка автоматической отправки email-уведомлений".

Например, в письме, уведомляющем клиента о закрытии его обращения, используется шаблон “Сообщение о закрытии обращения”. Для подстановки некоторых значений колонок объектов системы в шаблоны email-сообщений используются преднастроенные макросы, например, обращение к контакту или должность ответственного.

Creatio позволяет реализовать собственную логику заполнения значения, которое возвращает обработчик макросов. При этом во время обработки макроса система выполнит реализованный разработчиком алгоритм, а не базовую логику.

На специализированный обработчик класса указывает тег @Invoke. Далее через точку должно быть указано имя класса реализующего интерфейс IMacrosInvokable, который включает в себя метод GetMacrosValue(). Этот метод должен возвратить строку, которая будет подставлена вместо строки макроса.

Для реализации пользовательского обработчика макроса необходимо:

  1. Создать класс, реализующий интерфейс IMacrosInvokable.
  2. Зарегистрировать макрос в таблице EmailTemplateMacros, указав для него ParentId (базовый шаблон с тегом @Invoke) и ColumnPath (имя класса).
  3. Добавить макрос в шаблон email-сообщения.

Описание примера

Добавить обработчик макроса шаблона email-сообщения, который будет возвращать строку “Test”.

Исходный код

Пакет с реализацией примера можно скачать по ссылке.

Пример реализации примера

1. Создание класса, реализующего интерфейс IMacrosInvokable

Чтобы создать класс, реализующий интерфейс IMacrosInvokable, добавьте в пакет разработки схему [Исходный код] ([Source Code]). Для этого в разделе [Конфигурация] на вкладке [Схемы] ([Schemas]) выполните команду меню [Добавить] ([Add]) — [Исходный код] ([Source Code]) (рис. 1).

Рис. 1. — Создание новой схемы [Исходный код] ([Source Code])

Для созданной схемы объекта укажите:

  • [Заголовок] ([Title]) — "Генератор текстовой строки" ("Text string generator").
  • [Название] ([Name]) — "UsrTestStringGenerator".

Исходный код схемы:

namespace Terrasoft.Configuration
{
    using System;
    using Terrasoft.Core;
    // Класс обработчика макроса шаблона Email-сообщения.
    public class UsrTestStringGenerator : IMacrosInvokable
    {
        // Пользовательское соединение.
        public UserConnection UserConnection {
            get;
            set;
        }
        // Метод, возвращающий подставляемое значение.
        public string GetMacrosValue(object arguments) {
            return "Тестовая строка";
        }
    }
}

Опубликуйте созданную схему.

2. Регистрация макроса в таблице EmailTemplateMacros

Чтобы зарегистрировать макрос в таблице EmailTemplateMacros, выполните следующий SQL-запрос:

INSERT INTO EmailTemplateMacros(Name, Parentid, ColumnPath)
VALUES (
    'UsrTestStringGenerator',
    (SELECT TOP 1 Id
    FROM EmailTemplateMacros
    WHERE Name = '@Invoke'),
    'Terrasoft.Configuration.UsrTestStringGenerator'
)

3. Добавление макроса в шаблон email-сообщения

После регистрации макроса его можно использовать в шаблонах email-сообщений. Для этого измените одну или несколько записей справочника [Шаблоны email-сообщений] ([Email templates]) (рис. 2).

Рис. 2. — Справочник [Шаблоны email-сообщений]

Например, для изменения содержимого сообщений, автоматически отправляемых при разрешении обращения, необходимо изменить запись [Сообщение о разрешении обращения] ([Case resolution notification]). Если в шаблон добавить макрос [#@Invoke.UsrTestStringGenerator#] (рис. 3), то при отправке сообщения пользователю вместо макроса будет подставлено значение "Test".

Рис. 3. — Макрос в шаблоне Email-сообщения

© Terrasoft 2002-2020.

Был ли данный материал полезен?

Как можно улучшить эту статью?