DOTYCZY: SDK w wersji 4
Handler aktywności to oparty na zdarzeniach sposób organizowania logiki konwersacyjnej dla Twojego bota.
Każdy inny typ lub podtyp działania reprezentuje inny typ zdarzenia konwersacyjnego.
W tle program obsługi turn handlera bota wywołuje indywidualny program obsługi działań dla każdego typu otrzymanej aktywności.
Jeśli na przykład bot otrzyma aktywność komunikatu, mechanizm obsługi przeanalizuje tę przychodzącą aktywność i przekaże ją do modulu obsługi aktywności komunikatu. Podczas tworzenia bota logika bota do obsługi komunikatów i odpowiadania na nie znajdzie się w procedurze zdarzenia wiadomości. Podobnie, logika obsługi członków dodawanych do konwersacji znajdzie się w procedurze obsługi dodawania 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
Aby tworzyć agentów z wybranymi usługami sztucznej inteligencji, orkiestracją i wiedzą, rozważ użycie zestawu SDK agentów platformy Microsoft 365. Zestaw SDK agentów obsługuje języki C#, JavaScript lub Python. Więcej informacji na temat zestawu SDK agentów można uzyskać na stronie aka.ms/agents. Jeśli szukasz platformy agenta opartej na modelu SaaS, rozważ microsoft Copilot Studio. Jeśli masz istniejącego bota utworzonego przy użyciu zestawu Bot Framework SDK, możesz zaktualizować bota do zestawu SDK agentów. Wskazówki dotyczące migracji z Bot Framework SDK do Agents SDK znajdziesz pod Bot Framework SDK to Agents SDK migration guidance, które omawiają podstawowe zmiany i aktualizacje. Zgłoszenia do pomocy technicznej dla zestawu Bot Framework SDK nie będą już obsługiwane od 31 grudnia 2025 r.
Aby zaimplementować logikę dla tych procedur obsługi, zastąpisz te metody w swoim bocie, na przykład w poniższej sekcji przykładowego obsługiwacza 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ć podstawową obsługę tury, na przykład zapisanie stanu na końcu tury. 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 modułów obsługujących działania, takich jak OnMessageActivityAsync.
Język JavaScript ActivityHandler używa wzorca emitera zdarzeń i odbiornika.
Na przykład, użyj metody onMessage, aby zarejestrować nasłuchiwacz zdarzeń dla komunikatów. Można zarejestrować więcej niż jeden odbiornik. Gdy bot odbiera działanie komunikatu, program obsługi działań będzie widzieć to działanie przychodzące i wysyłać je do każdego z onMessage odbiorników działań w kolejności, w jakiej zostały zarejestrowane.
Podczas tworzenia bota, logika działania bota do obsługi komunikatów i odpowiadania na nie będzie umieszczona w onMessage odbiornikach. Podobnie, logika obsługi członków dodawanych do konwersacji zostanie umieszczona w twoich onMembersAdded odbiornikach, które są wywoływane za każdym razem, gdy członek zostanie dodany do konwersacji.
Aby dodać te odbiorniki, zarejestrujesz je w bocie, jak pokazano w poniższej sekcji Logika bota. Dla każdego odbiornika dołącz logikę bota, a następnie pamiętaj o wywołaniu next() na końcu. Wywołując next(), zapewniasz, że następny odbiornik zostanie uruchomiony.
Pamiętaj, aby zapisać stan przed zakończeniem kolei. Można to zrobić, przesłaniając metodę obsługi zdarzeń run i zapisując stan po zakończeniu metody nadrzędnej run.
Nie ma typowych sytuacji, w których należy zastąpić podstawowy moduł obsługi tur, więc bądź ostrożny, jeśli spróbujesz to zrobić.
Istnieje specjalny program obsługi o nazwie onDialog. Procedura obsługi onDialog jest uruchamiana na końcu, po uruchomieniu wszystkich pozostałych procedur obsługi, i nie jest powiązana z określonym typem aktywności. Podobnie jak w przypadku wszystkich powyższych obsług, pamiętaj, aby wywołać next(), aby upewnić się, że reszta procesu została zakończona.
Aby zaimplementować logikę dla tych procedur obsługi, zastąpisz te metody w swoim bocie, na przykład w poniższej sekcji przykładowego obsługiwacza działań. Nie ma podstawowej implementacji dla każdego z tych programów obsługi, więc dodaj logikę, którą chcesz zastąpić.
Istnieją pewne sytuacje, w których należy zastąpić podstawową obsługę tury, na przykład zapisanie stanu na końcu tury. W tym celu proszę najpierw wywołać super.onTurn(turnContext);, aby upewnić się, że podstawowa implementacja onTurn jest uruchamiana przed dodatkowym kodem. Ta podstawowa implementacja jest między innymi odpowiedzialna za wywoływanie pozostałych modułów obsługujących działania, takich jak onMessageActivity.
Podczas tworzenia bota logika bota do obsługi i odpowiadania na komunikaty będzie umieszczona w tym on_message_activity handlerze. Podobnie, logika obsługi członków dodawanych do konwersacji znajdzie się w procedurze obsługi on_members_added, która jest wywoływana za każdym razem, gdy członek zostanie dodany do konwersacji.
Jeśli na przykład bot otrzyma aktywność wiadomości, program obsługi kolejki zobaczy aktywność przychodzącą i wyśle ją do on_message_activity programu obsługi aktywności.
Aby zaimplementować logikę dla tych procedur obsługi, zastąpisz te metody w swoim bocie, na przykład w poniższej sekcji przykładowego obsługiwacza 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ć podstawową obsługę tury, na przykład zapisanie stanu na końcu tury. W tym celu należy najpierw wywołać metodę await super().on_turn(turnContext); , aby upewnić się, że podstawowa implementacja on_turn programu jest uruchamiana przed dodatkowym kodem. Ta podstawowa implementacja jest między innymi odpowiedzialna za wywoływanie pozostałych modułów obsługujących działania, takich jak on_message_activity.
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ń, opracuj klasę bota na bazie ActivityHandler, która implementuje interfejs IBot.
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ż dziedziczymy z ActivityHandler klasy.
Obsługiwacze zdefiniowane w ActivityHandler to:
| Zdarzenie |
Sterownik |
opis |
| Odebrano każdy typ aktywności |
OnTurnAsync |
Wywołuje jedną z innych procedur obsługi na podstawie typu odebranego działania. |
| Aktywność wiadomości odebrana |
OnMessageActivityAsync |
Zastąpij message to, aby obsłużyć działanie. |
| Odebrano aktualizację dotycząca konwersacji |
OnConversationUpdateActivityAsync |
W przypadku, gdy do rozmowy dołączą lub opuszczą ją członkowie inni niż bot, wywoływana jest procedura obsługi conversationUpdate. |
| 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 aktywność zdarzenia |
OnEventActivityAsync |
W przypadku event aktywności wywołuje obsługę specyficzną dla typu zdarzenia. |
| Odebrano aktywność zdarzenia odpowiedzi na token |
OnTokenResponseEventAsync |
Nadpisz to w celu obsługi zdarzeń odpowiedzi na token. |
| Odebrano działanie zdarzenia dotyczące odpowiedzi spoza tokenu |
OnEventAsync |
Zastąp to w celu obsługi innych typów zdarzeń. |
| Odebrano aktywność reakcji na wiadomość |
OnMessageReactionActivityAsync |
Podczas zdarzenia messageReaction wywołuje procedurę obsługi, jeśli co najmniej jedna reakcja została dodana lub usunięta z wiadomości. |
| Reakcje wiadomości dodane do wiadomości |
OnReactionsAddedAsync |
Zastąpij to, aby obsługiwać reakcje dodane do komunikatu. |
| Reakcje na wiadomość usunięte z wiadomości |
OnReactionsRemovedAsync |
Zastąpij to w celu obsługi reakcji usuniętych z komunikatu. |
| Odebrano zaktualizowane informacje o instalacji |
OnInstallationUpdateActivityAsync |
W ramach installationUpdate aktywności wywołuje obsługiwacza 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. |
| Otrzymano inny typ aktywności |
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ą mieć różne typy, więc każdy obsługujący zapewnia silnie typizowane działanie w swoim parametrze kontekstu; w większości przypadków OnMessageActivityAsync zawsze będzie obsługiwane i jest na ogół najbardziej powszechne.
Podobnie jak w poprzednich wersjach 4.x tego frameworka, istnieje również opcja implementacji publicznej metody OnTurnAsync. 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, aby uzyskać podstawową implementację i wywołać wszystkie inne "obsługiwacze" On<activity>Async albo samodzielnie je wywołać. Inaczej te procedury nie zostaną wywołane i ten kod nie zostanie uruchomiony.
Główna logika bota jest definiowana w kodzie bota. Aby zaimplementować bota jako program obsługi działań, rozszerz rozszerzenie ActivityHandler.
ActivityHandler definiuje różne zdarzenia dla różnych typów działań i można zmodyfikować zachowanie bota, rejestrując odbiorniki zdarzeń, takie jak i onMessageonConversationUpdate.
Użyj tych metod, aby zarejestrować odbiorniki dla każdego typu zdarzenia:
| Zdarzenie |
Metoda rejestracji |
opis |
| Odebrano każdy typ aktywności |
onTurn |
Rejestruje nasłuchiwacza, gdy zostanie odebrana jakakolwiek aktywność. |
| Aktywność wiadomości odebrana |
onMessage |
Rejestruje nasłuchującego dla przypadku odebrania aktywności message. |
| Odebrano aktualizację dotycząca konwersacji |
onConversationUpdate |
Rejestruje nasłuchiwacza, gdy zostanie odebrane dowolne działanie conversationUpdate. |
| Członkowie dołączyli do konwersacji |
onMembersAdded |
Rejestruje nasłuchiwacz, gdy członkowie dołączą do konwersacji, w tym bota. |
| Członkowie opuścili konwersację |
onMembersRemoved |
Rejestruje nasłuchiwacza, gdy członkowie opuszczają konwersację, w tym bota. |
| Odebrano aktywność reakcji na wiadomość |
onMessageReaction |
Rejestruje nasłuchiwacza, gdy zostanie odebrane dowolne działanie messageReaction. |
| Reakcje wiadomości dodane do wiadomości |
onReactionsAdded |
Rejestruje odbiornik, gdy do wiadomości dodawane są reakcje. |
| Reakcje na wiadomość usunięte z wiadomości |
onReactionsRemoved |
Rejestruje nasłuchiwacz w przypadku usunięcia reakcji z wiadomości. |
| Odebrano aktywność zdarzenia |
onEvent |
Rejestruje nasłuchiwacza, gdy zostanie odebrane dowolne działanie event. |
| Odebrano aktywność zdarzenia odpowiedzi na token |
onTokenResponseEvent |
Rejestruje nasłuchiwacza na odbiór zdarzenia tokens/response. |
| Odebrano zaktualizowane informacje o instalacji |
onInstallationUpdate |
Rejestruje nasłuchiwacza, gdy zostanie odebrane dowolne działanie installationUpdate. |
| Zainstalowany bot |
onInstallationUpdateAdd |
Rejestruje odbiornik, gdy bot jest zainstalowany w jednostce organizacyjnej. |
| Odinstalowany bot |
onInstallationUpdateRemove |
Rejestruje nasłuchiwacz na wypadek odinstalowania bota w jednostce organizacyjnej. |
| Otrzymano inny typ aktywności |
onUnrecognizedActivityType |
Rejestruje nasłuchiwacza, gdy program obsługi dla określonego typu aktywności nie jest zdefiniowany. |
| Osoby obsługujące działania zakończyły pracę |
onDialog |
Wywoływane po zakończeniu wszystkich odpowiednich procedur obsługi. |
Wywołaj funkcję kontynuacji next z każdej procedury obsługi, aby umożliwić kontynuowanie przetwarzania. Jeśli next nie zostanie wywołana, przetwarzanie działania kończy się.
Główna logika bota jest definiowana w kodzie bota. Aby zaimplementować bota jako program obsługi działań, opracuj klasę bota na bazie ActivityHandler, która implementuje interfejs Bot.
ActivityHandler definiuje różne procedury obsługi dla różnych typów działań, takich jak onMessageActivity, i onMembersAdded. Te metody są chronione, ale można je zastąpić, ponieważ dziedziczymy z ActivityHandler klasy.
Obsługiwacze zdefiniowane w ActivityHandler to:
| Zdarzenie |
Sterownik |
opis |
| Odebrano każdy typ aktywności |
onTurn |
Wywołuje jedną z innych procedur obsługi na podstawie typu odebranego działania. |
| Aktywność wiadomości odebrana |
onMessageActivity |
Zastąpij message to, aby obsłużyć działanie. |
| Odebrano aktualizację dotycząca konwersacji |
onConversationUpdateActivity |
W przypadku, gdy do rozmowy dołączą lub opuszczą ją członkowie inni niż bot, wywoływana jest procedura obsługi conversationUpdate. |
| Członkowie niebędący botami dołączyli do konwersacji |
onMembersAdded |
Zastąp to, aby obsługiwać członków dołączania do konwersacji. |
| Członkowie niebędący botami opuszczają konwersację |
onMembersRemoved |
Zastąpij tę opcję, aby obsługiwać członków opuszczających konwersację. |
| Odebrano aktywność zdarzenia |
onEventActivity |
W przypadku event aktywności wywołuje obsługę specyficzną dla typu zdarzenia. |
| Odebrano aktywność zdarzenia odpowiedzi na token |
onTokenResponseEvent |
Nadpisz to w celu obsługi zdarzeń odpowiedzi na token. |
| Odebrano działanie zdarzenia dotyczące odpowiedzi spoza tokenu |
onEvent |
Zastąp to w celu obsługi innych typów zdarzeń. |
| Odebrano aktywność reakcji na wiadomość |
onMessageReactionActivity |
Podczas zdarzenia messageReaction wywołuje procedurę obsługi, jeśli co najmniej jedna reakcja została dodana lub usunięta z wiadomości. |
| Reakcje wiadomości dodane do wiadomości |
onReactionsAdded |
Zastąpij to, aby obsługiwać reakcje dodane do komunikatu. |
| Reakcje na wiadomość usunięte z wiadomości |
onReactionsRemoved |
Zastąpij to w celu obsługi reakcji usuniętych z komunikatu. |
| Odebrano zaktualizowane informacje o instalacji |
onInstallationUpdate |
W ramach installationUpdate aktywności wywołuje obsługiwacza na podstawie tego, czy bot został zainstalowany, czy odinstalowany. |
| Zainstalowany bot |
onInstallationUpdateAdd |
Zastąpij tę opcję, aby dodać logikę, gdy bot jest zainstalowany w jednostce organizacyjnej. |
| Odinstalowany bot |
onInstallationUpdateRemove |
Zastąpij tę opcję, aby dodać logikę w przypadku odinstalowania bota w jednostce organizacyjnej. |
| Otrzymano inny typ aktywności |
onUnrecognizedActivityType |
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ą mieć różne typy, więc każdy obsługujący zapewnia silnie typizowane działanie w swoim parametrze kontekstu; w większości przypadków onMessageActivity zawsze będzie obsługiwane i jest na ogół najbardziej powszechne.
Istnieje również opcja zaimplementowania metody onTurnpublicznej . 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 onTurn, nadal jest to opcja.
Ważne
Jeśli zastąpisz metodę onTurn, musisz wywołać super.onTurn, aby uzyskać podstawową implementację i wywołać wszystkie inne "obsługiwacze" on<activity> albo samodzielnie je wywołać. Inaczej te procedury nie zostaną wywołane i ten kod nie zostanie uruchomiony.
Główna logika bota jest definiowana w kodzie bota. Aby zaimplementować bota jako program obsługi działań, stwórz klasę bota dziedziczącą po klasie ActivityHandler, która z kolei pochodzi z abstrakcyjnej klasy Bot.
ActivityHandler definiuje różne procedury obsługi dla różnych typów działań, takich jak on_message_activity i on_members_added. Te metody są chronione, ale można je zastąpić, ponieważ dziedziczymy z ActivityHandler klasy.
Obsługiwacze zdefiniowane w ActivityHandler to:
| Zdarzenie |
Sterownik |
opis |
| Odebrano każdy typ aktywności |
on_turn |
Wywołuje jedną z innych procedur obsługi na podstawie typu odebranego działania. |
| Aktywność wiadomości odebrana |
on_message_activity |
Zastąpij message to, aby obsłużyć działanie. |
| Odebrano aktualizację dotycząca konwersacji |
on_conversation_update_activity |
W przypadku, gdy do rozmowy dołączą lub opuszczą ją członkowie inni niż bot, wywoływana jest procedura obsługi conversationUpdate. |
| Członkowie niebędący botami dołączyli do konwersacji |
on_members_added_activity |
Zastąp to, aby obsługiwać członków dołączania do konwersacji. |
| Członkowie niebędący botami opuszczają konwersację |
on_members_removed_activity |
Zastąpij tę opcję, aby obsługiwać członków opuszczających konwersację. |
| Odebrano aktywność zdarzenia |
on_event_activity |
W przypadku event aktywności wywołuje obsługę specyficzną dla typu zdarzenia. |
| Odebrano aktywność zdarzenia odpowiedzi na token |
on_token_response_event |
Nadpisz to w celu obsługi zdarzeń odpowiedzi na token. |
| Odebrano działanie zdarzenia dotyczące odpowiedzi spoza tokenu |
on_event_activity |
Zastąp to w celu obsługi innych typów zdarzeń. |
| Odebrano aktywność reakcji na wiadomość |
on_message_reaction_activity |
Podczas zdarzenia messageReaction wywołuje procedurę obsługi, jeśli co najmniej jedna reakcja została dodana lub usunięta z wiadomości. |
| Reakcje wiadomości dodane do wiadomości |
on_reactions_added |
Zastąpij to, aby obsługiwać reakcje dodane do komunikatu. |
| Reakcje na wiadomość usunięte z wiadomości |
on_reactions_removed |
Zastąpij to w celu obsługi reakcji usuniętych z komunikatu. |
| Odebrano zaktualizowane informacje o instalacji |
on_installation_update |
W ramach installationUpdate aktywności wywołuje obsługiwacza na podstawie tego, czy bot został zainstalowany, czy odinstalowany. |
| Zainstalowany bot |
on_installation_update_add |
Zastąpij tę opcję, aby dodać logikę, gdy bot jest zainstalowany w jednostce organizacyjnej. |
| Odinstalowany bot |
on_installation_update_remove |
Zastąpij tę opcję, aby dodać logikę w przypadku odinstalowania bota w jednostce organizacyjnej. |
| Otrzymano inny typ aktywności |
on_unrecognized_activity_type |
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 turn_context , który zawiera informacje o działaniu przychodzącym, który odpowiada przychodzącemu żądaniu HTTP. Działania mogą mieć różne typy, więc każdy obsługujący zapewnia silnie typizowane działanie w swoim parametrze kontekstu; w większości przypadków on_message_activity zawsze będzie obsługiwane i jest na ogół najbardziej powszechne.
Podobnie jak w poprzednich wersjach 4.x tego frameworka, istnieje również opcja implementacji publicznej metody on_turn. 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 on_turn, nadal jest to opcja.
Ważne
Jeśli zastąpisz metodę on_turn, musisz wywołać super().on_turn, aby uzyskać podstawową implementację i wywołać wszystkie inne "obsługiwacze" on_<activity> albo samodzielnie je wywołać. Inaczej te procedury nie zostaną wywołane i ten kod nie zostanie uruchomiony.
Przykładowy moduł obsługi działań
Możesz na przykład obsługiwać członków dodanych aby powitać użytkowników w konwersacji i obsługiwać wiadomości aby odbijać wiadomości, które wysyłają 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);
}
}
}
}
const { ActivityHandler, MessageFactory } = require('botbuilder');
class EchoBot extends ActivityHandler {
constructor() {
super();
// See https://aka.ms/about-bot-activity-message to learn more about the message and other activity types.
this.onMessage(async (context, next) => {
const replyText = `Echo: ${ context.activity.text }`;
await context.sendActivity(MessageFactory.text(replyText, replyText));
// By calling next() you ensure that the next BotHandler is run.
await next();
});
this.onMembersAdded(async (context, next) => {
const membersAdded = context.activity.membersAdded ?? [];
const welcomeText = 'Hello and welcome!';
for (let cnt = 0; cnt < membersAdded.length; ++cnt) {
if (membersAdded[cnt].id !== context.activity.recipient.id) {
await context.sendActivity(MessageFactory.text(welcomeText, welcomeText));
}
}
// By calling next() you ensure that the next BotHandler is run.
await next();
});
public class EchoBot extends ActivityHandler {
@Override
protected CompletableFuture<Void> onMessageActivity(TurnContext turnContext) {
return turnContext.sendActivity(
MessageFactory.text("Echo: " + turnContext.getActivity().getText())
).thenApply(sendResult -> null);
}
@Override
protected CompletableFuture<Void> onMembersAdded(
List<ChannelAccount> membersAdded,
TurnContext turnContext
) {
String welcomeText = "Hello and welcome!";
return membersAdded.stream()
.filter(
member -> !StringUtils
.equals(member.getId(), turnContext.getActivity().getRecipient().getId())
).map(channel -> turnContext.sendActivity(MessageFactory.text(welcomeText, welcomeText, null)))
.collect(CompletableFutures.toFutureList()).thenApply(resourceResponses -> null);
}
}
class EchoBot(ActivityHandler):
async def on_members_added_activity(
self, members_added: [ChannelAccount], turn_context: TurnContext
):
for member in members_added:
if member.id != turn_context.activity.recipient.id:
await turn_context.send_activity("Hello and welcome!")
async def on_message_activity(self, turn_context: TurnContext):
return await turn_context.send_activity(
MessageFactory.text(f"Echo: {turn_context.activity.text}")
)
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 aktywności to dobry sposób projektowania bota, który nie musi śledzić stanu konwersacji między kolejnymi wymianami. Biblioteka okien dialogowych udostępnia sposoby zarządzania długotrwałą konwersacją z użytkownikiem.