Для активностей CRM можно создавать обработчики событий, которые при помощи скриптов или бизнес-процессов будут запускать определённые действия в системе после того, как события произошли.
Например, при создании активности Вебинар обработчик события запустит процесс, в ходе которого исполнителю придёт задача сформировать и согласовать с руководителем план проведения вебинара.
Настройка обработчика событий осуществляется в рамках создания пользовательского модуля. В обработчик можно передавать контекст активности CRM, а также ID задачи и ответственного за её исполнение пользователя.
начало внимание
Создавать обработчики событий могут только пользователи, входящие в группу Администраторы.
конец внимание
Создать обработчик событий
Разберём создание обработчика событий на примере.
Предположим, нам нужно, чтобы при создании активности Вебинар исполнителю назначалась задача создать и загрузить в систему план мероприятия для последующего его согласования с руководителем. После проведения вебинара сотруднику необходимо загрузить отчёт о вебинаре.
Для этого:
- Перейдите в раздел Администрирование > Модули и создайте пользовательский модуль.
- В настройках модуля добавьте бизнес-процесс или скрипт, который будет выполняться при достижении события.
Для нашего примера бизнес-процесс, созданный на вкладке Процессы, может выглядеть следующим образом:
- Перейдите на вкладку Обработка событий.
- Нажмите кнопку +Обработчик и установите параметры:
- Название* — введите название для обработчика событий, например, Новый вебинар;
- Домен события — задайте область, события в которой будет отслеживать обработчик. Для обработки событий в активностях CRM выберите Задачи;
- Событие — укажите событие, при котором будет запускаться обработчик: Отмена задачи, Завершение задачи, Создание задачи, Обновление задачи. В данном случае выберите Создание задачи;
- Фильтр типа задачи — выберите тип активности CRM, который будет обрабатываться: Все задачи CRM, Звонок, Письмо, Вебинар, Встреча. Для нашего примера выберите Вебинар;
- Тип обработчика* — выберите действие, которое будет совершаться при выполнении события: Запуск скрипта, Запуск процесса, Передача сообщения в сервис (доступно только для поставки ELMA365 On-Premises). В нашем случае нужно выбрать Запуск процесса.
- Нажмите кнопку Создать.
- На открывшейся странице настроек обработчика событий укажите процесс или сценарий, созданный внутри пользовательского модуля, который будет запускаться при выбранном событии. В нашем случае укажите созданный на шаге 2 бизнес-процесс.
- На верхней панели страницы нажмите Сохранить, а затем Опубликовать, чтобы активировать обработчик событий.
- Вернитесь на основную страницу модуля и включите его.
После этого при создании активности типа Вебинар в системе сработает обработчик событий, который запустит указанный бизнес-процесс. В ходе этого процесса сотрудник получит задачу сформировать план мероприятия, а затем согласовать его с руководителем.
Получение данных из активности CRM
При создании обработчика событий вы можете использовать данные из связанного с активностью CRM элемента. Например, передать в бизнес-процесс или сценарий контекст активности, а также ID задачи и пользователя, ответственного за её выполнение.
Ниже приведён пример функции получения из JSON-файла данных о задаче и элементе, по которому она поставлена. Полученные данные можно обрабатывать в рамках бизнес-процесса, который запускается обработчиком событий.
В данном примере обработчик событий запускает процесс после создания активности CRM типа Письмо.
Разместите на поле для моделирования бизнес-процесса блок Сценарий сразу после стартового события. Создайте в блоке новую функцию со следующим содержанием:
async function afterInit(): Promise<void>
{
/*Context.data.element — переменная из контекста бизнес-процесса с типом Произвольное приложение, в которую в рамках настройки обработчика должен быть записан элемент, связанный с активностью CRM*/
const element = await Context.data.element!.fetch();
/*element.code — код элемента, по которому можно определить тип связанного элемента (сделка, лид и т. д.), чтобы запускать процесс только для элемента определённого типа*/
/ Чтобы запускать процесс только для определённого типа (например, только для сделок), рекомендуется после блока запуска сценария afterInit разместить шлюз, проверяющий значение переменной, содержащей код элемента*/
Context.data.element_code = element.code;
/*Context.data.event — переменная из контекста бизнес-процесса с типом Произвольное приложение, в которую в рамках настройки обработчика должен быть записан JSON-файл с данными об активности CRM*/
/*event.originalPerformers[] — id пользователя, назначенного ответственным за активность CRM*/
const performer: string = Context.data.event.originalPerformers[0];
/*Ищем ответственного пользователя по ID и записываем его в переменную Context.data.performer из контекста бизнес-процесса с типом Пользователи*/
Context.data.performer = await System.users.search().where(f => f.__id.eq(performer)).first();
}