Uzyskaj automatyczne aktualizacje w czasie rzeczywistym z airfocus, łącząc swoje ulubione aplikacje za pomocą naszych Webhooków.
Korzyści z używania haczyków
Webhook umożliwiają łatwą współpracę airfocus i innych aplikacji w czasie rzeczywistym. Oznacza to, że aktualizacje i powiadomienia odbywają się szybko, bez konieczności korzystania z dodatkowych aplikacji lub skomplikowanego kodowania.
Początkowa konfiguracja nowego haczyka
/utworz/ nową przestrzeń roboczą w airfocus lub wybierz tę, w której chcesz /utworz/ utworzyć nowy webhook.
Wymagania:
- „Pełne” uprawnienia do obszaru roboczego, w którym chcesz skonfigurować webhook.
- Płatny abonament w planie Professional lub Przedsiębiorstwo.
- Wiedza techniczna dla prawidłowej konfiguracji.
Do danego obszaru roboczego można dodać wiele haczyków internetowych (np. do różnych kanałów Slack dla różnych odbiorców interesariuszy).
Aby to zrobić, po prostu przejdź do sekcji Rozszerzenia w swoim obszarze roboczym, kliknij " Dodaj integracje " i " Connect " pod Webhook.
Następnie nadaj swojemu webhakowi nazwę (opcjonalnie) i wybierz, dla których zdar zeń żądania powinny być uruchamiane.
W opcjach żądania wybierz format zastępczy i metodę i wklej adres URL haczyka internetowego w polu URL. W razie potrzeby możesz także dodawać nagłówki do żądań.
Opcjonalnie można również skonfigurować treść żądania w wybranym powyżej formacie symbolu zastępczego.
{
"bloki": [
{
"type": "divider"
},
{
„typ”: „sekcja”,
"tekst": {
"typ": "mrkdwn",
"Tekst {{title|esc}}"
},
"akcesorium": {
"typ": "przycisk",
"tekst": {
"type": "plain_text",
"text": "Open in airfocus",
"emoji": true
},
"wartość": "kliknij_mnie_123",
"url": "{{url}}",
"action_id": "działanie przycisku"
}
},
{
„typ”: „sekcja”,
"tekst": {
"typ": "mrkdwn",
"tekst": "{{details|esc}}"
}
}
]
}Aby uzyskać szczegółową dokumentację opcji dostosowywania dla twoich webhooków, przeczytaj poniższą sekcję.
Przypadek użycia - otrzymuj powiadomienia Slack o aktualizacjach airfocus
W tym przypadku użycia naszym celem jest skonfigurowanie haczyka internetowego, który wyśle wiadomość Slack do wybranego przez nas kanału za każdym razem, gdy element obszaru roboczego, dla którego konfigurujemy haczyk internetowy, uzyska aktualizację statusu.
Aby to zrobić, musimy skonfigurować aplikację Slack, aby wygenerować adres URL webhook, a następnie skonfigurować resztę integracji w airfocus.
Jak utworzyć adres URL webhooka dla swojego kanału Slack:
-
/utworz/ nowa aplikacja Slack w przestrzeni roboczej Slack, na którą chcesz otrzymywać powiadomienia AirFocus.
- Na stronie Funkcje włącz opcję Aktywuj przychodzące sieci Web Hooks.
- Kliknij Dodaj nowy Webhook do obszaru roboczego.
- Wybierz kanał, na którym aplikacja będzie publikować, a następnie kliknij Zez wól.
-
Skopiuj adres URL webhook i otwórz obszar roboczy airfocus, dla którego chcesz skonfigurować aktualizacje.
Jak skonfigurować webhook w airfocus, aby wysyłać powiadomienia o aktualizacji zdarzeń do Slack:
- W wyskakującym okienku rozszerzeń kliknij „Dodaj integracje”.
- W przeglądzie integracji kliknij „Połącz” pod integracją „Webhook”.
- Nadaj swojemu webhakowi nazwę (opcjonalnie) i wybierz, dla których zdarzeń żądania powinny być uruchamiane. → „Status zaktualizowany” dla tego przypadku użycia.
- W opcjach żądania wybierz „Slack markdown” jako format symbolu zastępczego i „POST” jako metodę. Teraz wklej adres URL webhook skopiowany z Slacka do pola URL.
- Aby otrzymywać poprawnie sformatowane wiadomości Slack, wklej poniższy szablon w polu treści i naciśnij przycisk aktualizuj.
-
{
"bloki": [
{
"type": "divider"
},
{
„typ”: „sekcja”,
"tekst": {
"typ": "mrkdwn",
"Tekst {{title|esc}}"
},
"akcesorium": {
"typ": "przycisk",
"tekst": {
"type": "plain_text",
"text": "Open in airfocus",
"emoji": true
},
"wartość": "kliknij_mnie_123",
"url": "{{url}}",
"action_id": "działanie przycisku"
}
},
{
„typ”: „sekcja”,
"tekst": {
"typ": "mrkdwn",
"tekst": "{{details|esc}}"
}
}
]
}
-
- Otrzymasz teraz wiadomość Slack na wybrany kanał, gdy zmienił się status dowolnego elementu w obszarze roboczym.
Otrzymuj aktualizacje airfocus w Microsoft Zespole
Uwaga: funkcja łącznika webhook Microsoft Zespół zostanie wycofana z końcem kwietnia 2026 r. Poniższy przewodnik zawiera kroki, jak korzystać z funkcji Workflow jako alternatywy.
Funkcja Microsoft Zespół Workflows umożliwia skonfigurowanie webhooka, który wysyła wiadomość Zespół do wyznaczonego kanału, gdy elementy w określonym obszarze roboczym AirFocus zostaną zaktualizowane. Aby to zrobić, musisz wygenerować adres URL webhooka w Microsoft Zespół, a następnie skonfigurować resztę integracji w airfocus.
/utworz/ adres URL webhooka w zespole Microsoft
Aby wygenerować adres URL webhooka w programie Microsoft Zespół, wykonaj następujące kroki:
- Zaloguj się do Microsoft Zespół.
- Kliknij menu z trzema kropkami w menu nawigacyjnym po lewej stronie.
- Select workflow.
- W pasku wyszukiwania wyszukaj „webhook”.
- Wybierz opcję Opublikuj na kanale po otrzymaniu żądania webhook.
- Wpisz nazwę swojego workflow (np. „Aktualizacje Airfocus”).
- Kliknij przycisk Dalej.
- W sekcji „Szczegóły” wybierz konkretny Zespół i Kanał, w którym mają pojawiać się aktualizacje.
- Kliknij Dodaj workflow.
- Na ekranie potwierdzenia skopiuj adres URL POST.
- To jest adres URL webhook, który musisz wkleić do airfocus.
- Kliknij przycisk Gotowe, aby zakończyć konfigurację.
Skonfiguruj swój webhook w airfocus
Aby skonfigurować haczyk internetowy w airfocus, wykonaj następujące kroki:
- Otwórz obszar roboczy AirFocus, dla którego chcesz wysyłać aktualizacje do Microsoft Zespół.
- Kliknij opcję Rozszerzenia w prawym górnym rogu obszaru roboczego.
- Wybierz Dodaj integracje.
- W sekcji „Webhook” kliknij Połącz.
- Wpisz nazwę haczyka sieciowego.
- W sekcji „Wydarzenia” wybierz typ aktualizacji, które chcesz otrzymywać od Microsoft Zespół.
- W polu „Format symbolu zastępczego” wybierz opcję Mark down.
- W obszarze „Metoda” wybierz opcję POST , a następnie wklej adres URL wygenerowany w programie Microsoft Zespół w polu „URL”.
- Wybierz polec enie+Dodaj nagłówek.
- W polu „Nazwa nagłówka” wpisz „Content-Type”.
- W polu „Wartość nagłówka” wpisz „application/json”.
- Aby otrzymywać poprawnie sformatowane wiadomości Microsoft Zespół, wklej poniższy szablon w polu treści.
{ " typ ": " AdaptiveCard ", " $schemat ": " http://adaptivecards.io/schemas/adaptive-card.json", " wersja ": " 1.4 ", "ciało": [ { „typ”: „Blok tekstu”, "tekst": "{{title}}", „rozmiar”: „Średni”, „waga”: „Odważniejszy”, „wrap”: prawda }, { „typ”: „Blok tekstu”, "Tekst {{details}}", „wrap”: prawda } ], "działanie": [ { "type": "działanie.OpenUrl", „tytuł”: „Otwórz w Airfocus”, "url": "{{url}}" } ] }
- Kliknij Aktualiz uj w prawym dolnym rogu strony.
Teraz będziesz otrzymywać aktualizacje kanału Microsoft Zespół skonfigurowanego w pierwszej sekcji.
Konfigurowanie żądania HTTP - dokumentacja techniczna
Metoda
Domyślnie jest ustawiony na POST, ale można go również zmienić na GET lub PUT. Inne metody nie są obsługiwane.
URL
- nie powinien być pusty
- może zaczynać się tylko od https://(inne schematy lub pusty schemat nie są obsługiwane)
- powinien mieć nazwę domeny publicznej ze znaną domeną najwyższego poziomu (adresy IP nie są obsługiwane)
Nagłówki
- Autoryzacja jest obsługiwana
- Obsługiwany jest typ zawartości
- obsługiwane są niestandardowe nagłówki zaczynające się od x-
- inne nagłówki nie są obsługiwane
Ciało
Definiuje treść żądania webhook.
Może zawierać dowolny tekst o długości do 2000 znaków.
Aby wypełnić treść żądania znaczącymi danymi zdarzeń, udostępniamy kilka symboli zastępczych, które nasz serwer zastępuje danymi zdarzeń przed wysłaniem żądania.
Format symbolu zastępczego
Określa, w jaki sposób symbole zastępcze z typem RichText powinny być wstępnie renderowane przez nasz serwer. Na przykład symbol zastępczy {{title}} może zawierać ciąg znaków typu „John zaktualizował etykiety pól na elemencie Nap raw przycisk”, który zawiera formatowanie tekstu bogatego, takie jak pogrubienie, kursywa itp., dlatego format symbolu zastępczego określa, w jakiej konkretnej składni formatowanie powinno zostać przekształcone. Dostępne formaty:
| Imię | Opis | Przykład |
| przecenienie | domyślne przecenienie | John zaktualizował pole E tykiety na elem encie Napraw przycisk |
| html | <b>John</b> zaktualizowane pole <i>Etykiety</i> na pozycji <b>Napraw przycisk</b> |
|
| Tekst | formatowanie usunięte | John zaktualizował pole Etykiety na elemencie Napraw przycisk |
| slack | specjalny Slack mrkdwn | *John* zaktualizowane pole*Etykietykie* na pozycji *Napraw przycisk* |
Symbole zastępcze
| Symbol zastępczy | Type | Opis | Przykład |
{{type}} |
String | Rodzaj wydarzenia | AktualizacjaEdytuj |
{{title}} |
Ciąg znaków (RichText) | opisuje działanie zdarzenia | John zaktualizował pole Etykiety na elemencie Napraw przycisk |
{{details}} |
Ciąg znaków (RichText) | dodatkowe szczegóły wydarzenia (np. co zostało zmienione) | Stara wartość ⇒ Nowa wartość |
{{url}} |
String | adres URL call-to-działanie dla każdego konkretnego zdarzenia (np. link do obszaru roboczego lub elementu) |
https://myteam.airfocus.com/w/workspaceId?item=itemId *zastąp airfocus.com przez airfocus.app, jeśli znajdujesz się w USA lub regionie Azji i Pacyfiku, a Twoje konto zostało utworzone /utworz/ po wrześniu 2025 r. |
{{event}} |
JSON | pełne dane JSON o bieżącym wydarzeniu | Zobacz model obciążenia zdarzenia poniżej |
{{title|esc}} |
Ciąg znaków (RichText) | tak samo jak {{title}}, ale wszystkie podwójne cytaty są uniknięte |
przekształca ciąg z " podwójnymi cudzysłowami " w ciąg z\ " podwójnymi\ " cudzysłowami |
{{details|esc}} |
Ciąg znaków (RichText) | tak samo jak {{details}}, ale wszystkie podwójne cytaty są uniknięte |
przekształca ciąg z " podwójnymi cudzysłowami " w ciąg z\ " podwójnymi\ " cudzysłowami |
Modele danych
Model ładunku zdarzenia
Obiekt najwyższego poziomu, tworzony dla każdego zdarzenia. Zawiera dane dotyczące zdarzenia, a także osadzone podstawowe dane dotyczące wszystkich podmiotów powiązanych z tym zdarzeniem.
| Field | Type | Wymagane | Opis |
| wydarzenie | Wydarzenie | Tak | podstawowe dane o wydarzeniu |
| Osadź | EventEmbed | Tak | dodatkowe dane o wydarzeniu - głównie nazwy przedmiotów/przestrzeni roboczej/pol/itp., które są związane z tym wydarzeniem |
| Dopasowany filtr | Filtr zdarzeń | Tak | jeden z filtrów zdarzeń wybranych w ustawieniach integracji, który pasował do bieżącego zdarzenia |
Model zdarzenia
Podstawowe dane o wydarzeniu
| Field | Type | Wymagane | Opis |
| Identyfikator | UUID | Tak | niepowtarzalny identyfikator wydarzenia |
| Inicjator | Inicjator zdarzeń | Tak | informacje o tym, kto zainicjował to wydarzenie |
| dane | Dane zdarzenia | Tak | rzeczywiste dane wydarzenia. Różni się w zależności od konkretnego typu zdarzenia |
| CreateDat | Znacznik czasu | Tak | Kiedy wydarzenie się wydarzyło |
Model EventInitiator
Informacje o tym, kto zainicjował to wydarzenie. W większości przypadków identyfikator użytkownika zostanie zdefiniowany. Możliwe jest również, że zostaną zdefiniowane zarówno userId, jak i IntegrationID - np. jeśli użytkownik nacisnął przycisk „synchronizuj integrację”, który następnie wygenerował zdarzenie.
| Field | Type | Wymagane | Opis |
| Id użytkownikaID | UUID | Nie | zdefiniowano, czy to zdarzenie zostało zainicjowane przez użytkownika |
| AppID | UUID | Nie | zdefiniowano, czy to zdarzenie zostało zainicjowane przez aplikację |
| Identyfikator integracji | UUID | Nie | zdefiniowano, czy zdarzenie to zostało zainicjowane przez integrację |
| EventID | UUID | Nie | zdefiniowano, czy to zdarzenie zostało zainicjowane przez inne zdarzenie |
| Żądanie ID | UUID | Nie | zdefiniowano, czy to zdarzenie zostało zainicjowane w żądaniu HTTP |
EventEmbed Model
Dodatkowe dane o wydarzeniu - głównie nazwy przedmiotów/przestrzeni roboczej/pol/itp., które są związane z tym wydarzeniem.
| Field | Type | Wymagane | Opis |
| Zespoły | {UUID: TeamInfo} | Nie | mapa skrótów identyfikatorów Zespołu na dane Zespołu |
| użytkowników | {UUID: UserInfo} | Nie | Hash-map identyfikatorów użytkownika do danych użytkownika |
| Aplikacje | {UUID: AppInfo} | Nie | Hash-map identyfikatorów aplikacji do danych aplikacji |
| Miejsca pracy | {UUID: WorkspaceInfo} | Nie | Hash-map identyfikatorów obszaru roboczego do danych obszaru roboczego |
| integracje | {UUID: IntegrationInfo} | Nie | Hash-map identyfikatorów integracji do danych integracyjnych |
| Pola | {UUID: FieldInfo} | Nie | Hash-map identyfikatorów pól do danych pól |
| statusy | {UUID: StatusInfo} | Nie | Hash-map identyfikatorów stanu do danych stanu |
| Elementy | {UUID: ItemInfo} | Nie | Hash-map identyfikatorów elementów do danych pozycji |
Model TeamInfo
| Field | Type | Wymagane | Opis |
| Imię | String | Tak | Nazwa zespołu |
| ślimak | String | Tak | Zespół URL slug |
| BaseURL | String | Tak | przykład: https://myteam.airfocus.com *zastąp airfocus.com przez airfocus.app, jeśli znajdujesz się w USA lub regionie Azji i Pacyfiku, a Twoje konto zostało utworzone /utworz/ po wrześniu 2025 r. |
Model UserInfo
| Field | Type | Wymagane | Opis |
| Identyfikator drużyny | UUID | Tak | ID Zespołu, do którego należy ten użytkownik |
| Pełna nazwa | String | Tak | imię i nazwisko użytkownika |
Model AppInfo
| Field | Type | Wymagane | Opis |
| Identyfikator drużyny | UUID | Tak | ID zespołu, do którego należy ta aplikacja |
| Identyfikator typu | String | Tak | jeden z: formularzy, podsumowania, lustra, portalu, priorytetyzacji |
Model WorkspaceInfo
| Field | Type | Wymagane | Opis |
| Identyfikator drużyny | UUID | Tak | ID zespołu, do którego należy ta przestrzeń robocza |
| Imię | String | Tak | nazwa obszaru roboczego |
IntegrationInfo Model
| Field | Type | Wymagane | Opis |
| Przestrzeń roboczaID | UUID | Tak | Identyfikator obszaru roboczego, do którego należy ta integracja |
| Identyfikator typu | String | Tak | jeden z: asana, azure-devops, clubhouse, github, domofon, jira, planner, trello |
Model StatusInfo
| Field | Type | Wymagane | Opis |
| Przestrzeń roboczaID | UUID | Tak | Identyfikator obszaru roboczego, do którego należy ten status |
| Imię | String | Tak | nazwa statusu |
| kategoria | String | Tak | jeden z: wersja robocza, aktywna, zamknięta |
Model ItemInfo
| Field | Type | Wymagane | Opis |
| Przestrzeń roboczaID | UUID | Tak | Identyfikator obszaru roboczego, do którego należy ten element |
| StatusID | UUID | Tak | Identyfikator statusu przedmiotu |
| Imię | String | Tak | Nazwa przedmiotu |
Model EventData
EventData jest typem zjednoczenia - może dowolny z określonych typów:
UtwórzEdytuj
| Field | Type | Wymagane | Opis |
| Identyfikator przedmiotu | UUID | Tak | identyfikator elementu /utworz/ |
AktualizacjaEdytuj
| Field | Type | Wymagane | Opis |
| Identyfikator przedmiotu | UUID | Tak | Identyfikator zaktualizowanego elementu |
| Status | {prev: UUID, next: UUID} | Nie | stare i nowe identyfikatory statusu (jeśli zostały zmienione) |
| Kolor | {prev: String, next: String} | Nie | stare i nowe identyfikatory koloru przedmiotu (jeśli zostały zmienione) |
| PrzypisanieUSERIDS | {prev: UUID[], next: UUID[]} | Nie | stara i nowa lista przypisanych identyfikatorów użytkownika (jeśli zmieniona) |
| Imię | {prev: String, next: String} | Nie | stara i nowa nazwa przedmiotu (jeśli została zmieniona) |
| opis | {prev: RichText, next: RichText} | Nie | opis starego i nowego przedmiotu (jeśli został zmieniony) |
| opis | {UID: { prev: JSON, next: JSON } } | Nie | Hash-map identyfikatorów pól do ich zmienionych wartości, każda wartość to jakiś JSON, który zależy od typu pola |
| Zarchiwizowano | {prev: Boolean, next: Boolean} | Nie | stare i nowe zarchiwizowane (jeśli zmienione) |
Przekaż opinię na temat tego artykułu
Masz opinię na temat tego artykułu? Opowiedz nam o swoich doświadcz eniach tutaj.