Udostępnij za pośrednictwem


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

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.

  1. W menu wybierz pozycję Rozszerzenia, a następnie zarządzaj rozszerzeniami.
  2. 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