Bot de conversación de nivel empresarialEnterprise-grade conversational bot

Esta arquitectura de referencia describe cómo crear un bot de conversación de nivel empresarial (chat) mediante Azure bot Framework.This reference architecture describes how to build an enterprise-grade conversational bot (chatbot) using the Azure Bot Framework. Cada bot es diferente, pero hay algunos patrones, flujos de trabajo y tecnologías comunes que se deben tener en cuenta.Each bot is different, but there are some common patterns, workflows, and technologies to be aware of. En concreto, para que un bot atienda cargas de trabajo empresariales, hay muchos aspectos de diseño que se deben tener en cuenta más allá de simplemente la funcionalidad básica.Especially for a bot to serve enterprise workloads, there are many design considerations beyond just the core functionality. En este artículo se tratan los aspectos de diseño más esenciales y se presentan las herramientas necesarias para crear un bot sólido, seguro y de aprendizaje activo.This article covers the most essential design aspects, and introduces the tools needed to build a robust, secure, and actively learning bot.

Diagrama de la arquitecturaDiagram of the architecture

Descargue un archivo Visio de esta arquitectura.Download a Visio file of this architecture.

Los ejemplos de la utilidad de procedimientos recomendados que se usan en esta arquitectura son totalmente de código abierto y están disponibles en GitHub.The best practice utility samples used in this architecture are fully open-sourced and available on GitHub.

ArquitecturaArchitecture

En la arquitectura que se muestra a continuación se emplean los siguientes servicios de Azure.The architecture shown here uses the following Azure services. Puede que su propio bot no use todos estos servicios o que se incorporen servicios adicionales.Your own bot may not use all of these services, or may incorporate additional services.

Lógica del bot y experiencia del usuarioBot logic and user experience

  • Servicio de bot Framework (BFS).Bot Framework Service (BFS). Este servicio conecta el bot a una aplicación de comunicación, como Cortana, Facebook Messenger o Slack.This service connects your bot to a communication app such as Cortana, Facebook Messenger, or Slack. Lo que hace es facilitar la comunicación entre su bot y el usuario.It facilitates communication between your bot and the user.
  • Azure App Service .Azure App Service. La lógica de aplicación del bot se hospeda en Azure App Service.The bot application logic is hosted in Azure App Service.

Inteligencia y conocimiento del botBot cognition and intelligence

  • Language Understanding (LUIS).Language Understanding (LUIS). Como parte de Azure Cognitive Services, Luis permite que el bot entienda el lenguaje natural mediante la identificación de las entidades y los intentos de los usuarios.Part of Azure Cognitive Services, LUIS enables your bot to understand natural language by identifying user intents and entities.
  • Azure Search .Azure Search. Search es un servicio administrado que proporciona un índice rápido de documentos que permiten búsqueda.Search is a managed service that provides a quick searchable document index.
  • QnA Maker .QnA Maker. QnA Maker es un servicio de API basado en la nube que crea una capa de conversación, preguntas y respuestas mediante los datos.QnA Maker is a cloud-based API service that creates a conversational, question-and-answer layer over your data. Normalmente, se carga con contenido semiestructurado, como preguntas frecuentes.Typically, it's loaded with semi-structured content such as FAQs. Úselo para crear una base de conocimiento para responder a preguntas en lenguaje natural.Use it to create a knowledge base for answering natural-language questions.
  • Aplicación web .Web app. Si su bot necesita soluciones de inteligencia artificial que no proporciona un servicio existente, puede implementar su propia inteligencia artificial personalizada y hospedarla como una aplicación 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. De esta forma se proporciona un punto de conexión web al que llama el bot.This provides a web endpoint for your bot to call.

Ingesta de datosData ingestion

El bot se basará en datos sin procesar que se deben ingerir y preparar.The bot will rely on raw data that must be ingested and prepared. Considere cualquiera de las siguientes opciones para organizar este proceso:Consider any of the following options to orchestrate this process:

  • Azure Data Factory .Azure Data Factory. Data Factory organiza y automatiza el movimiento y la transformación de datos.Data Factory orchestrates and automates data movement and data transformation.
  • Logic apps .Logic Apps. Logic Apps es una plataforma sin servidor para la creación de flujos de trabajo que integran aplicaciones, datos y servicios.Logic Apps is a serverless platform for building workflows that integrate applications, data, and services. Logic Apps proporciona conectores de datos para muchas aplicaciones, incluido Office 365.Logic Apps provides data connectors for many applications, including Office 365.
  • Azure Functions .Azure Functions. Puede usar Azure Functions para escribir código personalizado sin servidor que se invoca mediante un desencadenador —, por ejemplo, cada vez que se agrega un documento al almacenamiento de blobs o 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.

Registro y supervisiónLogging and monitoring

  • Application Insights .Application Insights. Use Application Insights para registrar las métricas de aplicación del bot con fines de análisis, supervisión y diagnóstico.Use Application Insights to log the bot's application metrics for monitoring, diagnostic, and analytical purposes.
  • Azure BLOB Storage .Azure Blob Storage. Blob Storage está optimizado para el almacenamiento de cantidades masivas de datos no estructurados.Blob storage is optimized for storing massive amounts of unstructured data.
  • Cosmos dB .Cosmos DB. Cosmos DB está totalmente indicado para almacenar datos de registro semiestructurados, como las conversaciones.Cosmos DB is well-suited for storing semi-structured log data such as conversations.
  • Power BI .Power BI. Use Power BI para crear paneles de supervisión para el bot.Use Power BI to create monitoring dashboards for your bot.

Seguridad y gobernanzaSecurity and governance

Control de calidad y mejorasQuality assurance and enhancements

  • Azure DevOps .Azure DevOps. Proporciona muchos servicios para la administración de aplicaciones, como control de código fuente, compilación, prueba, implementación y seguimiento de proyectos.Provides many services for app management, including source control, building, testing, deployment, and project tracking.
  • Vs Code Un editor de código ligero para el desarrollo de aplicaciones.VS Code A lightweight code editor for app development. Puede usar cualquier otro IDE con características similares.You can use any other IDE with similar features.

Consideraciones de diseñoDesign considerations

En líneas generales, un bot conversacional se puede dividir en la funcionalidad del bot (el "cerebro") y un conjunto de requisitos adyacentes (el "cuerpo").At a high level, a conversational bot can be divided into the bot functionality (the "brain") and a set of surrounding requirements (the "body"). El cerebro incluye los componentes dependientes del dominio, como la lógica del bot y las funcionalidades de ML.The brain includes the domain-aware components, including the bot logic and ML capabilities. Otros componentes son independientes del dominio y abordan los requisitos no funcionales como CI/CD, control de calidad y seguridad.Other components are domain agnostic and address non-functional requirements such as CI/CD, quality assurance, and security.

Diagrama lógico de la funcionalidad del bot

Antes de entrar en los detalles de esta arquitectura, comencemos con el flujo de datos que recorre cada subcomponente del diseño.Before getting into the specifics of this architecture, let's start with the data flow through each subcomponent of the design. El flujo de datos incluye flujos de datos iniciados por el sistema e iniciados por el usuario.The data flow includes user-initiated and system-initiated data flows.

Flujo de mensajes de usuarioUser message flow

Autenticación.Authentication. Para comenzar, los usuarios se autentican mediante cualquier mecanismo proporcionado por su canal de comunicación con el bot.Users start by authenticating themselves using whatever mechanism is provided by their channel of communication with the bot. Bot Framework admite muchos canales de comunicación, como Cortana, Microsoft Teams, Facebook Messenger, Kik y Slack.The bot framework supports many communication channels, including Cortana, Microsoft Teams, Facebook Messenger, Kik, and Slack. Para ver una lista de canales, consulte Conexión de un bot a canales.For a list of channels, see Connect a bot to channels. Cuando se crea un bot con Azure Bot Service, el canal de chat web se configura automáticamente.When you create a bot with Azure Bot Service, the Web Chat channel is automatically configured. Este canal permite a los usuarios interactuar con el bot directamente en una página web.This channel allows users to interact with your bot directly in a web page. También puede conectar el bot a una aplicación personalizada mediante el canal Direct Line.You can also connect the bot to a custom app by using the Direct Line channel. La identidad del usuario se usa para proporcionar control de acceso basado en rol, así como para servir contenido personalizado.The user's identity is used to provide role-based access control, as well as to serve personalized content.

Mensaje de usuario.User message. Una vez autenticado, el usuario envía un mensaje al bot.Once authenticated, the user sends a message to the bot. El bot lee el mensaje y lo enruta a un servicio de comprensión de lenguaje natural, como LUIS.The bot reads the message and routes it to a natural language understanding service such as LUIS. En este paso se obtienen las intenciones (lo que el usuario quiere hacer) y las entidades (las cosas que le interesan al usuario).This step gets the intents (what the user wants to do) and entities (what things the user is interested in). A continuación, el bot crea una consulta que pasa a un servicio que proporciona información, como Azure Search para la recuperación de documentos, QnA Maker para preguntas más frecuentes o una base de conocimiento personalizada.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. El bot usa estos resultados para construir una respuesta.The bot uses these results to construct a response. Para proporcionar el mejor resultado a una consulta determinada, el bot puede realizar varias llamadas de un lado para otro a estos servicios remotos.To give the best result for a given query, the bot might make several back-and-forth calls to these remote services.

Respuesta.Response. En este momento, el bot ha determinado la mejor respuesta y la envía al usuario.At this point, the bot has determined the best response and sends it to the user. Si la puntuación de confianza de la respuesta con mejor coincidencia es baja, la respuesta podría ser una pregunta de desambiguación o una confirmación de que el bot no podía responder adecuadamente.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.

Registro.Logging. Cuando se recibe una solicitud de usuario o se envía una respuesta, se deben registrar todas las acciones de la conversación en un almacén de registro, junto con las métricas de rendimiento y los errores generales de servicios externos.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. Estos registros serán útiles más adelante a la hora de diagnosticar problemas y mejorar el sistema.These logs will be useful later when diagnosing issues and improving the system.

Comentarios.Feedback. Otra buena práctica consiste en recopilar los comentarios y las puntuaciones de satisfacción de los usuarios.Another good practice is to collect user feedback and satisfaction scores. Como seguimiento a la respuesta final del bot, este debe pedir al usuario que valore su grado de satisfacción con la respuesta.As a follow up to the bot's final response, the bot should ask the user to rate their satisfaction with the reply. Los comentarios pueden ayudarle a resolver el problema de arranque en frío de comprensión del lenguaje natural y a mejorar continuamente la precisión de las respuestas.Feedback can help you to solve the cold start problem of natural language understanding, and continually improve the accuracy of responses.

Flujo de datos del sistemaSystem Data Flow

ETL.ETL. El bot se basa en la información y los conocimientos extraídos de los datos sin procesar mediante un proceso de ETL en el back-end.The bot relies on information and knowledge extracted from the raw data by an ETL process in the backend. Estos datos pueden ser estructurados (base de datos SQL), semiestructurados (sistema CRM, preguntas frecuentes) o no estructurados (documentos de Word, PDF, registros web).This data might be structured (SQL database), semi-structured (CRM system, FAQs), or unstructured (Word documents, PDFs, web logs). Un subsistema ETL extrae los datos según una programación fija.An ETL subsystem extracts the data on a fixed schedule. El contenido se transforma y enriquece y luego carga en un almacén de datos intermedio, como Cosmos DB o Azure Blob Storage.The content is transformed and enriched, then loaded into an intermediary data store, such as Cosmos DB or Azure Blob Storage.

A continuación, los datos del almacén intermedio se indexan en Azure Search para la recuperación de documentos, se cargan en QnA Maker para crear pares de preguntas y respuestas o se cargan en una aplicación web personalizada para el procesamiento de texto no estructurado.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. Los datos también se usan para entrenar un modelo de LUIS para la extracción de intenciones y entidades.The data is also used to train a LUIS model for intent and entity extraction.

Control de calidad.Quality assurance. Los registros de conversación se usan para diagnosticar y corregir errores, proporcionar conclusiones sobre cómo se usa un bot y realizar el seguimiento del rendimiento general.The conversation logs are used to diagnose and fix bugs, provide insight into how the bot is being used, and track overall performance. Los datos de comentarios son útiles para volver a entrenar los modelos de AI a fin de mejorar el rendimiento del bot.Feedback data is useful for retraining the AI models to improve bot performance.

Compilación de un botBuilding a bot

Antes de escribir una sola línea de código, es importante escribir una especificación funcional para que el equipo de desarrollo tenga una idea clara de lo que se espera que haga el 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. La especificación debe incluir una lista razonablemente completa de entradas de usuario y las respuestas del bot esperadas en diversos dominios de conocimiento.The specification should include a reasonably comprehensive list of user inputs and expected bot responses in various knowledge domains. Este documento dinámico será una valiosa guía para desarrollar y probar el bot.This living document will be an invaluable guide for developing and testing your bot.

Introducción de datosIngest data

A continuación, identifique los orígenes de datos que permitirán al bot interactuar de forma inteligente con los usuarios.Next, identify the data sources that will enable the bot to interact intelligently with users. Como se ha mencionado anteriormente, estos orígenes de datos podrían contener conjuntos de datos estructurados, semiestructurados o no estructurados.As mentioned earlier, these data sources could contain structured, semi-structured, or unstructured data sets. Al principio, un buen enfoque es hacer una copia puntual de los datos en un almacén central, como Cosmos DB o 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. A medida que avance, deberá crear una canalización de ingesta de datos automatizada para mantener estos datos actualizados.As you progress, you should create an automated data ingestion pipeline to keep this data current. Las opciones de una canalización de ingesta automatizada incluyen Data Factory, Functions y Logic Apps.Options for an automated ingestion pipeline include Data Factory, Functions, and Logic Apps. En función de los almacenes de datos y los esquemas, puede usar una combinación de estos enfoques.Depending on the data stores and the schemas, you might use a combination of these approaches.

En los comienzos, es razonable usar Azure Portal para crear manualmente recursos de Azure.As you get started, it's reasonable to use the Azure portal to manually create Azure resources. Más tarde, debe centrarse más en automatizar la implementación de estos recursos.Later on, you should put more thought into automating the deployment of these resources.

Lógica básica del bot y UXCore bot logic and UX

Una vez que tenga una especificación y algunos datos, es el momento de empezar a hacer realidad su bot.Once you have a specification and some data, it's time to start making your bot into reality. Vamos a centrarnos en la lógica básica del bot.Let's focus on the core bot logic. Este es el código que controla la conversación con el usuario, lo que incluye la lógica de enrutamiento, la lógica de desambiguación y el registro.This is the code that handles the conversation with the user, including the routing logic, disambiguation logic, and logging. Empiece a familiarizarse con Bot Framework, incluidos:Start by familiarizing yourself with the Bot Framework, including:

  • Los conceptos básicos y la terminología usada en el marco de trabajo, en especial conversaciones, turnos y actividades.Basic concepts and terminology used in the framework, especially conversations, turns, and activities.
  • El servicio Bot Connector, que controla la interconexión entre el bot y los canales.The Bot Connector service, which handles the networking between the bot and your channels.
  • Cómo se mantiene el estado de la conversación, bien en memoria o, mejor aún, en un almacén como Azure Blob Storage o 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.
  • El middleware, y cómo se puede usar para enlazar el bot con servicios externos, como Cognitive Services.Middleware, and how it can be used to hook up your bot with external services, such as Cognitive Services.

Para enriquecer la experiencia del usuario, hay muchas opciones.For a rich user experience, there are many options.

  • Puede usar tarjetas para incluir botones, imágenes, carruseles y menús.You can use cards to include buttons, images, carousels, and menus.
  • Un bot puede admitir voz.A bot can support speech.
  • Incluso puede insertar el bot en una aplicación o sitio web y usar las funcionalidades de la aplicación que lo hospeda.You can even embed your bot in an app or website and use the capabilities of the app hosting it.

Para comenzar, puede crear su bot en línea mediante Azure Bot Service; para ello, seleccione entre las plantillas de C# y 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. Sin embargo, a medida que el bot se haga más sofisticado, deberá crear el bot localmente y, luego, implementarlo en la web.As your bot gets more sophisticated, however, you will need to create your bot locally then deploy it to the web. Elija un IDE, como Visual Studio o Visual Studio Code, y un lenguaje de programación.Choose an IDE, such as Visual Studio or Visual Studio Code, and a programming language. Hay disponibles SDK para los siguientes lenguajes:SDKs are available for the following languages:

Como punto de partida, puede descargar el código fuente del bot que creó con Azure Bot Service.As a starting point, you can download the source code for the bot you created using the Azure Bot Service. También puede encontrar ejemplo de código, desde bots de eco sencillos a bots más sofisticados que se integran con diversos servicios de inteligencia artificial.You can also find sample code, from simple echo bots to more sophisticated bots that integrate with various AI services.

Incorporación de inteligencia al botAdd smarts to your bot

En el caso de un bot sencillo con una lista de comandos bien definida, podría usar un enfoque basado en reglas para analizar la entrada del usuario mediante regex.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. La ventaja de este enfoque es que es determinista y comprensible.This has the advantage of being deterministic and understandable. Sin embargo, cuando el bot necesite comprender las intenciones y entidades de un mensaje en un lenguaje más natural, hay servicios de inteligencia artificial que pueden ayudar.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á diseñado específicamente para comprender las intenciones y entidades de los usuarios.LUIS is specifically designed to understand user intents and entities. Se entrena con una colección de tamaño medio de entradas de usuario apropiadas y respuestas deseadas, y devuelve las intenciones y entidades para el mensaje de un usuario determinado.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 puede funcionar en combinación con LUIS.Azure Search can work alongside LUIS. Con Search, se crean índices que permiten búsqueda sobre todos los datos apropiados.Using Search, you create searchable indexes over all relevant data. El bot consulta estos índices para encontrar las entidades extraídas por LUIS.The bot queries these indexes for the entities extracted by LUIS. Azure Search también admite sinónimos, que puede ampliar la red de las asignaciones de palabras correctas.Azure Search also supports synonyms, which can widen the net of correct word mappings.

  • QnA Maker es otro servicio que está diseñado para devolver respuestas a preguntas dadas.QnA Maker is another service that is designed to return answers for given questions. Normalmente se entrena sobre datos semiestructurados, como preguntas frecuentes.It's typically trained over semi-structured data such as FAQs.

El bot puede usar otros servicios de inteligencia artificial para enriquecer todavía más la experiencia del usuario.Your bot can use other AI services to further enrich the user experience. El conjunto de aplicaciones de Cognitive Services de servicios de inteligencia artificial pregenerados (que incluye LUIS y QnA Maker) dispone de servicios de visión, voz, lenguaje, búsqueda y ubicación.The Cognitive Services suite of pre-built AI services (which includes LUIS and QnA Maker) has services for vision, speech, language, search, and location. Puede agregar rápidamente funcionalidades, como traducción de idiomas, corrector ortográfico, análisis de opiniones, OCR, reconocimiento de ubicación y moderación de contenido.You can quickly add functionality such as language translation, spell checking, sentiment analysis, OCR, location awareness, and content moderation. Estos servicios pueden estar conectados en el bot como módulos de middleware para interactuar de forma más natural e inteligente con el usuario.These services can be wired up as middleware modules in your bot to interact more naturally and intelligently with the user.

Otra opción consiste en integrar su propio servicio de inteligencia artificial personalizado.Another option is to integrate your own custom AI service. Este enfoque es más complejo, pero le ofrece una flexibilidad completa en cuanto al algoritmo, el entrenamiento y el modelo de aprendizaje automático.This approach is more complex, but gives you complete flexibility in terms of the machine learning algorithm, training, and model. Por ejemplo, puede implementar su propio algoritmo de modelado y uso de su propio algoritmo, como LDA , para buscar documentos similares o pertinentes.For example, you could implement your own topic modeling and use algorithm such as LDA to find similar or relevant documents. Un buen enfoque es exponer la solución de inteligencia artificial personalizada como un punto de conexión de servicio web y llamar al punto de conexión desde la lógica básica del 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. El servicio web podría hospedarse en App Service o en un clúster de máquinas virtuales.The web service could be hosted in App Service or in a cluster of VMs. Azure machine learning proporciona una serie de servicios y bibliotecas que le ayudarán a entrenar e implementar los modelos.Azure Machine Learning provides a number of services and libraries to assist you in training and deploying your models.

Control de calidad y mejoraQuality assurance and enhancement

Registro.Logging. Registre las conversaciones del usuario con el bot, como las métricas de rendimiento subyacente y los posibles errores.Log user conversations with the bot, including the underlying performance metrics and any errors. Estos registros son muy valiosos para depurar problemas, comprender las interacciones del usuario y mejorar el sistema.These logs will prove invaluable for debugging issues, understanding user interactions, and improving the system. Distintos almacenes de datos podrían ser adecuados para distintos tipos de registros.Different data stores might be appropriate for different types of logs. Por ejemplo, podría usar Application Insights para registros web, Cosmos DB para conversaciones y Azure Storage para grandes cargas.For example, consider Application Insights for web logs, Cosmos DB for conversations, and Azure Storage for large payloads. Consulte escribir directamente en Azure Storage.See Write directly to Azure Storage.

Comentarios.Feedback. También es importante comprender el grado de satisfacción de los usuarios con sus interacciones del bot.It's also important to understand how satisfied users are with their bot interactions. Si tiene un registro de comentarios del usuario, puede usar estos datos para centrar su trabajo en mejorar ciertas interacciones y volver a entrenar los modelos de inteligencia artificial para mejorar el rendimiento.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. Use los comentarios para volver a entrenar los modelos, por ejemplo, LUIS, en el sistema.Use the feedback to retrain the models, such as LUIS, in your system.

Prueba.Testing. Probar un bot supone pruebas unitarias, pruebas de integración, pruebas de regresión y pruebas funcionales.Testing a bot involves unit tests, integration tests, regression tests, and functional tests. Para las pruebas, se recomienda registrar las respuestas HTTP reales de servicios externos, como Azure Search o QnA Maker, para que se puedan reproducir durante la prueba unitaria sin necesidad de realizar llamadas de red reales a servicios externos.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.

Nota

Para iniciar el desarrollo en estas áreas, examine las utilidades de Botbuilder para JavaScript.To jump-start your development in these areas, look at the Botbuilder Utils for JavaScript. Este repositorio contiene código de utilidad de ejemplo para bots compilados con Microsoft bot Framework V4 y que ejecutan node. js.This repo contains sample utility code for bots built with Microsoft Bot Framework v4 and running Node.js. Incluye los siguientes paquetes:It includes the following packages:

Estos paquetes se proporcionan como ejemplo de código de utilidades y se incluyen sin garantía de compatibilidad o actualización.These packages are provided as utility sample code, and come with no guarantee of support or updates.

Consideraciones sobre disponibilidadAvailability considerations

Al implementar nuevas características o corregir errores en el bot, es mejor usar varios entornos de implementación, como ensayo y producción.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. El uso de ranuras de implementación de Azure DevOps le permite hacer esto sin tiempo de inactividad.Using deployment slots from Azure DevOps allows you to do this with zero downtime. Puede probar las actualizaciones más recientes en el entorno de ensayo antes de pasarlas al entorno de producción.You can test your latest upgrades in the staging environment before swapping them to the production environment. En términos de control de carga, App Service está diseñado para escalarse vertical u horizontalmente de forma manual o automática.In terms of handling load, App Service is designed to scale up or out manually or automatically. Como el bot se hospeda en la infraestructura del centro de datos global de Microsoft, el Acuerdo de Nivel de Servicio de App Service promete alta disponibilidad.Because your bot is hosted in Microsoft's global datacenter infrastructure, the App Service SLA promises high availability.

Consideraciones sobre la seguridadSecurity considerations

Al igual que con cualquier otra aplicación, el bot puede diseñarse para gestionar datos confidenciales.As with any other application, the bot can be designed to handle sensitive data. Por lo tanto, restrinja quién puede iniciar sesión y usar el bot.Therefore, restrict who can sign in and use the bot. También, limite a qué datos se puede tener acceso, según la identidad o el rol del usuario.Also limit which data can be accessed, based on the user's identity or role. Use Azure AD para el control de identidad y acceso y Key Vault para administrar claves y secretos.Use Azure AD for identity and access control and Key Vault to manage keys and secrets.

Consideraciones sobre la manejabilidadManageability considerations

Supervisión e informesMonitoring and reporting

Una vez que su bot se ejecuta en producción, necesitará un equipo de DevOps para mantenerlo así.Once your bot is running in production, you will need a DevOps team to keep it that way. Supervise continuamente el sistema para asegurarse de que el bot funciona a pleno rendimiento.Continually monitor the system to ensure the bot operates at peak performance. Use los registros enviados a Application Insights o Cosmos DB para crear paneles de supervisión, bien mediante el propio Application Insights, Power BI o un panel de aplicación web personalizado.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. Envíe alertas al equipo de DevOps si se producen errores críticos o el rendimiento cae por debajo de un umbral aceptable.Send alerts to the DevOps team if critical errors occur or performance falls below an acceptable threshold.

Implementación automatizada de recursosAutomated resource deployment

El bot en sí mismo es solo una parte de un sistema más grande que proporciona los datos más recientes y garantiza su funcionamiento correcto.The bot itself is only part of a larger system that provides it with the latest data and ensures its proper operation. Se deben implementar todos estos otros recursos de Azure —servicios de orquestación de datos como Data Factory, servicios de almacenamiento como Cosmos DB, etc.—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 proporciona una capa de administración coherente a la que se puede acceder mediante Azure Portal, PowerShell o la CLI de Azure.Azure Resource Manager provides a consistent management layer that you can access through the Azure portal, PowerShell, or the Azure CLI. Por velocidad y coherencia, es mejor automatizar la implementación mediante uno de estos enfoques.For speed and consistency, it's best to automate your deployment using one of these approaches.

Implementación continua de botsContinuous bot deployment

Puede implementar la lógica del bot directamente desde el IDE o desde una línea de comandos, como la CLI de Azure.You can deploy the bot logic directly from your IDE or from a command line, such as the Azure CLI. A medida que crezca su bot, sin embargo, es mejor usar un proceso de implementación continua mediante una solución de CI/CD como Azure DevOps, como se describe en el artículo Configurar la implementación continua.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. Esta es una buena manera de eliminar la fricción en la prueba de nuevas características y corregir el bot en un entorno cercano al de producción.This is a good way to ease the friction in testing new features and fixes in your bot in a near-production environment. También es una buena idea tener varios entornos de implementación, al menos normalmente ensayo y producción.It's also a good idea to have multiple deployment environments, typically at least staging and production. Azure DevOps admite este enfoque.Azure DevOps supports this approach.