Как сделать свои шаблоны для почтовых уведомлений
В TrackStudio вы можете делать и использовать свои шаблоны для рассылки почтовых уведомлений и подписок. Мы поставляем 2 общих шаблона, текстовый и HTML варианты. Кому-то хватает и их, но многим потребуются шаблоны, соответствующие их корпоративным стандартам и требованиям.
Шаблоны в TrackStudio сделаны на языке разметки Freemarker. Чтобы вам не пришлось изучать этот язык, мы покажем вам, как выводить в эти шаблоны основную информацию из TrackStudio.
Как поменять Subject письма
В тему письма удобнее всего вставлять различные служебные отметки. Например, номер задачи и ее название
<#assign Subject="[#${task.number}] ${task.name}"/>
Некоторые полезные переменные:
${task.projectAlias} — код проекта (то, что записано у вышестоящей задачи в поле Код)
${reasonForSubject} — код события. События могут быть такими:
"Добавлена задача", "Обновлена задача", "Загружен файл", "Добавлено сообщение", "Тестирование", "Подписка".
${task.number} — номер задачи
${task.name} — название задачи
${task.category.name} — категория задачи
${task.status.name} — текущее состояние задачи
${task.resolution.name} — резолюция задачи
${task.priority.name} — приоритет задачи
${task.submitter.name} — имя автора задачи
${task.budgetAsString} — бюджет задачи
${task.actualBudgetAsString} — потраченное время
${DateFormatter.parse(task.submitdate)} — время создания задачи
${DateFormatter.parse(task.updatedate)} — время обновления задачи
${DateFormatter.parse(task.closedate)} — время закрытия задачи (у задачи не в финальном состоянии этого значения нет)
${DateFormatter.parse(task.deadline)} — срок, к которому задачу нужно выполнить (дедлайн)
Как заменить поле "От кого (From)"
Вы можете поменять как имя пользователя, от которого прийдет письмо, так и его email. Для этого нужно задать переменные FromEmail и FromUser
<#if fromUserEmail??>
<#assign FromEmail="${fromUserEmail}"/>
</#if>
<#if fromUserName??>
<#assign FromUser="${fromUserName}"/>
</#if>
Здесь ${fromUserEmail} и ${fromUserName} берутся из свойст пользователя в TrackStudio, причем e-mail берется первым из списка, если для пользователя их задано несколько.
Вы можете заменить эти параметры. Например,
<#assign FromEmail="callcenter@domain.com"/> <#assign FromUser="Call Center"/>
В этом случае письмо придет от "Call Center <callcenter@domain.com>"
Таким же способом можно поменять другие поля. Например ReplyTo:
<#assign ReplyTo="Call Center <callcenter@domain.com>"/>
Или CC (carbon copy)
<#assign CC="Sales Department <sales@domain.com>, IT Department <it@domain.com>"/>
Вы также можете менять остальные заголовки письма, помещая из в Headers, например для использования данных из них в специальных почтовых клиентах или обработчиках.
<#assign Headers={"X-Meta":"data"}/>
Как выбрать формат письма
Для писем, отправляемых через систему уведомлений, нужно указывать тип содержимого: простой текст или html:
для html
<#assign ContentType="text/html;\n charset=\"${charset}\""/>,
для простого текста
<#assign ContentType="text/plain;\n charset=\"${charset}\""/>
${charset} - это переменная, значение которой соответствует выбранной пользователем в настройках профиля кодировке.
Как установить кодировку письма
<#assign ContentType="text/plain;\n charset=\"${charset}\""/>
здесь ${charset} передается из настроек TrackStudio (trackstudio.encoding), но вы можете задать нужную вам кодировку. В таком случае текст шаблона также должен быть в этой кодировке.
Как указать ссылку на задачу
Ссылка на ваш экземпляр TrackStudio хранится в переменной ${link}, соответственно ссылка на задачу будет
{link}/task/${task.number}?thisframe=true — для текстового шаблона и
<a href="${link}/task/${task.number}?thisframe">для шаблона HTML</a>
Как вывести описание задачи
Если у вас шаблон в формате HTML, описание выводится просто как ${task.description}. Для текстового формата можно использовать
<#if task.textDescription??>
${task.textDescription}
</#if>
Как вывести значение дополнительного поля
${task.udfValues["Заголовок"]}
Как вывести список сообщений
<#assign taskMessages = Util.getSortedMessages(task)/>
<#if (taskMessages?size>0)>
<#list taskMessages as msg>
${DateFormatter.parse(msg.time)}: ${msg.textDescription}
</#list>
</#if>
При отправке оповещений и уведомлений в переменную reason.code помещается код события. Коды существуют такие:
N: Добавлена новая задача NA: Добавлена новая задача с приложенным файлом M: Добавлено новое сообщение MA: Добавлено новое сообщение с приложенным файлом A: Добавлен новый приложенный файл U: Изменена задача S: Рассылка подписки по расписанию T: Проверка
Как добавить в CC (carbon copy) уведомления пользователей, указанных в дополнительном поле типа "Пользователь" в задаче
<#assign simpleTask = Util.simplify(task)/>
<#if simpleTask.udfValues["Пользователи"]??>
<#assign userlist = simpleTask.udfValues["Пользователи"]/>
<#assign CC>
<#list userlist?split(";") as u>
<#assign us= Util.findUser(u?trim)/>
<#if us??>
${us.email}<#if u_has_next>, </#if>
</#if>
</#list>
</#assign>
</#if>