Tworzenie bot konwersacji klasy korporacyjnej

Azure Active Directory
App Service
Application Insights
Blob Storage
Usługa bota
Cognitive Services
Cosmos DB
Data Factory
Funkcje
Key Vault
Logic Apps
Wyszukaj

Ta architektura referencyjna zawiera opis sposobu tworzenia bot konwersacji klasy korporacyjnej (chatbot) przy użyciu platformy Azure bot Framework.This reference architecture describes how to build an enterprise-grade conversational bot (chatbot) using the Azure Bot Framework. Każdy bot różni się, ale istnieją pewne typowe wzorce, przepływy pracy i technologie.Each bot is different, but there are some common patterns, workflows, and technologies to be aware of. Szczególnie w przypadku Bot do obsługi obciążeń przedsiębiorstwa istnieje wiele zagadnień związanych z projektowaniem poza podstawową funkcjonalnością.Especially for a bot to serve enterprise workloads, there are many design considerations beyond just the core functionality. Ten artykuł dotyczy najważniejszych aspektów projektowych i zawiera narzędzia potrzebne do tworzenia niezawodnej, bezpiecznej i aktywnie szkoleniowej bot.This article covers the most essential design aspects, and introduces the tools needed to build a robust, secure, and actively learning bot.

Diagram architekturyDiagram of the architecture

Pobierz plik programu Visio z tą architekturą.Download a Visio file of this architecture.

Przykłady narzędzi najlepszych rozwiązań używane w tej architekturze są całkowicie otwarte i dostępne w serwisie GitHub.The best practice utility samples used in this architecture are fully open-sourced and available on GitHub.

ArchitekturaArchitecture

Pokazana tutaj architektura używa następujących usług platformy Azure.The architecture shown here uses the following Azure services. Własne bot nie mogą korzystać ze wszystkich tych usług lub mogą zawierać dodatkowe usługi.Your own bot may not use all of these services, or may incorporate additional services.

Bot i środowisko użytkownikaBot logic and user experience

  • Usługa bot Framework (BFS).Bot Framework Service (BFS). Ta usługa łączy bot z aplikacją komunikacyjną, taką jak Cortana, Facebook Messenger lub zapasowy.This service connects your bot to a communication app such as Cortana, Facebook Messenger, or Slack. Ułatwia ona komunikację między bot i użytkownikiem.It facilitates communication between your bot and the user.
  • Azure App Service.Azure App Service. Logika aplikacji bot jest hostowana w Azure App Service.The bot application logic is hosted in Azure App Service.

Bot Cognition i inteligencjęBot cognition and intelligence

  • Language Understanding (Luis).Language Understanding (LUIS). W ramach usługi Azure Cognitive Services, Luis umożliwia bot zrozumienie języka naturalnego przez zidentyfikowanie intencji użytkownika i jednostek.Part of Azure Cognitive Services, LUIS enables your bot to understand natural language by identifying user intents and entities.
  • Azure Search.Azure Search. Search to zarządzana usługa, która umożliwia szybkie wyszukiwanie indeksu dokumentów.Search is a managed service that provides a quick searchable document index.
  • QNA Maker.QnA Maker. Usługa QnA Maker to oparta na chmurze usługa interfejsu API, która tworzy warstwę konwersacji w postaci pytań i odpowiedzi nad Twoimi danymi.QnA Maker is a cloud-based API service that creates a conversational, question-and-answer layer over your data. Zwykle jest ona ładowana z zawartością z częściową strukturą, taką jak często zadawane pytania.Typically, it's loaded with semi-structured content such as FAQs. Służy do tworzenia bazy wiedzy do odpowiedzi na pytania w języku naturalnym.Use it to create a knowledge base for answering natural-language questions.
  • Aplikacja internetowa.Web app. Jeśli bot potrzebuje rozwiązań AI, które nie są udostępniane przez istniejącą usługę, można zaimplementować własne niestandardowe AI i hostować je jako aplikację internetową.If your bot needs AI solutions not provided by an existing service, you can implement your own custom AI and host it as a web app. Zapewnia to punkt końcowy sieci Web do wywołania przez bot.This provides a web endpoint for your bot to call.

Wprowadzanie danychData ingestion

Bot będzie polegać na danych pierwotnych, które muszą zostać pozyskiwane i przygotowane.The bot will rely on raw data that must be ingested and prepared. Aby zorganizować ten proces, należy wziąć pod uwagę następujące opcje:Consider any of the following options to orchestrate this process:

  • Azure Data Factory.Azure Data Factory. Data Factory organizuje i automatyzuje przenoszenie i Przekształcanie danych.Data Factory orchestrates and automates data movement and data transformation.
  • Logic Apps.Logic Apps. Logic Apps jest platformą bezserwerową do tworzenia przepływów pracy, które integrują aplikacje, dane i usługi.Logic Apps is a serverless platform for building workflows that integrate applications, data, and services. Logic Apps oferuje łączniki danych dla wielu aplikacji, w tym pakiet Office 365.Logic Apps provides data connectors for many applications, including Office 365.
  • Azure Functions.Azure Functions. Za pomocą Azure Functions można napisać niestandardowy kod bezserwerowy wywoływany przez wyzwalacz — na przykład za każdym razem, gdy dokument zostanie dodany do magazynu obiektów blob lub Cosmos DB.You can use Azure Functions to write custom serverless code that is invoked by a trigger — for example, whenever a document is added to blob storage or Cosmos DB.

Rejestrowanie i monitorowanieLogging and monitoring

  • Application Insights.Application Insights. Użyj Application Insights, aby rejestrować metryki aplikacji Bot na potrzeby monitorowania, diagnostyki i analitycznych.Use Application Insights to log the bot's application metrics for monitoring, diagnostic, and analytical purposes.
  • BLOB Storage platformy Azure.Azure Blob Storage. Magazyn obiektów blob jest zoptymalizowany pod kątem przechowywania olbrzymich ilości danych bez struktury.Blob storage is optimized for storing massive amounts of unstructured data.
  • Cosmos DB.Cosmos DB. Cosmos DB doskonale nadaje się do przechowywania danych dziennika z częściową strukturą, takich jak Konwersacje.Cosmos DB is well-suited for storing semi-structured log data such as conversations.
  • Power BI.Power BI. Użyj Power BI, aby utworzyć pulpity nawigacyjne monitorowania dla bot.Use Power BI to create monitoring dashboards for your bot.

Zabezpieczenia i zarządzanieSecurity and governance

Zapewnienie jakości i ulepszeniaQuality assurance and enhancements

  • Azure DevOps.Azure DevOps. Oferuje wiele usług do zarządzania aplikacjami, w tym kontroli źródła, kompilowania, testowania, wdrażania i śledzenia projektu.Provides many services for app management, including source control, building, testing, deployment, and project tracking.
  • Vs Code Uproszczony Edytor kodu na potrzeby tworzenia aplikacji.VS Code A lightweight code editor for app development. Możesz użyć dowolnego innego środowiska IDE z podobnymi funkcjami.You can use any other IDE with similar features.

Zagadnienia dotyczące projektowaniaDesign considerations

Na wysokim poziomie bot konwersacji można podzielić na funkcjonalność bot ("mózg") i zestaw otaczających wymagań ("treść").At a high level, a conversational bot can be divided into the bot functionality (the "brain") and a set of surrounding requirements (the "body"). Mózg zawiera składniki z obsługą domeny, w tym funkcje logiki bot i możliwości ML.The brain includes the domain-aware components, including the bot logic and ML capabilities. Inne składniki to niezależny od domeny i niefunkcjonalne wymagania, takie jak ciągłe CI/CD, gwarancja jakości i zabezpieczenia.Other components are domain agnostic and address non-functional requirements such as CI/CD, quality assurance, and security.

Logiczny diagram funkcji bot

Przed zainstalowaniem konkretnych informacji o architekturze Zacznijmy od przepływu danych przez każdy podskładnik projektu.Before getting into the specifics of this architecture, let's start with the data flow through each subcomponent of the design. Przepływ danych obejmuje przepływy danych inicjowane przez użytkownika i inicjowane przez system.The data flow includes user-initiated and system-initiated data flows.

Przepływ komunikatów użytkownikaUser message flow

Uwierzytelnianie.Authentication. Użytkownicy uruchamiają się, uwierzytelniając się przy użyciu dowolnego mechanizmu, który jest dostarczany przez ich kanał komunikacji z bot.Users start by authenticating themselves using whatever mechanism is provided by their channel of communication with the bot. Platforma bot obsługuje wiele kanałów komunikacyjnych, w tym Cortana, Microsoft Teams, Facebook Messenger, KIK i zapasowy.The bot framework supports many communication channels, including Cortana, Microsoft Teams, Facebook Messenger, Kik, and Slack. Aby uzyskać listę kanałów, zobacz Connect a bot to Channels.For a list of channels, see Connect a bot to channels. Po utworzeniu bot z Azure Bot Service, kanał czatu sieci Web zostanie automatycznie skonfigurowany.When you create a bot with Azure Bot Service, the Web Chat channel is automatically configured. Ten kanał umożliwia użytkownikom posługiwanie się bot bezpośrednio na stronie sieci Web.This channel allows users to interact with your bot directly in a web page. Możesz również połączyć bot z aplikacją niestandardową przy użyciu kanału liniowego Direct .You can also connect the bot to a custom app by using the Direct Line channel. Tożsamość użytkownika jest używana w celu zapewnienia kontroli dostępu opartej na rolach, a także do obsługi spersonalizowanej zawartości.The user's identity is used to provide role-based access control, as well as to serve personalized content.

Komunikat użytkownika.User message. Po uwierzytelnieniu użytkownik wysyła komunikat do bot.Once authenticated, the user sends a message to the bot. Bot odczytuje komunikat i kieruje go do usługi w języku naturalnym, takiej jak Luis.The bot reads the message and routes it to a natural language understanding service such as LUIS. Ten krok pozwala uzyskać intencje (co użytkownik chce zrobić) i jednostki (jakie są zainteresowania użytkownika).This step gets the intents (what the user wants to do) and entities (what things the user is interested in). Bot następnie kompiluje zapytanie przekazane do usługi, która obsługuje informacje, takie jak Azure Search do pobierania dokumentów, QNA Maker dla często zadawanych pytań lub niestandardowej bazy wiedzy.The bot then builds a query that it passes to a service that serves information, such as Azure Search for document retrieval, QnA Maker for FAQs, or a custom knowledge base. Bot używa tych wyników do konstruowania odpowiedzi.The bot uses these results to construct a response. Aby zapewnić najlepszy wynik dla danego zapytania, bot może nawiązać kilka wywołań wstecznych z tymi usługami zdalnymi.To give the best result for a given query, the bot might make several back-and-forth calls to these remote services.

Odpowiedź.Response. W tym momencie bot ustalił najlepszą odpowiedź i wysyła ją do użytkownika.At this point, the bot has determined the best response and sends it to the user. Jeśli wynik pewności najlepszej dopasowanej odpowiedzi jest niski, odpowiedź może być pytaniem o Uściślanie lub potwierdzeniem, że bot nie może odpowiedzieć w odpowiedni sposób.If the confidence score of the best-matched answer is low, the response might be a disambiguation question or an acknowledgment that the bot could not reply adequately.

Rejestrowanie.Logging. Po odebraniu żądania użytkownika lub wysłaniu odpowiedzi wszystkie akcje konwersacji powinny być rejestrowane w magazynie rejestrowania, wraz z metrykami wydajności i ogólnymi błędami z usług zewnętrznych.When a user request is received or a response is sent, all conversation actions should be logged to a logging store, along with performance metrics and general errors from external services. Te dzienniki będą przydatne później podczas diagnozowania problemów i ulepszania systemu.These logs will be useful later when diagnosing issues and improving the system.

Opinie.Feedback. Innym dobrym sposobem jest zbieranie informacji o opiniach i zadowoleniach użytkowników.Another good practice is to collect user feedback and satisfaction scores. W odpowiedzi na odpowiedź końcową bot, bot powinien zażądać od użytkownika, aby ocenić jego zadowolenie z odpowiedzią.As a follow up to the bot's final response, the bot should ask the user to rate their satisfaction with the reply. Opinie mogą pomóc w rozwiązaniu problemu z zimnym rozpoczęciem interpretacji języka naturalnego i nieustannie poprawić dokładność odpowiedzi.Feedback can help you to solve the cold start problem of natural language understanding, and continually improve the accuracy of responses.

Przepływ danych systemuSystem Data Flow

ETL.ETL. Bot opiera się na informacjach i wiedzy wyodrębnionych z danych pierwotnych przez proces ETL w zapleczu.The bot relies on information and knowledge extracted from the raw data by an ETL process in the backend. Te dane mogą być strukturalne (SQL Database), częściowo strukturalne (system CRM, często zadawane pytania) lub bez struktury (dokumenty programu Word, pliki PDF, dzienniki sieci Web).This data might be structured (SQL database), semi-structured (CRM system, FAQs), or unstructured (Word documents, PDFs, web logs). Podsystem ETL wyodrębnia dane zgodnie z ustalonym harmonogramem.An ETL subsystem extracts the data on a fixed schedule. Zawartość jest przekształcana i wzbogacana, a następnie załadowana do pośredniego magazynu danych, takiego jak Cosmos DB lub Blob Storage platformy Azure.The content is transformed and enriched, then loaded into an intermediary data store, such as Cosmos DB or Azure Blob Storage.

Dane w magazynie pośrednim są następnie indeksowane w Azure Search na potrzeby pobierania dokumentów, ładowane do QnA Maker w celu utworzenia par pytań i odpowiedzi lub załadowane do niestandardowej aplikacji sieci Web na potrzeby przetwarzania tekstu bez struktury.Data in the intermediary store is then indexed into Azure Search for document retrieval, loaded into QnA Maker to create question and answer pairs, or loaded into a custom web app for unstructured text processing. Dane są również używane do uczenia modelu LUIS na potrzeby wyodrębniania obiektów zamierzeń i jednostek.The data is also used to train a LUIS model for intent and entity extraction.

Gwarancja jakości.Quality assurance. Dzienniki konwersacji służą do diagnozowania i naprawiania usterek, zapewniania wglądu w sposób używania bot i śledzenia ogólnej wydajności.The conversation logs are used to diagnose and fix bugs, provide insight into how the bot is being used, and track overall performance. Dane dotyczące opinii są przydatne do ponownego uczenia modeli AI w celu poprawy wydajności bot.Feedback data is useful for retraining the AI models to improve bot performance.

Kompilowanie elementu botBuilding a bot

Przed zapisaniem jednego wiersza kodu należy napisać specyfikację funkcjonalną, aby zespół programistyczny miał jasne znaczenie bot.Before you even write a single line of code, it's important to write a functional specification so the development team has a clear idea of what the bot is expected to do. Specyfikacja powinna zawierać dostatecznie kompleksową listę danych wejściowych użytkownika i oczekiwane odpowiedzi bot w różnych domenach merytorycznych.The specification should include a reasonably comprehensive list of user inputs and expected bot responses in various knowledge domains. Ten żywy dokument będzie niecenny Przewodnik po opracowywaniu i testowaniu bot.This living document will be an invaluable guide for developing and testing your bot.

Pozyskiwanie danychIngest data

Następnie Zidentyfikuj źródła danych, które umożliwią programowi bot inteligentne współkorzystanie z użytkownikami.Next, identify the data sources that will enable the bot to interact intelligently with users. Jak wspomniano wcześniej, te źródła danych mogą zawierać strukturalne, częściowo strukturalne lub niestrukturalne zestawy danych.As mentioned earlier, these data sources could contain structured, semi-structured, or unstructured data sets. Gdy rozpoczniesz pracę, dobrym rozwiązaniem jest jednokrotne odtworzenie kopii danych do magazynu centralnego, takiego jak Cosmos DB lub Azure Storage.When you're getting started, a good approach is to make a one-off copy of the data to a central store, such as Cosmos DB or Azure Storage. W miarę postępów należy utworzyć zautomatyzowany potok pozyskiwania danych, aby zachować bieżące dane.As you progress, you should create an automated data ingestion pipeline to keep this data current. Opcje automatycznego potoku pozyskiwania obejmują Data Factory, funkcje i Logic Apps.Options for an automated ingestion pipeline include Data Factory, Functions, and Logic Apps. W zależności od magazynów danych i schematów można użyć kombinacji tych metod.Depending on the data stores and the schemas, you might use a combination of these approaches.

Po rozpoczęciu pracy warto używać Azure Portal do ręcznego tworzenia zasobów platformy Azure.As you get started, it's reasonable to use the Azure portal to manually create Azure resources. Później należy zastanowić się nad automatyzacją wdrożenia tych zasobów.Later on, you should put more thought into automating the deployment of these resources.

Podstawowa logika bot i środowisko użytkownikaCore bot logic and UX

Po utworzeniu specyfikacji i pewnych danych czas na rozpoczęcie pracy z botą.Once you have a specification and some data, it's time to start making your bot into reality. Skupmy się na podstawowej logice bot.Let's focus on the core bot logic. Jest to kod, który obsługuje konwersację z użytkownikiem, w tym logikę routingu, logikę uściślania i rejestrowanie.This is the code that handles the conversation with the user, including the routing logic, disambiguation logic, and logging. Zacznij od zapoznania się z bot Framework, w tym:Start by familiarizing yourself with the Bot Framework, including:

  • Podstawowe pojęcia i terminologia używane w strukturze, szczególnie [konwersacje], [] [operacje i działania].Basic concepts and terminology used in the framework, especially conversations, turns, and activities.
  • Usługa łącznika bot, która obsługuje sieć między bot i kanałami.The Bot Connector service, which handles the networking between the bot and your channels.
  • Jak działa stan konwersacji, w pamięci lub lepiej w sklepie, takim jak Azure Blob Storage lub Azure Cosmos DB.How conversation state is maintained, either in memory or better yet in a store such as Azure Blob Storage or Azure Cosmos DB.
  • Oprogramowanie pośredniczącei sposób, w jaki może służyć do podłączania bot z usługami zewnętrznymi, takimi jak Cognitive Services.Middleware, and how it can be used to hook up your bot with external services, such as Cognitive Services.

W przypadku zaawansowanego środowiska użytkownikaistnieje wiele opcji.For a rich user experience, there are many options.

  • Karty mogą zawierać przyciski, obrazy, karuzeli i menu.You can use cards to include buttons, images, carousels, and menus.
  • Bot może obsługiwać mowę.A bot can support speech.
  • Możesz nawet osadzić bot w aplikacji lub witrynie sieci Web i korzystać z możliwości aplikacji, która go obsługuje.You can even embed your bot in an app or website and use the capabilities of the app hosting it.

Aby rozpocząć, możesz skompilować bot online przy użyciu Azure bot Service, wybierając spośród dostępnych szablonów C# i Node.js.To get started, you can build your bot online using the Azure Bot Service, selecting from the available C# and Node.js templates. Ponieważ bot są bardziej zaawansowane, należy jednak najpierw utworzyć bot lokalnie, a następnie wdrożyć ją w sieci Web.As your bot gets more sophisticated, however, you will need to create your bot locally then deploy it to the web. Wybierz środowisko IDE, takie jak Visual Studio lub Visual Studio Code, oraz język programowania.Choose an IDE, such as Visual Studio or Visual Studio Code, and a programming language. Zestawy SDK są dostępne dla następujących języków:SDKs are available for the following languages:

Jako punkt początkowy można pobrać kod źródłowy dla bot utworzonego przy użyciu Azure Bot Service.As a starting point, you can download the source code for the bot you created using the Azure Bot Service. Możesz również znaleźć przykładowy kod, z prostego botów ECHA, aby uzyskać bardziej zaawansowane botów, które integrują się z różnymi usługami AI.You can also find sample code, from simple echo bots to more sophisticated bots that integrate with various AI services.

Dodawanie inteligentnych do botAdd smarts to your bot

W przypadku prostej bot ze dobrze zdefiniowaną listą poleceń może być możliwe użycie podejścia opartego na regułach w celu przeanalizowania danych wejściowych użytkownika za pośrednictwem wyrażenia regularnego.For a simple bot with a well-defined list of commands, you might be able to use a rules-based approach to parse the user input via regex. Zaletą jest to, że jest to deterministyczne i zrozumiałe.This has the advantage of being deterministic and understandable. Jeśli jednak bot musi zrozumieć intencje i jednostki bardziej naturalnej wiadomości, istnieją usługi AI, które mogą pomóc.However, when your bot needs to understand the intents and entities of a more natural-language message, there are AI services that can help.

  • LUIS jest zaprojektowana z myślą o zrozumieniu intencji i jednostek użytkownika.LUIS is specifically designed to understand user intents and entities. Pouczenie go przy użyciu kolekcji o umiarkowanym rozmiarze odpowiednich danych wejściowych użytkownika i żądanych odpowiedzi zwraca dane dotyczące intencji i jednostek dla danego użytkownika.You train it with a moderately sized collection of relevant user input and desired responses, and it returns the intents and entities for a user's given message.

  • Azure Search może współpracować z LUIS.Azure Search can work alongside LUIS. Korzystając z wyszukiwania, można tworzyć indeksy wyszukiwania dla wszystkich odpowiednich danych.Using Search, you create searchable indexes over all relevant data. Bot bada te indeksy dla jednostek wyodrębnionych przez LUIS.The bot queries these indexes for the entities extracted by LUIS. Azure Search obsługuje również synonimy, co może poszerzyć liczbę poprawnych mapowań wyrazów.Azure Search also supports synonyms, which can widen the net of correct word mappings.

  • QnA Maker to inna usługa, która została zaprojektowana w celu zwracania odpowiedzi na pytania.QnA Maker is another service that is designed to return answers for given questions. Jest to zwykle przeszkolony przez dane częściowo strukturalne, takie jak często zadawane pytania.It's typically trained over semi-structured data such as FAQs.

Bot może używać innych usług AI do dodatkowego wzbogacania środowiska użytkownika.Your bot can use other AI services to further enrich the user experience. Zestaw Cognitive Services wstępnie utworzonych usług AI (w tym LUIS i QNA Maker) zawiera usługi do obsługi wizji, mowy, języka, wyszukiwania i lokalizacji.The Cognitive Services suite of pre-built AI services (which includes LUIS and QnA Maker) has services for vision, speech, language, search, and location. Możesz szybko dodać funkcje, takie jak tłumaczenie języka, sprawdzanie pisowni, analiza tonacji, rozpoznawanie, rozpoznawanie lokalizacji i moderowanie zawartości.You can quickly add functionality such as language translation, spell checking, sentiment analysis, OCR, location awareness, and content moderation. Te usługi można obsłużyć jako moduły oprogramowania pośredniczącego w bot, aby bardziej naturalnie i inteligentnie korzystać z użytkownika.These services can be wired up as middleware modules in your bot to interact more naturally and intelligently with the user.

Kolejną opcją jest zintegrowanie własnej niestandardowej usługi AI.Another option is to integrate your own custom AI service. Takie podejście jest bardziej skomplikowane, ale zapewnia pełną elastyczność pod względem algorytmu uczenia maszynowego, szkoleń i modelu.This approach is more complex, but gives you complete flexibility in terms of the machine learning algorithm, training, and model. Na przykład, można zaimplementować własny model modelowania tematu i użyć algorytmu, takiego jak LDA , aby znaleźć podobne lub istotne dokumenty.For example, you could implement your own topic modeling and use algorithm such as LDA to find similar or relevant documents. Dobrym rozwiązaniem jest udostępnienie niestandardowego rozwiązania AI jako punktu końcowego usługi sieci Web i wywołanie punktu końcowego z podstawowej logiki bot.A good approach is to expose your custom AI solution as a web service endpoint, and call the endpoint from the core bot logic. Usługa sieci Web może być hostowana w App Service lub w klastrze maszyn wirtualnych.The web service could be hosted in App Service or in a cluster of VMs. Azure Machine Learning udostępnia wiele usług i bibliotek, które ułatwiają szkolenia i wdrażanie modeli.Azure Machine Learning provides a number of services and libraries to assist you in training and deploying your models.

Zapewnienie jakości i ulepszenieQuality assurance and enhancement

Rejestrowanie.Logging. Rejestruj konwersacje użytkowników z bot, w tym podstawowe metryki wydajności i wszelkie błędy.Log user conversations with the bot, including the underlying performance metrics and any errors. Te dzienniki będą nieprzydatne w przypadku problemów z debugowaniem, zrozumienie interakcji użytkowników i ulepszanie systemu.These logs will prove invaluable for debugging issues, understanding user interactions, and improving the system. Różne magazyny danych mogą być odpowiednie dla różnych typów dzienników.Different data stores might be appropriate for different types of logs. Rozważmy na przykład Application Insights w przypadku dzienników sieci Web, Cosmos DB do konwersacji i usługi Azure Storage w przypadku dużych ładunków.For example, consider Application Insights for web logs, Cosmos DB for conversations, and Azure Storage for large payloads. Zobacz zapis bezpośrednio w usłudze Azure Storage.See Write directly to Azure Storage.

Opinie.Feedback. Ważne jest również, aby zrozumieć, jak zadowolony użytkownicy korzystają ze swoich interakcji z bot.It's also important to understand how satisfied users are with their bot interactions. Jeśli masz rekord opinii użytkowników, możesz użyć tych danych, aby skoncentrować się na ulepszaniu niektórych interakcji i przekształceniu modeli AI w celu zwiększenia wydajności.If you have a record of user feedback, you can use this data to focus your efforts on improving certain interactions and retraining the AI models for improved performance. Użyj opinii, aby ponownie przeszkolić modele, takie jak LUIS, w systemie.Use the feedback to retrain the models, such as LUIS, in your system.

Testowanie.Testing. Testowanie bot obejmuje testy jednostkowe, testy integracji, testy regresji i testy funkcjonalne.Testing a bot involves unit tests, integration tests, regression tests, and functional tests. W przypadku testowania zalecamy nagrywanie prawdziwych odpowiedzi HTTP z usług zewnętrznych, takich jak Azure Search lub QnA Maker, dzięki czemu mogą one być odtwarzane podczas testowania jednostkowego bez konieczności wykonywania prawdziwych połączeń sieciowych z usługami zewnętrznymi.For testing, we recommend recording real HTTP responses from external services, such as Azure Search or QnA Maker, so they can be played back during unit testing without needing to make real network calls to external services.

Uwaga

Aby szybko rozpocząć programowanie w tych obszarach, zapoznaj się z narzędziami Botbuilder dla języka JavaScript.To jump-start your development in these areas, look at the Botbuilder Utils for JavaScript. To repozytorium zawiera przykładowy kod narzędzi dla botów utworzonych przy użyciu programu Microsoft bot Framework v4 i uruchamiania Node.js.This repo contains sample utility code for bots built with Microsoft Bot Framework v4 and running Node.js. Obejmuje następujące pakiety:It includes the following packages:

Te pakiety są udostępniane jako przykładowy kod narzędziowy i nie są gwarancją pomocy technicznej ani aktualizacji.These packages are provided as utility sample code, and come with no guarantee of support or updates.

Zagadnienia dotyczące dostępnościAvailability considerations

Podczas wdrażania nowych funkcji lub poprawek błędów do bot najlepiej używać wielu środowisk wdrażania, takich jak przygotowanie i środowisko produkcyjne.As you roll out new features or bug fixes to your bot, it's best to use multiple deployment environments, such as staging and production. Korzystanie z miejsc wdrożenia z usługi Azure DevOps pozwala na wykonywanie tych czynności bez przestojów.Using deployment slots from Azure DevOps allows you to do this with zero downtime. Najnowsze uaktualnienia można przetestować w środowisku przejściowym przed zainstalowaniem ich w środowisku produkcyjnym.You can test your latest upgrades in the staging environment before swapping them to the production environment. W przypadku obsługi obciążenia App Service jest zaprojektowana do ręcznego lub automatycznego skalowania w górę lub w dół.In terms of handling load, App Service is designed to scale up or out manually or automatically. Ponieważ Twój bot jest hostowany w globalnej infrastrukturze centrum danych firmy Microsoft, App Service SLA niesie obietnice zwiększenia wysoka dostępność.Because your bot is hosted in Microsoft's global datacenter infrastructure, the App Service SLA promises high availability.

Zagadnienia dotyczące bezpieczeństwaSecurity considerations

Podobnie jak w przypadku każdej innej aplikacji, bot może być zaprojektowana do obsługi poufnych danych.As with any other application, the bot can be designed to handle sensitive data. W związku z tym Ogranicz, kto może się zalogować i korzystać z bot.Therefore, restrict who can sign in and use the bot. Można także ograniczyć dostęp do danych na podstawie tożsamości lub roli użytkownika.Also limit which data can be accessed, based on the user's identity or role. Użyj usługi Azure AD, aby uzyskać dostęp do tożsamości i kontroli dostępu oraz Key Vault do zarządzania kluczami i wpisami tajnymi.Use Azure AD for identity and access control and Key Vault to manage keys and secrets.

Kwestie do rozważenia dotyczące metodyki DevOpsDevOps considerations

Monitorowanie i raportowanieMonitoring and reporting

Gdy bot jest uruchomiony w środowisku produkcyjnym, będzie potrzebny zespół DevOps, aby go zachować.Once your bot is running in production, you will need a DevOps team to keep it that way. Stale monitoruj system, aby upewnić się, że bot działa w wydajności szczytowej.Continually monitor the system to ensure the bot operates at peak performance. Użyj dzienników wysyłanych do Application Insights lub Cosmos DB do tworzenia pulpitów nawigacyjnych monitorowania przy użyciu samego Application Insights, Power BI lub niestandardowego pulpitu nawigacyjnego aplikacji sieci Web.Use the logs sent to Application Insights or Cosmos DB to create monitoring dashboards, either using Application Insights itself, Power BI, or a custom web app dashboard. Wysyłanie alertów do zespołu DevOps w przypadku wystąpienia błędów krytycznych lub wydajności spada poniżej akceptowalnego progu.Send alerts to the DevOps team if critical errors occur or performance falls below an acceptable threshold.

Automatyczne wdrażanie zasobówAutomated resource deployment

Sama bot jest tylko częścią większego systemu, która udostępnia najnowsze dane i zapewnia odpowiednią operację.The bot itself is only part of a larger system that provides it with the latest data and ensures its proper operation. Wszystkie te inne usługi dotyczące zasobów platformy Azure — , takie jak Data Factory, usługi magazynu, takie jak Cosmos DB i tak dalej, — muszą zostać wdrożone.All of these other Azure resources — data orchestration services such as Data Factory, storage services such as Cosmos DB, and so forth — must be deployed. Azure Resource Manager zapewnia spójną warstwę zarządzania, do której można uzyskać dostęp za pomocą Azure Portal, programu PowerShell lub interfejsu wiersza polecenia platformy Azure.Azure Resource Manager provides a consistent management layer that you can access through the Azure portal, PowerShell, or the Azure CLI. Aby zapewnić szybkość i spójność, najlepiej zautomatyzować wdrożenie przy użyciu jednego z tych metod.For speed and consistency, it's best to automate your deployment using one of these approaches.

Ciągłe wdrażanie botContinuous bot deployment

Logikę bot można wdrożyć bezpośrednio z poziomu środowiska IDE lub z poziomu wiersza polecenia, na przykład interfejsu CLI platformy Azure.You can deploy the bot logic directly from your IDE or from a command line, such as the Azure CLI. Ponieważ bot dojrzały, najlepszym rozwiązaniem jest użycie ciągłego procesu wdrażania przy użyciu rozwiązania ciągłej integracji/ciągłego dostarczania, takiego jak Azure DevOps, zgodnie z opisem w artykule Konfigurowanie ciągłego wdrażania.As your bot matures, however, it's best to use a continual deployment process using a CI/CD solution such as Azure DevOps, as described in the article Set up continuous deployment. Jest to dobry sposób, aby uprościć tarcie do testowania nowych funkcji i poprawek w bot w środowisku zbliżonym do środowiska produkcyjnego.This is a good way to ease the friction in testing new features and fixes in your bot in a near-production environment. Dobrym pomysłem jest również posiadanie wielu środowisk wdrażania, zwykle co najmniej na etapie przejściowym i produkcyjnym.It's also a good idea to have multiple deployment environments, typically at least staging and production. Usługa Azure DevOps obsługuje takie podejście.Azure DevOps supports this approach.

Kwestie związane z kosztamiCost considerations

Koszty możesz szacować za pomocą kalkulatora cen platformy Azure.Use the Azure pricing calculator to estimate costs. Poniżej znajdują się inne zagadnienia.Here are some other considerations.

Aplikacja botBot application

W tej architekturze głównym sterownikiem kosztów jest Azure App Service, w którym jest hostowana logika aplikacji bot.In this architecture, the main cost driver is the Azure App Service in which the bot application logic is hosted. Wybierz warstwę planu App Service, która najlepiej odpowiada Twoim potrzebom.Choose an App Service plan tier that best suits your needs. Poniżej przedstawiono niektóre zalecenia:Here are some recommendations:

  • Skorzystaj z warstwy bezpłatna i współdzielona (wersja zapoznawcza) na potrzeby testowania, ponieważ zasoby udostępnione nie mogą skalować w poziomie.Use Free and Shared (preview) tiers for testing purposes because the shared resources cannot scale out.
  • Uruchamiaj obciążenia produkcyjne w warstwach podstawowa, standardowa i Premium , ponieważ aplikacja działa na dedykowanych wystąpieniach maszyn wirtualnych i ma przydzielone zasoby, które można skalować w poziomie. Plany App Service są rozliczane na sekundę.Run your production workload on Basic, Standard, and Premium tiers because the app runs on dedicated virtual machine instances and has allocated resources that can scale out. App Service plans are billed on a per second basis.

Opłaty są naliczone za wystąpienia w planie App Service, nawet jeśli aplikacja zostanie zatrzymana.You are charged for the instances in the App Service plan, even when the app is stopped. Usuń plany, których nie zamierzasz używać długoterminowych, takich jak wdrożenia testowe.Delete plans that you don't intend to use long term, such as test deployments.

Aby uzyskać więcej informacji, zobacz, jak wiele kosztów planu App Service plan?For more information, see How much does my App Service plan cost?.

Wprowadzanie danychData ingestion

  • Azure Data FactoryAzure Data Factory

    W tej architekturze Data Factory automatyzuje potoku pozyskiwania danych.In this architecture, Data Factory automates the data ingestion pipeline. Zapoznaj się z zakresem możliwości integracji danych, aby dopasować się do potrzeb budżetu, od zarządzanych SQL Server Integration Services, aby bezproblemowo przeprowadzić migrację projektów SQL Server do chmury (opcja ekonomiczna), do dużych potoków danych bezserwerowych służących do integrowania danych wszystkich kształtów i rozmiarów.Explore a range of data integration capabilities to fit your budget needs, from managed SQL Server Integration Services for seamless migration of SQL Server projects to the cloud (cost effective option), to large-scale, serverless data pipelines for integrating data of all shapes and sizes.

    Aby zapoznać się z przykładem, zobacz Azure Data Factory-przykład analiza kosztów.For an example, see Azure Data Factory - example cost analysis.

  • Azure FunctionsAzure Functions

    W tej architekturze referencyjnej Azure Functions są rozliczane zgodnie z planem zużycia.In this reference architecture, Azure Functions is billed as per the Consumption plan. Opłata jest naliczana na podstawie użycia zasobów na sekundę i za każdym razem, gdy zdarzenie wyzwala wykonywanie funkcji.You are charged based on per-second resource consumption and each time an event triggers the execution of the function. Przetwarzanie kilku zdarzeń w jednym wykonaniu lub partiach może obniżyć koszty.Processing several events in a single execution or batches can reduce cost.

    Platforma Azure skaluje infrastrukturę wymaganą do uruchamiania funkcji zgodnie z potrzebami.Azure scales the infrastructure required to run functions as needed. Gdy obciążenie jest niskie, infrastruktura jest skalowana w dół do zera bez żadnych powiązanych kosztów.When workload is low, the infrastructure is scaled down up to zero with no associated cost. Za każdym razem, gdy obciążenie rośnie, platforma Azure używa wystarczającej pojemności do obsługi wszystkich wymagań.Whenever the workload grows, Azure uses enough capacity to serve all the demand. Ponieważ płacisz za rzeczywiste użycie, Zarządzaj dokładnymi kosztami każdego składnika.Because you pay per actual use, manage the exact cost of each component.

Logic AppsLogic Apps

Cennik aplikacji Logic Apps działa w modelu płatność zgodnie z rzeczywistym użyciem.Logic apps pricing works on the pay-as-you-go model. Aplikacje logiki mają model cen płatność zgodnie z rzeczywistym użyciem.Logic apps have a pay-as-you-go pricing model. Wyzwalacze, akcje i wykonania łącznika są mierzone przy każdym uruchomieniu aplikacji logiki.Triggers, actions, and connector executions are metered each time a logic app runs. Wszystkie pomyślne i niepomyślne akcje, w tym wyzwalacze, są traktowane jako wykonania.All successful and unsuccessful actions, including triggers, are considered as executions.

Na przykład aplikacja logiki przetwarza 1000 komunikatów dziennie od Azure Service Bus.For instance, your logic app processes 1000 messages a day from Azure Service Bus. Przepływ pracy z pięcioma akcjami będzie kosztować mniej niż $6.A workflow of five actions will cost less than $6. Aby uzyskać więcej informacji, zobacz Cennik usługi Logic Apps.For more information, see Logic Apps pricing.

Aby poznać inne zagadnienia dotyczące kosztów, zobacz sekcję kosztów w Microsoft Azure Well-Architected Framework.For other cost considerations, see the Cost section in Microsoft Azure Well-Architected Framework.

Następne krokiNext Steps

  • Zapoznaj się z szablonem asystenta wirtualnego , aby szybko rozpocząć tworzenie konwersacji botów.Review the Virtual Assistant template to quickly get started building conversational bots.