Udostępnij za pośrednictwem


Konwersacje sterowane zdarzeniami przy użyciu programu obsługi działań

DOTYCZY: ZESTAW SDK w wersji 4

Procedura obsługi działań to oparty na zdarzeniach sposób organizowania logiki konwersacyjnej bota. Każdy inny typ lub podtyp działania reprezentuje inny typ zdarzenia konwersacyjnego. W ramach objęć program obsługi kolei bota wywołuje program obsługi poszczególnych działań dla dowolnego typu otrzymanego działania.

Jeśli na przykład bot otrzyma działanie komunikatu, program obsługi kolei zobaczy działanie przychodzące i wyśle je do programu obsługi działań związanych z działaniem komunikatu. Podczas tworzenia bota logika bota do obsługi komunikatów i odpowiadania na nie przejdzie w procedurze obsługi działań komunikatów. Podobnie logika obsługi elementów członkowskich dodawanych do konwersacji będzie przechodzić do procedury obsługi dodanej przez członków , która jest wywoływana za każdym razem, gdy członek zostanie dodany do konwersacji.

Aby zapoznać się z innymi sposobami organizowania logiki bota, zobacz sekcję logiki bota w sposobie działania 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.

Aby zaimplementować logikę dla tych procedur obsługi, zastąpisz te metody w botze, na przykład w poniższej sekcji przykładowej procedury obsługi działań. Dla każdego z tych programów obsługi nie ma implementacji podstawowej, więc wystarczy dodać logikę, która ma zostać zastąpiona.

Istnieją pewne sytuacje, w których należy zastąpić program obsługi kolei podstawowej, na przykład stan zapisywania na końcu kolei. W tym celu należy najpierw wywołać metodę await base.OnTurnAsync(turnContext, cancellationToken); , aby upewnić się, że podstawowa implementacja OnTurnAsync programu jest uruchamiana przed dodatkowym kodem. Ta podstawowa implementacja jest między innymi odpowiedzialna za wywoływanie pozostałych procedur obsługi działań, takich jak OnMessageActivityAsync.

Obsługa działań

Logika bota przetwarza przychodzące działania z co najmniej jednego kanału i generuje działania wychodzące w odpowiedzi.

Główna logika bota jest definiowana w kodzie bota. Aby zaimplementować bota jako program obsługi działań, utwórz klasę bota z ActivityHandlerklasy , która implementuje IBot interfejs. ActivityHandler definiuje różne procedury obsługi dla różnych typów działań, takich jak OnMessageActivityAsync, i OnMembersAddedAsync. Te metody są chronione, ale można je zastąpić, ponieważ pochodzimy z ActivityHandlerklasy .

Programy obsługi zdefiniowane w programie ActivityHandler to:

Zdarzenie Program obsługi opis
Odebrano dowolny typ działania OnTurnAsync Wywołuje jedną z innych procedur obsługi na podstawie typu odebranego działania.
Odebrano działanie komunikatu OnMessageActivityAsync Zastąpij message to, aby obsłużyć działanie.
Odebrano działanie aktualizacji konwersacji OnConversationUpdateActivityAsync W przypadku działania wywołuje procedurę conversationUpdate obsługi, jeśli członkowie inni niż bot dołączyli lub opuścili konwersację.
Członkowie niebędący botami dołączyli do konwersacji OnMembersAddedAsync Zastąp to, aby obsługiwać członków dołączania do konwersacji.
Członkowie niebędący botami opuszczają konwersację OnMembersRemovedAsync Zastąpij tę opcję, aby obsługiwać członków opuszczających konwersację.
Odebrano działanie zdarzenia OnEventActivityAsync W przypadku działania wywołuje procedurę event obsługi specyficzną dla typu zdarzenia.
Odebrano działanie zdarzenia odpowiedzi tokenu OnTokenResponseEventAsync Zastąp to w celu obsługi zdarzeń odpowiedzi tokenu.
Odebrano działanie zdarzenia nienależące do tokenu OnEventAsync Zastąpij to w celu obsługi innych typów zdarzeń.
Odebrano działanie reakcji komunikatu OnMessageReactionActivityAsync W przypadku działania wywołuje procedurę messageReaction obsługi, jeśli co najmniej jedna reakcja została dodana lub usunięta z komunikatu.
Reakcje komunikatów dodane do komunikatu OnReactionsAddedAsync Zastąpij to, aby obsługiwać reakcje dodane do komunikatu.
Reakcje komunikatów usunięte z komunikatu OnReactionsRemovedAsync Zastąpij to w celu obsługi reakcji usuniętych z komunikatu.
Odebrano działanie aktualizacji instalacji OnInstallationUpdateActivityAsync W ramach installationUpdate działania wywołuje program obsługi na podstawie tego, czy bot został zainstalowany, czy odinstalowany.
Zainstalowany bot OnInstallationUpdateAddAsync Zastąpij tę opcję, aby dodać logikę, gdy bot jest zainstalowany w jednostce organizacyjnej.
Odinstalowany bot OnInstallationUpdateRemoveAsync Zastąpij tę opcję, aby dodać logikę w przypadku odinstalowania bota w jednostce organizacyjnej.
Odebrano inny typ działania OnUnrecognizedActivityTypeAsync Zastąp to, aby obsłużyć dowolny typ działania w inny sposób nieobsługiwany.

Te różne programy obsługi mają element turnContext , który zawiera informacje o działaniu przychodzącym, który odpowiada przychodzącemu żądaniu HTTP. Działania mogą być różnego typu, więc każda procedura obsługi zapewnia silnie typizowane działanie w parametrze kontekstu kolei; w większości przypadków OnMessageActivityAsync będzie zawsze obsługiwana i jest na ogół najbardziej powszechna.

Podobnie jak w poprzednich wersjach 4.x tej platformy, istnieje również opcja implementacji metody OnTurnAsyncpublicznej . Obecnie podstawowa implementacja tej metody obsługuje sprawdzanie błędów, a następnie wywołuje każde z określonych procedur obsługi (takich jak te, które definiujemy w tym przykładzie) w zależności od typu działania przychodzącego. W większości przypadków można pozostawić tę metodę samodzielnie i użyć poszczególnych procedur obsługi, ale jeśli sytuacja wymaga niestandardowej implementacji OnTurnAsync, nadal jest to opcja.

Ważne

Jeśli zastąpisz metodę OnTurnAsync , musisz wywołać base.OnTurnAsync metodę , aby uzyskać implementację podstawową w celu wywołania wszystkich innych On<activity>Async procedur obsługi lub wywołania tych procedur obsługi samodzielnie. W przeciwnym razie te programy obsługi nie będą wywoływane i ten kod nie zostanie uruchomiony.

Przykładowa procedura obsługi działań

Możesz na przykład obsługiwać członków dodanych do powitalnych użytkowników do konwersacji i obsługiwać wiadomości w celu echa wiadomości wysyłanych do bota.

public class EchoBot : ActivityHandler
{
    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
    {
        var replyText = $"Echo: {turnContext.Activity.Text}";
        await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
    }

    protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
    {
        var welcomeText = "Hello and welcome!";
        foreach (var member in membersAdded)
        {
            if (member.Id != turnContext.Activity.Recipient.Id)
            {
                await turnContext.SendActivityAsync(MessageFactory.Text(welcomeText, welcomeText), cancellationToken);
            }
        }
    }
}

Następne kroki

  • Kanał usługi Microsoft Teams wprowadza niektóre działania specyficzne dla usługi Teams, które bot będzie musiał obsługiwać, aby działał prawidłowo z usługą Teams. Aby zrozumieć kluczowe pojęcia związane z opracowywaniem botów dla usługi Microsoft Teams, zobacz Jak działają boty usługi Microsoft Teams
  • Procedura obsługi działań to dobry sposób projektowania bota, który nie musi śledzić stanu konwersacji między zakrętami. Biblioteka okien dialogowych udostępnia sposoby zarządzania długotrwałą konwersacją z użytkownikiem.