Шаблоны почтовых уведомлений¶
ℹ️ Шаблоны почтовых уведомлений — это конструктор, применяемый для типизации писем MS Outlook при создании различных видов уведомлений в "Первой Форме".
Создание шаблона¶
Чтобы добавить новый шаблон, нажмите кнопку Добавить. Откроется окно создания нового почтового шаблона. Введите данные и нажмите кнопку Сохранить.
ℹ️ Название создаваемого почтового шаблона должно совпадать с именем события, для которого он предназначается (см. ниже "Список событий"). Например, шаблон TaskCreated будет задействован только при создании новой задачи, а StateChanged — только при смене статуса задачи. Изменения в именах недопустимы! Поле "Описание" может содержать любую информацию.
ℹ️ Ссылки на задачи в шаблонах почтовых уведомлений формируются в формате /spa/tasks/{TaskID} без учета значения атрибута UseNewTaskCard в таблице базы данных Users
Список событий, для которых могут создаваться почтовые шаблоны
| Название | Описание |
|---|---|
| Absence | Создано отсутствие |
| AcceptantAssigned | Для подписи назначен акцептант |
| AcceptantAssignedEscalate | Акцептант эскалировал право подписи |
| AcceptantAssignedWithEmptyFields | Назначен акцептант, поля подписи не заполнены |
| AcceptantAssignedWithEmptyFieldsEscalate | Акцептант эскалировал право подписи, поля подписи не заполнены |
| AcceptantDelegated | Акцептант делегировал право подписи |
| AcceptantDelegatedEscalate | Акцептант, которому было делегировано право подписи, эскалировал ее |
| AcceptantDelegatedWithEmptyFields | Акцептант делегировал право подписи, поля запроса акцепта не заполнены |
| AcceptantDelegatedWithEmptyFieldsEscalate | Акцептант, которому было делегировано право подписи, эскалировал его; поля запроса акцепта не заполнены |
| AccessDenied | Отказ в доступе к задаче |
| AssistantAdded | Добавлен заместитель исполнителя |
| AssistantAddedwDates | Добавлен заместитель на определенный срок |
| AssistantRemoved | Заместитель удален |
| ChangeGroupSubcatPermission | Для группы пользователей изменено право доступа к категории |
| DefaultTemplate | Стандартный шаблон по умолчанию |
| DueChanged | Изменен срок выполнения задачи |
| DueChangedOverdue | Изменен срок выполнения просроченной задачи |
| DynSignatureAccepted | Динамическая подпись акцептована |
| DynSignatureRejected | Динамическая подпись отклонена |
| EditComment | Комментарий отредактирован |
| EditCommentSimple | Комментарий отредактирован из ленты |
| ExtParamsChanged | Изменено значение ДП |
| FileDescriptionUpdated | Редактирование описания файла |
| HelperNotification | Уведомление заместителям при назначении замещающего исполнителем |
| NewComment | Получен новый комментарий |
| NewCommentSimple | Получен новый комментарий (для внешних пользователей, ни разу не заходивших в систему) |
| NewPassword | Изменен пароль |
| Noacceptant | У задачи нет исполнителей |
| PasswordRecovery | Отправлено письмо с кодом для восстановления пароля |
| PasswordRecoveryForCustomerZone | Отправлено письмо с кодом для восстановления пароля для личного кабинета |
| PerformerAdded | В список исполнителей под задаче добавлен новый исполнитель |
| PerformerAddedToOwner | В список исполнителей под задаче добавлен новый исполнитель (письмо заказчику) |
| PerformerRefused | Один из исполнителей отказался от выполнения задачи |
| PerformerRemoved | Из списка исполнителей по задаче удален один из исполнителей |
| RemindPassword | Отправлен запрос на восстановление пароля |
| ResponsibleAdded | Назначен ответственный исполнитель по задаче |
| ResponsibleRemoved | Ответственный исполнитель по задаче изменен |
| SignatureAccepted | Подпись акцептована |
| SignatureRejected | Подпись отклонена |
| SignatureSnapshot | Создается "HTML-снимок" всех параметров задачи. Используется для сохранения текущего состояния задачи (например, при акцепте) |
| StateChanged | Смена статуса |
| StateChangedForcibly | Принудительная смена статуса |
| StateChangeNotificationToAll | Всем подписчикам отправлено уведомление об изменении статуса задачи |
| SubscriberAdded | К задаче добавлен подписчик |
| TaskAccepted | По задаче получен акцепт |
| TaskCreated | Задача создана |
| TaskCreateNotifySend | Отправлено уведомление о создании задачи |
| TaskCreatePerformerSend | Отправлено уведомление исполнителю о создании задачи |
| TaskCreateSubscriberSend | Отправлено уведомление подписчику о создании задачи |
| TaskFromYourNameCreated | Отправлено уведомление о создании задачи от имени пользователя (он — заказчик) |
| TaskTextChanged | Изменен текст задачи |
| TaskTextChangedWithoutDifferencies | Текст задачи пересохранен без изменений |
| UserInvitation | Пользователь приглашен в систему |
Редактирование шаблона (описание шаблона)¶
Чтобы отредактировать описание шаблона почтового уведомления, нажмите на кнопку (кнопка «Редактировать») в начале соответствующей строки. Вы сможете изменить описание шаблона и флажок включения/отключения шаблона. Чтобы сохранить внесенные изменения, нажмите иконку (кнопка «Сохранить»), а чтобы отменить изменения — иконку (кнопка «Отмена») в начале строки. Чтобы удалить шаблон, нажмите на иконку (кнопка «Удалить») в конце соответствующей строки.
⚠️ Преднастроенные системные шаблоны (
TaskCreated,StateChangedи др.) нельзя удалять и отключать.
Редактирование шаблона¶
Чтобы перейти к редактированию самого шаблона почтового уведомления, щелкните мышью по соответствующей строке таблицы. Откроется окно редактирования шаблона. | Параметр | Описание | | --- | --- | | Название | Указание перехода, при осуществлении которого будет применен созданный шаблон. |
Если ввести имя шаблона, которого еще нет в списке, и нажать Перейти к выбранному шаблону, этот шаблон будет создан и в него будет осуществлен переход
| Описание | Произвольное описание действий шаблона |
| --- | --- |
| Включен | Включение\отключения шаблона |
| Выбор категории | Привязка шаблона к определенной категории |
| Язык | Выбор языка интерфейса, для которого будет использоваться шаблон.
При отправке письма по умолчанию используется язык интерфейса, выбранный в профиле пользователя, которому отправляется письмо. Если для этого языка шаблона нет, используется шаблон для языка, указанного как международный (Languages.IsInternational = 1). Если и для международного языка нет шаблона, будет использоваться шаблон для языка приложения по умолчанию (Languages.IsDefault = 1) |
| Тестовая отправка почты | Пользователь, которому будет отправлено письмо по нажатию кнопки Отправить тестовое письмо |
| Номер задачи | Номер задачи, данные из которой будут использоваться при отправке тестового письма |
Шаблоны почтовых уведомлений построены на основе html и настраиваются подобно дизайну категории.
В окне дизайнера осуществляется редактирование шаблона письма для события. Все действия производятся на вкладке HTML (меню справа).
Элементы шаблона¶
Parameters
| Элемент | Описание |
|---|---|
| taskuser | Заказчик |
| subcatid | ID категории |
| taskid | Номер задачи |
| entity | Название сущности |
| tasktext | Текст задачи |
| tasktextshort | Краткое содержание текста задачи |
| userid | ID пользователя |
| createdtask | Дата создания задачи |
| orderedtime | Срок задачи |
| priorityid | Приоритет задачи |
| state | Статус задачи |
| srokname | Название срока выполнения |
| endtime | Дата завершения |
| ExtUsersMailerFrom | Почтовая рассылка для внешних пользователей (адрес) |
| ExtUsersMailerFromName | Почтовая рассылка для внешних пользователей (имя) |
| username | Отображаемое имя заказчика задачи |
| userphone | Рабочий телефон заказчика задачи |
| userfullname | Полное имя заказчика задачи |
| usernick | Логин заказчика задачи |
| performer | Исполнитель |
| performerid | ID исполнителя |
| performername | Отображаемое имя исполнителя задачи |
| performernick | Логин исполнителя |
| performerfullname | Полное имя ответственного исполнителя |
| nowtime | Текущее время |
| taskstarttime | Время начала работы над задачей |
| commentcreatetime | Время написания комментария |
| custommailtext | Пользовательский текст письма |
| paramechangedtemplate | Изменение ДП по шаблону |
| commentuser | Пользователь-отправитель комментария |
| commentto | Сообщение |
| newText | Новый текст сообщения |
| oldText | Старый текст сообщения |
| login | Ваш логин |
| password | Ваш пароль |
| userName | Ваше имя |
| commentspecid | ID комментария |
| spectaskid | Префикс + ID задачи |
| hrefRecoverPassword | Текст ссылки на восстановление пароля |
| passwordRecoveryLink | Ссылка на восстановление пароля |
Resources
| Элемент | Описание |
|---|---|
| taskFrom | От |
| performer | Исполнитель |
| taskCat | Категория, в которой находится задача |
| date | Дата |
| taskNum | Номер задачи |
| customer | Заказчик |
| responsible | Ответственный исполнитель |
| taskOrdered | Срок |
| responsibleaddedhead | Вас назначили ответственным исполнителем по задаче |
| performerremovedhead | С Вас сняли исполнение по задаче |
| responsibleremovedhead | C Вас сняли ответственность за исполнение задачи |
| removedyoufromperfs | Вы больше не являетесь исполнителем задачи |
| removedyoufromresponsible | Вы больше не являетесь ответственным исполнителем задачи |
| taskcreatedSubj | Новая задача в вашей категории |
| extparamschanged | Изменены доп. параметры |
| extparamschangedbody | Изменились значения дополнительных параметров |
| changed_comment_text | Изменил текст своего комментария |
| newcommentmessage | Вы получили новый комментарий |
| oldcommentUserLink | Отправитель старого комментария |
| oldcommentResipients | Адресаты старого комментария |
| commentto | Вы получили новый комментарий→ |
| taskTextChangedHeader | Заказчик изменил текст задачи |
| oldText | Старый текст |
| taskcreatefromyourname | От Вашего имени поставлена задача |
| assistantRemoved | Вы были удалены из списка заместителей пользователя |
| assistantAdded | Вы были добавлены в список заместителей |
| login | Ваш логин |
| password | Ваш пароль |
| passwordChange | Смена пароля |
| hello | Здравствуйте |
| betterChangeYourPassword | Советуем изменить пароль при первом входе в систему |
| bestRegards | С наилучшими пожеланиями |
| followTheLinkBelow | Перейдите по ссылке ниже |
| andEnterCode | И введите код |
| passwordRecoveryIsImpossible | Восстановление пароля невозможно |
Controls
| Элемент | Описание |
|---|---|
| tasklink fullmode | Открыть (ссылка на задачу) если вышеуказанная ссылка не работает или Вы находитесь в удаленном офисе, попробуйте эту (альтернативная ссылка) |
| spectaskid | Префикс + ID задачи |
| SubcatPathLink | Полный путь к категории |
| extparams | ДП |
| unsubscribelink | Ссылка на прекращение подписки (Отписаться) |
| subjectPrefix | Префикс темы |
| subjectPostfix | Постфикс темы |
| commentid | ID сообщения (1f-system-comment-id) |
| parentTaskLink | Ссылка на родительскую задачу |
| gototask | Перейти в задачу (ссылка) |
| mailheader | Заголовок письма |
| customerlink | Ссылка на заказчика |
| responsiblelink | Ссылка на ответственного исполнителя |
| altlink | Альтернативная ссылка |
| assignedyou_user_text | Добавлен исполнитель |
| deletedperformerlink | Удален исполнитель |
| changedtaskstate | Изменить статус задачи |
| commentuserlink | Отправитель комментария |
| oldcommentUserLink | Отправитель старого комментария |
| addressedto | Получатели комментария |
| performersAssignedForYouTaskHead | Назначенные исполнители задачи, в которой вы являетесь заказчиком |
| taskTextChangedUser | Пользователь, который изменил текст задачи |
| addedtoassistantsof_user | Назначенный заместителем |
| taskonyourbehalfcreatedby_user_insubcat | Задача, созданная пользователем от вашего имени |
| addedtoassistantsof_user_wdates | Период замещения |
| removedfromassistantsof_user | Удален из списка заместителей пользователя |
| addedtoassistantsof_user | Добавлен заместителем пользователя |
| performeraddedlink | Ссылка на назначенного исполнителя |
| apptitle | Имя приложения из общих настроек приложения |
| helpers | Исполнители |
| userwhochangedlink | Пользователь, который изменил ссылку |
| internalResolutionLinks | Кнопки резолюций подписи (Внутренние ссылки) |
| externalResolutionLinks | Кнопки резолюций подписи (Внешние ссылки) |
| attachments | Все вложения. При добавлении элемента в шаблон в письме будут отображаться все вложенные в задачу файлы или ссылки на них, в зависимости от параметра "Получать файлы в виде вложений, а не ссылок" в профиле конкретного пользователя. |
Пример шаблона в html
<email>
<subject>
</subject>
<mailbody>
<style media="all" type="text/css">
</style>
<div class="previewForMailAgents" style="display: none;">
</div>
<table class="maintable" align="left" cellpadding="3" cellspacing="0">
<tbody>
</tbody>
</table>
</mailbody>
</email>
Тема письма будет составлена из параметров, помещенных в тег <subject>. В примере ниже тема будет отображаться как "Новая задача: краткий текст задачи":
<subject>
<input style="" class="resource" value="taskcreatedSubj" id="taskcreatedSubj" type="text"/>
<span style="" class="inlinetext">
:
</span>
<input class="parameter" style="" value="tasktextshort" id="tasktextshort" type="text"/>
</subject>
Тело письма размещается внутри тегов <mailbody> и далее внутри <table>.
Стили в письме размещаются в теге <style>. Например можно задать шрифт для таблицы:
<style media="all" type="text/css">
.maintable{font-family: Lucida Grande, Tahoma;}
</style>
Если потребуется поменять цвет кнопки "перейти в задачу" в css-классе .gototask, то нужно поменять значения background-color и border-color:
.gototask{color:#165082; background-color:#d9d9d9; display:block; width: 200px;
text-align:center; border-style: solid; border-width: 5px; border-color: #d9d9d9; text-decoration: none; font-weight:bolder; font-size: 13px;}
Цвет шапки меняется в классе .header, значение background-color:
.header{background-color:#008000; color:#ffffff; padding-top:0px;padding-bottom:0px;height:40px;}
Стили ссылок на пользователей, такие как "заказчик" или "ответственный", задаются классом
.userlink{text-decoration: none; font-weight:bolder; color:#165082}
Дополнительно возможно назначить класс для требуемого элемента. Например, так:
<tr class="test">
и добавить класс для стилей:
.test { color:#ffffff; }
Список классов по умолчанию
| Описание | Класс |
|---|---|
| Основная таблица | maintable |
| Ссылки на пользователей | .userlink |
| Список доп параметров | .acllextparams |
| Ссылка-кнопка "Перейти в задачу" | .gototask |
| Ссылка на категорию | .subcatlink |
| Заголовок письма | .header |
| Текст задачи | .tasktext |
| Ссылка-кнопка "Подписать" | .acceptsignature |
| Ссылка-кнопка "Сохранить" | .rejectsignature |
| Ссылка "Прекратить подписку" | .unsubscribe |
| Альтернативная ссылка на задачу | .altlink |
Особенности настройки
ℹ️ Если в приложении включена отправка уведомлений на почту, то в системной категории Уведомление о прочтении на вкладке "Почтовые ящики" должен быть настроен ящик, указанный в Общих настройках приложения в параметре Почтовый ящик для ответов. При необходимости можно добавить также ящик, указанный в параметре Внешний почтовый ящик для ответов.
Ссылка на задачу в новых шаблонах¶
Для вставки в текст письма ссылки на задачу "Первой Формы" в новых шаблонах должен содержаться следующий текст:
<div class="main-footer">
<input type="text" class="control" value="" id="gototask" style=""/>
</div>
Пример шаблона:
<email style="width: 1357px; height: 43px;">
<subject>
RE: Согласование документа
<input type="text" class="parameter" style="" value="tasktextshort" id="tasktextshort"/>
</subject>
<mailbody>
<style media="all" type="text/css">
.main, table, a {font-family: Lucida Grande, Tahoma;} a{text-decoration: none; color:#35618c;}
a:visited {color: #35618c;} .main-content{color:#000000;} .secondary-content{color:#cccccc;
margin-top:10px;} .main-footer{margin-top:10px;} .techinfo {display:none;} .signatures
{ margin: 20px 0;} .signatures a { margin-right: 10px; display: inline-block; padding:
8px 15px; background: #ccc; color: #fff; border-radius: 14px;white-space: nowrap;
margin-bottom: 10px; } a.resolution-accept {background: #4caf50 !important;} a.resolution-reject
{background: #f44336;} table.ext-params{font-size: 1em;}table.ext-params td { vertical-align:
top; padding: 0; padding-right: 5px;font-size: 1em; } .information-span { display:
block; margin: 10px 0; }.ext-params {margin-top: 10px;}.gototask {margin-right: 5px;}
</style>
<div class="main" align="left" width="100%">
<div class="main-content">
Поступил новый документ
<input type="text" class="extparameter" value="ExtParam76840" id="extparam-76840"/>
от
<input type="text" class="extparameter" value="ExtParam76840" id="extparam-76840"/>
, документ на сумму
<input type="text" class="extparameter" value="ExtParam77740" id="extparam-77740"/>
<br/>
Требуется подпись:
<input type="text" class="parameter" style="" value="reasoninfo" id="reasoninfo"/>
<input type="text" class="control" value="infoextparamtable" id="infoextparamtable" style=""/>
<br/>
</div>
<div class="main-footer">
<input type="text" class="control" value="" id="gototask" style=""/>
</div>
</div>
</mailbody>
</email>
Комментарии
Если в теме письма присутствует текст [1F[номер_задачи], то при ответе на это письмо тело ответного письма будет опубликовано как комментарий в указанной задаче. Отправитель письма будет указан как отправитель комментария.
В самом почтовом клиенте такие письма будут иметь общую тему и поэтому будут выстраиваться в цепочку (если в почтовом клиенте включено отображение цепочек писем).
Если в теме письма присутствует текст [1F[номер_задачи], а в теле письма — 1f-system-comment-id:номер_комментария, то при ответе на это письмо тело ответного письма будет опубликовано как ответный комментарий к указанному. Отправитель письма будет указан как отправитель комментария.
ℹ️ 1f-system-comment-id:номер_комментария — это служебный текст, пользователю он не интересен, и поэтому в шаблоне его лучше скрыть (например, выводить белым цветом на белом фоне).
Если в теме письма нет номера задачи, а в теле письма нет номера комментария, то на основе письма будет создана задача в категории, к которой подключен почтовый ящик, на который отправлено письмо.
Вынесение резолюций по подписям¶
Для вынесения резолюций по запрошенной подписи в почтовый шаблон помещаются ссылки вида:
https:///spa/tasks/?TaskSignatureID=&ResolutionID=&SignatureAction=
где:
-
taskId — Номер задачи, в которой запрошена подпись.
-
taskiSignatureId — ID запрошенной подписи (из таблицы TaskSignatures, не путать с ID самой подписи, настроенной в системе, из таблицы Signatures).
-
SignatureResolutionTypes — ID типа резолюции.
-
signatureActionId — ID действия, выполняемого при вынесении резолюции.
Параметры signatureActionId и SignatureResolutionTypes частично пересекаются, т.к. типу резолюции однозначно соответствует выполняемое действие, поэтому можно указывать только один из этих двух параметров. Например, если для подписи доступны две резолюции "Подписать" и "Подписать с замечаниями", то они будут иметь одинаковое значение signatureActionId=0, но разные SignatureResolutionTypes.
Формат кнопок для вынесения резолюций¶
Ссылки в кнопках для вынесения резолюций по запрошенным подписям могут иметь формат URL или mailto.
Ссылка mailto — это специальный тип гиперссылки в HTML, которая при клике открывает почтовый клиент по умолчанию на устройстве пользователя для создания нового письма с заранее заполненными данными.
Формат ссылки определяется значением пользовательской настройки UseMailToLinksForSignaturesFromEmails:
- при значении UseMailToLinksForSignaturesFromEmails=1 ссылки будут иметь формат mailto: \<адрес>?subject=\<тема ответа>&Body=\<текст ответа>, и по нажатию на ссылку будет отправляться письмо на адрес, указанный в Общих настройках приложения в параметре Почтовый ящик для ответов или Внешний почтовый ящик для ответов. Это письмо будет обработано заданием ServiceMailBoxesJob, и по подписи будет вынесена выбранная акцептантом резолюция. Текст ответного письма будет указан в качестве комментария к резолюции.
В системной категории Уведомления о прочтении будет создаваться задача с текстом вида "TSID=59354|A=Accept", где значение TSID — это ID запрошенной подписи (из таблицы БД TaskSignatures), а значение A — это ID вынесенной резолюции.
- при значении UseMailToLinksForSignaturesFromEmails=0 (или при пустом значении) ссылки будут иметь формат обычной адресной строки (URL), и по нажатию на ссылку будет открываться интерфейс "Первой Формы".
Экспорт почтовых шаблонов¶
При выполнении экспорта шаблонов будет сгенерирован файл TemplatesExportFile.xml, в котором будут сохранены все настроенные в системе шаблоны.
Если включен флажок Выгружать только дефолтные шаблоны без категорий, то будут выгружаться только те шаблоны, имена которых совпадают с названиями событий (у таких шаблонов категория не указана).
Импорт почтовых шаблонов¶
При импорте шаблонов из xml-файла весь список новых шаблонов будет добавлен в конец общего списка.
Если включен флажок Включить новые шаблоны, то шаблоны будут загружены сразу с отмеченным флажком Включить (см. общий список).
Если включен флажок Сохранить старые дефолтные шаблоны (без категорий), то импортируемые шаблоны будут добавлены в конец общего списка, не затирая существующих одноименных шаблонов.