Używanie webhooka jako wyzwalacza w Azure Logic Apps i Power Automate

Webhooki to proste wywołania zwrotne HTTP, które przekazują powiadomienia o zdarzeniach, gdy coś wydarzy się w usłudze internetowej. W Azure Logic Apps i Power Automate można używać elementów webhook jako wyzwalaczy. Aplikacja logiki lub przepływ obserwuje ten wyzwalacz i wykonuje akcję przy każdym aktywowaniu wyzwalacza. W tym samouczku pokazano, jak używać webhooka jako wyzwalacza za pomocą łącznika niestandardowego zdefiniowanego przy użyciu specyfikacji OpenAPI.

Notatka

W tym artykule użyto GitHub jako przykładowej usługi, która może wysyłać powiadomienia za pośrednictwem elementów webhook, ale możesz rozszerzyć techniki przedstawione tutaj na dowolną usługę, która zezwala na elementy webhook.

Wymagania wstępne

Włączanie uwierzytelniania w GitHub

Interfejs API usługi sieciowej, który wysyła żądanie webhooka do usługi Logic Apps lub Power Automate, zazwyczaj korzysta z jakiejś formy uwierzytelniania, a GitHub nie jest tu wyjątkiem. GitHub obsługuje kilka typów uwierzytelniania. W tym samouczku używane są szczegółowe tokeny dostępu osobistego usługi GitHub.

  1. Przejdź do GitHub i zaloguj się, jeśli jeszcze tego nie zrobiono.

  2. W prawym górnym rogu wybierz swój obraz profilu, a następnie w menu wybierz pozycję Ustawienia.

  3. W menu po lewej stronie wybierz pozycję Ustawienia dewelopera.

  4. Pod Osobiste tokeny dostępu wybierz Drobnoziarniste tokeny.

  5. Wybierz przycisk Generuj nowy token , a następnie potwierdź hasło, jeśli jest to wymagane.

  6. Wprowadź nazwę tokenu i opis tokenu.

  7. W obszarze Wygaśnięcie wybierz datę wygaśnięcia tokenu.

  8. W obszarze Dostęp do repozytorium wybierz pozycję Tylko wybierz repozytoria i wybierz repozytorium, do którego chcesz udzielić dostępu.

  9. W sekcji Uprawnienia wybierz pozycję Dodaj uprawnienia>Webhooki>Odczyt i zapis.

  10. Wybierz przycisk Generuj token .

  11. Zanotuj wygenerowany token. Tego tokenu należy użyć później podczas dodawania łącznika webhooka jako wyzwalacza.

    Ważne

    Nie można ponownie uzyskać dostępu do tego tokenu. Skopiuj i wklej go gdzieś, aby użyć go w dalszej części samouczka.

Zdefiniuj webhook w definicji OpenAPI

Webhooki wdrażasz w usługach Logic Apps i Power Automate jako część łącznika niestandardowego. Aby utworzyć łącznik, należy podać definicję interfejsu OpenAPI definiującą kształt elementu webhook. W tym samouczku użyto pobranej przykładowej definicji interfejsu OpenAPI dla elementów webhook GitHub.

Aby utworzyć wyzwalacz, jeśli nie masz definicji OpenAPI, z którą chcesz pracować, użyj interfejsu użytkownika wyzwalaczy w kreatorze łącznika niestandardowego w celu zdefiniowania wyzwalaczy elementu webhook.

Przykładowa definicja interfejsu OpenAPI zawiera trzy części, które mają kluczowe znaczenie dla działania elementu webhook:

  • Tworzenie webhooka
  • Definiowanie przychodzącego żądania hooka z API usługi internetowej (w tym przykładzie samouczka jest to GitHub)
  • Usuwanie webhooka

Łącznik używa tej definicji OpenAPI, aby określić, jak tworzyć, odbierać z, i usuwać elementy webhook z repozytorium GitHub.

Utwórz webhook

Łącznik używa interfejsu API usługi internetowej (w naszym przykładzie interfejsu GitHub REST API), aby utworzyć webhook po stronie usługi internetowej, wysyłając żądanie HTTP POST do odpowiedniego punktu końcowego tworzenia webhooków dla tej usługi internetowej (/repos/{owner}/{repo}/hooks w przypadku GitHub).

Podczas tworzenia nowej aplikacji logiki lub przepływu przy użyciu łącznika łącznik wysyła żądanie POST do punktu końcowego tworzenia elementu webhook usługi internetowej zgodnie z definicją interfejsu OpenAPI łącznika. Wysyła również żądanie POST na ten adres URL, jeśli zmienisz wyzwalacz aplikacji logiki lub przepływu. W poniższej przykładowej konfiguracji ścieżki OpenAPI właściwość post zawiera schemat żądania utworzenia elementu webhook, które ma zostać wysłane do interfejsu GitHub REST API.

"/repos/{owner}/{repo}/hooks": {
    "x-ms-notification-content": {
        "description": "Details for Webhook",
        "schema": {
            "$ref": "#/definitions/WebhookPushResponse"
        }
    },
    "post": {
        "description": "Creates a GitHub webhook",
        "summary": "Triggers when a PUSH event occurs",
        "operationId": "webhook-trigger",
        "x-ms-trigger": "single",
        "parameters": [
            {
            "name": "owner",
            "in": "path",
            "description": "Name of the owner of targeted repository",
            "required": true,
            "type": "string"
            },
            {
            "name": "repo",
            "in": "path",
            "description": "Name of the repository",
            "required": true,
            "type": "string"
            },
            {
            "name": "Request body of webhook",
            "in": "body",
            "description": "This is the request body of the Webhook",
            "schema": {
                "$ref": "#/definitions/WebhookRequestBody"
            }
            }
        ],
        "responses": {
            "201": {
            "description": "Created",
            "schema": {
                "$ref": "#/definitions/WebhookCreationResponse"
                }
            }
        }
    }
},

Ważne

Właściwość "x-ms-trigger": "single" jest rozszerzeniem schematu nakazującym usługom Logic Apps i Power Automate wyświetlenie tego elementu webhook na liście dostępnych wyzwalaczy w projektancie. Pamiętaj, aby koniecznie to uwzględnić.

Zdefiniuj żądanie haka przychodzące z API

Zdefiniuj kształt przychodzącego żądania hooka (powiadomienia z GitHub do usługi Logic Apps lub Power Automate) we właściwości niestandardowej x-ms-notification-content, jak pokazano w poprzednim przykładzie. Żądanie nie musi zawierać całej treści żądania, a tylko te części, które mają być używane w aplikacjach logiki lub przepływie.

Usuń webhook

Dodaj definicję sposobu usunięcia webhooka w definicji OpenAPI. Usługi Logic Apps i Power Automate podejmują próbę usunięcia istniejącego elementu webhook w razie zaktualizowania wyzwalacza lub usunięcia aplikacji logiki bądź przepływu.

"/repos/{owner}/{repo}/hooks/{hook_Id}": {
    "delete": {
        "description": "Deletes a Github webhook",
        "operationId": "DeleteTrigger",
        "parameters": [
            {
                "name": "owner",
                "in": "path",
                "description": "Name of the owner of targeted repository",
                "required": true,
                "type": "string"
            },
            {
                "name": "repo",
                "in": "path",
                "description": "Name of the repository",
                "required": true,
                "type": "string"
            },
            {
                "name": "hook_Id",
                "in": "path",
                "description": "ID of the webhook being deleted",
                "required": true,
                "type": "string"
            }
        ]
    }
},

Do usuwania wywołania elementu webhook nie są dołączone żadne nagłówki. Wywołanie webhooka usuwania korzysta z tego samego połączenia co konektor.

Ważne

Aby umożliwić usłudze Logic Apps lub Power Automate usunięcie elementu webhook, interfejs API usługi sieci Web musi uwzględniać nagłówek HTTP Location w odpowiedzi 201 w przypadku tworzenia elementu webhook. Nagłówek Location powinien zawierać ścieżkę do webhooka używanego z metodą HTTP DELETE. Na przykład nagłówek Location zawarty w odpowiedzi z GitHub ma następujący format: https://api.github.com/repos/<user name>/<repo name>/hooks/<hook ID>.

Importuj definicję OpenAPI

Zacznij od zaimportowania definicji interfejsu OpenAPI dla usługi Logic Apps lub Power Automate.

Import definicji OpenAPI dla Logic Apps

  1. Przejdź do witryny Azure Portal i otwórz łącznik usługi Logic Apps utworzony wcześniej w procedurze Tworzenie łącznika niestandardowego usługi Azure Logic Apps.

  2. W menu łącznika wybierz Łącznik Logic Apps, a następnie wybierz Edytuj.

    Zrzut ekranu przedstawiający opcję „Edytuj” dla łącznika Logic Apps.

  3. W obszarze Ogólne wybierz pozycję Przekaż plik OpenAPI, a następnie przejdź do pobranego przykładowego pliku OpenAPI.

    Zrzut ekranu przedstawiający opcję Przekaż plik OpenAPI.

Importuj definicję OpenAPI do Power Automate

  1. Przejdź do https://make.powerautomate.com/.

  2. W prawym górnym rogu wybierz ikonę koła zębatego, a następnie wybierz pozycję Łączniki niestandardowe.

    Zrzut ekranu przedstawiający menu ikony koła zębatego z opcją Łączniki niestandardowe.

  3. Wybierz pozycję Utwórz łącznik niestandardowy, a następnie wybierz pozycję Importuj kolekcję Postman.

    Zrzut ekranu przedstawiający menu Tworzenie łącznika niestandardowego z opcjami importowania.

  4. Wprowadź nazwę łącznika niestandardowego, przejdź do pobranego przykładowego pliku OpenAPI i wybierz pozycję Połącz.

    Zrzut ekranu przedstawiający pole służące do wprowadzania nazwy łącznika niestandardowego.

    Parametr Wartość
    Tytuł łącznika niestandardowego „GitHubDemo”

Zakończ tworzenie łącznika niestandardowego

  1. Na stronie Ogólne wybierz pozycję Kontynuuj.

  2. Na stronie Zabezpieczenia w obszarze Typ uwierzytelniania wybierz opcję Uwierzytelnianie podstawowe.

  3. W sekcji Uwierzytelnianie podstawowe wprowadź tekst Nazwa użytkownika i Hasło w polach etykiet. Etykiety te są wyświetlane podczas korzystania z wyzwalacza w aplikacji logiki lub przepływie.

    Zrzut ekranu przedstawiający pola etykiety uwierzytelniania podstawowego.

  4. W górnej części kreatora upewnij się, że nazwa jest ustawiona na "GitHubDemo", a następnie wybierz pozycję Utwórz łącznik.

Możesz teraz zacząć korzystać z wyzwalacza w aplikacji logiki lub przepływie albo przeczytać, jak tworzyć wyzwalacze z poziomu interfejsu użytkownika.

Twórz wyzwalacze webhooków w interfejsie użytkownika

W tej sekcji dowiesz się, jak utworzyć wyzwalacz w interfejsie użytkownika bez konieczności posiadania definicji wyzwalacza w definicji interfejsu OpenAPI. Zacznij od bazowej definicji OpenAPI lub rozpocznij od zera w kreatorze niestandardowych łączników.

  1. Na stronie Ogólne upewnij się, że określono opis i adres URL.

    Parametr Wartość
    Opis GitHub to społecznościowe repozytorium kodu źródłowego.
    URL „api.github.com”
  2. Na stronie Zabezpieczenia skonfiguruj uwierzytelnianie podstawowe, takie jak w poprzedniej sekcji.

  3. Na stronie Definicja wybierz pozycję Nowy wyzwalacz i wypełnij opis wyzwalacza. W tym przykładzie tworzysz wyzwalacz, który uruchamia się, gdy w repozytorium zostanie utworzony pull request.

    Zrzut ekranu przedstawiający nowe pola informacji ogólnych wyzwalacza.

    Parametr Wartość
    Podsumowanie Uruchamia się po utworzeniu pull requestu w wybranym repozytorium
    Opis Wyzwalane, gdy w wybranym repozytorium zostanie utworzone żądanie ściągnięcia
    Identyfikator operacji „webhook-PR-trigger”
    Widoczność „brak” (więcej informacji poniżej)
    Typ wyzwalacza „Webhook”

    Właściwość Widoczność dla operacji i parametrów w aplikacji lub przepływie logicznym ma następujące opcje:

    • brak: zazwyczaj wyświetlane w aplikacji logiki lub przepływie
    • zaawansowane: ukryte w dodatkowym menu
    • wewnętrzne: ukryte przed użytkownikiem
    • ważne: zawsze wyświetlane użytkownikowi w pierwszej kolejności
  4. W obszarze Żądania są wyświetlane informacje na podstawie żądania HTTP dotyczącego akcji. Wybierz Importuj z próbki.

    Zrzut ekranu przedstawiający stronę Definicja z opcją Importuj z przykładu.

  5. Zdefiniuj żądanie dla wyzwalacza webhooka, a następnie wybierz Importuj. Udostępniamy przykład do zaimportowania (w poniższej sekcji). Aby uzyskać więcej informacji, zobacz dokumentację interfejsu API GitHub. Usługi Logic Apps i Power Automate automatycznie dodają standardowe nagłówki content-type i zabezpieczeń, więc nie trzeba ich definiować podczas importowania próbki.

    Zrzut ekranu okna dialogowego importu żądania dla wyzwalacza webhooka.

    Parametr Wartość
    Czasownik „OPUBLIKUJ”
    URL "https://api.github.com/repos/{owner}/{repo}/hooks"
    Treść Zobacz poniżej
    {
      "name": "web",
      "active": true,
      "events": [
        "pull_request"
      ],
      "config": {
        "url": "http://example.com/webhook"
      }
    }
    
  6. W obszarze Odpowiedź są wyświetlane informacje na podstawie odpowiedzi HTTP dla tej akcji. Wybierz pozycję Dodaj odpowiedź domyślną.

    Zrzut ekranu przedstawiający obszar Odpowiedź na stronie Definicja z opcją Dodaj odpowiedź domyślną.

  7. Zdefiniuj odpowiedź dla wyzwalacza webhooka, a następnie wybierz Importuj. Ponownie udostępniamy przykład do zaimportowania. Aby uzyskać więcej informacji, zobacz dokumentację interfejsu API GitHub.

    Zrzut ekranu przedstawiający okno dialogowe importu odpowiedzi dla wyzwalacza webhooka.

    {
      "action": "opened",
      "number": 1,
      "pull_request": {
        "html_url": "https://github.com/baxterthehacker/public-repo/pull/1",
        "state": "open",
        "locked": false,
        "title": "Update the README with new information",
        "user": {
          "login": "baxterthehacker",
          "type": "User"
        }
      }
    }
    
  8. W obszarze Konfiguracja wyzwalacza wybierz parametr, który powinien otrzymać wartość adresu zwrotnego URL z usługi GitHub. Ten parametr jest właściwością url w obiekcie config.

    Zrzut ekranu przedstawiający obszar Konfiguracji wyzwalacza z wybranym parametrem adresu URL wywołania zwrotnego.

  9. W górnej części kreatora wprowadź nazwę, a następnie wybierz pozycję Utwórz łącznik.

Użyj webhooka jako wyzwalacza

Po skonfigurowaniu wszystkich elementów użyj elementu webhook za pośrednictwem łącznika niestandardowego w aplikacji logiki lub przepływie. Następnie utwórz przepływ, który wysyła wiadomość e-mail za każdym razem, gdy repozytorium GitHub odbiera wypychanie usługi Git.

  1. W obszarze https://make.powerautomate.com/ u góry strony wybierz Moje przepływy.

  2. Wybierz pozycję Utwórz z pustego.

    Zrzut ekranu przedstawiający opcję Wyszukaj setki łączników i wyzwalaczy.

  3. W projektancie usługi Power Automate wyszukaj łącznik niestandardowy zarejestrowany wcześniej.

    Zrzut ekranu przedstawiający wyszukiwanie wyzwalacza łącznika niestandardowego w projektancie Power Automate.

  4. Wybierz element na liście, aby użyć go jako wyzwalacza.

  5. Ponieważ jest to pierwszy raz, gdy używasz tego łącznika niestandardowego, połącz się z nim. Wprowadź informacje o połączeniu, a następnie wybierz pozycję Utwórz.

    Zrzut ekranu przedstawiający nowe pola informacji o połączeniu.

    Parametr Wartość
    Nazwa połączenia Opisowa nazwa
    Nazwa użytkownika Twoja nazwa użytkownika GitHub
    Hasło Wcześniej utworzony osobisty token dostępu
  6. Wprowadź szczegóły dotyczące repozytorium, które ma być monitorowane. Zwróć uwagę na znane pola obiektu WebhookRequestBody z pliku OpenAPI.

    Zrzut ekranu przedstawiający pola właściciela i nazwy repozytorium dla wyzwalacza.

    Parametr Wartość
    właściciel Właściciel monitorowanego repozytorium
    repo Repozytorium do monitorowania

    Ważne

    Użyj repozytorium, do którego twoje konto ma uprawnienia. Najprostszym sposobem, aby to zrobić, jest użycie własnego repozytorium.

  7. Wybierz kolejno pozycje Nowy krok>Dodaj akcję.

  8. Wyszukaj i wybierz akcję Wyślij wiadomość e-mail (wersja 2).

  9. Wprowadź tekst w polu Treść i inne pola, używając wartości w oknie dialogowym zawartość dynamiczna. Wartości pochodzą z obiektu WebhookPushResponse w pliku OpenAPI.

  10. Nazwij przepływ w górnej części strony i kliknij pozycję Utwórz przepływ.

    Zrzut ekranu przedstawiający pole nazwy przepływu i przycisk Utwórz przepływ.

Weryfikacja i rozwiązywanie problemów

Aby sprawdzić, czy wszystko jest poprawnie skonfigurowane, wybierz pozycję Moje przepływy, a następnie wybierz ikonę informacji obok nowego przepływu, aby wyświetlić historię uruchamiania:

  • Powinien być widoczny co najmniej jeden przebieg o stanie Zakończone powodzeniem odpowiadający utworzeniu elementu webhook. To uruchomienie wskazuje, że webhook został pomyślnie utworzony po stronie GitHuba.
  • Jeśli przebieg zakończył się niepowodzeniem, przejrzyj szczegóły przebiegu, aby zobaczyć, dlaczego zakończyła się niepowodzeniem. Jeśli niepowodzenie było spowodowane odpowiedzią 404 Not Found, Twoje konto GitHub prawdopodobnie nie ma odpowiednich uprawnień do utworzenia webhooka w repozytorium, którego użyto.

Podsumowanie

Jeśli wszystko zostało poprawnie skonfigurowane, będziesz otrzymywać powiadomienia push w aplikacji mobilnej Power Automate za każdym razem, gdy w wybranym repozytorium GitHub wystąpi operacja git push. Korzystając z opisanego wcześniej procesu, możesz użyć dowolnej usługi obsługującej webhooki jako wyzwalacza w swoich przepływach.

Następne kroki

Przekazywanie opinii

Jesteśmy wdzięczni za opinie na temat problemów z platformą łączników oraz pomysły na nowe funkcje. Aby przekazać opinię, przejdź na stronę Przesyłanie problemów lub uzyskiwanie pomocy dotyczącej łączników i wybierz typ opinii.