D7-crm

Тел: +34624100225 +79262036707
  • Главная
  • Услуги
    • Внедрение amoCRM
    • Внедрение Битрикс24
    • Интеграции CRM
    • Техническая поддержка CRM
    • Обучение работе в CRM
  • Лицензирование
    • Лицензии amoCRM
    • Лицензии Битрикс24
  • О нас
    • Кейсы
    • Блог про автоматизацию
  • Контакты
    • Вакансии
VPN нового поколения
Понедельник, 25 апреля 2022 / Опубликовано в Albato

Инструкция по настройке интеграций с YouTrack | Albato

Время на прочтение: 6 минут(ы)





Сервис YouTrack является одним из самых популярных таск-менеджеров, который используется самыми разными компаниями вне зависимости от их численности и сферы деятельности.

В Albato доступны интеграции с сервисом, когда мы можете передавать в YouTrack данные из любых систем. Пока для сервиса доступно действие

  • Новая задача

Кроме этого, доступны два триггера (действия), актуальные, когда сервис является источником данных.

  • Задача создана
  • Задача обновлена

Чтобы использовать таск-менеджер YouTrack в своих интеграциях, в первую очередь, следует сначала выполнить подключение сервиса к Albato.

Подключение YouTrack к Albato

Зайдите в верхнем меню интерфейса Albato в раздел «Подключения» и нажмите кнопку «Добавить подключение».

Выберите из списка сервисов категорию «Другое» или воспользуйтесь поисковой строкой, чтобы быстрее найти YouTrack и нажмите «Добавить подключение».

На следующем экране настройки полей нужно заполнить, используя данные из самого сервиса YouTrack.

Задайте уникальное название для сервиса и перейдите в настройки YouTrack. Настройки подключения Albato закрывать не нужно.

Скопируйте ID либо из адресной строки браузера, либо укажите название рабочей области, которое вы использовали при создании аккаунта. Перейдите в список пользователей системы, выберите пользователя, от которого будет идти доступ к интеграции и откройте у него вкладку «Аутентификация»:

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

Переносим значение в Albato и завершаем настройку подключения:

Первая часть подключения готова. Для того, чтобы получать тикеты из YouTrack, нужно ещё создать два Workflow в YouTrack, прописать туда наши JS-коды и вставить в них вебхук из подключения.

Перейдите во вкладку Workflows:

Создайте новый Workflow:

Задайте ему название и выберите правило «При изменении» (on-change):

Вставьте полностью туда следующий код:

const albatoHook = '{{albatoHook}}';
const entities = require('@jetbrains/youtrack-scripting-api/entities');
const http = require('@jetbrains/youtrack-scripting-api/http');
const workflow = require('@jetbrains/youtrack-scripting-api/workflow');

function periodToHours(period) {
  return period ? (
    period.getMinutes() / 60 +
    (
      period.getHours() +
      period.getDays() * 8 +
      period.getWeeks() * 40
    )
  ) : 0;
}

function formatValue(value) {
  if (typeof value === 'object' && value !== null) {
    switch (value.$$type) {
      case 'User':
        value = value.fullName;
        break;
      default:
        if ('getPeriodType' in value) {
          value = periodToHours(value);
        } else if (value.constructor.name === 'ImmutableIterableWW') {
          const array = value;
          value = [];
          array.forEach(item => value.push(item.name));
        } else {
          value = value.name;
        }
    }
  }
  return value === undefined ? null : value;
}
exports.rule = entities.Issue.onChange({
  title: workflow.i18n('Send webhook to Albato'),
  guard: function(ctx) {
    return ctx.issue.becomesReported && ctx.issue.isReported;
  },
  action: function(ctx) {
    const issue = ctx.issue;
    const fields = {};
    for (let field in issue.fields) {
      fields[field] = formatValue(issue.fields[field]);
    }
    const tags = [];
    issue.tags.forEach(nameTag => tags.push(nameTag.name));
    const payload = {
      'event': 'newTicket',
      'ticketUrl': issue.url,
      'tags': tags,
      'id': issue.id,
      'summary': issue.summary,
      'description': issue.description,
      'projectId': issue.project.key,
      'project': issue.project.name,
      'dateCreate': issue.created,
      'dateUpdate': issue.updated,
      'fields': fields,
    };
    console.log(issue.tags);
    const connection = new http.Connection(albatoHook, null, 2000);
    connection.addHeader('content-type', 'application/json');
    const response = connection.postSync('', null, payload);
    if (!response.isSuccess) {
      console.warn('Failed to post webhook to Albato. Details: ' + response.toString());
    }
  },
});

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

const albatoHook = '{{albatoHook}}';
const entities = require('@jetbrains/youtrack-scripting-api/entities');
const http = require('@jetbrains/youtrack-scripting-api/http');
const workflow = require('@jetbrains/youtrack-scripting-api/workflow');

function periodToHours(period) {
  return period ? (
    period.getMinutes() / 60 +
    (
      period.getHours() +
      period.getDays() * 8 +
      period.getWeeks() * 40
    )
  ) : 0;
}

function formatValue(value) {
  if (typeof value === 'object' && value !== null) {
    switch (value.$$type) {
      case 'User':
        value = value.fullName;
        break;
      default:
        if ('getPeriodType' in value) {
          value = periodToHours(value);
        } else if (value.constructor.name === 'ImmutableIterableWW') {
          const array = value;
          value = [];
          array.forEach(item => value.push(item.name));
        } else {
          value = value.name;
        }
    }
  }
  return value === undefined ? null : value;
}
exports.rule = entities.Issue.onChange({
  title: workflow.i18n('Send webhook to Albato'),
  guard: function(ctx) {
    return !ctx.issue.becomesReported && ctx.issue.isReported;
  },
  action: function(ctx) {
    const issue = ctx.issue;
    const fields = {};
    for (let field in issue.fields) {
      fields[field] = formatValue(issue.fields[field]);
    }
    const tags = [];
    issue.tags.forEach(nameTag => tags.push(nameTag.name));
    const payload = {
      'event': 'changedTicket',
      'ticketUrl': issue.url,
      'tags': tags,
      'id': issue.id,
      'summary': issue.summary,
      'description': issue.description,
      'projectId': issue.project.key,
      'project': issue.project.name,
      'dateCreate': issue.created,
      'dateUpdate': issue.updated,
      'fields': fields,
    };
    console.log(issue.tags);
    const connection = new http.Connection(albatoHook, null, 2000);
    connection.addHeader('content-type', 'application/json');
    const response = connection.postSync('', null, payload);
    if (!response.isSuccess) {
      console.warn('Failed to post webhook to Albato. Details: ' + response.toString());
    }
  },
});

Важный момент!

Теперь вам нужно в каждом правиле, куда вы вставили код, заменить в самой первой константе



«const albatoHook = ‘{{albatoHook}}’;», значение {{albatoHook}}, на реальный вебхук из созданного ранее подключения. Скопируйте вебхук, из вашего созданного подключения в Albato.

Вставьте вебхук в каждый созданный вами процесс:

Далее вам нужно привязать ваш Workflow к нужному вам проекту. Для этого вернитесь в список ваших Workflow, выделите созданный вами Workflow и привяжите его к нужным проектам:

Готово! Теперь вы можете использовать сервис в своих интеграциях.

Настройка связок с YouTrack

В Albato есть возможность передавать данные в YouTrack, чтобы сервис выполнял действие по постановке задач.

На первом этапе создания связки выберите сервис, из которого хотите получать данные, а на этапе выбора сервиса, куда передавать данные выберите YouTrack:

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

На следующим этапе вам для заполнения будут доступны несколько полей. Название, приоритет, тип и состояние являются обязательными из списка.

Для примера заполним таблицу значениями из Битрикс24:

  • В поле «Название» мы установим название (заголовок) задачи из Битрикс24.
  • В поле «Комментарий» мы можем поставить значение «Комментарий», чтобы снабдить данными новую задачу в YouTrack.
  • Значение приоритета можно выбрать из справочника. Для примера мы будем использовать нормальный уровень приоритетности задачи (96-2).
  • В поле Type установим значение Task (96-9), тем самым укажем, что это обычная задача.
  • В поле State укажем значение Open (98-1), то есть задача только появилась и она открыта.
  • Subsystem заполняется значением, в котором будет передаваться размещение задачи.
  • Поле Estimation нужно для оценки времени, которое уйдет на выполнение определенной задачи.

Пример заполненных полей:

ВАЖНО! Поле Spent time (затраченное время) мы не заполняем никакими значениями. Дело в том, что это поле заполняется самим YouTrack по факту проделанной работы. Значение формируется автоматически из времени, которое задача была в статусе In Progress до смены статуса на «Done».

Настройка исходящих данных

Теперь рассмотрим, как мы будем ловить поля для проекта. Создайте в Albato связку, выберите получать данные из YouTrack и нужное вам событие:

Если вы выбрали обновление, то на следующем шаге вы можете поставить галочку на «Загружать каждую задачу лишь единожды», если галочка стоит, то каждый тикет будет в одну связку попадать лишь один раз без повторного попадания.

На шаге «Ловец хуков», вам необходимо нажать кнопку «Ожидать вебхук», затем инициировать то событие, которое было выбрано (создание или изменение тикета) в YouTrack. После, вы получите все поля вашего проекта:

Дальше вы выбираете, куда отправлять данные, например, в Telegram.

Далее вы формируете текст вместе с кастомными полями, которые могут прийти из YouTrack.

Готово! Связка создана.

В каждой связке ловец хуков запоминает поля строго на одну свою связку. Вы можете создать несколько связок на каждый проект (если во всех проектах разный набор полей) и отфильтровать связку по проекту. Для этого откройте фильтр входящих данных у триггера:

Добавьте условие и выберите ID проекта, выберите условие «равно», а в правом поле, пропишите айди вашего проекта в YouTrack:

После этого нажмите сохранить. Такая связка будет работать только с одним проектом, а вы сможете разделить данные по проектам при помощи разных связок, создавая разные сценарии. Кроме этого, в фильтре можно задать статус задачи, что в комбинации с галочкой «Загружать каждую задачу лишь единожды», будет всегда запускаться определённый сценарий один раз, при попадании задачи в определённом статусе.

На этом настройка связки с YouTrack закончена.

Дополнительные параметры настройки

После основной настройки связки вы можете настроить дополнительные действия или инструменты. Для этого нажмите в «+» и выберите необходимый шаг, который необходимо совершить системе.

Вы также можете настроить фильтр входящих данных. О том, как он работает, можно подробно прочитать здесь.







Что вы можете прочитать дальше

Подключение Google Lead form extensions к AmoCRM
Новое действие: примечание к контакту/компании в amoCRM | Albato
Инструмент «Объединение строк» | Albato

Категории

  • 1С
  • Albato
  • amoCRM
  • Apix-drive
  • CRM
  • Profitbase
  • Roistat
  • U-ON Travel
  • Без рубрики
  • Битрикс24

Услуги

Внедрение amoCRM
Заказать интеграцию
Заказать внедрение
Внедрение Битрикс24

Получить консультацию


    [cf7ic]

    Поиск

    Отраслевая экспертиза

    • Строительство
    • Салоны красоты
    • Онлайн образование
    • Туризм
    • Недвижимость

    Политика конфиденциальности

    Пользовательское соглашение

    Контакты

    T +34624100225
    Email: s@d7-crm.ru

    D7-CRM
    г. Москва

    Открыть Яндекс карты

    меню

    D7-crm

    © 2016-2025 All rights reserved. D7-CRM.

    НАВЕРХ