Интегрируйте AirFocus с веб-хуками.

Автор:  Morgan T
Обновлено:  

Получайте автоматические обновления airfocus в режиме реального времени, подключив ваши любимые приложения с помощью наших веб-хуков.

Преимущества использования веб-хуков

Веб-хуки позволяют AirFocus и другим приложениям легко и в режиме реального времени взаимодействовать друг с другом. Это означает, что обновления и уведомления происходят быстро, без необходимости использования дополнительных приложений или сложного программирования.

Первоначальная настройка нового веб-хука.

Создайте новое рабочее пространство в AirFocus или выберите то, в котором вы хотите создать новый веб-перехватчик.

Требования:

  • Полные права доступа к рабочей области, в которой вы хотите настроить веб-перехватчик.
  • Платная подписка на план «Профессиональный» или «Корпоративный».
  • Технические знания для правильной настройки.

Вы можете добавить несколько веб-хуков в заданное рабочее пространство (например, в разные каналы Slack для разных аудиторий заинтересованных сторон).

Для этого просто перейдите в раздел «Расширения» в вашей рабочей области, нажмите «Добавить интеграцию» и «Подключить» в разделе «Веб-перехватчик».

integrate-with-webhooks-1.png

integrate-with-webhooks-2.png

Далее, дайте своему веб-хуку имя (необязательно) и выберите события, при которых должны запускаться запросы.

integrate-with-webhooks-3.png

В параметрах запроса выберите формат заполнителя и метод, а затем вставьте URL-адрес вашего веб-перехватчика в поле URL. При необходимости вы также можете добавлять заголовки к своим запросам.

integrate-with-webhooks-4.png

При желании вы также можете настроить тело запроса в формате заполнителя, выбранном выше.

{
"блоки": [
{
"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:

  1. Создайте новое приложение Slack в рабочем пространстве Slack, куда вы хотите получать уведомления от airfocus.
    integrate-with-webhooks-5.png
    integrate-with-webhooks-6.png
  2. На странице «Функции» включите опцию «Активировать входящие веб-перехватчики» .
    integrate-with-webhooks-7.png
  3. Нажмите «Добавить новый веб-перехватчик в рабочую область».
    integrate-with-webhooks-8.png
  4. Выберите канал, в который приложение будет публиковать сообщения, затем нажмите «Разрешить».
    integrate-with-webhooks-9.png
  5. Скопируйте URL-адрес веб-перехватчика и откройте рабочую область AirFocus, для которой вы хотите настроить обновления.
    integrate-with-webhooks-9.1.png

Как настроить веб-хук в AirFocus для отправки уведомлений об обновлении событий в Slack:

  1. В всплывающем окне расширений нажмите «Добавить интеграцию».
    integrate-with-webhooks-10.png
  2. В обзоре интеграции нажмите «Подключиться» под интеграцией «Веб-перехватчики».
    integrate-with-webhooks-11.png
  3. Присвойте вашему веб-хуку имя (необязательно) и выберите события, при которых должны запускаться запросы. → Для данного варианта использования статус «Обновлен».
    integrate-with-webhooks-12.png
  4. В параметрах запроса выберите «Slack markdown» в качестве формата-заполнителя и «POST» в качестве метода. Теперь вставьте скопированный из Slack URL-адрес веб-перехватчика в поле URL.
    integrate-with-webhooks-13.png
  5. Чтобы получать сообщения 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}}"
      }
      }
      ]
      }

       

  6. Теперь вы будете получать сообщение Slack на выбранный вами канал при изменении статуса любого объекта в рабочей области.
    integrate-with-webhooks-14.png

Получайте обновления airfocus в Microsoft Teams

Примечание: Функция веб-перехватчика Microsoft Teams будет прекращена в конце апреля 2026 года. Приведённое ниже руководство содержит пошаговые инструкции по использованию функции «Рабочие процессы» в качестве альтернативного решения.

Функция «Рабочие процессы» Microsoft Teams позволяет настроить веб-перехватчик, который отправляет сообщение Teams в указанный канал при обновлении объектов в конкретном рабочем пространстве airfocus . Для этого вам потребуется сгенерировать URL-адрес веб-перехватчика в Microsoft Teams, а затем настроить остальную часть интеграции в airfocus.

Создайте URL-адрес веб-перехватчика в Microsoft Teams.

Чтобы сгенерировать URL-адрес веб-перехватчика в Microsoft Teams, выполните следующие действия:

  1. Войдите в Microsoft Teams.
  2. Нажмите на значок меню с тремя точками в навигационном меню в крайнем левом углу.
  3. Select workflow.
  4. В строке поиска введите «webhook».
  5. Выберите опцию «Отправлять сообщения в канал при получении запроса веб-перехватчика».
  6. Введите название для вашего workflow (например, "обновления AirFocus").
  7. Нажмите «Далее».
  8. В разделе «Подробности» выберите конкретную команду и канал, где вы хотите, чтобы отображались обновления.
  9. Нажмите «Добавить workflow.
  10. На экране подтверждения скопируйте URL-адрес POST-запроса.
    • Это URL-адрес веб-перехватчика, который вам нужно будет вставить в airfocus.
  11. Нажмите «Готово» , чтобы завершить настройку.

Настройте свой веб-хук в airfocus

Чтобы настроить веб-перехватчик в airfocus, выполните следующие действия:

  1. Откройте рабочую область airfocus, для которой вы хотите отправлять обновления в Microsoft Teams.
  2. Нажмите «Расширения» в правом верхнем углу рабочей области.
  3. Выберите «Добавить интеграции».
  4. В разделе «Веб-перехватчики» нажмите «Подключить ».
  5. Введите имя для веб-перехватчика.
  6. В разделе «События» выберите типы обновлений, которые вы хотите отправлять в Microsoft Teams.
  7. В разделе «Формат заполнителя» выберите Markdown.
  8. В разделе «Метод» выберите POST , затем вставьте URL-адрес, сгенерированный в Microsoft Teams, в поле «URL».
  9. Выбрать + Добавить заголовок.
  10. В поле «Название заголовка» введите «Content-Type».
  11. В поле «Значение заголовка» введите «application/json».
    example-webhoock-form-filled-out-in-airfocus.png
  12. Чтобы получать сообщения 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}}"
       }
       ]
       }
  13. Нажмите кнопку «Обновить» в правом нижнем углу страницы.

Теперь вы будете получать обновления в канал 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} Нет Старые и новые архивные данные (если изменены)

Оставьте отзыв об этой статье

Хотите поделиться мнением об этой статье? Расскажите нам о своих впечатлениях здесь.

Вы нашли то, что искали?

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