웹훅을 사용하여 즐겨 사용하는 앱을 연결하면 airfocus 에서 자동으로 실시간 업데이트를 받을 수 있습니다.
웹훅 사용의 이점
웹훅을 사용하면 airfocus 및 다른 앱과 쉽게 실시간으로 연동할 수 있습니다. 즉, 별도의 앱이나 복잡한 코딩 없이도 업데이트와 알림이 빠르게 이루어집니다.
새 웹훅의 초기 설정
airfocus 에서 새 워크스페이스를 만들거나 새 웹훅을 만들려는 워크스페이스를 선택합니다.
요구 사항:
- "웹훅을 설정하려는 워크스페이스에 대한 '전체' 권한이 필요합니다.
- 프로페셔널 또는 기업 요금제 유료 구독.
- 적절한 구성을 위한 기술 지식.
지정된 워크스페이스에 여러 웹훅을 추가할 수 있습니다(예: 서로 다른 이해관계자 대상에 대한 서로 다른 Slack 채널).
이렇게 하려면 워크스페이스 내의 확장 기능 섹션으로 이동하여 "통합 추가" 및 "웹훅 아래의 연결" 을 클릭하세요.
다음으로 웹훅에 이름을 지정하고(선택 사항) 요청이 트리거될 이벤트를 선택합니다.
요청 옵션에서 플레이스홀더 형식과 방법을 선택하고 웹훅 URL 을 URL 필드에 붙여넣습니다. 필요한 경우 요청에 헤더를 추가할 수도 있습니다.
선택적으로 위에서 선택한 자리 표시자 형식으로 요청 본문을 구성할 수도 있습니다.
{
"블록": [
{
"type": "divider"
},
{
"type": "섹션",
"text": {
"type": "mrkdwn",
"text": "{{title|esc}}"
},
"액세서리": {
"유형": "버튼",
"텍스트": {
"type": "plain_text",
"text": "Open in airfocus",
"emoji": true
},
"value": "click_me_123",
"url": "{{url}}",
"action_id": "button-action
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "{{details|esc}}"
}
}
]
}웹훅의 사용자 지정 옵션에 대한 자세한 설명은 다음 섹션을 참조하세요.
사용 사례 - airfocus 업데이트에 대한 Slack 알림 받기
이 사용 사례의 목표는 웹훅을 구성한 워크스페이스의 항목이 상태가 업데이트될 때마다 선택한 채널로 Slack 메시지를 전송하는 웹훅을 구성하는 것입니다.
이렇게 하려면 웹훅 URL을 생성하도록 Slack 앱을 설정한 다음 airfocus 에서 나머지 통합을 구성해야 합니다.
Slack 채널에 대한 웹훅 URL을 만드는 방법:
-
airfocus 알림을 수신하려는 Slack 워크스페이스에서 새 Slack 앱을 만듭니다.
- 기능 페이지에서 수신 웹훅 활성화 옵션을 켭니다.
-
워크스페이스에 새 웹훅 추가를 클릭합니다.
- 앱이 게시할 채널을 선택한 다음 허용을 클릭합니다.
-
웹훅 URL을 복사하고 업데이트를 설정할 airfocus 워크스페이스를 엽니다.
airfocus 에서 웹훅을 구성하여 이벤트 업데이트 알림을 Slack으로 전송하는 방법:
- 확장 프로그램 팝업에서 '통합 기능 추가'를 클릭합니다.
- 연동 개요에서 '웹훅' 연동 아래의 '연결'을 클릭합니다.
- 웹훅에 이름을 지정하고(선택 사항) 요청이 트리거될 이벤트를 선택합니다. → 이 사용 사례의 "상태 업데이트됨"으로 이동합니다.
- 요청 옵션에서 플레이스홀더 형식으로 "Slack 마크다운"을 선택하고 방법으로 "POST"를 선택합니다. 이제 Slack에서 복사한 웹훅 URL을 URL 필드에 붙여넣습니다.
- 올바른 형식의 Slack 메시지를 받으려면 다음 템플릿을 본문 필드에 붙여넣고 업데이트를 누릅니다.
-
{
"블록": [
{
"type": "divider"
},
{
"type": "섹션",
"text": {
"type": "mrkdwn",
"text": "{{title|esc}}"
},
"액세서리": {
"유형": "버튼",
"텍스트": {
"type": "plain_text",
"text": "Open in airfocus",
"emoji": true
},
"value": "click_me_123",
"url": "{{url}}",
"action_id": "button-action
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "{{details|esc}}"
}
}
]
}
-
- 이제 워크스페이스의 항목의 상태가 변경되면 선택한 채널로 Slack 메시지를 받게 됩니다.
airfocus 최신정보를 받습니다.
참고: Microsoft 팀 웹훅 커넥터 기능은 2026년 4월 말에 더 이상 사용되지 않습니다. 아래 가이드에는 워크플로 기능을 대안으로 사용하는 방법에 대한 단계가 포함되어 있습니다.
Microsoft 팀 워크플로 기능을 사용하면 특정 airfocus 작업 영역 내의 항목이 업데이트될 때 지정된 채널로 팀 메시지를 보내는 웹훅을 구성할 수 있습니다. 이렇게 하려면 Microsoft 팀에서 웹훅 URL을 생성한 다음 airfocus 에서 나머지 통합을 구성해야 합니다.
Microsoft 팀에서 웹후크 URL 만들기
Microsoft 팀에서 웹훅 URL을 생성하려면 다음 단계를 따르세요:
- Microsoft 팀에 로그인합니다.
- 맨 왼쪽에 있는 탐색 메뉴에서 점 세 개 아이콘을 클릭하세요.
- Select 워크 플로.
- 검색창에 “webhook”을 검색하세요.
- 웹훅 요청을 수신하면 채널에 게시하도록 선택합니다.
- 워크플로 이름을 입력하세요(예: ",airfocus, updates,").
- 다음을 클릭합니다.
- “세부 정보”에서 업데이트를 표시할 특정 팀과 채널을 선택하세요.
- ‘워크플로 추가’를 클릭합니다.
- 확인 화면에서 POST URL을 복사하세요.
- 이 URL은 airfocus에 붙여넣어야 하는 웹훅 URL입니다.
- ‘완료’를 클릭하여 설정을 마무리하세요.
웹훅 구성 airfocus
airfocus 에서 웹훅을 구성하려면 다음 단계를 따르세요:
- Microsoft 팀에 업데이트를 보내려는 airfocus 작업 영역을 엽니다.
- 작업 공간의 오른쪽 상단 모서리에서 확장 프로그램을 클릭합니다.
- 연동 기능 추가를 선택합니다.
- "웹훅"에서 연결을 클릭합니다.
- 웹훅의 이름을 입력합니다.
- '이벤트'에서 Microsoft 팀에 보낼 업데이트 유형을 선택합니다.
- '자리 표시자 형식'에서 마크다운을 선택합니다.
- '방법'에서 게시를 선택한 다음 'URL'에 Microsoft 팀에서 생성한 URL을 붙여넣습니다.
- 헤더 추가를 선택합니다.
- "헤더 이름"에 "콘텐츠 유형"을 입력합니다.
- "헤더 값"에 "application/json"을 입력합니다.
- 올바른 형식의 Microsoft 팀 메시지를 받으려면 다음 템플릿을 본문 필드에 붙여넣습니다.
{ " type": "적응형 카드", " $schema": "http://adaptivecards.io/schemas/adaptive-card.json", " 버전": "1.4", "body": [ { " type": "텍스트블록", " text": "{{title}}", " size": "Medium", " weight": "Bolder", " wrap": true }, { " type": "TextBlock", " text": "{{details}}", " wrap": true } ], " action": [ { " type": "Action.OpenUrl", " title": "Open in airfocus" , " url": "{{url}}" } ] }
- 페이지 오른쪽 하단에서 업데이트를 클릭합니다.
이제 첫 번째 섹션에서 설정한 Microsoft 팀 채널에 대한 업데이트를 받게 됩니다.
HTTP 요청 구성 - 기술 문서
방법
기본적으로 POST로 설정되어 있지만 GET 또는 PUT으로 변경할 수도 있습니다. 다른 방법은 지원되지 않습니다.
URL
- 비어 있으면 안됩니다.
- 로만 시작할 수 있습니다(다른 스키마나 빈 스키마는 지원되지 않음).
- 는 잘 알려진 최상위 도메인을 가진 공개 도메인 이름이어야 합니다(IP는 지원되지 않음).
헤더
- 인증이 지원됩니다.
- 콘텐츠 유형이 지원됩니다.
- X-로 시작하는 사용자 지정 헤더가 지원됩니다.
- 다른 헤더는 지원되지 않습니다.
본문
웹훅의 요청 본문을 정의합니다.
최대 2000자까지 텍스트를 포함할 수 있습니다.
의미 있는 이벤트 데이터로 요청 본문을 채우기 위해 요청을 보내기 전에 서버가 이벤트 데이터로 대체하는 여러 개의 자리 표시자를 제공합니다.
자리 표시자 형식
리치 텍스트 유형의 플레이스홀더를 서버에서 미리 렌더링하는 방법을 지정합니다. 예를 들어 {{title}} 플레이스홀더에는 굵게, 이탤릭체 등과 같은 일부 서식 있는 텍스트 서식이 포함된 "John 업데이트 필드 항목의 레이블 수정 버튼"과 같은 문자열이 포함될 수 있으므로 플레이스홀더 형식은 이 서식을 변환할 특정 구문을 지정합니다. 사용 가능한 형식:
| 이름 | 설명 | 예시 |
| 마크다운 | 기본 마크다운 | John 업데이트 필드 항목의 레이블 고정 버튼 수정 |
| html | <b>John</b> 필드 업데이트 <i>레이블</i> 항목에 <b>버튼 수정</b> |
|
| 텍스트 | 서식 제거 | John 업데이트 필드 항목의 레이블 고정 버튼 수정 |
| Slack | 스페셜 슬랙 mrkdwn | 항목의 *존* 필드 *레이블* 업데이트 *버튼 수정* |
자리 표시자
| 플레이스홀더 | Type | 설명 | 예시 |
{{type}} |
String | 이벤트 유형 | 업데이트된 항목 |
{{title}} |
문자열 (리치 텍스트) | 이벤트 동작을 설명합니다. | John 업데이트 필드 항목의 레이블 고정 버튼 수정 |
{{details}} |
문자열 (리치 텍스트) | 추가 이벤트 세부 정보(예 변경된 내용) | 이전 값 ⇒ 새 값 |
{{url}} |
String | 각 특정 이벤트에 대한 콜투액션 URL(예: 워크스페이스 또는 항목에 대한 링크) |
https:// myteam.airfocus.com/w/workspaceId?item=itemId *미국 또는 APAC 지역에 거주하고 계정이 2025년 9월 이후에 생성된 경우 airfocus.com을 airfocus.app으로 바꾸세요. |
{{event}} |
JSON | 현재 이벤트에 대한 전체 JSON 데이터 | 아래의 이벤트 페이로드 모델을 참조하세요. |
{{title|esc}} |
문자열 (리치 텍스트) | 와 동일하지만 {{title}} 과 동일하지만 큰따옴표는 모두 이스케이프 처리됩니다. |
"큰따옴표" 따옴표가 있는 문자열을 \"큰따옴표\" 따옴표가 있는 문자열로 변환합니다. |
{{details|esc}} |
문자열 (리치 텍스트) | 와 동일하지만 {{details}} 과 동일하지만 큰따옴표는 모두 이스케이프 처리됩니다. |
"큰따옴표" 따옴표가 있는 문자열을 \"큰따옴표\" 따옴표가 있는 문자열로 변환합니다. |
데이터 모델
이벤트 페이로드 모델
각 이벤트에 대해 생성되는 최상위 객체입니다. 여기에는 이벤트에 대한 데이터와 이 이벤트와 관련된 모든 엔티티에 대한 기본 데이터가 포함되어 있습니다.
| Field | Type | 필수 | 설명 |
| 이벤트 | 이벤트 | 예 | 이벤트에 대한 기본 데이터 |
| 임베드 | 이벤트 임베드 | 예 | 이벤트에 대한 추가 데이터 - 주로 이 이벤트와 관련된 항목/작업 공간/필드 등의 이름입니다. |
| matchedFilter | 이벤트 필터 | 예 | 통합 설정에서 선택한 이벤트 필터 중 현재 이벤트와 일치하는 이벤트 필터 중 하나를 선택합니다. |
이벤트 모델
이벤트에 대한 기본 데이터
| Field | Type | 필수 | 설명 |
| ID | UUID | 예 | 이벤트의 고유 ID |
| 제안자 | 이벤트 개시자 | 예 | 이 이벤트를 시작한 사람에 대한 정보 |
| 데이터 | 이벤트 데이터 | 예 | 이벤트의 실제 데이터입니다. 각 특정 이벤트 유형에 따라 다릅니다. |
| createdAt | 타임스탬프 | 예 | 이벤트가 발생한 경우 |
이벤트 개시자 모델
이 이벤트를 시작한 사람에 대한 정보입니다. 대부분의 경우 사용자 아이디가 정의됩니다. 사용자가 '연동 동기화' 버튼을 눌러 이벤트가 생성된 경우와 같이 사용자 아이디와 연동 아이디가 모두 정의되어 있을 수도 있습니다.
| Field | Type | 필수 | 설명 |
| userId | UUID | 아니요 | 이 이벤트가 사용자에 의해 시작된 경우 정의됩니다. |
| appId | UUID | 아니요 | 이 이벤트가 앱에 의해 시작된 경우 정의됩니다. |
| integrationId | UUID | 아니요 | 이 이벤트가 통합에 의해 시작된 경우 정의됩니다. |
| eventId | UUID | 아니요 | 이 이벤트가 다른 이벤트에 의해 시작된 경우 정의됩니다. |
| 요청Id | UUID | 아니요 | 이 이벤트가 HTTP 요청 내에서 시작된 경우 정의됩니다. |
이벤트 임베드 모델
이벤트에 대한 추가 데이터 - 주로 이 이벤트와 관련된 항목/작업 공간/필드 등의 이름입니다.
| Field | Type | 필수 | 설명 |
| 팀 | {UUID: TeamInfo} | 아니요 | 팀 데이터에 대한 팀 ID의 해시 맵 |
| 6천만 명 | {UUID: UserInfo} | 아니요 | 사용자 데이터에 대한 사용자 ID의 해시 맵 |
| 앱 | {UUID: AppInfo} | 아니요 | 앱 데이터에 대한 앱 ID의 해시 맵 |
| 업무 공간 | {UUID: WorkspaceInfo} | 아니요 | 워크스페이스 데이터에 대한 워크스페이스 ID의 해시 맵 |
| 통합 | {UUID: IntegrationInfo} | 아니요 | 통합 데이터에 대한 통합 ID의 해시 맵 |
| 필드 | {UUID: FieldInfo} | 아니요 | 필드 데이터에 대한 필드 ID의 해시 맵 |
| 상태 | {UUID: StatusInfo} | 아니요 | 상태 데이터에 대한 상태 ID의 해시 맵 |
| 항목 | {UUID: ItemInfo} | 아니요 | 항목 데이터에 대한 항목 ID의 해시 맵 |
TeamInfo 모델
| Field | Type | 필수 | 설명 |
| 이름 | String | 예 | 팀 이름 |
| 슬러그 | String | 예 | 팀 URL 슬러그 |
| baseUrl | String | 예 | 예: https: //myteam.airfocus.com *미국 또는 APAC 지역에 거주하고 계정이 2025년 9월 이후에 생성된 경우 airfocus.com을 airfocus.app으로 바꾸세요. |
사용자 정보 모델
| Field | Type | 필수 | 설명 |
| 팀아이디 | UUID | 예 | 이 사용자가 속한 팀의 ID |
| 전체 이름 | String | 예 | 사용자 이름 |
앱인포 모델
| Field | Type | 필수 | 설명 |
| 팀아이디 | UUID | 예 | 이 앱이 속한 팀의 ID |
| typeId | String | 예 | 다음 중 하나: 양식, 인사이트, 미러, 포털, 우선순위 지정 |
워크스페이스 정보 모델
| Field | Type | 필수 | 설명 |
| 팀아이디 | UUID | 예 | 이 워크스페이스가 속한 팀의 ID |
| 이름 | String | 예 | 작업 공간 이름 |
통합 정보 모델
| Field | Type | 필수 | 설명 |
| 작업공간Id | UUID | 예 | 이 통합이 속한 워크스페이스의 ID |
| typeId | String | 예 | 다음 중 하나: 아사나, 애저 데브옵스, 클럽하우스, 깃허브, 인터콤, 지라, 플래너, 트렐로 |
상태 정보 모델
| Field | Type | 필수 | 설명 |
| 작업공간Id | UUID | 예 | 이 상태가 속한 워크스페이스의 ID |
| 이름 | String | 예 | 상태 이름 |
| 카테고리 | String | 예 | 초안, 활성, 닫힘 중 하나 |
ItemInfo 모델
| Field | Type | 필수 | 설명 |
| 작업공간Id | UUID | 예 | 이 항목이 속한 워크스페이스의 ID |
| statusId | UUID | 예 | 아이템 상태의 ID |
| 이름 | String | 예 | 항목 이름 |
이벤트 데이터 모델
EventData는 유니온 유형으로, 지정된 유형 중 하나가 될 수 있습니다:
생성된 항목
| Field | Type | 필수 | 설명 |
| itemId | UUID | 예 | 생성된 항목의 ID |
업데이트된 항목
| Field | Type | 필수 | 설명 |
| itemId | UUID | 예 | 업데이트된 항목의 ID |
| 상태 | {prev: UUID, next: UUID} | 아니요 | 상태의 이전 및 새 ID(변경된 경우) |
| 색상 | {prev: String, next: String} | 아니요 | 항목 색상의 이전 및 새 ID(변경된 경우) |
| 양수인 사용자 아이디 | {prev: UUID[], next: UUID[]} | 아니요 | 할당된 사용자 ID의 이전 및 새 목록(변경된 경우) |
| 이름 | {prev: String, next: String} | 아니요 | 이전 및 새 항목 이름(변경된 경우) |
| 설명 | {prev: RichText, next: RichText} | 아니요 | 이전 및 새 항목 설명(변경된 경우) |
| 설명 | { UUID: { prev: JSON, next: JSON } } | 아니요 | 변경된 값에 대한 필드-아이디의 해시 맵 각 값은 필드 유형에 따라 달라지는 일부 JSON입니다. |
| 보관됨 | {prev: Boolean, next: Boolean} | 아니요 | 이전 및 새 아카이브(변경된 경우) |
이 문서에 관한 피드백 공유
이 문서와 관련해 공유하고 싶은 피드백이 있으신가요? 여기에서 사용 경험을 말씀해 주세요.