Слоты
Место, в котором будет показан плагин, а также механизм его вызова, например кнопка или часть формы, определяется слотом. Слот указывается в манифесте. Плагин можно одновременно интегрировать в несколько слотов.
Контекст запуска плагина
Контекст запуска плагина определяется слотом, в котором он находится. Контекст содержит следующую информацию:
- Текущая тема хоста.
- Текущий язык хоста.
- Контекст слота — это данные из окружения страницы, в которой запущен плагин. Например, в слоте
issue.actionвернется информация по открытому тикету. Формат контекста максимально приближен к типам публичного API.
Уровень контекста слота задается параметром contextLevel в manifest.json. Подробнее об уровнях контекста — в разделе Уровни контекста слота.
Доступные точки интеграции
Расширение доступных точек интеграции
Мы постоянно добавляем доступные точки интеграции. Вы можете оставить заявку на добавление нового слота через обращение в саппорт .
Слот определяет, где и как пользователь будет запускать ваш плагин. Правильный выбор — это не про технику, а про то, в какой момент пользователю нужна ваша функциональность и где он будет ее искать.
Прежде чем выбирать слот, ответьте на вопрос: В какой момент у пользователя возникает потребность в вашем плагине?
Блок-схема как выбрать слот для плагина
![]()
Глобальные
| Слот | Описание | Формат окна | Контекст слота |
|---|---|---|---|
| navigation | Глобальная панель навигации слева, раздел Приложения | Плагин открывается отдельной страницей и имеет свой url | Пустой объект |
| attachment.viewer.action | Галерея. Кнопка в действиях | Модальное окно | Данные вложения |
Плагин как самостоятельный инструмент — navigation
Пользователь приходит в Трекер не работать с конкретным тикетом, а использовать ваш инструмент: импортировать данные, посмотреть отчет, провести массовую операцию. Он идет в левую панель — туда, где Задачи, Проекты, Дашборды.
Это ваш слот, если:
-
Плагин решает задачу независимо от конкретного тикета или очереди.
-
Пользователь возвращается к нему регулярно или это точка входа в отдельный рабочий процесс.
-
Результат работы — список, отчет или форма, а не действие над сущностью.
Не этот слот, если плагин всегда нужен в контексте тикета — пользователь не будет искать его в навигации.
Формат: отдельная страница со своим URL. Это самый просторный формат — можно строить полноценный интерфейс.
![]()
Действие над вложением — attachment.viewer.action
Пользователь смотрит на файл в галерее вложений и хочет что-то с ним сделать: отредактировать изображение, распознать текст, конвертировать. Он находится внутри просмотрщика и не хочет из него уходить.
Это ваш слот, если:
-
Плагину нужен конкретный файл — его тип, содержимое, URL.
-
Действие логически связано с просмотром файла, а не с тикетом в целом.
![]()
Страница тикета
| Слот | Описание | Формат окна | Контекст слота |
|---|---|---|---|
| issue.action | Меню Действия справа сверху на странице задачи. | Модальное окно | Данные открытого тикета |
| issue.block | Область под описанием в тикете. | Плагин встраивается в область ниже связей тикета в раскрываемой секции | Данные открытого тикета |
| issue.tab | Плагин в виде таба на странице тикета. | Плагин встраивается в список табов. Имеет свой url в контексте тикета. | Данные открытого тикета |
| issue.comment.action | Действия с комментарием. | Модальное окно | Данные комментария |
| issue.editor.action | Редактор текста. Кнопка в нижней панели редактора. | Всплывающее окно с привязкой к кнопке | Данные открытого тикета |
Пользователь хочет совершить действие с тикетом — issue.action
Пользователь смотрит на тикет и хочет что-то с ним сделать: отправить, сгенерировать, запустить процесс. Он потянется в меню Действия — туда, где уже живут похожие команды вроде Создать подзадачу или Скопировать задачу.
Это ваш слот, если:
-
Плагин запускается по намерению пользователя, а не показывает данные автоматически.
-
Результат действия не нужно постоянно видеть на странице.
-
Сценарий линейный: запустил → получил результат → закрыл.
Не этот слот, если пользователь должен видеть данные плагина каждый раз, когда открывает тикет — тогда смотрите issue.block.
Формат: модальное окно, внутри один сценарий
![]()
Данные плагина нужны при каждом открытии тикета — issue.block
Пользователь открывает тикет и контекст из вашего плагина помогает ему работать — он видит статус деплоя, связанные PR, данные из внешней системы. Ему не нужно ничего запускать, данные просто есть.
Это ваш слот, если:
-
Плагин показывает состояние или данные, а не выполняет действие.
-
Информация актуальна всегда, когда пользователь смотрит на тикет.
-
Нет явного триггера запуска — плагин полезен сам по себе.
Не этот слот, если данные нужны редко или плагин требует ввода параметров перед показом — тогда смотрите issue.action или issue.tab.
Формат: встроенная раскрываемая секция ниже блока связей. Пользователь может свернуть, если не нужна прямо сейчас.
Важно про высоту: блок загружается вместе со страницей тикета. Не делайте его огромным — высота должна быть оправдана содержимым, иначе блок будет визуально «продавливать» страницу.
![]()
Сложный инструмент внутри тикета — issue.tab
Пользователь работает с тикетом и ему нужен полноценный инструмент: много данных, своя навигация, объемная таблица. Он привычно идет на вкладку — как Комментарии или История.
Это ваш слот, если:
-
Контент плагина не помещается в блок или модалку без потери удобства.
-
Пользователю нужно переключаться между плагином и страницей тикета.
-
Есть собственная логика внутри: фильтры, список, несколько состояний.
Не этот слот, если функциональность простая — таб создает ощущение, что там будет что-то большое. Пустой или почти пустой таб выглядит как ошибка.
Формат: встроенная область в контексте тикета.
![]()
Действие применяется к конкретному комментарию — issue.comment.action
Пользователь читает комментарий и хочет что-то с ним сделать: создать задачу, перевести, отправить. Он потянется к «⋯» рядом с комментарием — это естественное место для действий с конкретным сообщением.
Это ваш слот, если:
-
Плагину нужен текст, автор или дата конкретного комментария.
-
Действие имеет смысл только для одного комментария, а не для тикета в целом.
Формат: модальное окно, внутри один сценарий
![]()
Действие вставляет контент в редактор — issue.editor.action
Пользователь пишет комментарий или описание и хочет вставить готовый контент: шаблон, сгенерированный текст, данные из внешней системы. Он видит кнопку в нижней панели редактора — рядом с Призвать и Шаблоны — и запускает плагин, не покидая редактор.
Это ваш слот, если:
-
Плагин генерирует или подбирает текст, который нужно вставить в поле ввода.
-
Результат работы плагина — фрагмент текста или разметки, а не отдельное действие над тикетом.
-
Пользователь запускает плагин в момент написания, а не после.
Не этот слот, если плагин выполняет действие над тикетом целиком — тогда смотрите issue.action.
Формат: всплывающее окно с привязкой к кнопке. После завершения работы плагин вставляет результат в конец текущего содержимого редактора.
![]()
Страница очереди
| Слот | Описание | Формат окна | Контекст слота |
|---|---|---|---|
| queue.action | Меню Действия справа сверху на странице очереди. | Модальное окно | Данные открытой очереди |
| queue.tab | Плагин в виде таба на странице очереди. | Плагин встраивается в список табов. Имеет свой url в контексте очереди. | Данные открытой очереди |
Пользователь хочет совершить действие с очередью — queue.action
Пользователь смотрит на очередь и хочет что-то с ней сделать: запустить процесс, сгенерировать отчет, выполнить массовую операцию. Он потянется в меню Действия — туда, где уже живут похожие команды.
Это ваш слот, если:
-
Плагин запускается по намерению пользователя, а не показывает данные автоматически.
-
Результат действия не нужно постоянно видеть на странице.
-
Сценарий линейный: запустил → получил результат → закрыл.
Формат: модальное окно, внутри один сценарий
![]()
Сложный инструмент внутри очереди — queue.tab
Пользователь работает с очередью и ему нужен полноценный инструмент: много данных, своя навигация, объемная таблица. Он привычно идет на вкладку — как на другие табы страницы очереди.
Это ваш слот, если:
-
Контент плагина не помещается в модалку без потери удобства.
-
Пользователю нужно переключаться между плагином и страницей очереди.
-
Есть собственная логика внутри: фильтры, список, несколько состояний.
Не этот слот, если функциональность простая — таб создает ощущение, что там будет что-то большое. Пустой или почти пустой таб выглядит как ошибка.
Формат: встроенная область в контексте очереди.
![]()
Автоматизации
| Слот | Описание | Формат окна | Контекст слота |
|---|---|---|---|
| trigger.create.action | Страница триггера. Создание действия. UI-плагины для упрощения формы создания вебхука, не имеют дополнительной логики. | Появляется новый тип действия, форму действия предоставляет плагин | Ключ очереди |
| trigger.edit.action | Страница триггера. Редактирование действия. UI-плагины для упрощения формы редактирования вебхука, не имеют дополнительной логики. | Появляется новый тип действия, форму действия предоставляет плагин | Ключ очереди и данные действия |
Новый тип действия в триггере — trigger.create.action + trigger.edit.action
Администратор настраивает автоматизацию и хочет добавить действие, которого нет в стандартном списке: отправить уведомление в свою систему, запустить вебхук с кастомными параметрами. Он выбирает тип действия из списка — плагин появляется там как новая опция.
Это ваши слоты, если:
-
Плагин добавляет новый тип автоматического действия, а не работает с пользователем в реальном времени.
-
Нужна форма настройки: пользователь задает параметры один раз при создании триггера.
Важно: эти два слота почти всегда идут в паре. Если вы даете возможность создать действие, пользователь должен уметь его и отредактировать — иначе при изменении триггера он увидит пустую форму.
Формат: встроенная форма внутри страницы триггера. Стилистически должна выглядеть как нативная часть автоматизации, без лишних рамок и заголовков.
![]()
![]()
Проект
| Слот | Описание | Формат окна | Контекст слота |
|---|---|---|---|
| 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.
Если плагин универсальный и должен работать во всех трех контекстах — можно указать все три слота одновременно.
![]()
Действие вставляет контент в редактор комментариев — 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 | Страница доски, таб доски | Контент на странице | Данные доски |