Générer un bot de conversation de classe entreprise

Azure Active Directory
App Service
Application Insights
Stockage Blob
Bot Service
Cognitive Services
Cosmos DB
Data Factory
Fonctions
Key Vault
Logic Apps
Recherche

Cette architecture de référence décrit comment générer un bot de conversation (chatbot) de classe entreprise à l’aide d’Azure Bot Framework.This reference architecture describes how to build an enterprise-grade conversational bot (chatbot) using the Azure Bot Framework. Chaque bot est différent, mais ils ont en commun des modèles, des workflows et des technologies à connaître.Each bot is different, but there are some common patterns, workflows, and technologies to be aware of. Pour ce qui est des bots au service de charges de travail d’entreprise, il existe de nombreuses considérations liées à leur conception au-delà de leur simple fonctionnalité.Especially for a bot to serve enterprise workloads, there are many design considerations beyond just the core functionality. Cet article couvre les aspects les plus importants de cette conception et présente les outils nécessaires pour générer un bot robuste, sécurisé et actif dans son apprentissage.This article covers the most essential design aspects, and introduces the tools needed to build a robust, secure, and actively learning bot.

Diagramme de l’architectureDiagram of the architecture

Téléchargez un fichier Visio de cette architecture.Download a Visio file of this architecture.

Les exemples d’utilitaires de bonnes pratiques utilisés dans cette architecture sont entièrement open source et sont disponibles sur GitHub.The best practice utility samples used in this architecture are fully open-sourced and available on GitHub.

ArchitectureArchitecture

L’architecture présentée ici utilise les services Azure suivants.The architecture shown here uses the following Azure services. Votre bot personnel n’utilise peut-être pas tous ces services, ou peut-être en incorpore-t-il d’autres.Your own bot may not use all of these services, or may incorporate additional services.

Logique de bot et expérience utilisateurBot logic and user experience

  • Bot Framework Service (BFS).Bot Framework Service (BFS). Ce service connecte votre bot à une application de communication comme Cortana, Facebook Messenger ou Slack.This service connects your bot to a communication app such as Cortana, Facebook Messenger, or Slack. Il facilite la communication entre votre bot et l’utilisateur.It facilitates communication between your bot and the user.
  • Azure App Service .Azure App Service. La logique d’application du bot est hébergée dans Azure App Service.The bot application logic is hosted in Azure App Service.

Cognition et intelligence du botBot cognition and intelligence

  • Language Understanding (LUIS).Language Understanding (LUIS). Dans le cadre d’Azure Cognitive Services, LUIS permet à votre bot de comprendre le langage naturel en identifiant les intentions et les entités de l’utilisateur.Part of Azure Cognitive Services, LUIS enables your bot to understand natural language by identifying user intents and entities.
  • Recherche Azure .Azure Search. Recherche est un service géré qui fournit un index de documents dans lequel vous pouvez effectuer des recherches rapides.Search is a managed service that provides a quick searchable document index.
  • QnA Maker .QnA Maker. QnA Maker est un service d’API cloud qui crée une couche de questions-réponses conversationnelle sur vos données.QnA Maker is a cloud-based API service that creates a conversational, question-and-answer layer over your data. En règle générale, il se charge avec du contenu semi-structuré comme des questions fréquentes (FAQ).Typically, it's loaded with semi-structured content such as FAQs. Utilisez-le pour créer une base de connaissances afin de répondre à des questions en langage naturel.Use it to create a knowledge base for answering natural-language questions.
  • Application web .Web app. Si votre bot a besoin de solutions d’intelligence artificielle (IA) non fournies par un service existant, vous pouvez implémenter votre propre IA personnalisée et l’héberger comme application web.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. Cette dernière fournit un point de terminaison web que votre bot peut appeler.This provides a web endpoint for your bot to call.

Ingestion de donnéesData ingestion

Le bot compte sur les données brutes que vous devez ingérer et préparer.The bot will rely on raw data that must be ingested and prepared. Envisagez l’une des options suivantes pour orchestrer ce processus :Consider any of the following options to orchestrate this process:

  • Azure Data Factory .Azure Data Factory. Data Factory orchestre et automatise le déplacement et la transformation des données.Data Factory orchestrates and automates data movement and data transformation.
  • Logic Apps .Logic Apps. Logic Apps est une plateforme serverless pour la création de workflows qui intègrent des applications, des données et des services.Logic Apps is a serverless platform for building workflows that integrate applications, data, and services. Logic Apps fournit des connecteurs de données pour de nombreuses applications, notamment Office 365.Logic Apps provides data connectors for many applications, including Office 365.
  • Azure Functions .Azure Functions. Vous pouvez utiliser Azure Functions pour écrire du code serverless personnalisé, appelé par un déclencheur —, par exemple, chaque fois qu’un document est ajouté au stockage blob ou à 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.

Enregistrement et surveillanceLogging and monitoring

  • Application Insights .Application Insights. Utilisez Application Insights pour journaliser les métriques d’application du bot à des fins de supervision, de diagnostic et d’analyse.Use Application Insights to log the bot's application metrics for monitoring, diagnostic, and analytical purposes.
  • Azure Blob Storage .Azure Blob Storage. Stockage Blob est optimisé pour le stockage d’immenses quantités de données non structurées.Blob storage is optimized for storing massive amounts of unstructured data.
  • Cosmos DB .Cosmos DB. Cosmos DB convient parfaitement au stockage de données de journal semi-structurées comme les conversations.Cosmos DB is well-suited for storing semi-structured log data such as conversations.
  • Power BI .Power BI. Utilisez Power BI pour créer des tableaux de bord de supervision pour votre bot.Use Power BI to create monitoring dashboards for your bot.

Sécurité et gouvernanceSecurity and governance

Assurance qualité et améliorationsQuality assurance and enhancements

  • Azure DevOps .Azure DevOps. Fournit de nombreux services de gestion des applications, notamment le contrôle de code source, la génération, le test, le déploiement et le suivi de projet.Provides many services for app management, including source control, building, testing, deployment, and project tracking.
  • VS Code Éditeur de code léger pour le développement d’applications.VS Code A lightweight code editor for app development. Vous pouvez utiliser n’importe quel autre environnement de développement intégré (IDE) doté de fonctionnalités similaires.You can use any other IDE with similar features.

Éléments de conception à prendre en considérationDesign considerations

Globalement, un bot de conversation comporte, d’un côté, la fonctionnalité du bot (le « cerveau ») et de l’autre, un ensemble de critères environnants (le « corps »).At a high level, a conversational bot can be divided into the bot functionality (the "brain") and a set of surrounding requirements (the "body"). Le cerveau comprend les composants qui tiennent compte du domaine, notamment la logique de bot et les fonctionnalités ML (Machine Learning).The brain includes the domain-aware components, including the bot logic and ML capabilities. Les autres composants ne dépendent pas du domaine et s’occupent des exigences non fonctionnelles comme les CI/CD, l’assurance qualité et la sécurité.Other components are domain agnostic and address non-functional requirements such as CI/CD, quality assurance, and security.

Diagramme logique de la fonctionnalité du bot

Avant d’aborder les spécificités de cette architecture, commençons par nous intéresser au flux de données qui traverse chaque sous-composant de la conception.Before getting into the specifics of this architecture, let's start with the data flow through each subcomponent of the design. Le flux de données inclut ceux lancés par l’utilisateur et par le système.The data flow includes user-initiated and system-initiated data flows.

Flux de messages utilisateurUser message flow

Authentification.Authentication. Les utilisateurs commencent par s’authentifier à l’aide du mécanisme fourni par leur canal de communication auprès du bot.Users start by authenticating themselves using whatever mechanism is provided by their channel of communication with the bot. Le framework du bot prend en charge plusieurs canaux de communication, notamment Cortana, Microsoft Teams, Facebook Messenger, Kik et Slack.The bot framework supports many communication channels, including Cortana, Microsoft Teams, Facebook Messenger, Kik, and Slack. Pour obtenir la liste des canaux, consultez Connecter un bot à des canaux.For a list of channels, see Connect a bot to channels. Quand vous créez un bot avec Azure Bot Service, le canal Web Chat est automatiquement configuré.When you create a bot with Azure Bot Service, the Web Chat channel is automatically configured. Ce canal permet aux utilisateurs d’interagir avec votre bot directement dans une page web.This channel allows users to interact with your bot directly in a web page. Vous pouvez également connecter le bot à une application personnalisée à l’aide du canal Direct Line.You can also connect the bot to a custom app by using the Direct Line channel. L’identité de l’utilisateur est utilisée pour fournir un contrôle d’accès en fonction du rôle, ainsi que pour servir du contenu personnalisé.The user's identity is used to provide role-based access control, as well as to serve personalized content.

Message utilisateur.User message. Une fois authentifié, l’utilisateur envoie un message au bot.Once authenticated, the user sends a message to the bot. Le bot lit le message et le route vers un service de compréhension du langage naturel comme LUIS.The bot reads the message and routes it to a natural language understanding service such as LUIS. Cette étape permet d’obtenir les intentions (ce que l’utilisateur veut faire) et les entités (ce à quoi l’utilisateur s’intéresse).This step gets the intents (what the user wants to do) and entities (what things the user is interested in). Le bot génère ensuite une requête qu’il transmet à un service qui sert des informations, comme Recherche Azure pour récupérer des documents, QnA Maker pour des questions fréquentes (FAQ) ou une base de connaissances personnalisée.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. Le bot utilise ces résultats pour construire une réponse.The bot uses these results to construct a response. Pour obtenir les meilleurs résultats d’une requête donnée, le bot peut effectuer plusieurs appels bidirectionnels à ces services à distance.To give the best result for a given query, the bot might make several back-and-forth calls to these remote services.

Réponse.Response. À ce stade, le bot a déterminé la meilleure réponse et l’envoie à l’utilisateur.At this point, the bot has determined the best response and sends it to the user. Si le score de confiance de la meilleure réponse est faible, la réponse peut être une question visant à lever les ambiguïtés ou une reconnaissance de l’incapacité du bot à répondre de manière adéquate.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.

Journalisation.Logging. Lors de la réception d’une demande de l’utilisateur ou de l’envoi d’une réponse, toutes les actions de conversation doivent être journalisées dans un magasin de journalisation, ainsi que les mesures de performances et les erreurs générales des services externes.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. Ces journaux d’activité se montreront utiles ultérieurement pour diagnostiquer les problèmes et améliorer le système.These logs will be useful later when diagnosing issues and improving the system.

Commentaires.Feedback. Une autre bonne pratique consiste à collecter les commentaires des utilisateurs et les niveaux de satisfaction.Another good practice is to collect user feedback and satisfaction scores. Dans le cadre d’un suivi consécutif à la réponse finale du bot, ce dernier doit demander à l’utilisateur d’évaluer s’il est satisfait de la réponse.As a follow up to the bot's final response, the bot should ask the user to rate their satisfaction with the reply. Les commentaires peuvent vous aider à résoudre le problème lié à la compréhension du langage naturel lors du démarrage à froid, afin d’améliorer constamment la précision des réponses.Feedback can help you to solve the cold start problem of natural language understanding, and continually improve the accuracy of responses.

Flux de données systèmeSystem Data Flow

ETL.ETL. Le bot s’appuie sur les informations et les connaissances extraites des données brutes par un processus ETL dans le back-end.The bot relies on information and knowledge extracted from the raw data by an ETL process in the backend. Ces données peuvent être structurées (base de données SQL), semi-structurées (système CRM, questions fréquentes (FAQ)) ou non structurées (documents Word, PDF, journaux d’activité web).This data might be structured (SQL database), semi-structured (CRM system, FAQs), or unstructured (Word documents, PDFs, web logs). Un sous-système ETL extrait les données selon une planification fixe.An ETL subsystem extracts the data on a fixed schedule. Le contenu est transformé et enrichi, puis chargé dans un magasin de données intermédiaire, comme Cosmos DB ou Stockage Blob Azure.The content is transformed and enriched, then loaded into an intermediary data store, such as Cosmos DB or Azure Blob Storage.

Les données contenues dans le magasin intermédiaire sont ensuite indexées dans Recherche Azure à des fins de récupération de documents, chargées dans QnA Maker pour créer des paires question/réponse ou chargées dans une application web personnalisée à des fins de traitement de texte non structuré.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. Les données sont également utilisées pour entraîner un modèle LUIS à l’extraction des intentions et entités.The data is also used to train a LUIS model for intent and entity extraction.

Assurance qualité.Quality assurance. Les journaux d’activité de conversation sont utilisés pour diagnostiquer et corriger des bogues, fournir un aperçu de la façon dont le bot est utilisé et effectuer le suivi des performances globales.The conversation logs are used to diagnose and fix bugs, provide insight into how the bot is being used, and track overall performance. Les données de commentaires s’avèrent utiles pour réentraîner les modèles d’intelligence artificielle afin d’améliorer les performances du bot.Feedback data is useful for retraining the AI models to improve bot performance.

Création d’un botBuilding a bot

Avant même d’écrire la moindre ligne de code, il est important d’écrire une spécification fonctionnelle pour donner à l’équipe de développeurs une idée précise de ce que le bot est censé faire.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. Cette spécification doit inclure la liste relativement complète des entrées utilisateur et les réponses attendues du bot dans différents domaines de connaissances.The specification should include a reasonably comprehensive list of user inputs and expected bot responses in various knowledge domains. Ce document vital constitue un guide précieux pour développer et tester votre bot.This living document will be an invaluable guide for developing and testing your bot.

Réception de donnéesIngest data

Ensuite, identifiez les sources de données qui vont permettre au bot d’interagir de façon intelligente avec les utilisateurs.Next, identify the data sources that will enable the bot to interact intelligently with users. Comme mentionné précédemment, ces sources de données peuvent contenir des jeux de données structurées, semi-structurées ou non structurées.As mentioned earlier, these data sources could contain structured, semi-structured, or unstructured data sets. Dans un premier temps, une bonne approche consiste à effectuer une copie unique des données dans un magasin central, comme Cosmos DB ou Stockage Azure.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. Par la suite, il est préférable de créer un pipeline d’ingestion de données automatisée pour tenir ces données à jour.As you progress, you should create an automated data ingestion pipeline to keep this data current. Les options utilisables pour un pipeline d’ingestion automatisée incluent Data Factory, Functions et Logic Apps.Options for an automated ingestion pipeline include Data Factory, Functions, and Logic Apps. Selon les magasins de données et les schémas, vous pouvez peut-être utiliser une combinaison de ces approches.Depending on the data stores and the schemas, you might use a combination of these approaches.

À vos débuts, il est judicieux d’utiliser le portail Azure pour créer manuellement des ressources Azure.As you get started, it's reasonable to use the Azure portal to manually create Azure resources. Par la suite, pensez plutôt à automatiser le déploiement de ces ressources.Later on, you should put more thought into automating the deployment of these resources.

Logique de bot principale et expérience utilisateurCore bot logic and UX

Une fois que vous avez une spécification et quelques données, il est temps de commencer à confronter votre bot à la réalité.Once you have a specification and some data, it's time to start making your bot into reality. Concentrons-nous sur la logique de bot principale.Let's focus on the core bot logic. Il s’agit du code qui gère la conversation avec l’utilisateur, notamment la logique de routage, la logique de levée d’ambiguïté et la journalisation.This is the code that handles the conversation with the user, including the routing logic, disambiguation logic, and logging. Commencez par vous familiariser avec Bot Framework, notamment les éléments suivants :Start by familiarizing yourself with the Bot Framework, including:

  • Concepts et terminologie de base utilisés dans le framework, en particulier les conversations, les tours et les activités.Basic concepts and terminology used in the framework, especially conversations, turns, and activities.
  • service Bot Connector, qui gère les réseaux entre le bot et vos canaux.The Bot Connector service, which handles the networking between the bot and your channels.
  • Gestion de l’état de la conversation, soit dans la mémoire, soit, encore mieux, dans un magasin comme Stockage Blob Azure ou 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.
  • Middleware (intergiciel) et la façon dont il peut servir à raccorder votre bot avec des services externes, comme Cognitive Services.Middleware, and how it can be used to hook up your bot with external services, such as Cognitive Services.

Pour enrichir l’expérience utilisateur, il existe de nombreuses options.For a rich user experience, there are many options.

  • Vous pouvez utiliser des cartes pour inclure des boutons, des images, des carrousels et des menus.You can use cards to include buttons, images, carousels, and menus.
  • Un bot peut prendre en charge des fonctions vocales.A bot can support speech.
  • Vous pouvez même incorporer votre bot dans une application ou un site web pour utiliser les fonctionnalités de l’application qui l’héberge.You can even embed your bot in an app or website and use the capabilities of the app hosting it.

Pour commencer, vous pouvez générer votre bot en ligne à l’aide d’Azure Bot Service, en sélectionnant parmi les modèles C# et Node.js disponibles.To get started, you can build your bot online using the Azure Bot Service, selecting from the available C# and Node.js templates. À mesure que votre bot devient plus sophistiqué, en revanche, vous avez besoin de le créer localement, puis de le déployer sur le web.As your bot gets more sophisticated, however, you will need to create your bot locally then deploy it to the web. Choisissez un environnement de développement intégré (IDE), comme Visual Studio ou Visual Studio Code, ainsi qu’un langage de programmation.Choose an IDE, such as Visual Studio or Visual Studio Code, and a programming language. Des SDK sont disponibles pour les langages suivants :SDKs are available for the following languages:

Pour démarrer, vous pouvez télécharger le code source du bot que vous avez créé à l’aide d’Azure Bot Service.As a starting point, you can download the source code for the bot you created using the Azure Bot Service. Vous pouvez également rechercher un exemple de code, qu’il s’agisse de simples bots d’écho ou de bots plus sophistiqués qui s’intègrent à divers services d’intelligence artificielle.You can also find sample code, from simple echo bots to more sophisticated bots that integrate with various AI services.

Donner de la jugeote à votre botAdd smarts to your bot

Pour un bot simple doté d’une liste de commandes bien définie, vous pouvez peut-être utiliser une approche qui s’appuie sur des règles pour analyser l’entrée utilisateur par le biais de l’expression régulière.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. Cela présente l’avantage d’être déterministe et compréhensible.This has the advantage of being deterministic and understandable. Toutefois, quand votre bot a besoin de comprendre les intentions et les entités d’un message en langage plus naturel, des services d’intelligence artificielle peuvent aider.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 est particulièrement conçu pour comprendre les intentions et les entités de l’utilisateur.LUIS is specifically designed to understand user intents and entities. Vous l’entraînez avec une collection ni trop grande ni trop petite d’entrées utilisateur pertinentes et de réponses souhaitées, et il retourne les intentions et les entités du message donné d’un utilisateur.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.

  • Le service Recherche Azure peut fonctionner de concert avec LUIS.Azure Search can work alongside LUIS. Avec Recherche, vous créez des index de recherche sur toutes les données pertinentes.Using Search, you create searchable indexes over all relevant data. Le bot interroge ces index pour obtenir les entités extraites par LUIS.The bot queries these indexes for the entities extracted by LUIS. Recherche Azure prend également en charge les synonymes, ce qui permet d’élargir le champ des correspondances de mots corrects.Azure Search also supports synonyms, which can widen the net of correct word mappings.

  • QnA Maker est un autre service conçu pour retourner des réponses à des questions données.QnA Maker is another service that is designed to return answers for given questions. En règle générale, il est entraîné sur des données semi-structurées comme les questions fréquentes (FAQ).It's typically trained over semi-structured data such as FAQs.

Votre bot peut utiliser d’autres services d’intelligence artificielle pour enrichir davantage l’expérience utilisateur.Your bot can use other AI services to further enrich the user experience. La suite Cognitive Services des services d’intelligence artificielle prédéfinis (qui inclut LUIS et QnA Maker) propose des services de vision, voix, langue, recherche et localisation.The Cognitive Services suite of pre-built AI services (which includes LUIS and QnA Maker) has services for vision, speech, language, search, and location. Vous pouvez ajouter rapidement des fonctionnalités comme la traduction linguistique, la vérification orthographique, l’analyse des sentiments, la reconnaissance optique de caractères, la localisation et la modération du contenu.You can quickly add functionality such as language translation, spell checking, sentiment analysis, OCR, location awareness, and content moderation. Ces services peuvent être connectés sous forme de modules de middleware dans votre bot pour interagir de manière plus naturelle et intelligente avec l’utilisateur.These services can be wired up as middleware modules in your bot to interact more naturally and intelligently with the user.

Une autre option consiste à intégrer votre propre service d’intelligence artificielle personnalisé.Another option is to integrate your own custom AI service. Cette approche est plus complexe, mais elle vous donne une entière flexibilité dans l’algorithme de machine learning, l’entraînement et le modèle.This approach is more complex, but gives you complete flexibility in terms of the machine learning algorithm, training, and model. Par exemple, vous pouvez implémenter votre propre modélisation et utiliser un algorithme comme LDA pour rechercher des documents similaires ou pertinents.For example, you could implement your own topic modeling and use algorithm such as LDA to find similar or relevant documents. Une bonne approche consiste à exposer votre solution d’intelligence artificielle personnalisée en tant que point de terminaison de service web, puis à appeler le point de terminaison à partir de la logique de bot principale.A good approach is to expose your custom AI solution as a web service endpoint, and call the endpoint from the core bot logic. Le service web peut être hébergé dans App Service ou dans un cluster de machines virtuelles.The web service could be hosted in App Service or in a cluster of VMs. Azure Machine Learning propose plusieurs services et bibliothèques pour vous aider à entraîner et à déployer vos modèles.Azure Machine Learning provides a number of services and libraries to assist you in training and deploying your models.

Assurance qualité et améliorationQuality assurance and enhancement

Journalisation.Logging. Journalisez les conversations de l’utilisateur avec le bot, notamment les mesures de performances sous-jacentes et les erreurs éventuelles.Log user conversations with the bot, including the underlying performance metrics and any errors. Ces journaux d’activité s’avèrent très précieux pour déboguer les problèmes, comprendre les interactions de l’utilisateur et améliorer le système.These logs will prove invaluable for debugging issues, understanding user interactions, and improving the system. Différents magasins de données peuvent convenir à différents types de journaux d’activité.Different data stores might be appropriate for different types of logs. Par exemple, envisagez d’utiliser Application Insights pour les journaux d’activité web, Cosmos DB pour les conversations et Stockage Azure pour les grosses charges utiles.For example, consider Application Insights for web logs, Cosmos DB for conversations, and Azure Storage for large payloads. Consultez Écrire directement dans Stockage Azure.See Write directly to Azure Storage.

Commentaires.Feedback. Il est également important de comprendre le niveau de satisfaction des utilisateurs vis-à-vis de leurs interactions avec le bot.It's also important to understand how satisfied users are with their bot interactions. Si vous avez recueilli les commentaires des utilisateurs, vous pouvez utiliser ces données pour concentrer vos efforts sur l’amélioration de certaines interactions et sur le réentraînement des modèles d’intelligence artificielle à des fins d’amélioration des performances.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. Utilisez les commentaires pour réentraîner les modèles, comme LUIS, dans votre système.Use the feedback to retrain the models, such as LUIS, in your system.

Test.Testing. Tester un bot implique des tests unitaires, des tests d’intégration, des tests de régression et des tests fonctionnels.Testing a bot involves unit tests, integration tests, regression tests, and functional tests. À des fins de test, nous recommandons d’enregistrer des réponses HTTP réelles des services externes, comme Recherche Azure ou QnA Maker, pour qu’elles puissent être lues pendant le test unitaire sans avoir à effectuer des appels réseau réels aux services externes.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.

Notes

Pour lancer votre développement dans ces domaines, reportez-vous à Botbuilder Utils pour JavaScript.To jump-start your development in these areas, look at the Botbuilder Utils for JavaScript. Ce dépôt contient des exemples de code d’utilitaire pour les bots générés avec Microsoft Bot Framework v4 et exécutant Node.js.This repo contains sample utility code for bots built with Microsoft Bot Framework v4 and running Node.js. Il inclut les packages suivants :It includes the following packages:

Ces packages sont fournis sous forme d’exemple de code d’utilitaire, sans aucune garantie de prise en charge ni mise à jour.These packages are provided as utility sample code, and come with no guarantee of support or updates.

Considérations relatives à la disponibilitéAvailability considerations

Quand vous lancez de nouvelles fonctionnalités ou de nouveaux correctifs de bugs dans votre bot, préférez utiliser plusieurs environnements de déploiement, tels que des environnements de préproduction et de production.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. L’utilisation des emplacements de déploiement Azure DevOps vous permet de le faire sans temps d’arrêt.Using deployment slots from Azure DevOps allows you to do this with zero downtime. Vous pouvez tester vos dernières mises à niveau dans l’environnement de préproduction avant de les passer à l’environnement de production.You can test your latest upgrades in the staging environment before swapping them to the production environment. En termes de gestion de la charge, App Service est conçu pour effectuer un scale-up ou un scale-out manuellement ou automatiquement.In terms of handling load, App Service is designed to scale up or out manually or automatically. Étant donné que votre bot est hébergé dans l’infrastructure mondiale des centres de données de Microsoft, vous bénéficiez de garanties sur la haute disponibilité du SLA App Service.Because your bot is hosted in Microsoft's global datacenter infrastructure, the App Service SLA promises high availability.

Considérations relatives à la sécuritéSecurity considerations

Comme avec toute autre application, le bot peut être conçu pour gérer des données sensibles.As with any other application, the bot can be designed to handle sensitive data. Ainsi, veillez à limiter les personnes qui peuvent se connecter au bot et l’utiliser.Therefore, restrict who can sign in and use the bot. Limitez également les données accessibles, en fonction de l’identité ou du rôle de l’utilisateur.Also limit which data can be accessed, based on the user's identity or role. Utilisez Azure AD pour l’identité et le contrôle d’accès et Key Vault pour gérer les clés et les secrets.Use Azure AD for identity and access control and Key Vault to manage keys and secrets.

Considérations relatives à DevOpsDevOps considerations

Surveillance et création de rapportsMonitoring and reporting

Une fois que votre bot s’exécute en production, vous avez besoin d’une équipe DevOps pour que cela continue.Once your bot is running in production, you will need a DevOps team to keep it that way. Supervisez en permanence le système pour maintenir le fonctionnement du bot à son niveau optimal.Continually monitor the system to ensure the bot operates at peak performance. Utilisez les journaux d’activité envoyés à Application Insights ou Cosmos DB pour créer des tableaux de bord de supervision, en utilisant Application Insights lui-même, Power BI ou un tableau de bord d’application web personnalisé.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. Envoyez des alertes à l’équipe DevOps si des erreurs critiques se produisent ou si les performances chutent en dessous d’un seuil acceptable.Send alerts to the DevOps team if critical errors occur or performance falls below an acceptable threshold.

Déploiement automatisé des ressourcesAutomated resource deployment

Le bot lui-même n’est qu’une partie d’un système plus large qui lui fournit les données les plus récentes et garantit son bon fonctionnement.The bot itself is only part of a larger system that provides it with the latest data and ensures its proper operation. Toutes ces autres ressources Azure — services d’orchestration des données comme Data Factory, services de stockage comme Cosmos DB, etc. — doivent être déployées.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 fournit une couche de gestion cohérente à laquelle vous pouvez accéder par le biais du portail Azure, de PowerShell ou d’Azure CLI.Azure Resource Manager provides a consistent management layer that you can access through the Azure portal, PowerShell, or the Azure CLI. À des fins de rapidité et de cohérence, il est préférable d’automatiser votre déploiement en utilisant l’une de ces approches.For speed and consistency, it's best to automate your deployment using one of these approaches.

Déploiement en continu du botContinuous bot deployment

Vous pouvez déployer la logique de bot directement à partir de votre environnement de développement intégré (IDE) ou à partir d’une ligne de commande, comme Azure CLI.You can deploy the bot logic directly from your IDE or from a command line, such as the Azure CLI. Toutefois, quand votre bot est plus abouti, il est préférable d’utiliser un processus de déploiement continu à l’aide d’une solution CI/CD comme Azure DevOps, comme décrit dans l’article Configurer le déploiement continu.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. Ainsi, vous réduisez les frictions liées au test des nouvelles fonctionnalités et nouveaux correctifs dans votre bot dans un environnement proche de celui de production.This is a good way to ease the friction in testing new features and fixes in your bot in a near-production environment. Il est également judicieux d’avoir plusieurs environnements de déploiement, en général au moins un environnement de préproduction et un environnement de production.It's also a good idea to have multiple deployment environments, typically at least staging and production. Azure DevOps prend en charge cette approche.Azure DevOps supports this approach.

Considérations relatives au coûtCost considerations

Utiliser la calculatrice de prix Azure pour estimer les coûts.Use the Azure pricing calculator to estimate costs. Voici quelques autres éléments à prendre en compte :Here are some other considerations.

Application botBot application

Dans cette architecture, le principal coût est le service Azure App Service dans lequel la logique de l’application bot est hébergée.In this architecture, the main cost driver is the Azure App Service in which the bot application logic is hosted. Choisissez un niveau de plan App Service qui répond le mieux à vos besoins.Choose an App Service plan tier that best suits your needs. Voici quelques recommandations :Here are some recommendations:

  • Utilisez les niveaux Gratuit et Partagé (préversion) à des fins de test car les ressources partagées ne peuvent pas faire l'objet d'un scale-out.Use Free and Shared (preview) tiers for testing purposes because the shared resources cannot scale out.
  • Exécutez votre charge de travail de production sur les niveaux De base, Standard et Premium car l'application s'exécute sur des instances de machine virtuelle dédiées et dispose de ressources allouées qui peuvent faire l'objet d'un scale-out. Les plans App Service sont facturés par seconde.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.

Vous serez facturé pour les instances dans le plan App Service, même si l’application est arrêtée.You are charged for the instances in the App Service plan, even when the app is stopped. Supprimez les plans que vous n’envisagez pas d’utiliser à long terme, tels que les déploiements de test.Delete plans that you don't intend to use long term, such as test deployments.

Pour plus d’informations, consultez Combien coûte mon plan App Service ?.For more information, see How much does my App Service plan cost?.

Ingestion de donnéesData ingestion

  • Azure Data FactoryAzure Data Factory

    Dans cette architecture, Data Factory automatise le pipeline d’ingestion des données.In this architecture, Data Factory automates the data ingestion pipeline. Explorez une gamme de fonctionnalités d’intégration de données adaptées à vos besoins en matière de budget, des services gérés SQL Server Integration Services pour la migration transparente des projets SQL Server vers le cloud (option rentable), aux pipelines de données à grande échelle et serverless pour l’intégration de données de toutes les formes et de toutes les tailles.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.

    Pour obtenir un exemple, consultez Azure Data Factory : exemple d’analyse des coûts.For an example, see Azure Data Factory - example cost analysis.

  • Azure FunctionsAzure Functions

    Dans cette architecture de référence, Azure Functions est facturé selon le plan de consommation.In this reference architecture, Azure Functions is billed as per the Consumption plan. La consommation de ressources vous est facturée par seconde et chaque fois qu’un événement déclenche l’exécution de la fonction.You are charged based on per-second resource consumption and each time an event triggers the execution of the function. Le traitement de plusieurs événements en une seule exécution ou par lots peut réduire les coûts.Processing several events in a single execution or batches can reduce cost.

    Azure met à l’échelle l’infrastructure requise pour exécuter les fonctions si nécessaire.Azure scales the infrastructure required to run functions as needed. Lorsque la charge de travail est faible, l’infrastructure est mise à l’échelle jusqu’à zéro sans coût associé.When workload is low, the infrastructure is scaled down up to zero with no associated cost. À chaque fois que la charge de travail augmente, Azure utilise une capacité suffisante pour répondre à toutes les requêtes.Whenever the workload grows, Azure uses enough capacity to serve all the demand. Étant donné que vous payez à l’usage réel, gérez le coût exact de chaque composant.Because you pay per actual use, manage the exact cost of each component.

Logic AppsLogic Apps

Les tarifs de Logic Apps reposent sur le modèle de paiement à l’utilisation.Logic apps pricing works on the pay-as-you-go model. Logic Apps dispose d’un modèle de tarification avec paiement à l’accès.Logic apps have a pay-as-you-go pricing model. Les déclencheurs, les actions et les exécutions de connecteur sont comptabilisés chaque fois qu’une application logique s’exécute.Triggers, actions, and connector executions are metered each time a logic app runs. Toutes les actions qui réussissent et échouent, notamment les déclencheurs, sont considérées comme des exécutions.All successful and unsuccessful actions, including triggers, are considered as executions.

Par exemple, votre application logique traite 1 000 messages par jour en provenance de Azure Service Bus.For instance, your logic app processes 1000 messages a day from Azure Service Bus. Un workflow de cinq actions coûte moins de 6 USD.A workflow of five actions will cost less than $6. Pour plus d’informations, consultez Tarifs Logic Apps.For more information, see Logic Apps pricing.

Pour accéder à d’autres considérations de coût, consultez la section Coûts de Microsoft Azure Well-Architected Framework.For other cost considerations, see the Cost section in Microsoft Azure Well-Architected Framework.

Étapes suivantesNext Steps

  • Passez en revue le modèle Virtual Assistant pour commencer à créer rapidement des bots conversationnel.Review the Virtual Assistant template to quickly get started building conversational bots.