Omówienie struktury bota echa
DOTYCZY: ZESTAW SDK w wersji 4
Szablony i przykłady platformy Bot Framework są napisane dla ASP.NET (C#), restify (JavaScript) i aiohttp (Python). Jednak funkcje usługi internetowej nie są częścią zestawu Sdk platformy Bot Framework, ale część platformy internetowej, której chcesz użyć.
Wszystkie aplikacje botów współdzielą niektóre typowe funkcje.
Funkcja | opis |
---|---|
Aprowizowanie zasobów | Bot jako aplikacja internetowa musi utworzyć usługę internetową, kartę bota i obiekt bota. |
Punkt końcowy obsługi komunikatów | Aplikacja internetowa musi zaimplementować punkt końcowy obsługi komunikatów, na którym będą odbierać działania i przekazywać działania do karty bota. |
Karta bota | Karta odbiera działania z punktu końcowego obsługi komunikatów, przekazuje je do procedury obsługi kolei bota i przechwytuje błędy lub wyjątki, których logika bota nie przechwytuje. |
Obiekt bota | Obiekt bota obsługuje rozumowanie lub logikę bota dla kolei. |
Bot echo można utworzyć na podstawie szablonów zgodnie z opisem w artykule Tworzenie bota lub skopiować projekt echo bota z repozytorium Microsoft/BotBuilder-Samples .
Szablony języka C# i JavaScript mają wbudowaną obsługę połączeń przesyłanych strumieniowo. Jednak ten artykuł nie obejmuje funkcji przesyłania strumieniowego. Aby uzyskać informacje na temat połączeń przesyłania strumieniowego, zobacz, jak połączyć bota z usługą Direct Line Speech.
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.
Wymagania wstępne
- Znajomość podstaw bota.
- Kopia przykładu echo bota w języku C#, JavaScript, Java lub Python.
Szablony botów
Bot to aplikacja internetowa, a szablony są udostępniane dla każdego języka.
Platforma Bot Framework zawiera zarówno szablony VSIX, jak i .NET.
Szablony generują ASP.NET aplikację internetową MVC Core . Jeśli przyjrzysz się podstawom ASP.NET, zobaczysz podobny kod w plikach, takich jak Program.cs i Startup.cs. Te pliki są wymagane dla wszystkich aplikacji internetowych i nie są specyficzne dla bota.
Uwaga
Szablony można zainstalować z poziomu programu Visual Studio.
- W menu wybierz pozycję Rozszerzenia, a następnie zarządzaj rozszerzeniami.
- W oknie dialogowym Zarządzanie rozszerzeniami wyszukaj i zainstaluj szablony zestawu Bot Framework w wersji 4 zestawu SDK dla programu Visual Studio.
Aby uzyskać informacje na temat wdrażania botów platformy .NET na platformie Azure, zobacz jak aprowizować i publikować bota.
Plik appsettings.json określa informacje o konfiguracji bota, takie jak jego identyfikator aplikacji i hasło. Jeśli korzystasz z niektórych technologii lub korzystasz z tego bota w środowisku produkcyjnym, musisz dodać określone klucze lub adres URL do tej konfiguracji. Jednak w przypadku tego bota echo nie musisz teraz wykonywać żadnych czynności; Identyfikator aplikacji i hasło mogą być obecnie niezdefiniowane.
Plik EchoBot.csproj określa zależności i skojarzone z nimi wersje bota. Wszystko to jest skonfigurowane przez szablon i system. Dodatkowe zależności można zainstalować za pomocą menedżera pakietów NuGet lub dotnet add package
polecenia.
Aprowizowanie zasobów
Aby działać jako aplikacja internetowa, bot musi utworzyć usługę internetową, kartę bota i obiekt bota.
W przypadku większości botów należy również utworzyć obiekty zarządzania warstwą magazynu i pamięcią dla bota. Jednak bot echo nie musi utrwalać stanu między zakrętami. W przypadku niektórych botów może być konieczne utworzenie innych obiektów, których będzie wymagał obiekt bota lub adapter.
W ASP.NET rejestrujesz obiekty i metody tworzenia obiektów w pliku Startup.cs .
Metoda ConfigureServices
ładuje połączone usługi i ich klucze (jeśli istnieją) z appsettings.json, nawiązuje połączenie i tak dalej. W tym miejscu adapter i bot są definiowane jako dostępne za pośrednictwem wstrzykiwania zależności.
Configure
Następnie metoda kończy konfigurację aplikacji.
ConfigureServices
i Configure
są wywoływane przez środowisko uruchomieniowe podczas uruchamiania aplikacji.
Punkt końcowy obsługi komunikatów
Szablon implementuje usługę internetową z punktem końcowym obsługi komunikatów. Po odebraniu żądania usługa wyodrębnia nagłówek uwierzytelniania i ładunek żądania i przekazuje je do karty.
Zestawy SDK języka C# i JavaScript obsługują połączenia przesyłane strumieniowo. Chociaż bot echo nie korzysta z żadnych funkcji przesyłania strumieniowego, karta w szablonach języka C# i JavaScript jest przeznaczona do ich obsługi.
Każde żądanie przychodzące reprezentuje początek nowego kolei.
Kontrolery\BotController.cs
// This ASP Controller is created to handle a request. Dependency Injection will provide the Adapter and IBot
// implementation at runtime. Multiple different IBot implementations running at different endpoints can be
// achieved by specifying a more specific type for the bot constructor argument.
[Route("api/messages")]
[ApiController]
public class BotController : ControllerBase
{
private readonly IBotFrameworkHttpAdapter _adapter;
private readonly IBot _bot;
public BotController(IBotFrameworkHttpAdapter adapter, IBot bot)
{
_adapter = adapter;
_bot = bot;
}
[HttpPost, HttpGet]
public async Task PostAsync()
{
// Delegate the processing of the HTTP POST to the adapter.
// The adapter will invoke the bot.
await _adapter.ProcessAsync(Request, Response, _bot);
}
}
Adapter bota
Karta odbiera działania z punktu końcowego obsługi komunikatów, przekazuje je do procedury obsługi kolei bota i przechwytuje błędy lub wyjątki, których logika bota nie przechwytuje. Karta przekazuje również działania z bota do kanału użytkownika.
Karta umożliwia dodanie własnego programu obsługi błędów przy włączaniu .
Startup.cs
Karta do użycia jest zdefiniowana w metodzie ConfigureServices
.
// Create the Bot Framework Authentication to be used with the Bot Adapter.
services.AddSingleton<BotFrameworkAuthentication, ConfigurationBotFrameworkAuthentication>();
AdapterWithErrorHandler.cs
public class AdapterWithErrorHandler : CloudAdapter
{
public AdapterWithErrorHandler(BotFrameworkAuthentication auth, ILogger<IBotFrameworkHttpAdapter> logger)
: base(auth, logger)
{
OnTurnError = async (turnContext, exception) =>
{
// Log any leaked exception from the application.
// NOTE: In production environment, you should consider logging this to
// Azure Application Insights. Visit https://aka.ms/bottelemetry to see how
// to add telemetry capture to your bot.
logger.LogError(exception, $"[OnTurnError] unhandled error : {exception.Message}");
// Send a message to the user
await turnContext.SendActivityAsync("The bot encountered an error or bug.");
await turnContext.SendActivityAsync("To continue to run this bot, please fix the bot source code.");
// Send a trace activity, which will be displayed in the Bot Framework Emulator
await turnContext.TraceActivityAsync("OnTurnError Trace", exception.Message, "https://www.botframework.com/schemas/error", "TurnError");
};
}
}
Logika bota
Bot echo używa programu obsługi działań i implementuje programy obsługi dla typów działań, które rozpoznaje i reaguje, w tym przypadku aktualizacja konwersacji i działania komunikatów .
- Działanie aktualizacji konwersacji zawiera informacje o tym, kto dołączył lub opuścił konwersację. W przypadku konwersacji innych niż grupy bot i użytkownik dołączają do konwersacji po rozpoczęciu. W przypadku konwersacji grupowych aktualizacja konwersacji jest generowana za każdym razem, gdy ktoś dołącza lub opuszcza konwersację, niezależnie od tego, czy jest to bot, czy użytkownik.
- Działanie komunikatu reprezentuje komunikat, który użytkownik wysyła do bota.
Bot echo wita użytkownika podczas dołączania do konwersacji i powtarza z powrotem wszystkie wiadomości wysyłane do bota.
Startup.cs
Bot do użycia jest zdefiniowany w metodzie ConfigureServices
.
// Create the Bot Adapter with error handling enabled.
services.AddSingleton<IBotFrameworkHttpAdapter, AdapterWithErrorHandler>();
Boty\EchoBot.cs
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
- Dowiedz się, jak wysyłać i odbierać wiadomości SMS
- Dowiedz się, jak wysyłać wiadomości powitalne do użytkowników