[ELMA3] Создание шаблона sms-уведомления
В папке системы ELMA: обычно это
C://Program Files/ELMA3-Express, если вы устанавливали редакцию Express, или
C://Program Files/ELMA3-Standart, если вы устанавливали редакцию Standart системы ELMA,
есть папка UserConfig/Notifications – в ней находятся xml-файлы, где описаны шаблоны системных сообщений (рис. 1), которые приходят пользователям в разделе Сообщения в системе ELMA и на электронную почту. В каждом файле находится несколько шаблонов сообщений, соответствующих определенным событиям в системе ELMA.
![]() |
Рис. 1. Папка UserConfig / Notifications с шаблонами системных сообщений. |
Чтобы создать шаблон sms-уведомления, нужно сделать следующее:
- Скопируйте шаблон ELMA-сообщения, соответствующего событию, о котором вы хотите уведомлять пользователя sms-уведомлением, в новый xml-файл с новым именем.
- Внесите в этот файл изменения:
- после тэга Notification в шаблоне сообщения надо написать строку <Channels>SMS</Channels>. По этой строке программа определяет, что это сообщение надо посылать только по sms;
- просмотрите шаблон sms-уведомления: надо, чтобы он не был слишком длинным. Если нужно, внесите корректировки.
- Сохраните файл.
В шаблоне прописано название события из ELMA, поэтому, если у вас включен функционал sms-уведомлений, программа знает, в ответ на какое событие в системе посылать sms.
Пример: создание шаблона sms-уведомления для нового события календаря
Подробнее про создание шаблонов сообщений можно прочитать здесь.
Для примера рассмотрим создание шаблона sms-уведомления для системного события "Создание нового события календаря": каждый раз, когда в ELMA будет создаваться новое событие в календаре, имеющее отношение к какому-то пользователю, он будет получать sms-сообщение об этом.
Допустим, у нас установлена Express-редакция системы ELMA. Находим папку C://Program Files/ELMA3-Express/UserConfig/Notifications. Шаблоны сообщений, относящиеся к календарю, находятся в файле Calendar.CalendarEvent.xml (рис. 2)
![]() |
Рис. 2. Файл Calendar.CalendarEvent.xml в папке C://Program Files/ELMA3-Express/UserConfig/Notifications. |
Этот файл нужно открыть в любом текстовом редакторе, найти в нем шаблон, относящийся к созданию нового события в календаре (рис. 3), и скопировать его в новый xml-файл с новым названием нашего sms-шаблона, например, Calendar.CalendarEventSms.xml (рис. 4).
![]() |
Рис. 3. Фрагмент содержимого файла Calendar.CalendarEvent.xml. |
Код xml-файла, приведенный на скриншоте выше (внимание! это не весь код, содержащийся в файле, выделены только необходимые теги):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <? xml version = "1.0" encoding = "utf-8" ?> < Notifications description = "Оповещения о событиях календаря" version = "3.0.0.2700" > < Partial Name = "CalendarEventFields" > {PropertyRow({$New.Subject})} {PropertyRow({$New.Place})} ...................... < Default > < Filter > < Event >IEntityActionHandler.ActionExecuted</ Event > < Object >EleWise.ELMA.Calendar.Models.CalendarEvent</ Object > </ Filter > < RecipientSet Name = "ConfirmParticipation" > < ConfirmParticipationRecipient >{$New}</ ConfirmParticipationRecipient > </ RecipientSet > < RecipientSet > < User >{$New.CreationAuthor}</ User > < ParticipantRecipients >{$New}</ ParticipantRecipients > < InformToRecipients >{$New}</ InformToRecipients > </ RecipientSet > < URL > /Calendar/Event/View/{$New.Id} </ URL > ...................... < Notification Name = "Create" > < Filter > < Action >Create</ Action > < Condition > {$New.TemplateEvent}=NULL </ Condition > </ Filter > < Subject > ({SR(’Новое событие’)}{If {$RecipientSet}=’ConfirmParticipation’}. {SR(’Необходимо подтверждение участия’)}{end if}) {$New.Subject} </ Subject > < ShortMessage > {If {$RecipientSet}=’ConfirmParticipation’}{SR(’!!!НЕОБХОДИМО ПОДТВЕРДИТЬ ВАШЕ УЧАСТИЕ В ДАННОМ СОБЫТИИ!!!’)}{end if} {TableStart()} {$New.Description} {PropertyFullRow({$New.Attachments};’’)} {ExtensionZone(’EleWise.ELMA.Calendar.Models.CalendarEvent-DefaultShortMessage-AfterAttachments’)} {TableEnd()} </ ShortMessage > < FullMessage > {If {$RecipientSet}=’ConfirmParticipation’}{SR(’!!!НЕОБХОДИМО ПОДТВЕРДИТЬ ВАШЕ УЧАСТИЕ В ДАННОМ СОБЫТИИ!!!’)}{end if} {TableStart()} {Partial(’CalendarEventFields’)} {PropertyFullRow({$New.Attachments};’’)} {ExtensionZone(’EleWise.ELMA.Calendar.Models.CalendarEvent-DefaultFullMessage-AfterAttachments’)} {TableEnd()} </ FullMessage > </ Notification > ....................... |
![]() |
Рис. 4. Новый файл Calendar.CalendarEventSms.xml с шаблоном sms-сообщения в списке файлов. |
Создаем шаблон нового sms-сообщения:
После тэга <Notification Name="Create"> нужно вставить строку <Channels>SMS</Channels> (рис. 5).
Помимо шаблона сообщения, в новый файл Calendar.CalendarEventSms.xml нужно скопировать следующее:
- первые две строки из файла Calendar.CalendarEvent.xml (рис. 3);
- в конце файла закрыть тэг Notification (рис. 5).
Внутрь тэга <Notification Name="Create"> из родительского файла Calendar.CalendarEvent.xml вставить следующие тэги:
|
– указывает получателя события, | ||
|
– ссылка до события. |
внутрь тэга Filter, который находится внутри тэга <Notification Name="Create">, вставить две строки из родительского файла из тэга Filter, который находится внутри тэга Default (рис. 3).
![]() |
Рис. 5. Содержимое файла Calendar.CalendarEventSms.xml. |
Подредактируем шаблон sms-сообщения. Оно должно быть коротким. Sms-сообщение должно состоять из:
- Темы – текст в тэге Subject;
- Короткого сообщения – текст в тэге ShortMessage;
- Полного сообщения – текст в тэге FullMessage нужно удалить, он нужен только для системных сообщений, которые приходят пользователям в ELMA или на электроную почту.
В коротком сообщении можно также удалить фрагмент:

потому что он создает таблицу, которая нужна только для сообщений, рассылаемых в ELMA и на электронную почту.
И исправим текст "!!!НЕОБХОДИМО ПОДТВЕРДИТЬ ВАШЕ УЧАСТИЕ В ДАННОМ СОБЫТИИ!!!" на "Необходимо подтвердить ваше участие в данном событии!".
В результате получим следующий шаблон sms-уведомления:
![]() |
Рис. 6. Содержимое файла Calendar.CalendarEventSms.xml. Готовый шаблон sms-уведомления о создании события в календаре. |
Код xml-файла:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <? xml version = "1.0" encoding = "utf-8" ?> < Notifications description = "Оповещения о событиях календаря" version = "3.0.0.2700" > < Notification Name = "Create" > < Channels >SMS</ Channels > < RecipientSet > < User >{$New.CreationAuthor}</ User > < ParticipantRecipients >{$New}</ ParticipantRecipients > < InformToRecipients >{$New}</ InformToRecipients > </ RecipientSet > < URL > /Calendar/Event/View/{$New.Id} </ URL > < Filter > < Event >IEntityActionHandler.ActionExecuted</ Event > < Object >EleWise.ELMA.Calendar.Models.CalendarEvent</ Object > < Action >Create</ Action > < Condition > {$New.TemplateEvent}=NULL </ Condition > </ Filter > < Subject > ({SR(’Новое событие’)}{If {$RecipientSet}=’ConfirmParticipation’}. {SR(’Необходимо подтверждение участия’)}{end if}) {$New.Subject} </ Subject > < ShortMessage > {If {$RecipientSet}=’ConfirmParticipation’}{SR(’Необходимо подтвердить участие в данном событии!’)}{end if} </ ShortMessage > </ Notification > </ Notification > |
Текст sms-сообщения формируется из трех тэгов <Subject> <URL> <ShortMessage> независимо от того, в каком порядке они расположены в тексте шаблона.
Функция {StringCut(текст;длина)}
В шаблонах sms-сообщений можно использовать функцию {StringCut(текст;длина)} – она обрезает текст до указанного количества символов.
На рис. 7 показан пример использования этой функции в шаблоне sms-сообщения для создания задачи с высоким приоритетом. Функция берет тему задачи и укорачивает ее до 40 символов, чтобы sms не были слишком длинными.
![]() |
Рис. 7. Шаблон sms-сообщения для создания задачи с высоким приоритетом. |
Код xml-файла:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <? xml version = "1.0" encoding = "utf-8" ?> < Notifications description = "Оповещения о задачах" version = "3.0.0.2700" > < Default > < Channels >SMS</ Channels > < Filter > < Event >IEntityActionHandler.ActionExecuted</ Event > < Object >EleWise.ELMA.Tasks.Models.Task</ Object > </ Filter > < RecipientSet > < User >{$New.Executor}</ User > </ RecipientSet > < URL > /Tasks/Task/Execute/{$New.Id} </ URL > < Subject > {StringCut({$New.Subject};40)} </ Subject > < ShortMessage > {GetUserShortName({$New.CreationAuthor}) </ ShortMessage > < ObjectId >{$New.Id}</ ObjectId > </ Default > < Notification Name = "Create" > < Filter > < Condition > ({$New.Priority}=’High’)and(({$Action.Name}=’Create’)and({$New.Status.Value}<>’112ea757-36f7-4859-b0d3-6cc0f5a04705’)or({$Action.Name}=’Activate’))and({$New.IsTemplate}=’false’) </ Condition > </ Filter > </ Notification > < Notification Name = "Redirect" > < Filter > < Action >Redirect</ Action > < Condition > {$New.Priority}=’High’ </ Condition > </ Filter > </ Notification > </ Notification > |