Обращения

Легкий

Обращение — любой инцидент, жалоба, пожелание или запрос на обслуживание, которые поступают в контакт-центр или службу поддержки. В Creatio обращения могут регистрироваться автоматически или вручную.

Действия, которые выполняются в процессе обработки обращения:

  • Изменяется состояние обращения.
  • Вносится информация о решении обращения.
  • Обращение связывается с другими записями приложения.
  • Фиксируются данные об обратной связи от пользователей.

Creatio позволяет просмотреть сводную информацию для анализа работы с обращениями по различным параметрам. Подробнее о работе с обращениями читайте в блоке статей Сервисные обращения.

Реализовать пользовательское правило расчета сроков в обращении 

Creatio предоставляет возможность реализации пользовательского правила расчета сроков в обращении. При расчете или перерасчете сроков в обращении вместо одной из базовых стратегий расчета будет использоваться пользовательская стратегия.

Чтобы реализовать пользовательское правило расчета сроков:

  1. Создайте схему объекта сервиса, в которую добавьте необходимые колонки. Для этого воспользуйтесь инструкцией, которая приведена в статье Объект.

    Колонки, которые необходимо добавить в схему объекта:

    • Колонка типа Справочник (Lookup, которая указывает единицу измерения времени. В качестве значения выберите справочник TimeUnit.

      Сроки, которые позволяет настроить Creatio:

      • Время реакции.
      • Время разрешения.
    • Колонка типа Целое (Integer), которая хранит значение соответствующего срока.
    • Колонка типа Справочник (Lookup, которая хранит календарь. По этому календарю рассчитываются сроки в обращении. В качестве значения выберите справочник Calendar.
    • Колонка типа Справочник (Lookup, которая хранит ссылку на сервисный договор для возможности выполнения фильтрации. В качестве значения выберите справочник ServicePact.
    • Колонка типа Справочник (Lookup, которая хранит ссылку на сервис для возможности выполнения фильтрации. В качестве значения выберите справочник ServiceItem.
  2. Создайте справочник с временными параметрами, в котором настройте отображение колонок реестра. Для создания справочника воспользуйтесь инструкцией, которая приведена в статье Создать новый справочник. Для настройки отображения колонок реестра воспользуйтесь инструкцией, которая приведена в статье Реестр раздела.
  3. Реализуйте получение временных параметров.

    1. Создайте схему типа Исходный код (Source code). Для этого воспользуйтесь инструкцией, которая приведена в статье Исходный код (C#).
    2. В дизайнере исходного кода реализуйте класс.

      • Класс является наследником абстрактного класса BaseTermStrategy.
      • В классе реализуйте параметризованный конструктор.

        Параметры конструктора:

        • UserConnection userConnection — текущее подключение пользователя.
        • Dictionary<string, object> — параметры, на основании которых выполняется расчет.
  4. Подключите пользовательское правило расчета сроков.

    1. Перейдите в дизайнер системы по кнопке . В блоке Настройка системы (System setup) перейдите по ссылке Справочники (Lookups).
    2. Откройте справочник Правила расчета сроков по обращениям (Case deadline calculation schemas).
    3. На панели инструментов страницы настройки справочника нажмите Добавить (New) и заполните значения полей справочника:

      • Название (Name) — произвольное название пользовательского правила.
      • Обработчик (Handler) — имя класса, который был создан на предыдущем шаге. Обязательно укажите пространство имен.

        Пример обработчика: Terrasoft.Configuration.UsrCustomRule.

        Terrasoft.Configuration — пространство имен.

        UsrCustomRule — класс, в котором реализовано получение временных параметров.

      • По умолчанию (Default) — признак, который настраивает использование по умолчанию текущего правила для расчета сроков.
      • Альтернативное правило (Alternative schema) — правило, по которому расчитываются сроки, если невозможен расчет сроков по текущему правилу (т. е. любой из временных параметров невозможно расчитать классом стратегии). В этом случае создается экземпляр класса альтернативной стратегии. Если сроки невозможно расчитать с использованием альтернативной стратегии, то создается ее альтернативная стратегия. Таким образом формируется очередь правил расчета сроков.

      Подробнее о настройке правил расчета сроков читайте в статье Настроить расчет сроков реакции и разрешения.

Реализовать пользовательское правило расчета сроков в обращении
Сложный

Пример реализован для продуктов линейки Service Creatio.

Пример. На странице обращения для контрагента Elite Systems согласно сервисного договора 78 — Elite Systems сервиса Восстановление утерянных данных (Lost data recovery) добавить пользовательское правило для расчета временных параметров обращений.

Поля обращения, логику заполнения которых необходимо изменить:

  • Время реакции (Response time) — 2 часа.
  • Время разрешения (Resolution time) — 1 рабочий день.

В приложении используется типовой календарь (т. е. в значении системной настройки Базовый календарь (Base calendar, код BaseCalendar) выбрано значение "Типовой календарь" ("Default calendar")).

1. Создать схему объекта сервиса 

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Объект (Add —> Object).

  3. В дизайнере схем заполните свойства схемы:

    • Код (Code) — "UsrServiceTerms".
    • Заголовок (Title) — "Сервис расчета временных параметров" ("Service for calculating terms").
    • Родительский объект (Parent object) — выберите "BaseEntity".
  4. Добавьте колонку, которая указывает единицу измерения времени реакции.

    1. В контекстном меню узла Колонки (Columns) структуры объекта нажмите add_button —> Справочник (Lookup.

    2. Заполните свойства колонки:

      • Код (Code) — "UsrReactionTimeUnit".
      • Заголовок (Title) — "Единица измерения времени реакции" ("Response time unit").
      • Справочник (Lookup) — выберите "TimeUnit".
  5. Аналогично добавьте другие колонки.

    Свойства колонок, которые необходимо добавить, приведены в таблице ниже.

    Значения свойств колонок
    Колонка
    Свойство
    Значение свойства
    Колонка, которая хранит значение срока реакции
    Тип данных
    (Data type)
    "Целое" ("Integer")
    Код
    (Code)
    "UsrReactionTimeValue"
    Заголовок
    (Title)
    "Значение времени реакции" ("Response time")
    Колонка, которая указывает единицу измерения времени разрешения
    Тип данных
    (Data type)
    "Справочник" ("Lookup")
    Код
    (Code)
    "UsrSolutionTimeUnit"
    Заголовок
    (Title)
    "Единица измерения времени разрешения" ("Resolve time unit")
    Справочник
    (Lookup)
    Выберите "TimeUnit"
    Колонка, которая хранит значение срока разрешения
    Тип данных
    (Data type)
    "Целое" ("Integer")
    Код
    (Code)
    "UsrSolutionTimeValue"
    Заголовок
    (Title)
    "Значение времени разрешения" ("Resolution time")
    Колонка, которая хранит календарь. По этому календарю рассчитываются сроки в обращении.
    Тип данных
    (Data type)
    "Справочник" ("Lookup")
    Код
    (Code)
    "UsrCalendarId"
    Заголовок
    (Title)
    "Используемый календарь" ("Calendar that is used")
    Справочник
    (Lookup)
    Выберите "Calendar"
    Колонка, которая хранит ссылку на сервисный договор для возможности выполнения фильтрации
    Тип данных
    (Data type)
    "Справочник" ("Lookup")
    Код
    (Code)
    "UsrServicePactId"
    Заголовок
    (Title)
    "Сервисный договор" ("Service agreement")
    Справочник
    (Lookup)
    Выберите "ServicePact"
    Колонка, которая хранит ссылку на сервис для возможности выполнения фильтрации
    Тип данных
    (Data type)
    "Справочник" ("Lookup")
    Код
    (Code)
    "UsrServiceItemId"
    Заголовок
    (Title)
    "Сервис" ("Service")
    Справочник
    (Lookup)
    Выберите "ServiceItem"
  6. На панели инструментов дизайнера объекта нажмите Опубликовать (Publish) для создания соответствующей таблицы в базе данных.

2. Создать справочник с временными параметрами 

  1. Перейдите в дизайнер системы по кнопке . В блоке Настройка системы (System setup) перейдите по ссылке Справочники (Lookups).
  2. Зарегистрируйте справочник.

    1. На панели инструментов раздела Справочники (Lookups) нажмите Добавить справочник (New lookup) и заполните свойства справочника:

      • Название (Name) — "Пользовательские сроки реакции и разрешения" ("Custom response and resolution deadlines").
      • Объект (Object) — выберите "Сервис расчета временных параметров" ("Service for calculating terms").
    2. На панели инструментов страницы настройки справочника нажмите Сохранить (Save) для сохранения справочника.
  3. Откройте справочник Пользовательские сроки реакции и разрешения (Custom response and resolution deadlines).
  4. Настройте отображение колонок реестра. Для этого воспользуйтесь инструкцией, которая приведена в статье Реестр раздела.

    Колонки, которые необходимо отобразить:

    • Сервис (Service).
    • Сервисный договор (Service agreement).
    • Используемый календарь (Calendar that it used).
    • Единица измерения времени разрешения (Resolve time unit).
    • Время разрешения (Resolution time).
    • Единица измерения времени реакции (Response time unit).
    • Время реакции (Response time).
  5. На панели инструментов страницы настройки справочника нажмите Добавить (New) и заполните значения полей справочника:

    • Сервис (Service) — выберите "Восстановление утерянных данных" ("Lost data recovery").
    • Сервисный договор (Service agreement) — выберите "78 — Elite Systems".
    • Используемый календарь (Calendar that it used) — выберите "Типовой календарь" ("Default calendar").
    • Единица измерения времени разрешения (Resolve time unit) — выберите "Календарных дней" ("Calendar days").
    • Время разрешения (Resolution time) — "1".
    • Единица измерения времени реакции (Response time unit) — выберите "Календарных часов" ("Calendar hours").
    • Время реакции (Response time) — "2".

3. Реализовать получение временных параметров 

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Исходный код (Add —> Source code).

  3. В дизайнере исходного кода заполните свойства схемы:

    • Код (Code) — "UsrServiceTermsStrategy".
    • Заголовок (Title) — "Правило расчета временных параметров" ("Rule for calculating terms").

    Для применения изменений свойств нажмите Применить (Apply).

  4. Реализуйте логику получения временных параметров.

    1. Создайте класс, который является наследником абстрактного класса BaseTermStrategy.
    2. В классе реализуйте параметризованный конструктор.

      Параметры конструктора:

      • UserConnection userConnection — текущее подключение пользователя.
      • Dictionary<string, object> — параметры, на основании которых выполняется расчет.

    Исходный код схемы исходного кода представлен ниже.

    UsrServiceTermsStrategy
    namespace Terrasoft.Configuration
    {
        using System;
        using System.Collections.Generic;
        using Terrasoft.Common;
        using Terrasoft.Configuration.Calendars;
        using Terrasoft.Core;
        using Terrasoft.Core.Entities;
        using CalendarsTimeUnit = Calendars.TimeUnit;
        using SystemSettings = Terrasoft.Core.Configuration.SysSettings;
        public class UsrServiceTermsStrategy: BaseTermStrategy<CaseTermInterval, CaseTermStates>
        {
            /* Класс-контейнер для хранения данных, которые получены из точки входа. */
            protected class StrategyData
            {
                public Guid ServiceItemId {
                    get;
                    set;
                }
                public Guid ServicePactId {
                    get;
                    set;
                }
            }
            /* Поле, которое хранит полученные из точки входа данные. */
            protected StrategyData _strategyData;
            /* Параметризированный конструктор, который необходим для корректной инициализации классом-селектором. */
            public UsrServiceTermsStrategy(UserConnection userConnection, Dictionary<string, object> args) : base(userConnection) {
                _strategyData = args.ToObject<StrategyData>();
            }
            /* Метод, который получает данные и возвращает их в экземпляре класса CaseTermInterval. */
            public override CaseTermInterval GetTermInterval(CaseTermStates mask) {
                var result = new CaseTermInterval();
                /* Создает EntitySchemaQuery-запрос. */
                var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "UsrServiceTerms");
                /* Добавляет колонки в запрос. */
                string reactionTimeUnitColumnName = esq.AddColumn("UsrReactionTimeUnit.Code").Name;
                string reactionTimeValueColumnName = esq.AddColumn("UsrReactionTimeValue").Name;
                string solutionTimeUnitColumnName = esq.AddColumn("UsrSolutionTimeUnit.Code").Name;
                string solutionTimeValueColumnName = esq.AddColumn("UsrSolutionTimeValue").Name;
                string calendarColumnName = esq.AddColumn("UsrCalendarId.Id").Name;
                /* Добавляет фильтры в запрос. */
                var esqFirstFilter = esq.CreateFilterWithParameters(FilterComparisonType.Equal, "UsrServiceItemId", _strategyData.ServiceItemId);
                var esqSecondFilter = esq.CreateFilterWithParameters(FilterComparisonType.Equal, "UsrServicePactId", _strategyData.ServicePactId);
                esq.Filters.Add(esqFirstFilter);
                esq.Filters.Add(esqSecondFilter);
                /* Выполняет и обрабатывает результаты запроса. */
                EntityCollection entityCollection = esq.GetEntityCollection(UserConnection);
                if (entityCollection.IsNotEmpty()) {
                    /* Добавляет к возвращаемому значению время реакции. */
                    if (!mask.HasFlag(CaseTermStates.ContainsResponse)) {
                        result.ResponseTerm = new TimeTerm {
                            Type = entityCollection[0].GetTypedColumnValue<CalendarsTimeUnit>(reactionTimeUnitColumnName),
                            Value = entityCollection[0].GetTypedColumnValue<int>(reactionTimeValueColumnName),
                            CalendarId = entityCollection[0].GetTypedColumnValue<Guid>(calendarColumnName)
                        };
                    }
                    /* Добавляет к возвращаемому значению время разрешения. */
                    if (!mask.HasFlag(CaseTermStates.ContainsResolve)) {
                        result.ResolveTerm = new TimeTerm {
                            Type = entityCollection[0].GetTypedColumnValue<CalendarsTimeUnit>(solutionTimeUnitColumnName),
                            Value = entityCollection[0].GetTypedColumnValue<int>(solutionTimeValueColumnName),
                            CalendarId = entityCollection[0].GetTypedColumnValue<Guid>(calendarColumnName)
                        };
                    }
                }
                return result;
            }
        }
    }
    
  5. На панели инструментов дизайнера исходного кода нажмите Сохранить (Save) для временного сохранения изменений в метаданных схемы.
  6. На панели инструментов дизайнера исходного кода нажмите Опубликовать (Publish) для выполнения изменений на уровне базы данных.

4. Подключить пользовательское правило расчета сроков 

  1. Перейдите в дизайнер системы по кнопке . В блоке Настройка системы (System setup) перейдите по ссылке Справочники (Lookups).
  2. Откройте справочник Правила расчета сроков по обращениям (Case deadline calculation schemas).
  3. На панели инструментов страницы настройки справочника нажмите Добавить (New) и заполните значения полей справочника:

    • Название (Name) — "Стратегия для 78 — Elite Systems" ("Strategy for 78 — Elite Systems").
    • Обработчик (Handler) — "Terrasoft.Configuration.UsrServiceTermsStrategy".
    • Установите признак По умолчанию (Default).

Результат выполнения примера 

Чтобы посмотреть результат выполнения примера:

  1. Перейдите в рабочее место Сервис (Service).
  2. Создайте обращение. Для этого воспользуйтесь инструкцией, которая приведена в статье Создать обращение.
  3. В поле Контрагент (Account) выберите "Elite Systems".
  4. В поле Сервис (Service) выберите "Восстановление утерянных данных" ("Lost data recovery").

В результате выполнения примера на страницу обращения добавлено пользовательское правило для расчета временных параметров обращений. Время реакции (т. е. значение поля Время реакции (Response time)) — 2 часа. Время разрешения (т. е. значение поля Время разрешения (Resolution time)) — 1 рабочий день.