Интеграция Трекера с Cloud Functions

В этом руководстве вы настроите интеграцию Трекера с Cloud Functions для переноса записей о затраченном времени из подзадач в родительскую задачу.

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

Ограничения примера

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

Чтобы настроить перенос записей:

  1. Зарегистрируйте OAuth-приложение и получите токен
  2. Получите ID организации для доступа к API
  3. Создайте функцию Cloud Functions
  4. Настройте триггер
  5. Протестируйте автоматическое обновление данных

Перед началом работы

Сценарий рассчитан на внешний Трекер с организацией Яндекс 360 для бизнеса. Для организаций Yandex Cloud и внутреннего Трекера потребуется адаптировать код функции.

Для прохождения сценария вам понадобятся учетные записи:

  • в Yandex Cloud с платежным аккаунтом и ролью не ниже organization-manager.admin;
  • в Трекере с организацией Яндекс 360 для бизнеса.

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Биллинг убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

В стоимость поддержки инфраструктуры входит плата за использование функции (см. тарифы Cloud Functions);

Если созданные ресурсы вам больше не нужны, удалите их.

Зарегистрируйте OAuth-приложение и получите токен

Зарегистрируйте OAuth-приложение и получите токен по инструкции по доступу к API Трекера. Сохраните токен — он понадобится при создании функции.

Получите ID организации для доступа к API

  1. Перейдите в Трекер. Нажмите кнопку Войти в Трекер.
  2. Чтобы узнать идентификатор организации, перейдите на страницу Администрирование → Организации и скопируйте значение поля идентификатор.
  3. Скопируйте и сохраните идентификатор организации — он понадобится при создании функции.

Создайте функцию Cloud Functions

  1. Перейдите в консоль управления.
  2. В левом верхнем углу нажмите кнопку  Все сервисы.
  3. Выберите Бессерверные вычисления → Cloud Functions.
  4. Нажмите кнопку Создать функцию.
  5. Укажите название функции, например timeupdater.
  6. Нажмите кнопку Создать.
  7. В открывшемся окне Редактор выберите среду выполнения Python / 3.12.
  8. Нажмите кнопку Продолжить.
  9. В поле Способ нажмите кнопку ZIP-архив.
  10. Прикрепите тестовый архив.
  11. В поле Точка входа укажите index.handler.
  12. В разделе Параметры в поле Переменные окружения добавьте:
    • ORG — идентификатор организации Яндекс 360 для бизнеса.
    • TOKEN — токен доступа к приложению.
  13. Нажмите кнопку Сохранить изменения.
  14. Дождитесь загрузки страницы и в поле Ссылка для вызова скопируйте и сохраните ссылку для вызова функции.
    Пример ссылки:
    https://functions.yandexcloud.net/d4e94uav3108********
    
  15. Активируйте опцию Публичная функция.

Настройте триггер

Создайте очередь

  1. На панели слева нажмите  Очереди → Создать очередь.
  2. Выберите шаблон очереди, например Базовая разработка.
  3. Задайте имя, например Function Test.
  4. Нажмите кнопку Создать.

Создайте триггер

  1. На странице очереди в правом верхнем углу нажмите  Настройки очереди.

  2. На панели слева выберите Автоматизация → Триггеры и нажмите кнопку Создать триггер.

  3. В поле Название введите название триггера, например timeupdater.

  4. В разделе Условия срабатывания выберите Учёт Времени → Затрачено времени и укажите операцию сравнения Значение поля изменилось.

  5. В разделе Действия триггера выберите HTTP-запрос.

  6. В открывшейся форме выберите метод запроса POST.

    Функция из тестового архива также поддерживает метод GET.

  7. В поле Адрес введите:

    https://functions.yandexcloud.net/<идентификатор_функции>?id={{issue.key}}
    

    Где https://functions.yandexcloud.net/<идентификатор_функции> — ссылка для вызова функции, которую вы сохранили при создании функции.
    Пример:

    https://functions.yandexcloud.net/d4e94uav3108********?id={{issue.key}}
    
  8. Нажмите кнопку Создать.

Протестируйте автоматическое обновление данных

Создайте задачи

  1. Создайте родительскую задачу, в которую будут добавляться записи о затраченном времени из подзадач:
    1. На странице очереди Function Test нажмите кнопку Создать задачу.
    2. В открывшейся форме в поле Название задачи введите название задачи, например Parent Task.
    3. Нажмите кнопку Создать.
  2. Создайте подзадачи:
    1. На странице задачи Parent Task в правом верхнем углу в меню выберите Добавить подзадачу.
    2. В открывшейся форме в поле Название задачи введите название подзадачи, например Subtask-1.
    3. Аналогичным образом создайте еще одну или несколько подзадач с названиями Subtask-2, Subtask-3.

Внесите данные о затраченном времени в подзадачах

  1. На странице подзадачи Subtask-1 в правом верхнем углу в меню выберите Указать затраченное время.
  2. В открывшемся окне в поле Затрачено времени укажите любое время, например 1h25m.
  3. Аналогичным образом добавьте затраченное время в других подзадачах.

Убедитесь в корректной работе функции

  1. Перейдите на страницу задачи Parent Task.
  2. Убедитесь, что в блоке параметров задачи в разделе Учёт Времени в поле Затрачено времени учтено указанное в подзадаче время.

Как удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы, удалите функцию Cloud Functions.