Oprogramowanie pośredniczące

DOTYCZY: Zestaw SDK w wersji 4

Oprogramowanie pośredniczące to po prostu klasa znajdująca się między adapterem i logiką bota, dodawana do kolekcji oprogramowania pośredniczącego adaptera podczas inicjowania. Zestaw SDK umożliwia pisanie własnego oprogramowania pośredniczącego oraz dodawanie oprogramowania pośredniczącego utworzonego przez inne osoby. Każde działanie przychodzące do bota lub wychodzące z niego przepływa przez oprogramowanie pośredniczące.

Adapter przetwarza i kieruje działania przychodzące za pośrednictwem potoku oprogramowania pośredniczącego bota do logiki bota, a następnie z powrotem. Gdy poszczególne działania wpływają do bota i z niego wypływają, oprogramowanie pośredniczące może je sprawdzać i wykonywać względem nich akcje — zarówno przed uruchomieniem logiki bota, jak i po jej uruchomieniu.

Przed przejściem do oprogramowania pośredniczącego ważne jest, aby ogólnie zrozumieć boty i jak przetwarzają działania.

Zastosowania oprogramowania pośredniczącego

Często pojawia się pytanie: "Kiedy należy zaimplementować akcje jako oprogramowanie pośredniczące, a nie przy użyciu normalnej logiki bota?" Oprogramowanie pośredniczące zapewnia dodatkowe możliwości interakcji z przepływem konwersacji użytkowników zarówno przed, jak i po każdym kolei konwersacji jest przetwarzany. Oprogramowanie pośredniczące umożliwia również przechowywanie i pobieranie informacji dotyczących konwersacji oraz wywoływanie dodatkowej logiki przetwarzania w razie potrzeby. Poniżej przedstawiono kilka typowych scenariuszy, które pokazują, gdzie oprogramowanie pośredniczące może być przydatne.

Patrząc na każde działanie lub działając na każdym z działań

Istnieje wiele sytuacji, które wymagają od bota wykonania czegoś na każdym działaniu lub dla każdego działania określonego typu. Możesz na przykład rejestrować każde działanie komunikatu odbierane przez bota lub podać odpowiedź rezerwową, jeśli bot nie wygenerował odpowiedzi na ten zwrot. Oprogramowanie pośredniczące to doskonałe miejsce dla takich procesów, dzięki możliwości działania zarówno przed, jak i po wykonaniu pozostałej części logiki bota.

Modyfikowanie lub ulepszanie kontekstu zwrotu

Niektóre rozmowy mogą być znacznie bardziej owocne, jeśli bot ma więcej informacji niż to, co jest udostępniane w działaniu. Oprogramowanie pośredniczące w tym przypadku może przyjrzeć się informacjom o stanie konwersacji, które ma do tej pory, wysłać zapytanie do zewnętrznego źródła danych i dołączyć je do obiektu kontekstu turn przed przekazaniem wykonania do logiki bota.

Zestaw SDK definiuje oprogramowanie pośredniczące rejestrowania, które może rejestrować działania przychodzące i wychodzące, ale można również zdefiniować własne oprogramowanie pośredniczące.

Potok oprogramowania pośredniczącego bota

Dla każdego działania adapter wywołuje oprogramowanie pośredniczące w kolejności, w której został dodany. Karta przechodzi w obiekcie kontekstu dla kolei i następnego delegata, a oprogramowanie pośredniczące wywołuje delegata, aby przekazać kontrolę do następnego oprogramowania pośredniczącego w potoku. Oprogramowanie pośredniczące ma również możliwość wykonania czynności po powrocie następnego delegata przed ukończeniem metody. Można o tym myśleć, ponieważ każdy obiekt oprogramowania pośredniczącego ma pierwszą i ostatnią szansę na działanie względem obiektów oprogramowania pośredniczącego, które są zgodne z nim w potoku.

Przykład:

  • Pierwsza procedura obsługi kolei obiektu oprogramowania pośredniczącego wykonuje kod przed wywołaniem następnej.
    • Druga procedura obsługi kolei obiektu oprogramowania pośredniczącego wykonuje kod przed wywołaniem następnej.
      • Procedura obsługi kolei bota jest wykonywana i zwracana.
    • Druga procedura obsługi kolei obiektu oprogramowania pośredniczącego wykonuje dowolny pozostały kod przed zwróceniem.
  • Pierwsza procedura obsługi zwrotu oprogramowania pośredniczącego wykonuje dowolny pozostały kod przed zwróceniem.

Jeśli oprogramowanie pośredniczące nie wywołuje następnego delegata, karta nie wywołuje żadnego z kolejnych programów pośredniczącego ani programów obsługi kolei bota oraz zwarć potoków.

Po zakończeniu potoku oprogramowania pośredniczącego bota przewróć się, a kontekst zwrotu wykracza poza zakres.

Oprogramowanie pośredniczące lub bot może generować odpowiedzi i rejestrować programy obsługi zdarzeń odpowiedzi, ale należy pamiętać, że odpowiedzi są obsługiwane w oddzielnych procesach.

Kolejność oprogramowania pośredniczącego

Ponieważ kolejność dodawania oprogramowania pośredniczącego określa kolejność przetwarzania działania przez oprogramowanie pośredniczące, ważne jest, aby zdecydować, że należy dodać sekwencję oprogramowania pośredniczącego.

Uwaga

Ma to na celu zapewnienie wspólnego wzorca, który działa dla większości botów, ale należy wziąć pod uwagę, jak każdy kawałek oprogramowania pośredniczącego będzie współdziałać z innymi w danej sytuacji.

Oprogramowanie pośredniczące, które najpierw zajmuje się zadaniami najniższego poziomu, które należy dodać do każdego bota do potoku oprogramowania pośredniczącego. Przykłady obejmują rejestrowanie, obsługę wyjątków i tłumaczenie. Należy je uporządkować w zależności od potrzeb, takich jak to, czy wiadomość przychodząca ma zostać przetłumaczona jako pierwsza, zanim komunikaty będą przechowywane, czy magazyn komunikatów powinien zostać najpierw przetłumaczony, co może oznaczać, że przechowywane komunikaty nie zostaną przetłumaczone.

Oprogramowanie pośredniczące specyficzne dla bota powinno zostać dodane do potoku oprogramowania pośredniczącego w końcu. Zaimplementowane oprogramowanie pośredniczące umożliwia przetwarzanie każdego komunikatu wysłanego do bota. Jeśli oprogramowanie pośredniczące używa informacji o stanie lub innych informacji ustawionych w kontekście bota, dodaj je do potoku oprogramowania pośredniczącego po tym, jak oprogramowanie pośredniczące modyfikuje stan lub kontekst.

Zwarcie

Ważnym pomysłem na temat oprogramowania pośredniczącego i procedur obsługi odpowiedzi jest zwarcie. Jeśli wykonanie polega na kontynuowaniu przez warstwy, które są zgodne z nią, oprogramowanie pośredniczące (lub program obsługi odpowiedzi) jest wymagane do przekazania wykonania przez wywołanie kolejnego delegata. Jeśli następny delegat nie jest wywoływany w ramach tego oprogramowania pośredniczącego (lub procedury obsługi odpowiedzi), skojarzone obwody potoku i kolejne warstwy nie są wykonywane. Oznacza to, że wszystkie logiki bota i wszelkie oprogramowanie pośredniczące dalej wzdłuż potoku są pomijane. Istnieje subtelna różnica między oprogramowaniem pośredniczącym a skrótem obsługi odpowiedzi.

Gdy oprogramowanie pośredniczące zwariuje kolei, procedura obsługi zwrotu bota nie zostanie wywołana, ale cały kod oprogramowania pośredniczącego wykonany przed tym punktem w potoku będzie nadal uruchamiany do ukończenia.

W przypadku procedur obsługi zdarzeń nie jest wywoływanie dalej oznacza, że zdarzenie jest anulowane, co różni się od logiki pomijania oprogramowania pośredniczącego. Nie przetwarzając reszty zdarzenia, karta nigdy go nie wysyła.

Porada

Jeśli zwariujesz zdarzenie odpowiedzi, takie jak SendActivities, upewnij się, że jest to zachowanie, które zamierzasz. W przeciwnym razie może to spowodować trudności z naprawieniem usterek.

Programy obsługi zdarzeń odpowiedzi

Oprócz logiki aplikacji i oprogramowania pośredniczącego programy obsługi odpowiedzi (czasami nazywane również procedurami obsługi zdarzeń lub procedurami obsługi zdarzeń działań) można dodać do obiektu kontekstu. Te procedury obsługi są wywoływane, gdy skojarzona odpowiedź występuje w bieżącym obiekcie kontekstu przed wykonaniem rzeczywistej odpowiedzi. Te procedury obsługi są przydatne, gdy wiesz, że chcesz coś zrobić przed lub po rzeczywistym zdarzeniu dla każdego działania tego typu dla pozostałej części bieżącej odpowiedzi.

Ostrzeżenie

Należy zachować ostrożność, aby nie wywoływać metody odpowiedzi działania z poziomu odpowiedniego programu obsługi zdarzeń odpowiedzi, na przykład wywołując metodę działania wysyłania z poziomu programu obsługi działań wysyłania. Może to spowodować wygenerowanie nieskończonej pętli.

Pamiętaj, że każde nowe działanie pobiera nowy wątek do wykonania. Po utworzeniu wątku do przetworzenia działania lista procedur obsługi dla tego działania jest kopiowana do tego nowego wątku. Żadne procedury obsługi dodane po tym punkcie nie zostaną wykonane dla tego konkretnego zdarzenia działania. Programy obsługi zarejestrowane w obiekcie kontekstu są obsługiwane podobnie do sposobu zarządzania potokiem oprogramowania pośredniczącego przez kartę. Mianowicie programy obsługi są wywoływane w kolejności ich dodawania i wywoływanie następnego delegata przekazuje kontrolę do następnej zarejestrowanej procedury obsługi zdarzeń. Jeśli program obsługi nie wywołuje następnego delegata, żadna z kolejnych procedur obsługi zdarzeń nie jest wywoływana, zwarcie zdarzeń, a karta nie wysyła odpowiedzi do kanału.

Obsługa stanu oprogramowania pośredniczącego

Typową metodą zapisywania stanu jest wywołanie metody zapisywania zmian na końcu procedury obsługi kolei. Oto diagram z fokusem na wywołaniu.

Diagram sekwencji kolei bota ze stanem zapisanym w procedurze obsługi kolei bota.

Problem z tym podejściem polega na tym, że wszystkie aktualizacje stanu wprowadzone z niestandardowego oprogramowania pośredniczącego wykonywane po powrocie programu obsługi kolei bota nie zostaną zapisane w trwałym magazynie. Rozwiązaniem jest przeniesienie wywołania do metody zapisywania zmian po zakończeniu niestandardowego oprogramowania pośredniczącego przez dodanie wystąpienia oprogramowania pośredniczącego zmiany automatycznego zapisywania na początku stosu oprogramowania pośredniczącego lub przynajmniej przed jakimkolwiek oprogramowaniem pośredniczącym, które może zaktualizować stan. Wykonanie jest pokazane poniżej.

Diagram sekwencji kolei bota ze stanem zapisanym z oprogramowania pośredniczącego.

Dodaj obiekty zarządzania stanami, które będą musiały zostać zaktualizowane do obiektu zestawu stanów bota , a następnie użyj tego podczas tworzenia oprogramowania pośredniczącego zmiany automatycznego zapisywania.

Zasoby dodatkowe

Możesz zapoznać się z oprogramowaniem pośredniczącym rejestratora transkrypcji, jak zaimplementowano w zestawie SDK platformy Bot Framework [C# | JS].