Udostępnij za pośrednictwem


Podstawy platformy Microsoft Bot Framework

DOTYCZY: ZESTAW SDK w wersji 4

Bot to aplikacja, z którą użytkownicy korzystają w sposób konwersacyjny, używając tekstu, grafiki (np. kart lub obrazów) lub mowy. Azure AI Bot Service to platforma w chmurze. Hostuje boty i udostępnia je kanałom, takim jak Microsoft Teams, Facebook lub Slack.

Usługa Bot Framework Service, która jest składnikiem usługi Azure AI Bot Service, wysyła informacje między aplikacją połączoną z botem użytkownika a botem. Każdy kanał może zawierać dodatkowe informacje w wysyłanych działaniach. Przed utworzeniem botów ważne jest, aby zrozumieć, jak bot używa obiektów działań do komunikowania się z użytkownikami.

Ten diagram przedstawia dwa typy działań, aktualizację konwersacji i komunikat, które mogą być wymieniane, gdy użytkownik komunikuje się z botem echo.

diagram aktywności

Usługa Bot Framework Service wysyła aktualizację konwersacji , gdy strona dołącza do konwersacji. Na przykład podczas rozpoczynania rozmowy z botem Framework Emulator może zostać wyświetlonych dwa działania aktualizacji konwersacji (jeden dla użytkownika dołączania do konwersacji i jeden dla dołączania bota). Aby odróżnić te działania aktualizacji konwersacji, sprawdź, kto jest uwzględniony we właściwości dodanej przez członków działania.

Działanie wiadomości prowadzi informacje o konwersacji między stronami. W przykładzie bota echa działania komunikatu prowadzą prosty tekst, a kanał renderuje ten tekst. Alternatywnie działanie wiadomości może prowadzić tekst do wypowiadania, sugerowanych akcji lub kart do wyświetlenia.

Napiwek

Do każdego kanału należy zaimplementować protokół Bot Framework i sposób działania poszczególnych kanałów może się nieco różnić. Na przykład niektóre kanały najpierw wysyłają działania aktualizacji konwersacji, a niektóre wysyłają działania aktualizacji konwersacji po wysłaniu pierwszego działania wiadomości. Kanał może obejmować zarówno bota, jak i użytkownika w jednym działaniu aktualizacji konwersacji, podczas gdy inny może wysyłać dwa działania aktualizacji konwersacji.

W tym przykładzie bot utworzył i wysłał działanie komunikatu w odpowiedzi na odebrane działanie komunikatu przychodzącego. Jednak bot może reagować na inne sposoby na odebrane działanie wiadomości i często bot odpowiada na działanie aktualizacji konwersacji, wysyłając działanie wiadomości z powitalną wiadomością. Aby uzyskać więcej informacji, zobacz jak powitać użytkownika.

Zestaw SDK platformy Bot Framework

Zestaw BOT Framework SDK umożliwia tworzenie botów, które mogą być hostowane w usłudze Azure AI Bot Service. Usługa definiuje interfejs API REST i protokół działania dla sposobu interakcji bota i kanałów lub użytkowników. Zestaw SDK opiera się na tym interfejsie API REST i zapewnia abstrakcję usługi, dzięki czemu można skupić się na logice konwersacyjnej. Chociaż nie musisz rozumieć usługi REST, aby korzystać z zestawu SDK, zrozumienie niektórych jej funkcji może być przydatne.

Boty to aplikacje, które mają interfejs konwersacyjny. Mogą one służyć do zmiany prostych, powtarzających się zadań, takich jak przyjmowanie rezerwacji kolacji lub zbieranie informacji o profilu, na zautomatyzowanych systemach, które nie mogą już wymagać bezpośredniej interwencji człowieka. Użytkownicy prowadzą konwersacje z botem przy użyciu tekstu, interaktywnych kart i mowy. Interakcja z botem może obejmować tylko jedno pytanie i odpowiedź lub może to być złożona konwersacja, która inteligentnie zapewnia dostęp do usług.

Uwaga

Obsługa funkcji udostępnianych przez zestaw SDK i interfejs API REST różni się w zależności od kanału. Bot można przetestować przy użyciu programu Bot Framework Emulator, ale należy również przetestować wszystkie funkcje bota w każdym kanale, w którym zamierzasz udostępnić bota.

Interakcje obejmują wymianę działań, które są obsługiwane z kolei.

Działania

Każda interakcja między użytkownikiem (lub kanałem) a botem jest reprezentowana jako działanie. Schemat działania platformy Bot Framework definiuje działania, które można wymieniać między użytkownikiem lub kanałem a botem. Działania mogą reprezentować tekst ludzki lub mowę, powiadomienia aplikacji do aplikacji, reakcje na inne komunikaty itd.

Zamienia

W rozmowie ludzie często mówią pojedynczo, mówiąc na zmianę. Bot zazwyczaj reaguje na dane wejściowe użytkownika. W zestawie SDK platformy Bot Framework kolei składa się z przychodzącego działania użytkownika do bota i wszelkich działań, które bot wysyła z powrotem do użytkownika jako natychmiastową odpowiedź. Możesz myśleć o kolei jako przetwarzania skojarzonego z botem odbierającego daną aktywność.

Na przykład użytkownik może poprosić bota o wykonanie określonego zadania. Bot może odpowiedzieć na pytanie, aby uzyskać więcej informacji o zadaniu, w którym momencie kończy się to kolei. W następnym kroku bot otrzymuje od użytkownika nową wiadomość, która może zawierać odpowiedź na pytanie bota lub może reprezentować zmianę tematu lub żądanie ignorowania początkowego żądania wykonania zadania.

Struktura aplikacji bota

Zestaw SDK definiuje klasę bota, która obsługuje rozumowanie konwersacyjne dla aplikacji bota. Klasa bota:

  • Rozpoznaje i interpretuje dane wejściowe użytkownika.
  • Przyczyny danych wejściowych i wykonywanie odpowiednich zadań.
  • Generuje odpowiedzi dotyczące tego, co robi bot lub co zrobił.

Zestaw SDK definiuje również klasę adaptera , która obsługuje łączność z kanałami. Adapter:

  • Udostępnia metodę obsługi żądań z i metod generowania żądań do kanału użytkownika.
  • Zawiera potok oprogramowania pośredniczącego, który obejmuje przetwarzanie poza procedurą obsługi kolei bota.
  • Wywołuje program obsługi kolei bota i przechwytuje błędy, które nie są w inny sposób obsługiwane w procedurze obsługi kolei.

Ponadto boty często muszą pobierać i przechowywać stan każdego kolei. Stan jest obsługiwany za pomocą klas dostępu magazynu, stanu bota i właściwości. Zestaw SDK nie udostępnia wbudowanego magazynu, ale zapewnia abstrakcję magazynu i kilka implementacji warstwy magazynu. W temacie zarządzania stanem opisano te funkcje stanu i magazynu.

Bot ma elementy łączności i rozumowania oraz abstrakcję stanu

Zestaw SDK nie wymaga użycia określonej warstwy aplikacji do wysyłania i odbierania żądań internetowych. Platforma Bot Framework zawiera szablony i przykłady dla ASP.NET (C#), restify (JavaScript) i aiohttp (Python). Można jednak użyć innej warstwy aplikacji dla aplikacji.

Podczas tworzenia bota przy użyciu zestawu SDK należy podać kod umożliwiający odbieranie ruchu HTTP i przekazywanie go do karty. Platforma Bot Framework udostępnia kilka szablonów i przykładów, których można użyć do tworzenia własnych botów.

Uwaga

Zestawy SDK języka JavaScript, C# i Python platformy Bot Framework będą nadal obsługiwane, jednak zestaw SDK języka Java jest wycofywany z ostatecznym długoterminowym wsparciem kończącym się w listopadzie 2023 r.

Istniejące boty utworzone za pomocą zestawu JAVA SDK będą nadal działać.

W przypadku tworzenia nowych botów rozważ użycie programu Microsoft Copilot Studio i przeczytaj o wyborze odpowiedniego rozwiązania copilot.

Aby uzyskać więcej informacji, zobacz Przyszłość tworzenia botów.

Logika bota

Obiekt bota zawiera rozumowanie konwersacyjne lub logikę dla kolei i uwidacznia procedurę obsługi kolei, która jest metodą, która może akceptować działania przychodzące z karty bota.

Zestaw SDK udostępnia kilka różnych paradygmatów do zarządzania logiką bota.

  • Programy obsługi działań udostępniają model sterowany zdarzeniami, w którym są zdarzeniami typy i podtypy działań przychodzących. Rozważ procedurę obsługi działań dla botów, które mają ograniczone, krótkie interakcje z użytkownikiem.
    • Użyj programu obsługi działań i zaimplementuj programy obsługi dla każdego typu działania lub podtypu, na które bot będzie rozpoznawał i reagował.
    • Użyj programu obsługi działań usługi Teams, aby utworzyć boty, które mogą łączyć się z kanałem usługi Teams. (Kanał usługi Teams wymaga, aby bot obsługiwał pewne zachowanie specyficzne dla kanału).
  • Biblioteka okien dialogowych udostępnia model oparty na stanie do zarządzania długotrwałą konwersacją z użytkownikiem.
  • Zaimplementuj własną klasę bota i podaj własną logikę do obsługi każdego kolei. Aby zapoznać się z przykładem, zobacz, jak utworzyć własne monity dotyczące zbierania danych wejściowych użytkownika.

Adapter bota

Karta ma metodę działania procesu uruchamiania obrotu.

  • Przyjmuje treść żądania (ładunek żądania, przetłumaczony na działanie) i nagłówek żądania jako argumenty.
  • Sprawdza, czy nagłówek uwierzytelniania jest prawidłowy.
  • Tworzy obiekt kontekstu dla kolei. Obiekt kontekstu zawiera informacje o działaniu.
  • Wysyła obiekt kontekstu za pośrednictwem potoku oprogramowania pośredniczącego.
  • Następnie wysyła obiekt kontekstu do procedury obsługi kolei obiektu bota.

Adapter również:

  • Formatuje i wysyła działania odpowiedzi. Odpowiedzi te są zazwyczaj komunikatami dla użytkownika, ale mogą również zawierać informacje, które mają być używane bezpośrednio przez kanał użytkownika.
  • Przedstawia inne metody udostępniane przez interfejs API REST łącznika botów, takie jak aktualizowanie komunikatu i usuwanie komunikatu.
  • Przechwytuje błędy lub wyjątki, które nie są przechwytywane na kolei.

Kontekst kolei

Obiekt kontekstu kolei zawiera informacje o działaniu, takim jak nadawca i odbiorca, kanał i inne dane potrzebne do przetworzenia działania. Umożliwia również dodawanie informacji podczas obrotu w różnych warstwach bota.

Kontekst kolei jest jedną z najważniejszych abstrakcji w zestawie SDK. Nie tylko przenosi działanie przychodzące do wszystkich składników oprogramowania pośredniczącego i logiki aplikacji, ale także udostępnia mechanizm, w którym składniki oprogramowania pośredniczącego i logika bota mogą wysyłać działania wychodzące.

Oprogramowanie pośredniczące

Oprogramowanie pośredniczące jest podobne do każdego innego oprogramowania pośredniczącego obsługującego komunikaty, składającego się z liniowego zestawu składników, które są wykonywane w kolejności, co daje każdemu szansę na działanie działania. Ostatnim etapem potoku oprogramowania pośredniczącego jest wywołanie zwrotne do procedury obsługi kolei w klasie bota, którą aplikacja zarejestrowała w metodzie działania procesu karty. Oprogramowanie pośredniczące implementuje metodę włączania, którą wywołuje karta.

Procedura obsługi kolei przyjmuje kontekst kolei jako argument, zazwyczaj logika aplikacji uruchomiona wewnątrz funkcji obsługi kolei przetwarza zawartość działania przychodzącego i generuje co najmniej jedno działanie w odpowiedzi, wysyłając te działania wychodzące przy użyciu funkcji działania wysyłania w kontekście kolei. Wywoływanie działania wysyłania w kontekście włączania spowoduje wywołanie składników oprogramowania pośredniczącego w działaniach wychodzących. Składniki oprogramowania pośredniczącego są wykonywane przed i po funkcji obsługi kolei bota. Wykonanie jest z natury zagnieżdżone i, w związku z tym, czasami określane jako cebula.

W temacie oprogramowania pośredniczącego opisano oprogramowanie pośredniczące bardziej szczegółowo.

Stan i magazyn bota

Podobnie jak w przypadku innych aplikacji internetowych, bot jest z natury bezstanowy. Stan w ramach bota jest zgodny z tymi samymi paradygmatami co nowoczesne aplikacje internetowe, a zestaw BOT Framework SDK zapewnia abstrakcję zarządzania warstwą magazynu i stanem, aby ułatwić zarządzanie stanem.

W temacie zarządzania stanem opisano te funkcje stanu i magazynu.

Punkt końcowy obsługi komunikatów i aprowizowanie

Zazwyczaj aplikacja będzie potrzebować punktu końcowego REST, w którym będą odbierane komunikaty. Będzie on również musiał aprowizować zasoby bota zgodnie z platformą, której chcesz użyć.

Postępuj zgodnie z przewodnikiem Szybki start Tworzenie bota , aby utworzyć i przetestować prosty bot echo.

Szczegóły protokołu HTTP

Działania docierają do bota z usługi Bot Framework Service za pośrednictwem żądania HTTP POST. Bot odpowiada na przychodzące żądanie POST z kodem stanu HTTP 200. Działania wysyłane z bota do kanału są wysyłane w osobnym wpisie HTTP POST do usługi Bot Framework. To z kolei jest potwierdzane przy użyciu kodu stanu HTTP 200.

Protokół nie określa kolejności, w jakiej są wykonywane żądania POST i ich potwierdzenia. Jednak w celu dopasowania do typowych struktur usługi HTTP zazwyczaj te żądania są zagnieżdżone, co oznacza, że wychodzące żądanie HTTP jest wykonywane z bota w zakresie przychodzącego żądania HTTP. Ten wzorzec przedstawiono na wcześniejszym diagramie. Ponieważ istnieją dwa odrębne połączenia HTTP z powrotem do tyłu, model zabezpieczeń musi zapewnić oba te połączenia.

Uwaga

Bot ma 15 sekund, aby potwierdzić wywołanie ze stanem 200 w większości kanałów. Jeśli bot nie odpowie w ciągu 15 sekund, wystąpi błąd HTTP GatewayTimeout (504).

Stos przetwarzania działań

Przejdźmy do poprzedniego diagramu sekwencji, koncentrując się na nadejściu działania komunikatu.

Diagram sekwencji ilustrujący sposób przetwarzania działania przez bota.

Kanał wysyła wiadomość użytkownika do usługi Azure AI Bot Service, a usługa przekazuje komunikat do punktu końcowego obsługi komunikatów bota. Odpowiedź bota jest wysyłana do użytkownika w zakresie kolei.

W powyższym przykładzie bot odpowiedział na działanie wiadomości z innym działaniem komunikatu zawierającym tę samą wiadomość SMS. Przetwarzanie rozpoczyna się od żądania HTTP POST, a informacje o działaniu przenoszone jako ładunek JSON docierające do serwera internetowego. Często projekty ASP.NET są używane dla botów języka C#, a popularna struktura, taka jak Express lub restify, jest używana dla botów Node.js JavaScript.

Karta, zintegrowany składnik zestawu SDK, jest rdzeniem środowiska uruchomieniowego zestawu SDK. Działanie jest wykonywane jako dane JSON w treści HTTP POST. Ten kod JSON jest deserializowany w celu utworzenia obiektu działania , który jest następnie przekazywany do karty za pomocą metody działania procesu. Po otrzymaniu działania karta tworzy kontekst turn i wywołuje oprogramowanie pośredniczące.

Jak wspomniano powyżej, kontekst kolei zapewnia mechanizm wysyłania działań wychodzących przez bota, najczęściej w odpowiedzi na działanie przychodzące. Kontekst turn zapewnia metody odpowiedzi wysyłania, aktualizowania i usuwania działań . Każda metoda odpowiedzi jest uruchamiana w procesie asynchronicznym.

Ważne

Wątek obsługujący bota podstawowego zamienia się w dysponowanie obiektu kontekstu po zakończeniu. Pamiętaj, aby await wszystkie wywołania działań, aby wątek podstawowy czekał na wygenerowane działanie przed zakończeniem przetwarzania i usuwania kontekstu kolei. W przeciwnym razie, jeśli odpowiedź (w tym jej procedury obsługi) zajmuje znaczną ilość czasu i próbuje działać na obiekcie kontekstu, może to spowodować usunięcie kontekstu.

Szablony botów

Musisz wybrać warstwę aplikacji używaną dla aplikacji; Jednak platforma Bot Framework zawiera szablony i przykłady dla ASP.NET (C#), restify (JavaScript) i aiohttp (Python). Dokumentacja została napisana przy założeniu, że używasz jednej z tych platform, ale zestaw SDK tego nie wymaga. Zapoznaj się z przewodnikiem Szybki start Tworzenie bota , aby uzyskać instrukcje dotyczące uzyskiwania dostępu do szablonów i instalowania ich.

Bot to aplikacja internetowa, a szablony są udostępniane dla każdej wersji językowej zestawu SDK. Wszystkie szablony zapewniają domyślną implementację punktu końcowego i kartę sieciową. Każdy szablon zawiera:

  • Aprowizowanie zasobów
  • Implementacja punktu końcowego HTTP specyficznego dla języka, która kieruje działania przychodzące do karty.
  • Obiekt adaptera
  • Obiekt bota

Główną różnicą między różnymi typami szablonów jest obiekt bota. Szablony to:

  • Pusty bot
    • Zawiera procedurę obsługi działań, która wita użytkownika w konwersacji, wysyłając komunikat "hello world" po pierwszym kolei konwersacji.
  • Echo bot
    • Używa programu obsługi działań, aby powitać użytkowników i powtórzyć dane wejściowe użytkownika.
  • Bot podstawowy
    • Łączy wiele funkcji zestawu SDK i demonstruje najlepsze rozwiązania dotyczące bota.
    • Używa programu obsługi działań do powitania użytkowników.
    • Używa okna dialogowego składnika i okien dialogowych podrzędnych do zarządzania konwersacją.
    • Okna dialogowe korzystają z funkcji Language Understanding (LUIS) i QnA Maker.

Uwaga

Usługa Azure AI QnA Maker zostanie wycofana 31 marca 2025 r. Od 1 października 2022 r. nie będzie można tworzyć nowych zasobów ani baz wiedzy w programie QnA Maker. Nowsza wersja funkcji pytań i odpowiedzi jest teraz dostępna w ramach języka sztucznej inteligencji platformy Azure.

Niestandardowe odpowiadanie na pytania, funkcja języka azure AI, to zaktualizowana wersja usługi QnA Maker. Aby uzyskać więcej informacji na temat obsługi pytań i odpowiedzi w zestawie SDK platformy Bot Framework, zobacz Opis języka naturalnego.

Uwaga

Usługa Language Understanding (LUIS) zostanie wycofana 1 października 2025 r. Od 1 kwietnia 2023 r. nie będzie można tworzyć nowych zasobów usługi LUIS. Nowsza wersja interpretacji języka jest teraz dostępna w ramach języka sztucznej inteligencji platformy Azure.

Język konwersacyjny (CLU), funkcja języka AI platformy Azure, to zaktualizowana wersja usługi LUIS. Aby uzyskać więcej informacji na temat obsługi języka w zestawie SDK platformy Bot Framework, zobacz Opis języka naturalnego.

Dodatkowe informacje

Zarządzanie zasobami bota

Musisz zarządzać zasobami bota, takimi jak identyfikator aplikacji i hasło, a także informacje dotyczące wszystkich połączonych usług. Podczas wdrażania bota będzie potrzebny bezpieczny dostęp do tych informacji. Aby uniknąć złożoności, większość artykułów dotyczących zestawu Bot Framework SDK nie opisuje sposobu zarządzania tymi informacjami.

Adaptery kanałów

Zestaw SDK umożliwia również korzystanie z kart kanałowych, w których sama karta dodatkowo wykonuje zadania wykonywane przez usługę Bot Connector Service normalnie dla kanału.

Zestaw SDK udostępnia kilka kart kanałowych w niektórych językach. Więcej kart kanałów jest dostępnych za pośrednictwem repozytoriów Botkit i Community. Aby uzyskać więcej informacji, zobacz tabelę kanałów i kart w repozytorium zestawu Bot Framework SDK.

Interfejs API REST łącznika bota

Zestaw BOT Framework SDK opakowuje i opiera się na interfejsie API REST łącznika bota. Jeśli chcesz zrozumieć podstawowe żądania HTTP obsługujące zestaw SDK, zobacz Uwierzytelnianie łącznika i skojarzone artykuły. Działania wysyłane i odbierane przez bota są zgodne ze schematem działania platformy Bot Framework.

Następne kroki