Использование шаблонов для создания массовых оповещений

Система позволяет использовать шаблонизацию сообщений для рассылки индивидуальных сообщений в одном запросе. Для примера, возьмём запрос отправки СМС сообщения абоненту (механизм отправки СМС сообщения описан в Краткое пошаговое руководство по работе с сервисом отправки СМС сообщений):

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:kmis="kmis.services" xmlns:core="core.custom_types">
   <soapenv:Header/>
   <soapenv:Body>
      <kmis:notification>
         <kmis:request_data>
            <core:customer_id>394ffb3b-20f5-4046-b6b2-758103698fe7</core:customer_id>
            <!--Optional:-->
            <core:sms_notifications>
               <!--1 or more repetitions:-->
               <core:UserDataSMS>
                  <core:recipients_data>
                     <!--1 or more repetitions:-->
                     <core:RecipientData>
                        <core:request_id>1beb9345-383a-422c-a67e-a4681e69be40</core:request_id>
                        <core:recipient_phone>+77771234567</core:recipient_phone>
                        <core:is_personalized>false</core:is_personalized>
                     </core:RecipientData>
                  </core:recipients_data>
                  <core:date_begin>2017-08-01</core:date_begin>
                  <core:date_end>2017-08-03</core:date_end>
                  <core:message_template>Тестовая СМС</core:message_template>
               </core:UserDataSMS>
            </core:sms_notifications>
         </kmis:request_data>
      </kmis:notification>
   </soapenv:Body>
</soapenv:Envelope>

Для того формирования индивидуального сообщения для каждого абонента в этом запросе необходимо в первую очередь указать системе, что сообщение персонифицировано. Заменяем ключ

<core:is_personalized>false</core:is_personalized>

на <core:is_personalized>true</core:is_personalized> Для всех пользователей, которым необходимо отослать сообщение на основе шаблона. Без изменения этого ключа сообщение будет передаваться «как есть» вне зависимости от того содержит ли оно ключи шаблона или нет.
Далее изменить следующие текст сообщения, дополнив его ключами шаблона. Заменяем

<core:message_template>Тестовая СМС</core:message_template>

на

<core:message_template>Уважаемый {name} {second_name}, Вам тестовая СМС</core:message_template>

После этих изменений система будет искать параметры name и second_name в блоке template_parameters. Необходимо дополнить текст запроса данным блоком. Этот блок является индивидуальным для каждого абонента.

        <ser:template_parameters>
            <ser:TemplateParameter>
                <ser:key>name</ser:key>
                <ser:value>Иван</ser:value>
            </ser:TemplateParameter>
            <ser:TemplateParameter>
                <ser:key>second_name</ser:key>
                <ser:value>Иванович</ser:value>
            </ser:TemplateParameter>
        </ser:template_parameters>

Таким образом итоговый запрос примет вид:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:kmis="kmis.services" xmlns:core="core.custom_types">
   <soapenv:Header/>
   <soapenv:Body>
      <kmis:notification>
         <kmis:request_data>
            <core:customer_id>394ffb3b-20f5-4046-b6b2-758103698fe7</core:customer_id>
            <!--Optional:-->
            <core:sms_notifications>
               <!--1 or more repetitions:-->
               <core:UserDataSMS>
                  <core:recipients_data>
                     <!--1 or more repetitions:-->
                     <core:RecipientData>
                        <core:request_id>1beb9345-383a-422c-a67e-a4681e69be40</core:request_id>
                        <core:recipient_phone>+77771234567</core:recipient_phone>
                        <core:is_personalized>true</core:is_personalized>
                        <ser:template_parameters>
                           <ser:TemplateParameter>
                               <ser:key>name</ser:key>
                               <ser:value>Иван</ser:value>
                           </ser:TemplateParameter>
                           <ser:TemplateParameter>
                               <ser:key>second_name</ser:key>
                               <ser:value>Иванович</ser:value>
                           </ser:TemplateParameter>
                       </ser:template_parameters>
                     </core:RecipientData>
                  </core:recipients_data>
                  <core:date_begin>2017-08-01</core:date_begin>
                  <core:date_end>2017-08-31</core:date_end>
                  <core:message_template>Уважаемый {name} {second_name}, Вам тестовая СМС</core:message_template>               
               </core:UserDataSMS>
            </core:sms_notifications>
         </kmis:request_data>
      </kmis:notification>
   </soapenv:Body>
</soapenv:Envelope>

После отправки этого запроса абонент с номером +77771234567 получит сообщение «Уважаемый Иван Иванович, Вам тестовая СМС» Для наглядности добавим второго абонента на получение в рамках того же запроса. Для этого необходимо добавить второй блок RecipientData:

                     <core:RecipientData>
                        <core:request_id>aa767771-929a-4c39-b358-b542206f8389</core:request_id>
                        <core:recipient_phone>+77777654321</core:recipient_phone>
                        <core:is_personalized>true</core:is_personalized>
                        <ser:template_parameters>
                           <ser:TemplateParameter>
                               <ser:key>name</ser:key>
                               <ser:value>Петр</ser:value>
                           </ser:TemplateParameter>
                           <ser:TemplateParameter>
                               <ser:key>second_name</ser:key>
                               <ser:value>Петрович</ser:value>
                           </ser:TemplateParameter>
                       </ser:template_parameters>
                     </core:RecipientData>
                  </core:recipients_data>

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

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:kmis="kmis.services" xmlns:core="core.custom_types">
   <soapenv:Header/>
   <soapenv:Body>
      <kmis:notification>
         <kmis:request_data>
            <core:customer_id>394ffb3b-20f5-4046-b6b2-758103698fe7</core:customer_id>
            <!--Optional:-->
            <core:sms_notifications>
               <!--1 or more repetitions:-->
               <core:UserDataSMS>
                  <core:recipients_data>
                     <!--1 or more repetitions:-->
                     <core:RecipientData>
                        <core:request_id>1beb9345-383a-422c-a67e-a4681e69be40</core:request_id>
                        <core:recipient_phone>+77771234567</core:recipient_phone>
                        <core:is_personalized>true</core:is_personalized>
                        <ser:template_parameters>
                           <ser:TemplateParameter>
                               <ser:key>name</ser:key>
                               <ser:value>Иван</ser:value>
                           </ser:TemplateParameter>
                           <ser:TemplateParameter>
                               <ser:key>second_name</ser:key>
                               <ser:value>Иванович</ser:value>
                           </ser:TemplateParameter>
                       </ser:template_parameters>
                     </core:RecipientData>
                    <core:RecipientData>
                        <core:request_id>aa767771-929a-4c39-b358-b542206f8389</core:request_id>
                        <core:recipient_phone>+77777654321</core:recipient_phone>
                        <core:is_personalized>true</core:is_personalized>
                        <ser:template_parameters>
                           <ser:TemplateParameter>
                               <ser:key>name</ser:key>
                               <ser:value>Петр</ser:value>
                           </ser:TemplateParameter>
                           <ser:TemplateParameter>
                               <ser:key>second_name</ser:key>
                               <ser:value>Петрович</ser:value>
                           </ser:TemplateParameter>
                       </ser:template_parameters>
                     </core:RecipientData>
                  </core:recipients_data>
                  </core:recipients_data>
                  <core:date_begin>2017-08-01</core:date_begin>
                  <core:date_end>2017-08-31</core:date_end>
                  <core:message_template>Уважаемый {name} {second_name}, Вам тестовая СМС</core:message_template>               
               </core:UserDataSMS>
            </core:sms_notifications>
         </kmis:request_data>
      </kmis:notification>
   </soapenv:Body>
</soapenv:Envelope>

Результатом такого запроса будет то, что абонент с номером +77771234567 получит сообщение «Уважаемый Иван Иванович, Вам тестовая СМС», а абонент с номером +77777654321 получит сообщение «Уважаемый Петр Петрович, Вам тестовая СМС»