Редактирование шаблонов сообщений

Материал из ISPWiki

Перейти к: навигация, поиск


Содержание

Функции шаблонов

Для формирования текста уведомлений, отправляемых клиентам, в архитектуре BILLmanager заложен механизм шаблонов сообщений.

В процессе формирования текста сообщения участвуют две составляющих: объекты системы, свойства которых включаются в XML документ, и XSLT шаблон преобразования. На этапе возникновения события, требующего отправки сообщения пользователю, BILLmanger собирает данные об объектах, задействованных в событии, и размещает их свойства в XML документ, к которому в последствии применяется XSLT шаблон. Используя гибкость языка XSLT, можно добиться необходимой интерактивности в формировании теста сообщения.

Редактирование шаблона

Шаблон сообщения редактируется отдельно для каждой настроенной в системе локализации. В процессе создания шаблона сообщения можно использовать описанные ниже механизмы.

Редактирование текста шаблона

Текст шаблона является XSLT стилем, который в ходе формирования текста сообщения будет применен к XML документу, содержащему информацию об объектах BILLmanager, необходимых для предоставления полной информации о событии, приведшем к отправке сообщения.

В этом разделе описано, как создать простой стиль сообщения.

Пустой стиль выглядит следующим образом:

<?xml version='1.0'?>                                                          
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:mgr="http://ispsystem.com/xslplugin">
<xsl:output method='text' encoding='UTF-8' omit-xml-declaration='yes'/>
<xsl:template match='doc'>
</xsl:template>
</xsl:stylesheet>

Где:

  • xmlns:mgr="http://ispsystem.com/xslplugin"> - пространство имен дополнительных функций:
    • replace - заменяет в тексте один набор символов другим. Принимает три параметра: где заменить, что заменить и на что заменить;
    • random - генерирует произвольный набор цифр;
    • strsum - выводит текстовое представление суммы. Принимает два параметра: сумму в валюте и код валюты. В качестве кода может быть использовано UAH, любое другое значение приедет к выводу в рублях;
    • dateformat - выводит дату в нужном формате. Например, "select="mgr:dateformat('2011-12-31', '%A, %d, %B, %Y')" выведет "Sunday, 31, December, 2011". Формат задается аналогично формату в функции "strftime" языка "С";
    • encodesubject - кодирует текст в Base64;
    • escapeurl - экранирует URL символы;
  • Тег xsl:stylesheet - начало теста стиля;
  • Тег xsl:output - формат результата применения стиля;
  • Тег xsl:template - начало шаблона стиля. match='doc' говорит о том, что далее все данные будут выбираться из ветки "doc" XML документа.

Далее внутри тега xsl:template идет описание стиля, содержащее текст, который будет содержаться в сообщении, выборку данных и различные условные ветвления.

Первые три строки шаблона сообщения должны содержать данные необходимые почтовому шлюзу для корректной отправки сообщений - поля "From:", "Subject:" и "Content-Type:". Стандартным для этих полей в BILLmanager является следующая часть стиля:

From: <xsl:value-of select="project.notifyemail"/>
Subject: <xsl:value-of select="mgr:encodesubject('Тема письма')"/>
Content-Type: text/plain; charset=utf-8

Остальной текст шаблона может быть произвольным. Если есть необходимость добавить в текст сообщения данные из XML документа, можно использовать конструкцию <xsl:value-of select='xpathquery' disable-output-escaping='yes'/>, где xpathquery - XPath запрос выборки данных.

Например, если имеется следующий XML документ:

<?xml version="1.0" encoding="UTF-8"?>
<doc>
  <hostname>test.example.com</hostname>
  <item.id>1</item.id>
  <item.name>Hosting services ServicePlanName #1 (user1), 1 month</item.name>
...
  <item.billdate>2011-01-01</item.billdate>
  <item.expiredate>2011-01-01</item.expiredate>
...
  <itemip>
    <ip>10.0.0.1</ip>
    <ip>10.0.0.2</ip>
    <ip>10.0.0.3</ip>
  </itemip>
</doc>

Для того что бы вывести "item.billdate", необходимо использовать конструкцию "<xsl:value-of select="item.billdate"/>". Дополнительные параметры своих типов услуг структура именования ноды XML документа выглядит как itemparam.[внутреннее имя параметра].

Также в шаблоне можно использовать любые конструкции, разрешенные в XSLT.

Испытание шаблона

В процессе создания шаблона сообщения можно посмотреть результат формирования сообщения для конкретного объекта базы данных BILLmanager. Для этих целей используется функция Испытать раздела редактирования шаблонов сообщений.

Испытание шаблона состоит из трех этапов:

  • ввод параметров объекта базы данных;
  • просмотр XML документа, к которому будет применен стиль;
  • просмотр результата применения стиля.

Параметры шаблонов

Каждое сообщение в BILLmanager формируется на основе строго определенных параметров, которые в режиме испытания BILLmanager предполагает ввести вручную для определения объекта, для которого будет сформировано сообщение. Шаблоны имеют следующие параметры:

  • autoaddon
    • addon.id - идентификатор заказанного дополнения.
  • autoprolongwarning
    • items - пара значений, разделенных знаком '='. Первое значение идентификатор услуги, второе стоимость продления.
  • coloopen, dedicopen, dnsopen, rhostopen, rvdsopen, vdsopen, vhostopen, licopen, newcertificate, itemsuspend
    • item.id - идентификатор услуги.
  • confirmemailnotify
    • gate.id - идентификатор почтового шлюза.
    • user.id - идентификатор пользователя.
  • creditgeneratenotify
    • credit.id - идентификатор счета.
  • domainerroroperation
    • operation - операция, при которой произошла ошибка.
    • item.id - идентификатор домена.
    • errorparams - через запятую имена полей контакта, содержащие ошибку.
    • contactid - идентификатор контакта для регистрации домена.
    • msgerror - сообщение об ошибке.
  • domainsenddocs
    • items - через запятую идентификаторы доменов, для которых отправляются документы.
  • domautorenew, domexpirewarning
    • items - через пробел идентификаторы доменов.
  • errorcertificate
    • item.id - идентификатор сертификата, при операции над которым произошла ошибка.
  • expirecertificate
    • item.id - идентификатор сертификата, срок действия которого подходит к концу.
  • itemexpirewarning
    • items - через пробел идентификаторы услуг.
  • licautoprolong, licexpired, licexpirewarning
    • items - через пробел идентификаторы лицензий.
  • lowmoney
    • subaccount.id - идентификатор плательщика.
    • days, balance, daily - параметры передаются в XML без обработки.
  • moreaccountnotify
    • gate.id - идентификатор шлюза.
  • nearaddonmax, overaddonmax
    • item.id - идентификатор услуги.
    • addon.id - идентификатор детали тарифа, на который заказана услуга.
  • newadminmessagenotify
    • message.id - идентификатор сообщения.
  • newmessagenotify, newresponsenotify
    • adminticket.id - идентификатор тикета.
    • userid - идентификатор пользователя.
    • in_reply_to - передается в XML документ без обработки.
  • newsnotify
    • message.id - идентификатор сообщения.
  • overlimit
    • item.id - идентификатор услуги.
    • expense.id - идентификатор расхода за превышение.
  • recovery
    • user.id - идентификатор пользователя.
  • registration
    • account.id - идентификатор клиента.
  • unknownemailnotify
    • gate.id - идентификатор шлюза.

Сообщения для пользовательских типов услуг имеют один параметр item.id - идентификатор услуги.

Ссылка для отказа от получения уведомлений

Для отказа от получения сообщений определенного типа клиент может перейти по ссылке имеющей определенный вид:

https://example.com/manager/billmgr?func=unsubscribe&cmdhash=tmp
  • Где example.com - доменное имя BILLmanager
  • func=unsubscribe - функция отказа от получения уведомлений
  • cmdhash - уникальный ключ, идентифицирующий клиента и тип уведомления

Для добавления ссылки в текст шаблона, можно использовать следующую конструкцию:

https://<xsl:value-of select="project.domain"/>/manager/billmgr?func=unsubscribe&cmdhash=<xsl:value-of select='cmdhash'/>

XML документ

XML документ содержит данные объектов базы данных BILLmanager, которые можно использовать при формировании сообщения. Набор данных зависит от внутренней реализации конкретного уведомления, просмотреть их можно используя режим испытания.

Примеры

В данном примере описано как изменить шаблон открытия виртуального сервера, так чтобы в зависимости от ОС в письме было указано имя суперпользователя root или Administrator

В шаблон vdsopen добавляем:

<xsl:variable name="windows" select="contains(/doc/diskimage.props,'windows')"/>

Это установит переменную windows в true или false в xml, потом ее можно использовать в if или choose

/doc/diskimage.props - это "свойства" "образа диска" в BILLmanager - укажите там windows или оставьте пустым

Была ли эта информация полезной? Да | Нет
Личные инструменты