Получайте автоматические обновления airfocus в режиме реального времени, подключив ваши любимые приложения с помощью наших веб-хуков.
Преимущества использования веб-хуков
Веб-хуки позволяют AirFocus и другим приложениям легко и в режиме реального времени взаимодействовать друг с другом. Это означает, что обновления и уведомления происходят быстро, без необходимости использования дополнительных приложений или сложного программирования.
Первоначальная настройка нового веб-хука.
Создайте новое рабочее пространство в AirFocus или выберите то, в котором вы хотите создать новый веб-перехватчик.
Требования:
- Полные права доступа к рабочей области, в которой вы хотите настроить веб-перехватчик.
- Платная подписка на план «Профессиональный» или «Корпоративный».
- Технические знания для правильной настройки.
Вы можете добавить несколько веб-хуков в заданное рабочее пространство (например, в разные каналы Slack для разных аудиторий заинтересованных сторон).
Для этого просто перейдите в раздел «Расширения» в вашей рабочей области, нажмите «Добавить интеграцию» и «Подключить» в разделе «Веб-перехватчик».
Далее, дайте своему веб-хуку имя (необязательно) и выберите события, при которых должны запускаться запросы.
В параметрах запроса выберите формат заполнителя и метод, а затем вставьте URL-адрес вашего веб-перехватчика в поле URL. При необходимости вы также можете добавлять заголовки к своим запросам.
При желании вы также можете настроить тело запроса в формате заполнителя, выбранном выше.
{
"блоки": [
{
"type": "divider"
},
{
"тип": "раздел",
"текст": {
"type": "mrkdwn",
"текст {{title|esc}}"
},
"аксессуар": {
"тип": "кнопка",
"текст": {
"type": "plain_text",
"text": "Open in airfocus",
"emoji": true
},
"value": "click_me_123",
"url": "{{url}}",
"action_id": "button-action"
}
},
{
"тип": "раздел",
"текст": {
"type": "mrkdwn",
"текст": "{{details|esc}}"
}
}
]
}Подробную информацию о параметрах настройки веб-хуков см. в следующем разделе.
Пример использования — получение уведомлений в Slack об обновлениях airfocus.
В данном случае наша цель — настроить веб-перехватчик, который будет отправлять сообщение Slack в выбранный нами канал каждый раз, когда обновляется статус объекта в рабочей области, для которой мы настроили веб-перехватчик.
Для этого нам нужно настроить приложение Slack для генерации URL-адреса веб-перехватчика, а затем настроить остальную часть интеграции в AirFocus.
Как создать URL-адрес веб-перехватчика для вашего канала Slack:
-
Создайте новое приложение Slack в рабочем пространстве Slack, куда вы хотите получать уведомления от airfocus.
- На странице «Функции» включите опцию «Активировать входящие веб-перехватчики» .
- Нажмите «Добавить новый веб-перехватчик в рабочую область».
- Выберите канал, в который приложение будет публиковать сообщения, затем нажмите «Разрешить».
-
Скопируйте URL-адрес веб-перехватчика и откройте рабочую область AirFocus, для которой вы хотите настроить обновления.
Как настроить веб-хук в AirFocus для отправки уведомлений об обновлении событий в Slack:
- В всплывающем окне расширений нажмите «Добавить интеграцию».
- В обзоре интеграции нажмите «Подключиться» под интеграцией «Веб-перехватчики».
- Присвойте вашему веб-хуку имя (необязательно) и выберите события, при которых должны запускаться запросы. → Для данного варианта использования статус «Обновлен».
- В параметрах запроса выберите «Slack markdown» в качестве формата-заполнителя и «POST» в качестве метода. Теперь вставьте скопированный из Slack URL-адрес веб-перехватчика в поле URL.
- Чтобы получать сообщения Slack в правильном формате, вставьте следующий шаблон в поле "Тело" и нажмите "Обновить".
-
{
"блоки": [
{
"type": "divider"
},
{
"тип": "раздел",
"текст": {
"type": "mrkdwn",
"текст {{title|esc}}"
},
"аксессуар": {
"тип": "кнопка",
"текст": {
"type": "plain_text",
"text": "Open in airfocus",
"emoji": true
},
"value": "click_me_123",
"url": "{{url}}",
"action_id": "button-action"
}
},
{
"тип": "раздел",
"текст": {
"type": "mrkdwn",
"текст": "{{details|esc}}"
}
}
]
}
-
- Теперь вы будете получать сообщение Slack на выбранный вами канал при изменении статуса любого объекта в рабочей области.
Получайте обновления airfocus в Microsoft Teams
Примечание: Функция веб-перехватчика Microsoft Teams будет прекращена в конце апреля 2026 года. Приведённое ниже руководство содержит пошаговые инструкции по использованию функции «Рабочие процессы» в качестве альтернативного решения.
Функция «Рабочие процессы» Microsoft Teams позволяет настроить веб-перехватчик, который отправляет сообщение Teams в указанный канал при обновлении объектов в конкретном рабочем пространстве airfocus . Для этого вам потребуется сгенерировать URL-адрес веб-перехватчика в Microsoft Teams, а затем настроить остальную часть интеграции в airfocus.
Создайте URL-адрес веб-перехватчика в Microsoft Teams.
Чтобы сгенерировать URL-адрес веб-перехватчика в Microsoft Teams, выполните следующие действия:
- Войдите в Microsoft Teams.
- Нажмите на значок меню с тремя точками в навигационном меню в крайнем левом углу.
- Select workflow.
- В строке поиска введите «webhook».
- Выберите опцию «Отправлять сообщения в канал при получении запроса веб-перехватчика».
- Введите название для вашего workflow (например, "обновления AirFocus").
- Нажмите «Далее».
- В разделе «Подробности» выберите конкретную команду и канал, где вы хотите, чтобы отображались обновления.
- Нажмите «Добавить workflow.
- На экране подтверждения скопируйте URL-адрес POST-запроса.
- Это URL-адрес веб-перехватчика, который вам нужно будет вставить в airfocus.
- Нажмите «Готово» , чтобы завершить настройку.
Настройте свой веб-хук в airfocus
Чтобы настроить веб-перехватчик в airfocus, выполните следующие действия:
- Откройте рабочую область airfocus, для которой вы хотите отправлять обновления в Microsoft Teams.
- Нажмите «Расширения» в правом верхнем углу рабочей области.
- Выберите «Добавить интеграции».
- В разделе «Веб-перехватчики» нажмите «Подключить ».
- Введите имя для веб-перехватчика.
- В разделе «События» выберите типы обновлений, которые вы хотите отправлять в Microsoft Teams.
- В разделе «Формат заполнителя» выберите Markdown.
- В разделе «Метод» выберите POST , затем вставьте URL-адрес, сгенерированный в Microsoft Teams, в поле «URL».
- Выбрать + Добавить заголовок.
- В поле «Название заголовка» введите «Content-Type».
- В поле «Значение заголовка» введите «application/json».
- Чтобы получать сообщения Microsoft Teams в корректном формате, вставьте следующий шаблон в поле "Тело сообщения".
{ "type": "AdaptiveCard", "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "версия": "1.4", "тело": [ { "type": "TextBlock", "текст": "{{title}}", "размер": "Средний", "вес": "Более", "wrap": true }, { "type": "TextBlock", "текст {{details}}", "wrap": true } ], "действия": [ { "type": "Action.OpenUrl", "title": "Открыть в airfocus", "url": "{{url}}" } ] }
- Нажмите кнопку «Обновить» в правом нижнем углу страницы.
Теперь вы будете получать обновления в канал Microsoft Teams, который вы настроили в первом разделе.
Настройка HTTP-запросов — техническая документация
Метод
По умолчанию установлен тип запроса POST, но его можно изменить на GET или PUT. Другие методы не поддерживаются.
URL-адрес
- не должен быть пустым
- Начинается только с https:// (другие схемы или пустая схема не поддерживаются)
- Должно быть общедоступное доменное имя с хорошо известным доменом верхнего уровня (IP-адреса не поддерживаются).
Заголовки
- Авторизация поддерживается.
- Content-Type поддерживается.
- Поддерживаются пользовательские заголовки, начинающиеся с x-.
- Любые другие заголовки не поддерживаются.
Основной текст
Определяет тело запроса веб-перехватчика.
Может содержать любой текст длиной до 2000 символов.
Для того чтобы заполнить тело запроса осмысленными данными о событии, мы предоставляем набор заполнителей, которые наш сервер заменяет данными о событии перед отправкой запроса.
Формат-заполнитель
Указывает, как наш сервер должен предварительно отображать заполнители с типом RichText. Например, заполнитель {{title}} может содержать строку типа « John updated field Labels on object Fix the button », которая включает в себя форматирование текста, например, жирный шрифт, курсив и т. д., и, следовательно, формат заполнителя указывает, в каком именно синтаксисе следует преобразовать это форматирование. Доступные форматы:
| Name | Описание | Пример |
| разметка | стандартный разметка | Джон обновил поле «Метки» в объекте. Исправьте кнопку. |
| html | <b>Джон</b> обновил поле <i>Метки</i> в объекте <b>Исправить кнопку</b> |
|
| текст | форматирование удалено | Джон обновил поле «Метки» в объекте. Исправьте кнопку. |
| slack | специальный Slack mrkdwn | *Джон* обновил поле *Метки* в объекте *Исправить кнопку* |
Заполнители
| Заполнитель места | Тип | Описание | Пример |
{{type}} |
String | тип события | обновленный элемент |
{{title}} |
Строка (RichText) | описывает действие события | Джон обновил поле «Метки» в объекте. Исправьте кнопку. |
{{details}} |
Строка (RichText) | дополнительные сведения о мероприятии (например) (Что было изменено) | Старое значение ⇒ Новое значение |
{{url}} |
String | URL-адрес с призывом к действию для каждого конкретного события (например, ссылка на рабочее пространство или объект). |
https://myteam.airfocus.com/w/workspaceId?item=itemId *Замените airfocus.com на airfocus.app, если вы находитесь в США или Азиатско-Тихоокеанском регионе и ваша учетная запись была создана после сентября 2025 года. |
{{event}} |
JSON | полные JSON-данные о текущем событии | См. модель полезной нагрузки события ниже. |
{{title|esc}} |
Строка (RichText) | То же самое, что и {{title}} , но все двойные кавычки экранированы. |
Преобразует строку с двойными кавычками в строку с двойными кавычками. |
{{details|esc}} |
Строка (RichText) | То же самое, что и {{details}} , но все двойные кавычки экранированы. |
Преобразует строку с двойными кавычками в строку с двойными кавычками. |
Модели данных
Модель полезной нагрузки события
Объект верхнего уровня, создаваемый для каждого мероприятия. Он содержит данные о событии, а также встроенную базовую информацию обо всех событиях, связанных с этим событием.
| Поле | Тип | Обязательно | Описание |
| мероприятие | Событие | Да | основные данные о мероприятии |
| Встроить | EventEmbed | Да | Дополнительная информация о событии — в основном названия объектов/рабочих областей/полей и т. д., связанных с этим событием. |
| matchedFilter | EventFilter | Да | один из фильтров событий, выбранных в настройках интеграции, который соответствовал текущему событию. |
Модель событий
Основные сведения о мероприятии
| Поле | Тип | Обязательно | Описание |
| Код | UUID | Да | уникальный идентификатор события |
| Инициатор | Инициатор события | Да | информация о том, кто инициировал это событие |
| данные | EventData | Да | фактические данные события. Это зависит от конкретного типа события. |
| созданоВ | Временная метка | Да | когда событие произошло |
Модель инициатора события
Информация о том, кто инициировал это событие. В большинстве случаев идентификатор пользователя будет определен. Также возможно, что будут определены и userId, и integrationId — например, если пользователь нажал кнопку «синхронизировать интеграцию», что привело к возникновению события.
| Поле | Тип | Обязательно | Описание |
| UserId | UUID | Нет | Определяется, было ли это событие инициировано пользователем. |
| appId | UUID | Нет | Определяется, было ли это событие инициировано приложением. |
| integrationId | UUID | Нет | определяется, было ли это событие инициировано интегратором. |
| eventId | UUID | Нет | определяется, было ли это событие инициировано другим событием. |
| requestId | UUID | Нет | Определяется, было ли это событие инициировано внутри HTTP-запроса. |
Модель EventEmbed
Дополнительная информация о событии — в основном названия объектов/рабочих областей/полей и т. д., связанных с этим событием.
| Поле | Тип | Обязательно | Описание |
| Командам | {UUID: TeamInfo} | Нет | хэш-карта, сопоставляющая идентификаторы команд с данными о командах. |
| пользователей | {UUID: UserInfo} | Нет | хэш-карта, сопоставляющая идентификаторы пользователей с данными пользователей. |
| Приложения | {UUID: AppInfo} | Нет | хэш-карта, сопоставляющая идентификаторы приложений с данными приложений. |
| Рабочее пространство | {UUID: WorkspaceInfo} | Нет | хэш-карта, сопоставляющая идентификаторы рабочих пространств с данными рабочих пространств. |
| интеграция | {UUID: IntegrationInfo} | Нет | хэш-карта идентификаторов интеграции с данными интеграции |
| поля | {UUID: FieldInfo} | Нет | хэш-карта, сопоставляющая идентификаторы полей с данными полей. |
| статусы | {UUID: StatusInfo} | Нет | хэш-карта, сопоставляющая идентификаторы статусов с данными о статусе. |
| Задачи | {UUID: ItemInfo} | Нет | хеш-карта идентификаторов объектов в данные объекта |
Модель TeamInfo
| Поле | Тип | Обязательно | Описание |
| Название | String | Да | Команда |
| слизень | String | Да | URL-адрес команды |
| baseUrl | String | Да | Пример: https://myteam.airfocus.com *Замените airfocus.com на airfocus.app, если вы находитесь в США или Азиатско-Тихоокеанском регионе и ваша учетная запись была создана после сентября 2025 года. |
Модель UserInfo
| Поле | Тип | Обязательно | Описание |
| teamId | UUID | Да | Идентификатор команды, к которой принадлежит этот пользователь. |
| полное имя | String | Да | полное имя пользователя |
Модель AppInfo
| Поле | Тип | Обязательно | Описание |
| teamId | UUID | Да | Идентификатор команды, к которой принадлежит это приложение. |
| типId | String | Да | один из следующих вариантов: формы, аналитические данные, зеркало, портал, приоритизация |
Модель WorkspaceInfo
| Поле | Тип | Обязательно | Описание |
| teamId | UUID | Да | Идентификатор команды, к которой принадлежит это рабочее пространство. |
| Название | String | Да | имя рабочей области |
Модель IntegrationInfo
| Поле | Тип | Обязательно | Описание |
| workspaceId | UUID | Да | Идентификатор рабочей области, к которой относится эта интеграция. |
| типId | String | Да | один из следующих: Asana, Microsoft AzureDevOps, Clubhouse, GitHub, Intercom, Jira, Planner, Trello. |
Модель StatusInfo
| Поле | Тип | Обязательно | Описание |
| workspaceId | UUID | Да | Идентификатор рабочей области, к которой относится этот статус. |
| Название | String | Да | название статуса |
| категория | String | Да | один из следующих вариантов: черновик, активный, закрытый |
Модель ItemInfo
| Поле | Тип | Обязательно | Описание |
| workspaceId | UUID | Да | Идентификатор рабочей области, к которой относится этот объект. |
| статусИдентификатор | UUID | Да | Идентификатор статуса объекта |
| Название | String | Да | имя парня |
Модель EventData
EventData — это объединяющий тип, то есть он может быть любого из указанных типов:
CreatedItem
| Поле | Тип | Обязательно | Описание |
| itemId | UUID | Да | идентификатор созданного объекта |
Обновленный элемент
| Поле | Тип | Обязательно | Описание |
| itemId | UUID | Да | идентификатор обновленного объекта |
| Статус | {prev: UUID, next: UUID} | Нет | Старый и новый идентификаторы статуса (если изменились) |
| цвет | {prev: String, next: String} | Нет | Старый и новый идентификаторы цвета объекта (если изменился). |
| assigneeUserIds | {prev: UUID[], next: UUID[]} | Нет | Старый и новый список присвоенных идентификаторов пользователей (если изменились) |
| Название | {prev: String, next: String} | Нет | Старое и новое имя объекта (если изменено) |
| описание | {prev: RichText, next: RichText} | Нет | Старое и новое описание объекта (если изменено) |
| описание | { UUID: { prev: JSON, next: JSON } } | Нет | Хэш-карта, в которой идентификаторы полей сопоставляются с их измененными значениями; каждое значение представляет собой некоторый JSON, зависящий от типа поля. |
| в архиве | {prev: Boolean, next: Boolean} | Нет | Старые и новые архивные данные (если изменены) |
Оставьте отзыв об этой статье
Хотите поделиться мнением об этой статье? Расскажите нам о своих впечатлениях здесь.