SMS и Viber рассылки

  1. Домой
  2. Документация
  3. SMS и Viber рассылки
  4. Создание шаблона SMS-сообщений
  5. Создание пользовательских макросов

Создание пользовательских макросов

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

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

  • Перейти в конфигуратор и создать исходный код в пользовательском пакете
  • В исходном коде должен содержаться класс, реализующий интерфейс IMacros
using Samarasoft.Sender.Macros;
using Terrasoft.Core;
using System;

namespace Terrasoft.Configuration
{
  public class FirstMacros : IMacros
  {
    public FirstMacros(UserConnection userConnection)
    {
      UserConnection = userConnection;
    }
    
    public UserConnection UserConnection
    {
      get;
    }
    
    public string GetMacrosValue(Guid id, object arguments)
    {
      return $"UserConnectionContactId: {UserConnection.CurrentUser.ContactId} id: {id.ToString()}; arguments: {arguments};";
    }
  }
}

В классе должен быть реализован метод GetMacrosValue, возвращающий необходимое значение

  • Вызов макроса просходит стандартным способом [#@Invoke.название класса в исходном коде#]

В итоге будет получено сообщение вида:
UserConnectionContactid: полученное значение id: полученное значение; arguments:

Например: необходимо прибавлять к дате рождения контакта N кол-во дней

  • Добавим класс и назовем его BirthDateMacros
  • добавим метод получения даты рождения контакта
private DateTime GetBirthDate(Guid contactId)
        {
            var select = (Select)new Select(UserConnection).Column("BirthDate")
                .From("Contact")
                .Where("Id")
                .IsEqual(Column.Parameter(contactId));
            select.SpecifyNoLockHints();
            return select.ExecuteScalar<DateTime>();
        }

*Для выполнения запросов к базе необходимо добавить оператор using Terrasoft.Core.DB;

  • Далее в методе GetMacrosValue получаем значение даты рождения и прибавляем указанное в параметре кол-во дней
var birthDate = GetBirthDate(id);
            if (birthDate != DateTime.MinValue)
            {
                var days = Convert.ToInt32(arguments.ToString());
                birthDate = birthDate.AddDays(days);
                return birthDate.ToString("d");
            }

            return "";
  • Для вызова макроса будет использовать [#@Invoke.BirthDateMacros(кол-во дней)#]

Пример

  • Добавим класс FirstMacros который будет выполнять расчет бонусного баланса контакта по определеному типу бонусных баллов
using Samarasoft.Sender.Macros;
using Terrasoft.Core;
using System;
using Samarasoft.Loyalty.BpmOnline.Services.BonusBalance;
using Samarasoft.Loyalty.BpmOnline;

namespace Terrasoft.Configuration
{
  public class FirstMacros : IMacros
  {
    public FirstMacros(UserConnection userConnection)
    {
      UserConnection = userConnection;
    }
    
    public UserConnection UserConnection
    {
      get;
    }
    
    public string GetMacrosValue(Guid id, object arguments)
    {
    	var balanceService = Startup.ServiceProvider.GetInstance<ContactBonusBalanceService>();
    	var balance = balanceService.GetBonusBalanceByContactId(id, new Guid("AA84565E-A343-4DBA-8E19-6E31EBD92AA9"), DateTime.UtcNow);
		return balance.Balance.ToString();
    }
  }
}
  • Создаем рассылку в которой используем контакт «Парфенов Никита» в аудитории

Добавим вызов макроса, где:

  • [ #Contact.Name# ] возвращает имя контакта из аудитории рассылки
  • [#@Invoke.FirstMacros#] возвращает количество бонусного баланса по определенному типу для контакта из аудитории рассылки

В итоге получаем сообщение:
«Никита Парфенов, Ваш бонусный баланс = 150»

Материал был полезен? Да 1 Нет