Слоты

Место, в котором будет показан плагин, а также механизм его вызова, например кнопка или часть формы, определяется слотом. Слот указывается в манифесте. Плагин можно одновременно интегрировать в несколько слотов.

Контекст запуска плагина

Контекст запуска плагина определяется слотом, в котором он находится. Контекст содержит следующую информацию:

  • Текущая тема хоста.
  • Текущий язык хоста.
  • Контекст слота — это данные из окружения страницы, в которой запущен плагин. Например, в слоте issue.action вернется информация по открытому тикету. Формат контекста максимально приближен к типам публичного API.

Уровень контекста слота задается параметром contextLevel в manifest.json. Подробнее об уровнях контекста — в разделе Уровни контекста слота.

Доступные точки интеграции

Расширение доступных точек интеграции

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

Слот определяет, где и как пользователь будет запускать ваш плагин. Правильный выбор — это не про технику, а про то, в какой момент пользователю нужна ваша функциональность и где он будет ее искать.

Прежде чем выбирать слот, ответьте на вопрос: В какой момент у пользователя возникает потребность в вашем плагине?

Блок-схема как выбрать слот для плагина

schema

Глобальные

Слот Описание Формат окна Контекст слота
navigation Глобальная панель навигации слева, раздел Приложения Плагин открывается отдельной страницей и имеет свой url Пустой объект
attachment.viewer.action Галерея. Кнопка в действиях Модальное окно Данные вложения

Плагин как самостоятельный инструмент — navigation

Пользователь приходит в Трекер не работать с конкретным тикетом, а использовать ваш инструмент: импортировать данные, посмотреть отчет, провести массовую операцию. Он идет в левую панель — туда, где Задачи, Проекты, Дашборды.

Это ваш слот, если:

  • Плагин решает задачу независимо от конкретного тикета или очереди.

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

  • Результат работы — список, отчет или форма, а не действие над сущностью.

Не этот слот, если плагин всегда нужен в контексте тикета — пользователь не будет искать его в навигации.

Формат: отдельная страница со своим URL. Это самый просторный формат — можно строить полноценный интерфейс.

image.png

Действие над вложением — attachment.viewer.action

Пользователь смотрит на файл в галерее вложений и хочет что-то с ним сделать: отредактировать изображение, распознать текст, конвертировать. Он находится внутри просмотрщика и не хочет из него уходить.

Это ваш слот, если:

  • Плагину нужен конкретный файл — его тип, содержимое, URL.

  • Действие логически связано с просмотром файла, а не с тикетом в целом.

image.png

Страница тикета

Слот Описание Формат окна Контекст слота
issue.action Меню Действия справа сверху на странице задачи. Модальное окно Данные открытого тикета
issue.block Область под описанием в тикете. Плагин встраивается в область ниже связей тикета в раскрываемой секции Данные открытого тикета
issue.tab Плагин в виде таба на странице тикета. Плагин встраивается в список табов. Имеет свой url в контексте тикета. Данные открытого тикета
issue.comment.action Действия с комментарием. Модальное окно Данные комментария
issue.editor.action Редактор текста. Кнопка в нижней панели редактора. Всплывающее окно с привязкой к кнопке Данные открытого тикета

Пользователь хочет совершить действие с тикетом — issue.action

Пользователь смотрит на тикет и хочет что-то с ним сделать: отправить, сгенерировать, запустить процесс. Он потянется в меню Действия — туда, где уже живут похожие команды вроде Создать подзадачу или Скопировать задачу.

Это ваш слот, если:

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

  • Результат действия не нужно постоянно видеть на странице.

  • Сценарий линейный: запустил → получил результат → закрыл.

Не этот слот, если пользователь должен видеть данные плагина каждый раз, когда открывает тикет — тогда смотрите issue.block.

Формат: модальное окно, внутри один сценарий

image.png

Данные плагина нужны при каждом открытии тикета — issue.block

Пользователь открывает тикет и контекст из вашего плагина помогает ему работать — он видит статус деплоя, связанные PR, данные из внешней системы. Ему не нужно ничего запускать, данные просто есть.

Это ваш слот, если:

  • Плагин показывает состояние или данные, а не выполняет действие.

  • Информация актуальна всегда, когда пользователь смотрит на тикет.

  • Нет явного триггера запуска — плагин полезен сам по себе.

Не этот слот, если данные нужны редко или плагин требует ввода параметров перед показом — тогда смотрите issue.action или issue.tab.

Формат: встроенная раскрываемая секция ниже блока связей. Пользователь может свернуть, если не нужна прямо сейчас.

Важно про высоту: блок загружается вместе со страницей тикета. Не делайте его огромным — высота должна быть оправдана содержимым, иначе блок будет визуально «продавливать» страницу.

image.png

Сложный инструмент внутри тикета — issue.tab

Пользователь работает с тикетом и ему нужен полноценный инструмент: много данных, своя навигация, объемная таблица. Он привычно идет на вкладку — как Комментарии или История.

Это ваш слот, если:

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

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

  • Есть собственная логика внутри: фильтры, список, несколько состояний.

Не этот слот, если функциональность простая — таб создает ощущение, что там будет что-то большое. Пустой или почти пустой таб выглядит как ошибка.

Формат: встроенная область в контексте тикета.

image.png

Действие применяется к конкретному комментарию — issue.comment.action

Пользователь читает комментарий и хочет что-то с ним сделать: создать задачу, перевести, отправить. Он потянется к «⋯» рядом с комментарием — это естественное место для действий с конкретным сообщением.

Это ваш слот, если:

  • Плагину нужен текст, автор или дата конкретного комментария.

  • Действие имеет смысл только для одного комментария, а не для тикета в целом.

Формат: модальное окно, внутри один сценарий

image.png

Действие вставляет контент в редактор — issue.editor.action

Пользователь пишет комментарий или описание и хочет вставить готовый контент: шаблон, сгенерированный текст, данные из внешней системы. Он видит кнопку в нижней панели редактора — рядом с Призвать и Шаблоны — и запускает плагин, не покидая редактор.

Это ваш слот, если:

  • Плагин генерирует или подбирает текст, который нужно вставить в поле ввода.

  • Результат работы плагина — фрагмент текста или разметки, а не отдельное действие над тикетом.

  • Пользователь запускает плагин в момент написания, а не после.

Не этот слот, если плагин выполняет действие над тикетом целиком — тогда смотрите issue.action.

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

image.png

Страница очереди

Слот Описание Формат окна Контекст слота
queue.action Меню Действия справа сверху на странице очереди. Модальное окно Данные открытой очереди
queue.tab Плагин в виде таба на странице очереди. Плагин встраивается в список табов. Имеет свой url в контексте очереди. Данные открытой очереди

Пользователь хочет совершить действие с очередью — queue.action

Пользователь смотрит на очередь и хочет что-то с ней сделать: запустить процесс, сгенерировать отчет, выполнить массовую операцию. Он потянется в меню Действия — туда, где уже живут похожие команды.

Это ваш слот, если:

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

  • Результат действия не нужно постоянно видеть на странице.

  • Сценарий линейный: запустил → получил результат → закрыл.

Формат: модальное окно, внутри один сценарий

image.png

Сложный инструмент внутри очереди — queue.tab

Пользователь работает с очередью и ему нужен полноценный инструмент: много данных, своя навигация, объемная таблица. Он привычно идет на вкладку — как на другие табы страницы очереди.

Это ваш слот, если:

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

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

  • Есть собственная логика внутри: фильтры, список, несколько состояний.

Не этот слот, если функциональность простая — таб создает ощущение, что там будет что-то большое. Пустой или почти пустой таб выглядит как ошибка.

Формат: встроенная область в контексте очереди.

image.png

Автоматизации

Слот Описание Формат окна Контекст слота
trigger.create.action Страница триггера. Создание действия. UI-плагины для упрощения формы создания вебхука, не имеют дополнительной логики. Появляется новый тип действия, форму действия предоставляет плагин Ключ очереди
trigger.edit.action Страница триггера. Редактирование действия. UI-плагины для упрощения формы редактирования вебхука, не имеют дополнительной логики. Появляется новый тип действия, форму действия предоставляет плагин Ключ очереди и данные действия

Новый тип действия в триггере — trigger.create.action + trigger.edit.action

Администратор настраивает автоматизацию и хочет добавить действие, которого нет в стандартном списке: отправить уведомление в свою систему, запустить вебхук с кастомными параметрами. Он выбирает тип действия из списка — плагин появляется там как новая опция.

Это ваши слоты, если:

  • Плагин добавляет новый тип автоматического действия, а не работает с пользователем в реальном времени.

  • Нужна форма настройки: пользователь задает параметры один раз при создании триггера.

Важно: эти два слота почти всегда идут в паре. Если вы даете возможность создать действие, пользователь должен уметь его и отредактировать — иначе при изменении триггера он увидит пустую форму.

Формат: встроенная форма внутри страницы триггера. Стилистически должна выглядеть как нативная часть автоматизации, без лишних рамок и заголовков.

image.png

image.png

Проект

Слот Описание Формат окна Контекст слота
project.action Страница проекта. Кнопка Меню проекта Модальное окно Данные проекта
project.tab Плагин в виде таба на странице проекта. Плагин встраивается в список табов. Имеет свой url в контексте проекта. Данные проекта
project.block Область под описанием проекта. Плагин встраивается в область ниже связей проекта в раскрываемой секции Данные проекта
project.editor.action Редактор комментариев в проекте. Кнопка в нижней панели редактора. Всплывающее окно с привязкой к кнопке Данные проекта

Портфели

Слот Описание Формат окна Контекст слота
portfolio.action Страница портфеля. Кнопка Меню портфеля проектов Модальное окно Данные портфеля
portfolio.tab Плагин в виде таба на странице портфеля. Плагин встраивается в список табов. Имеет свой url в контексте портфеля. Данные портфеля
portfolio.block Область под описанием портфеля. Плагин встраивается в область ниже связей портфеля в раскрываемой секции Данные портфеля
portfolio.editor.action Редактор комментариев в портфеле. Кнопка в нижней панели редактора. Всплывающее окно с привязкой к кнопке Данные портфеля

Цели

Слот Описание Формат окна Контекст слота
goal.action Страница цели. Кнопка Меню цели Модальное окно Данные цели
goal.tab Плагин в виде таба на странице цели. Плагин встраивается в область ниже списка табов. Имеет свой url в контексте цели. Данные цели
goal.block Область под описанием цели. Плагин встраивается в область ниже связей цели в раскрываемой секции Данные цели
goal.editor.action Редактор комментариев в цели. Кнопка в нижней панели редактора. Всплывающее окно с привязкой к кнопке Данные цели

project.action / portfolio.action / goal.action

Пользователь работает с проектом, портфелем или целью и хочет совершить действие в этом контексте. Механика одинаковая: кнопка «⋯» в правом верхнем углу страницы, модальное окно.

Выбирайте слот по тому, какие данные нужны плагину:

  • Нужен ID и параметры проекта → project.action.

  • Нужны данные портфеля → portfolio.action.

  • Нужны данные цели → goal.action.

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

image.png

Действие вставляет контент в редактор комментариев — project.editor.action / portfolio.editor.action / goal.editor.action

Пользователь пишет комментарий в проекте, портфеле или цели и хочет вставить готовый контент: шаблон, сгенерированный текст, данные из внешней системы. Он видит кнопку в нижней панели редактора — рядом с Призвать и Шаблоны — и запускает плагин, не покидая редактор.

Это ваш слот, если:

  • Плагин генерирует или подбирает текст, который нужно вставить в поле ввода.

  • Результат работы плагина — фрагмент текста или разметки, а не отдельное действие над сущностью.

  • Пользователь запускает плагин в момент написания комментария, а не после.

Не этот слот, если плагин выполняет действие над сущностью целиком — тогда смотрите project.action, portfolio.action или goal.action.

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

Выбирайте слот по тому, в контексте какой сущности находится редактор:

  • Редактор комментариев в проекте → project.editor.action.

  • Редактор комментариев в портфеле → portfolio.editor.action.

  • Редактор комментариев в цели → goal.editor.action.

Контекст слота содержит данные соответствующей сущности — проекта, портфеля или цели.

Доски

Слот Описание Формат окна Контекст слота
board.tab Страница доски, таб доски Контент на странице Данные доски