Udostępnij za pośrednictwem


Omówienie umiejętności

DOTYCZY: ZESTAW SDK w wersji 4

Bota można rozszerzyć przy użyciu bota umiejętności . Umiejętności mogą być używane przez różne inne boty, ułatwiając ponowne używanie i w ten sposób, możesz utworzyć bota dostępnego dla użytkownika i rozszerzyć go, korzystając z własnych lub zewnętrznych umiejętności.

  • Umiejętność to bot, który może wykonywać zestaw zadań dla innego bota — bot może być zarówno umiejętnością, jak i botem dostępnym dla użytkownika.
  • Użytkownik umiejętności to bot, który może wywołać co najmniej jedną umiejętności. Użytkownik umiejętności jest również nazywany botem głównym.
  • Manifest umiejętności to plik JSON opisujący akcje, które mogą wykonywać umiejętności, jego parametry wejściowe i wyjściowe oraz punkty końcowe umiejętności.
    • Deweloperzy, którzy nie mają dostępu do kodu źródłowego umiejętności, mogą używać informacji w manifeście, aby zaprojektować swojego konsumenta umiejętności.
    • Schemat manifestu umiejętności to plik JSON opisujący schemat manifestu umiejętności.
    • Zobacz, jak zaimplementować umiejętności i jak napisać manifest umiejętności na potrzeby przykładowych manifestów umiejętności.

Innymi słowy, użytkownik wchodzi bezpośrednio w interakcję z botem głównym, a główny bot deleguje część logiki konwersacyjnej do umiejętności.

Funkcja umiejętności została zaprojektowana tak, aby:

  • Umiejętności i konsumenci komunikują się za pośrednictwem protokołu HTTP przy użyciu protokołu Bot Framework.
  • Użytkownik umiejętności może wykorzystywać wiele umiejętności.
  • Użytkownik umiejętności może korzystać z umiejętności niezależnie od języka używanego do implementowania umiejętności. Na przykład bot języka C# może korzystać z umiejętności zaimplementowanej przy użyciu języka JavaScript.
  • Umiejętność może być również umiejętnością konsumenta i nazywać inne umiejętności.
  • Umiejętności obsługują uwierzytelnianie użytkowników; Jednak uwierzytelnianie użytkownika jest lokalne do umiejętności i nie można go przenieść do innego bota.
  • Umiejętności mogą współpracować zarówno z adapterem Bot Framework, jak i niestandardowymi kartami.

Na tym diagramie przedstawiono niektóre z możliwych permutacji.

Illustration of permutations between skill consumers and skills.

Architektura pojęć

Umiejętności i umiejętności konsumenta są oddzielnymi botami i publikujesz je niezależnie.

  • Użytkownik umiejętności wymaga dodatkowej logiki do zarządzania umiejętnością, na przykład kiedy wywołać lub anulować umiejętności itd. Oprócz zwykłych obiektów bota i adaptera użytkownik zawiera kilka obiektów związanych z umiejętnościami, używanych do wymiany działań z umiejętnościami. Użytkownik umiejętności implementuje co najmniej dwa punkty końcowe HTTP:
    • Punkt końcowy obsługi komunikatów odbiera działania od użytkownika lub kanału. Jest to zwykły punkt końcowy obsługi komunikatów, który implementuje wszystkie boty.
    • Punkt końcowy hosta umiejętności do odbierania działań z poziomu umiejętności. Działa to jako adres URL wywołania zwrotnego, adres URL usługi, do którego odpowiada umiejętność. (Użytkownik umiejętności musi sparować kod, który odbiera żądanie metody HTTP z umiejętności obsługi umiejętności).
  • Umiejętność wymaga dodania logiki w celu wysłania endOfConversation działania po zakończeniu, aby użytkownik umiejętności wiedział, kiedy zatrzymać przekazywanie działań do umiejętności.

Na tym diagramie przedstawiono przepływ działań od użytkownika do bota głównego do umiejętności i z powrotem.

Illustration of how activities flow from the user to the skill and back again.

  1. Karta bota głównego odbiera działania od użytkownika i przekazuje je do programu obsługi działań głównego bota. (Działania od użytkownika są odbierane w punkcie końcowym obsługi komunikatów bota głównego).
  2. Bot główny używa klienta HTTP umiejętności do wysyłania działania do umiejętności. Klient pobiera informacje o konwersacji z umiejętnościami użytkownika z definicji umiejętności i fabryki identyfikatorów konwersacji umiejętności. Obejmuje to adres URL usługi, którego umiejętności będą używać do odpowiadania na działanie.
  3. Karta umiejętności otrzymuje działania od konsumenta umiejętności i przekazuje je do programu obsługi działań umiejętności. (Działania od konsumenta są odbierane w punkcie końcowym obsługi komunikatów bota umiejętności).
  4. Gdy umiejętności odpowiadają, program obsługi umiejętności głównego bota otrzymuje działanie. Pobiera on informacje o konwersacji użytkownika głównego z fabryki identyfikatorów konwersacji umiejętności. Następnie przekazuje działanie do karty głównego bota. (Działania z umiejętności są odbierane w punkcie końcowym hosta umiejętności bota głównego).
  5. Karta bota głównego wewnętrznie generuje proaktywny komunikat w celu wznowienia rozmowy z użytkownikiem.
  6. Karta bota głównego wysyła wszelkie komunikaty z umiejętności do użytkownika.

Te obiekty ułatwiają zarządzanie umiejętnościami i kierowanie ruchu umiejętności:

  • Umiejętność bot framework opisuje informacje o routingu umiejętności i można je odczytać z pliku konfiguracji użytkownika umiejętności.
  • Umiejętność klienta HTTP wysyła działania do umiejętności.
  • Program obsługi umiejętności otrzymuje działania z poziomu umiejętności.
  • Fabryka identyfikatorów konwersacji umiejętności tłumaczy się między odwołaniem do konwersacji root użytkownika a odwołaniem do konwersacji z umiejętnościami głównymi.
  • Usługa Bot Połączenie or zapewnia zarówno uwierzytelnianie kanału, jak i bota do bota. Za pomocą obiektu konfiguracji uwierzytelniania można dodać weryfikację oświadczeń do umiejętności lub umiejętności użytkownika, aby ograniczyć aplikacje lub użytkowników, którzy mają dostęp.

Obiekty obsługi umiejętności i klienta umiejętności używają fabryki identyfikatorów konwersacji do tłumaczenia między konwersacją, której główny bot używa do interakcji z użytkownikiem i konwersacji, której główny bot używa do interakcji z umiejętnością.

Manifesty umiejętności

Manifest umiejętności to plik JSON opisujący akcje, które mogą wykonywać umiejętności, jego parametry wejściowe i wyjściowe, punkty końcowe umiejętności i wysyłać modele na potrzeby umiejętności.

Aby uzyskać informacje na temat schematu manifestu umiejętności, zobacz, jak napisać manifest umiejętności.

Komunikacja między botami

Ważne jest, aby zrozumieć pewne aspekty tego projektu, niezależnie od tego, który bot projektujesz.

Akcje umiejętności

Niektóre umiejętności mogą wykonywać wiele zadań lub akcji. Na przykład umiejętność wykonywania zadań może zezwalać na tworzenie, aktualizowanie, wyświetlanie i usuwanie działań, do których można uzyskiwać dostęp jako dyskretne konwersacje.

Odwołania do konwersacji

Konwersacja główna użytkownika różni się od konwersacji z umiejętnościami głównymi.

Fabryka identyfikatorów konwersacji ułatwia zarządzanie ruchem między użytkownikiem umiejętności a umiejętnością. Fabryka tłumaczy się między identyfikatorem konwersacji katalogu głównego z użytkownikiem a tym, który ma z umiejętnością. Innymi słowy, generuje identyfikator konwersacji do użycia między katalogiem głównym i umiejętnością, a następnie odzyskuje oryginalny identyfikator konwersacji użytkownika głównego użytkownika z identyfikatora konwersacji z umiejętnościami głównymi.

Koordynacja między serwerami

Boty root i skill komunikują się za pośrednictwem protokołu HTTP. Dlatego wystąpienie bota głównego odbierające działanie z umiejętności może nie być tym samym wystąpieniem, które wysłało działanie inicjujące; innymi słowy, różne serwery mogą obsługiwać te dwa żądania.

  • Zawsze zapisuj stan u konsumenta umiejętności przed przekazaniem działania do umiejętności. Dzięki temu wystąpienie odbierające ruch z umiejętności może odebrać miejsce, w którym poprzednie wystąpienie zostało przerwane przed wywołaniem umiejętności.
  • Gdy program obsługi umiejętności otrzymuje działanie od umiejętności, tłumaczy go na formularz odpowiedni dla konsumenta umiejętności i przekazuje go do adaptera konsumenta.

Umiejętność konsumenta i stanu umiejętności

Umiejętności konsumenta i umiejętności zarządzają własnym stanem oddzielnie. Jednak użytkownik tworzy identyfikator konwersacji używany do komunikowania się z umiejętnością. Może to mieć wpływ na stan konwersacji w umiejętności.

Ważne

Jak wspomniano wcześniej, gdy użytkownik umiejętności deleguje działanie użytkownika do umiejętności, inne wystąpienie konsumenta może otrzymać odpowiedź na umiejętności. Użytkownik powinien zawsze zapisywać stan konwersacji bezpośrednio przed przekazaniem działania do umiejętności.

Uwierzytelnianie bota do bota

Nie potrzebujesz identyfikatora aplikacji i hasła, aby przetestować umiejętności i umiejętności użytkownika lokalnie w emulatorze bot framework. Subskrypcja platformy Azure jest nadal wymagana do wdrożenia umiejętności na platformie Azure.

Uwierzytelnianie na poziomie usługi jest zarządzane przez usługę Bot Połączenie or. Platforma używa tokenów elementu nośnego i identyfikatorów aplikacji bota do weryfikowania tożsamości każdego bota. (Platforma Bot Framework używa obiektu konfiguracji uwierzytelniania do sprawdzania poprawności nagłówka uwierzytelniania w żądaniach przychodzących).

Ważne

Wymaga to, aby wszystkie wdrożone boty (użytkownik umiejętności i wszystkie używane przez niego umiejętności) miały prawidłowe poświadczenia aplikacji.

Walidacja oświadczeń

Do konfiguracji uwierzytelniania należy dodać moduł sprawdzania poprawności oświadczeń. Oświadczenia są oceniane po nagłówku uwierzytelniania. Zgłaszanie błędu lub wyjątku w kodzie weryfikacji w celu odrzucenia żądania.

Uwaga

Bot przeprowadza walidację oświadczeń, jeśli ma identyfikator aplikacji i hasło; w przeciwnym razie weryfikacja oświadczeń nie jest wykonywana.

Istnieją różne przyczyny, dla których można odrzucić w inny sposób uwierzytelnione żądanie:

  • Gdy użytkownik umiejętności powinien zaakceptować ruch tylko z umiejętności, z którymi mógł zainicjować konwersację.
  • Gdy umiejętność jest częścią płatnej usługi, a użytkownicy, którzy nie znajdują się w bazie danych, nie powinni mieć dostępu.
  • Jeśli chcesz ograniczyć dostęp do umiejętności określonych konsumentów umiejętności.

Ważne

Jeśli nie podasz modułu sprawdzania poprawności oświadczeń, bot wygeneruje błąd lub wyjątek podczas odbierania działania od innego bota, niezależnie od tego, czy bot jest umiejętnością, czy użytkownikiem umiejętności.

Debugowanie konwersacji umiejętności

Ponieważ ruch między umiejętnościami i użytkownikami umiejętności jest uwierzytelniany, podczas debugowania takich botów są wykonywane dodatkowe kroki.

  • Użytkownik umiejętności i wszystkie umiejętności, których używa, bezpośrednio lub pośrednio, muszą być uruchomione.
  • Jeśli boty działają lokalnie i jeśli którykolwiek z botów ma identyfikator aplikacji i hasło, wszystkie boty muszą mieć prawidłowe identyfikatory i hasła.
  • Jeśli wszystkie boty są wdrożone, zobacz, jak debugować bota z dowolnego kanału przy użyciu narzędzia ngrok.
  • Jeśli niektóre boty działają lokalnie, a niektóre są wdrażane, zobacz, jak debugować umiejętności lub umiejętności użytkownika.

W przeciwnym razie możesz debugować użytkownika umiejętności lub umiejętności podobne do debugowania innych botów. Aby uzyskać więcej informacji, zobacz Debugowanie bota i Debugowanie za pomocą emulatora platformy Bot Framework.

Dodatkowe informacje

Z perspektywy użytkownika wchodzą w interakcje z botem głównym. Z perspektywy umiejętności użytkownik umiejętności jest kanałem, w którym komunikuje się z użytkownikiem.