Udostępnij za pośrednictwem


Przygotowanie plików łączników Power Platform i AI do certyfikacji

Ten proces dotyczy zweryfikowanych wydawców (z wykluczeniem wydawców niezależnych).

Po zakończeniu tworzenia niestandardowego łącznika i/lub łącznika z obsługą AI należy wykonać poniższe kroki, aby przygotować go do certyfikacji i wygenerować pliki łącznika i/lub łącznika z obsługą AI do przesłania do firmy Microsoft.

Notatka

Ten artykuł zawiera informacje dotyczące certyfikowania niestandardowych łączników w Azure Logic Apps, Microsoft Power Automate, Microsoft Power Apps oraz plików łączników z obsługą AI dla Microsoft Copilot Studio. Przed wykonaniem kroków opisanych w tym artykule, przeczytaj Uzyskaj certyfikat łącznika i/lub akcji (wtyczki).

Krok 1: Rejestrowanie łącznika i/lub łącznika z włączoną obsługą AI (dotyczy tylko niezależnych wydawców)

Ta sekcja nie dotyczy zweryfikowanych wydawców.

Aby ubiegać się o certyfikację, nie trzeba kończyć opracowywania niestandardowego łącznika i/lub łącznika obsługującego sztuczną inteligencję. Aby rozpocząć proces certyfikacji, zarejestruj swój łącznik i/lub łącznik z obsługą AI do certyfikacji, wypełniając nasz formularz rejestracyjny.

Oczekując na wiadomość e-mail w ciągu dwóch dni roboczych od kontaktu firmy Microsoft, który:

  • Rozumie łącznik niestandardowy, łącznik i/lub łącznik z włączoną obsługą AI.
  • Sprawdzi, jaki jest postęp opracowywania.
  • Przeprowadzi Cię przez proces certyfikacji.

Krok 2. Spełnianie wymagań dotyczących łączników

Aby zachować wysoką jakość i spójność naszych certyfikowanych łączników, firma Microsoft ma zestaw wymagań i wskazówek, jakie musi spełniać łącznik niestandardowy na potrzeby certyfikacji.

Nadawanie łącznikowi tytułu

Twój tytuł musi spełniać następujące wymagania.

  • Musi istnieć i być napisany w języku angielskim.
  • Musi być unikatowy i odróżniany od istniejącego tytułu łącznika.
  • Powinien być nazwą produktu lub organizacji.
  • Powinien być zgodny z istniejącymi wzorcami nazewnictwa dla certyfikowanych łączników i/lub dodatków. W przypadku niezależnych wydawców nazwa oprogramowania sprzęgającego powinna być zgodna ze wzorcem Connector and/or plugin Name (Independent Publisher).
  • Nie może być dłuższy niż 30 znaków.
  • Nie może zawierać słów API, Connector ani żadnej nazwy naszych produktów Power Platform (np. Power Apps).
  • Nie może zakończyć się znakiem innym niż alfanumerycznym, na przykład powrót karetki, nowy wiersz lub puste miejsce.

Przykłady

  • Dobre tytuły łączników i/lub dodatków plug-in: Azure Sentinel*, *Office 365 Outlook
  • Niedobre tytuły łączników i/lub dodatków plug-in: Azure Sentinel's Power Apps Connector,Office 365 Outlook API

Pisanie opisu łącznika

Opis musi spełnić następujące wymagania.

  • Musi istnieć i być napisany w języku angielskim.
  • Nie może zawierać błędów gramatycznych ani błędów pisowni.
  • Powinien opisywać zwięźle cel i wartość oferowaną przez łącznik.
  • Nie może być krótszy niż 30 znaków lub dłuższy niż 500 znaków.
  • Nie może zawierać żadnej nazwy produktów Power Platform (na przykład „Power Apps”).

Projektowanie ikony łącznika (dotyczy tylko sprawdzonych wydawców)

Ta sekcja nie dotyczy niezależnych wydawców.

  • Utwórz Logo o rozmiarze 1:1 w zakresie od 100 x 100 do 230 × 230 pikseli (bez zaokrąglenia rogów).
  • Użyj nieprzezroczystego, nie białego koloru tła (#ffffff) i nie domyślnego koloru (#007ee5) dopasowania do określonego koloru w tle ikony.
  • Upewnij się, że ikona jest unikatowa w stosunku do każdej innej ikony certyfikowanego łącznika.
  • Prześlij logo w formacie PNG jako <icon>.png.
  • Dzięki temu można ustawić rozmiar logo o rozmiarze poniżej 70% dla wysokości obrazu & szerokości spójnego tle.
  • Upewnij się, że kolor marki jest prawidłowym kolorem w kodzie szesnastkowym i nie powinien być biały (#ffffff) ani domyślny (#007ee5).

Definiowanie podsumowań i opisów operacji i parametrów

Opisy i podsumowania muszą spełnić następujące wymagania.

  • Musi istnieć i być napisany w języku angielskim.
  • Nie może zawierać błędów gramatycznych ani błędów pisowni.
  • Podsumowania operacji i parametrów powinny składać się z fraz, nie więcej niż 80 znaków i zawierać tylko znaki alfanumeryczne lub nawiasy.
  • Opisy operacji i parametrów powinny być pełnymi, opisowymi zdaniami i kończyć się interpunkcją.
  • Nie mogą zawierać żadnej nazwy produktów Microsoft Power Platform (na przykład „Power Apps”).

Definiowanie dokładnych odpowiedzi na operację

Odpowiedzi operacji muszą spełnić następujące wymagania.

  • Zdefiniuj odpowiedzi operacji z dokładnym schematem tylko z oczekiwanymi odpowiedziami.
  • Nie używaj odpowiedzi domyślnych z dokładną definicją schematu.
  • Podaj prawidłowe definicje schematu odpowiedzi dla wszystkich operacji w swaggerze.
  • Nie są dozwolone puste schematy odpowiedzi z wyjątkiem sytuacji, gdy schemat odpowiedzi jest dynamiczny. Oznacza to, że w danych wyjściowych nie jest dozwolona żadna zawartość dynamiczna, a twórcy muszą użyć języka JSON do analizy odpowiedzi.
  • Puste operacje są niedozwolone.
  • Należy usunąć puste właściwości, o ile nie są to wymagane.

Sprawdzanie właściwości struktury Swagger

Właściwości muszą spełnić następujące wymagania.

  • Upewnij się, że właściwość openapfinition jest w poprawnie sformatowanym pliku JSON.
  • Upewnij się, że definicja struktury Swagger jest zgodna ze standardem OpenAPI 2.0 i standardem rozszerzenia łącznika.

Zweryfikuj parametry połączenia

Parametry muszą spełnić następujące wymagania.

  • Upewnij się, że właściwość jest aktualizowana odpowiednimi wartościami „UIDefinition” (wyświetlana nazwa, opis).

  • Jeśli parametr połączenia używa uwierzytelniania podstawowego, należy upewnić się, że plik JSON jest poprawnie sformatowany jak w następującym przykładzie.

    {
      "username": {
        "type": "securestring",
        "uiDefinition": {
          "displayName": "YourUsernameLabel",
          "description": "The description of YourUsernameLabel for this api",
          "tooltip": "Provide the YourUsernameLabel tooltip text",
          "constraints": {
            "tabIndex": 2,
            "clearText": true,
            "required": "true"
            }
      }
    },
      "password": {
        "type": "securestring",
        "uiDefinition": {
          "displayName": "YourPasswordLabel",
          "description": "The description of YourPasswordLabel for this api",
          "tooltip": "Provide the YourPasswordLabel tooltip text",
          "constraints": {
            "tabIndex": 3,
            "clearText": false,
            "required": "true"
          }
        }
      }
    }
    
  • Jeśli parametr połączenia używa klucza APIKey jako uwierzytelniania, należy upewnić się, że plik JSON jest poprawnie sformatowany jak w następującym przykładzie.

    {
      "api_key": {
        "type": "securestring",
        "uiDefinition": {
          "displayName": "YourApiKeyParameterLabel",
          "tooltip": "Provide your YourApiKeyParameterLabel tooltip text",
          "constraints": {
            "tabIndex": 2,
            "clearText": false,
            "required": "true"
          }
        }
      }
    }
    
  • Jeśli parametr połączenia ma Generic OAuth jako uwierzytelnianie, upewnij się, że JSON jest poprawnie sformatowany, jak w poniższym przykładzie.

    {
      "token": {
        "type": "oAuthSetting",
        "oAuthSettings": {
          "identityProvider": "oauth2",
          "scopes": [
            "scope1"
          ],
          "redirectMode": "GlobalPerConnector",
          "customParameters": {
            "AuthorizationUrl": {
              "value": "https://contoso.com"
            },
            "TokenUrl": {
              "value": "https://contoso.com"
            },
            "RefreshUrl": {
              "value": "https://contoso.com"
            }
          },
          "clientId": "YourClientID"
        },
        "uiDefinition": null
      }
    }
    
  • Jeśli parametr połączenia ma dostawcę tożsamości OAuth2, należy upewnić się, że dostawca tożsamości znajduje się na liście obsługiwanych dostawców uwierzytelniania OAuth2. Poniżej przedstawiono przykład GitHub jako dostawcy tożsamości OAuth2:

    {
      "token": {
        "type": "oAuthSetting",
        "oAuthSettings": {
          "identityProvider": "github",
          "scopes": [
            "scope1"
          ],
          "redirectMode": "GlobalPerConnector",
          "customParameters": {},
          "clientId": "YourClientId"
        },
        "uiDefinition": null
      }
    }
    
  • Jeśli parametr połączenia używa tożsamości Microsoft Entra jako uwierzytelniania, należy upewnić się, że plik JSON jest poprawnie sformatowany jak w następującym przykładzie.

    {
      "token": {
        "type": "oAuthSetting",
        "oAuthSettings": {
          "identityProvider": "aad",
          "scopes": [
            "scope1"
          ],
          "redirectMode": "GlobalPerConnector",
          "customParameters": {
            "LoginUri": {
              "value": "https://login.microsoftonline.com"
            },
            "TenantId": {
              "value": "common"
            },
            "ResourceUri": {
              "value": "resourceUri"
            },
            "EnableOnbehalfOfLogin": {
              "value": false
            }
          },
          "clientId": "AzureActiveDirectoryClientId"
        },
        "uiDefinition": null
      }
    }
    

Tworzenie wysokiej jakości ciągów znaków w języku angielskim

Łączniki są lokalizowane w ramach lokalizacji Power Automate; dlatego podczas tworzenia łącznika jakość angielskich ciągów znaków jest kluczowa dla jakości tłumaczenia. Oto kilka głównych obszarów, na których można się skoncentrować podczas tworzenia wartości ciągów.

  • Upewnij się, że wykorzystasz program sprawdzający pisownię, aby upewnić się, że wszystkie wartości łańcuchowe są wolne od literówek. Jeśli istnieje niekompletny angielski ciąg znaków, wynik tłumaczenia jest niekompletny lub zawiera błędy w kontekście.

  • Upewnij się, że zdanie jest w pełnej formie. Jeśli zdanie nie jest pełne, może to również generować niższą jakość tłumaczeń.

  • Upewnij się, że znaczenie zdania jest jasne. Jeśli znaczenie zdania jest niejednoznaczne, może to również generować niższą jakość lub niepoprawne tłumaczenia.

  • Upewnij się, że streszczenia, x-ms-summaries i opisy są poprawne gramatycznie. Nie kopiuj ich i nie wklejaj. Aby dowiedzieć się, jak są wyświetlane w produkcie, przejdź do Wskazówki dotyczące ciągów łącznika.

  • Jeśli to możliwe, unikaj złożonych ciągów znaków w czasie wykonywania. Zamiast tego używaj w pełni ukształtowanych zdań. Złożone ciągi lub zdania utrudniają tłumaczenie lub mogą spowodować błędne tłumaczenie.

  • Jeśli używasz skrótów, upewnij się, że piszesz je wielkimi literami, aby było to jasne. Zmniejsza to ryzyko pomyłek w przypadku błędu typograficznego.

  • Ciągi w formacie CaMel (na przykład mnimizeHighways or MinimizeHighways) są zwykle traktowane jako niemożliwe do przetłumaczenia. Jeśli chcesz zlokalizowane wartości tego typu ciągu, należy naprawić ciąg formularza CaMel.

Krok 3: Uruchamianie sprawdzania rozwiązania, aby zweryfikować poprawności łącznika

Sprawdzanie rozwiązania to mechanizm wykonujący analizy statyczne, aby upewnić się, że łącznik jest zgodny ze standardami wymaganymi przez firmę Microsoft do certyfikacji. Dodaj łącznik do rozwiązania w Power Automate lub Power Apps i uruchom sprawdzanie rozwiązania zgodnie z instrukcjami w Weryfikuj poprawności łącznika niestandardowego przy użyciu sprawdzania rozwiązania.

Obejrzyj to wideo, aby dowiedzieć się, jak uruchomić sprawdzanie rozwiązania!

Krok 4. Spełnianie wymagań dotyczących dodatków

Ta sekcja ma zastosowanie, jeśli przesyłasz także skojarzony dodatek plug-in connector do certyfikatów.

  • Upewnij się, że dodatek plug-in został utworzeniu zgodnie z wytycznymi dotyczącymi tworzenia dodatków AI dla Microsoft Copilot (wersja zapoznawcza).
  • Wszystkie przesłane łączniki z włączoną obsługą AI powinny być zgodne ze standardami wyróżnionymi w punkcie 100.10 Nieodpowiednia zawartość.
  • Wszystkie łączniki obsługujące sztuczną inteligencję są zgodne z wytycznymi Responsible AI.
  • Dodatek plug-in nie może generować, zawierać i zapewniać dostępu do materiałów i materiałów, które nie mogą zostać pokreślone, a także pozwalać na uzyskanie dostępu do materiałów, które powstałych w ten sposób przez sztucznej inteligencji (AI) są zgodne z istniejącymi zasadami przedstawionych w witrynie Marketplace 100.10.

Krok 5: Przygotowanie łącznika i/lub artefaktów dodatków plug-in

Notatka

  • Upewnij się, że postępowałeś zgodnie ze specyfikacjami i zapewniłeś jakość swojego łącznika i/lub łącznika obsługującego sztuczną inteligencję przed certyfikacją. Niezastosowanie się do tego spowoduje opóźnienia w certyfikacji, ponieważ zostaniesz poproszony o wprowadzenie zmian.
  • Podaj produkcyjną wersję adresu URL hosta. Przemieszczania, tworzenia i testowania adresów URL hosta nie są dozwolone.

Przesyłasz do Microsoft zestaw plików, który jest generacją rozwiązania z maker portal lub Microsoft Copilot Studio. Aby spakować pliki, wykonaj czynności opisane w tej sekcji.

Przewodnik dotyczący pakowania łącznika i dodatku

Procedury w tej sekcji przewodnik po różnych scenariuszach opakowań. Jeśli chcesz spakować tylko łącznik niestandardowy, użyj pierwszego scenariusza. Jeśli chcesz spakować zarówno niestandardowy łącznik , jak i łącznik z obsługą AI, użyj drugiego scenariusza. Jeśli chcesz spakować istniejący łącznik i łącznik z włączoną sztuczną inteligencją, użyj ostatniego scenariusza.

Pakowanie niestandardowego łącznika i przesyłanie do certyfikacji

  1. Tworzenie łączników niestandardowych w rozwiązaniach.

  2. Uruchom sprawdzanie rozwiązania w rozwiązaniu łącznik w kroku 1.

  3. Wyeksportuj rozwiązanie łącznika.

  4. Utwórz przepływ (testowanie) przy użyciu nowo utworzonego łącznika niestandardowego lub dodaj istniejący przepływ do rozwiązania.

  5. Eksport rozwiązania przepływu.

  6. Tworzenie pakietu z rozwiązaniamiz kroków 3 i 5.

  7. Utwórz plik intro.mdintro.md.

  8. Ostatni pakiet należy utworzyć jako plik zip o następującym formacie:

    Zrzut ekranu folderów i plików w pliku zip, aby uzyskać certyfikat certyfikowanego łącznika.

Notatka

Nazwy folderu i plików poza rozwiązaniem są tylko odwołaniami - można je wybrać zgodnie z wymaganiami. Nie należy jednak modyfikować plików wewnątrz rozwiązania.

  1. Przekaż pakiet do obiektu blob magazynu i wygeneruj adres URL sas. Upewnij się, że identyfikator URI sygnatury dostępu współdzielonego jest prawidłowy przez co najmniej 15 dni.
  2. Prześlij do pakietu w Centrum partnerskim.

Pakowanie łącznika niestandardowego i łącznika z obsługą AI w celu certyfikacji

  1. Wykonaj kroki od 1 do 5 w pakiecie łącznika niestandardowego i prześlij do certyfikacji w tym artykule.

  2. Utwórz dodatek plug-in w Microsoft Copilot Studio portalu i wyeksportuj go jako rozwiązanie.

  3. Utwórz pakiet z następujących danych:

  4. Utwórz plik intro.mdintro.md.

  5. Ostatni pakiet należy utworzyć jako plik zip o następującym formacie.

    Zrzut ekranu folderów i plików w pliku zip, aby uzyskać certyfikat certyfikowanego łącznika i dodatku.

Notatka

Nazwy folderu i plików poza rozwiązaniem są tylko odwołaniami - można je wybrać zgodnie z wymaganiami. Nie należy jednak modyfikować plików wewnątrz rozwiązania.

  1. Przekaż pakiet do obiektu blob magazynu i wygeneruj adres URL sas. Upewnij się, że identyfikator URI sygnatury dostępu współdzielonego jest prawidłowy przez co najmniej 15 dni.
  2. Prześlij do pakietu w Centrum partnerskim.

Spakuj istniejący certyfikowany łącznik i łącznik z obsługą AI na potrzeby certyfikacji

  1. Utwórz rozwiązanie w Power Automatei dodaj do niego już certyfikowany łącznik.

  2. Wykonaj kroki od 2 do 4 w pakiecie łącznika niestandardowego i prześlij do certyfikacji w tym artykule.

  3. Utwórz dodatek plug-in w Copilot Studio i wyeksportuj go jako rozwiązanie.

  4. Wyeksportuj dodatek jako rozwiązanie.

  5. Utwórz pakiet z następujących danych:

  6. Utwórz plik intro.mdintro.md.

  7. Ostatni pakiet należy utworzyć jako plik zip o następującym formacie.

    Zrzut ekranu folderów i plików w pliku zip, aby uzyskać certyfikat certyfikowanego łącznika i dodatku.

Notatka

Nazwy folderu i plików poza rozwiązaniem są tylko odwołaniami - można je wybrać zgodnie z wymaganiami. Nie należy jednak modyfikować plików wewnątrz rozwiązania.

  1. Przekaż pakiet do obiektu blob magazynu i wygeneruj adres URL sas. Upewnij się, że identyfikator URI sygnatury dostępu współdzielonego jest prawidłowy przez co najmniej 15 dni.
  2. Prześlij do pakietu w Centrum partnerskim.

Zarówno sprawdzeni wydawcy, jak i wydawcy niezależni pobierają openapidefinition.json w ich artefaktach. W tym pliku należy ustawić wartość IconBrandColor.

  • Sprawdzeni wydawcy: Ustaw iconBrandColor na kolor swojej marki w pliku openapidefinition.
  • Niezależni wydawcy:: Ustaw iconBrandColor na „#da3b01” w pliku openapidefinition.
    Zrzut ekranu żywej pomarańczowej ikony (da3b01).

Utwórz artefakt intro.md.

Plik intro.md jest niezbędny zarówno dla niezależnych wydawców, jak i zweryfikowanych wydawców. Należy utworzyć plik intro.md w celu udokumentowania funkcji i funkcjonalności łącznika. Przykład dokumentacji, która ma być dołączyć, przejdź do przykładu Readme.md. Aby dowiedzieć się więcej o pisaniu pliku intro.md, zapoznaj się z innymi plikami intro.md (znanymi też jako Readme.md) w repozytorium TychSom.

Jeśli jesteś niezależnym wydawcą, a łącznik używa OAuth, upewnij się, że masz instrukcje uzyskiwania poświadczeń.

Wskazówka

Znane problemy i ograniczenia to doskonały punkt do podtrzymywania aktualnych informacji dla użytkowników.

Krok 6: Sprawdź poprawność pakietu pod kątem struktury

Skrypt sprawdzania poprawności pakietu sprawdza poprawność struktury pakietu i ułatwia wygenerowanie pakietu w akceptowalnym formacie do certyfikacji. Pobierz skrypt weryfikatora pakietu z tym linkiem: ConnectorPackageValidator.ps1.

Aby uruchomić skrypt, wykonaj następujące kroki:

  1. Otwórz system Windows PowerShell w trybie administratora.

    Zrzut ekranu systemu Windows PowerShell w trybie administratora.

  2. Zmień lokalizację dysku, wprowadzając cd /.

    W poniższym przykładzie jest używane C:\.

    Zrzut ekranu przedstawiający składnię służącą do zmiany dysku.

  3. Przejdź do ścieżki, w której pobrano skrypt walidatora pakietu.

    Na przykład, jeśli ścieżka to C:\Users\user01\Downloads, wprowadź cd .\Users\user01\Downloads\.

    Zrzut ekranu przedstawiający składnię umożliwiającą zmianę ścieżki.

  4. Ustaw zasady wykonywania na nieograniczone, wprowadzając następujące polecenie:

    Set-ExecutionPolicy -ExecutionPolicy Unrestricted

    Zrzut ekranu przedstawiający składnię ustawiającą zasady wykonywania.

    To polecenie umożliwia wykonanie PowerShell bez żadnych ograniczeń.

  5. Potwierdź swój wpis, wpisując Y, co oznacza Tak.

  6. Wykonaj plik ConnectorPackageValidator.ps1 , wykonując następujące kroki:

    1. Wprowadź ścieżkę pliku zip zawierającego pakiet łącznika.
    2. Określ, czy wtyczka AI jest włączona.

    Jak pokazano w poniższym przykładzie, pierwszy argument jest prawidłową ścieżką pliku zip zawierającego pakiet. Drugi argument to yes/y, aby wskazać, że wtyczka AI jest włączona, lub no/n, aby wskazać, że jest wyłączona.

    Zrzut ekranu przedstawiający składnię do wykonania ConnectorPackageValidator.ps1.

    Jeśli struktura pakietu jest poprawna, zostanie wyświetlony następujący komunikat o powodzeniu:

    Zrzut ekranu z komunikatem o powodzeniu.

    Jeśli wystąpi problem ze strukturą pakietu, skrypt udostępnia szczegóły problemu, wykrywając i wyróżniając defekty w strukturze pakietu.

    Zrzut ekranu szczegółów wydania.

Krok 7: Przesyłanie łącznika i/lub dodatku do certyfikacji

W trakcie tego procesu będziesz przesyłać swój łącznik i/lub dodatek jako oprogramowanie open source do naszego repozytorium łączników Microsoft Power Platform.

  1. (Dla wydawców niezależnych) Aby przesłać pakiet do firmy Microsoft w celu uzyskania certyfikatów, należy postępować zgodnie z instrukcjami podanymi w procesie certyfikacji niezależnego wydawcy.

  2. (Dla wydawców certyfikowanych) Aby przesłać pakiet do firmy Microsoft do Centrum Partnerskiego w celu uzyskania certyfikatów, należy postępować zgodnie z instrukcjami podanymi w procesie certyfikacji niezależnego wydawcy.

    Jeśli jesteś sprawdzonym wydawcą i używasz kodu niestandardowego, musisz przesłać plik script.csx.

    Jeśli łącznik ma OAuth, podaj identyfikator klienta i sekret w Centrum partnerskim. Ponadto należy uzyskać nazwę API z żądania przesyłania łącznika w celu zaktualizowania aplikacji.

    W ramach przekazywania danych firma Microsoft certyfikuje dodatek i/lub łącznik. Aby rozwiązać problemy z błędami rozsyłania, przejdź do tematu Naprawianie błędów validatora oprogramowania Swagger.

Lista kontrolna przed przesłaniem

Przed przejściem do przesyłania łącznika do certyfikacji przez Microsoft upewnij się, że:

W przypadku pytań dotyczących certyfikacji

Aby dołączyć do spotkania Office Hours, musisz mieć zainstalowaną usługę Microsoft Teams. Jeśli potrzebujesz dostępu, zapoznaj się z dostępnymi opcjami w programie Microsoft Teams.

Dołącz do Spotkanie w godzinach pracy w każdy wtorek o 15:30 do 16:30 czasu UTC (skoordynowanego czasu uniwersalnego).

Wskazówka

  • Twórz filmy, blogi lub inne treści w serwisie YouTube, aby udostępniać próbki lub zrzuty ekranu, aby rozpocząć korzystanie z łącznika i/lub dodatku.
  • - Dołącz łącza do pliku intro.md, aby można było dodać je do dokumentów.
  • Dodaj podpowiedzi do swojego pliku swaggera, aby pomóc użytkownikom osiągnąć większy sukces.

Następny krok