Construir um bot de conversação de nível empresarial

Azure Active Directory
Serviço de Aplicações
Application Insights
Armazenamento de Blobs
Serviço de Bot
Serviços Cognitivos
Cosmos DB
Data Factory
Funções
Key Vault
Logic Apps
Pesquisar

Esta arquitetura de referência descreve como construir um bot de conversação de nível empresarial (chatbot) usando o Azure Bot Framework.This reference architecture describes how to build an enterprise-grade conversational bot (chatbot) using the Azure Bot Framework. Cada bot é diferente, mas há alguns padrões comuns, fluxos de trabalho e tecnologias a ter em conta.Each bot is different, but there are some common patterns, workflows, and technologies to be aware of. Especialmente para um bot servir cargas de trabalho da empresa, existem muitas considerações de design além apenas da funcionalidade principal.Especially for a bot to serve enterprise workloads, there are many design considerations beyond just the core functionality. Este artigo abrange os aspetos de design mais essenciais, e introduz as ferramentas necessárias para construir um bot de aprendizagem robusto, seguro e ativamente aprendizagem.This article covers the most essential design aspects, and introduces the tools needed to build a robust, secure, and actively learning bot.

Diagrama da arquiteturaDiagram of the architecture

Transfira um ficheiro do Visio desta arquitetura.Download a Visio file of this architecture.

As melhores amostras de utilidade utilizadas nesta arquitetura são totalmente abertas e disponíveis no GitHub.The best practice utility samples used in this architecture are fully open-sourced and available on GitHub.

ArquiteturaArchitecture

A arquitetura aqui mostrada utiliza os seguintes serviços Azure.The architecture shown here uses the following Azure services. O seu próprio bot pode não utilizar todos estes serviços, ou pode incorporar serviços adicionais.Your own bot may not use all of these services, or may incorporate additional services.

Lógica bot e experiência do utilizadorBot logic and user experience

  • Serviço de Quadros de Bot (BFS).Bot Framework Service (BFS). Este serviço liga o seu bot a uma aplicação de comunicação como Cortana, Facebook Messenger ou Slack.This service connects your bot to a communication app such as Cortana, Facebook Messenger, or Slack. Facilita a comunicação entre o seu bot e o utilizador.It facilitates communication between your bot and the user.
  • Serviço de Aplicações Azure.Azure App Service. A lógica da aplicação bot está hospedada no Azure App Service.The bot application logic is hosted in Azure App Service.

Bot cognição e inteligênciaBot cognition and intelligence

  • Compreensão linguística (LUIS).Language Understanding (LUIS). Parte dos Serviços Cognitivos Azure,o LUIS permite que o seu bot compreenda a linguagem natural identificando as intenções e entidades do utilizador.Part of Azure Cognitive Services, LUIS enables your bot to understand natural language by identifying user intents and entities.
  • Pesquisa de Azure.Azure Search. A pesquisa é um serviço gerido que fornece um índice de documentos pesmável rápido.Search is a managed service that provides a quick searchable document index.
  • Fabricante QnA.QnA Maker. O Criador de FAQ é um serviço de API com base na cloud, que cria uma camada de conversação, perguntas e respostas com os seus dados.QnA Maker is a cloud-based API service that creates a conversational, question-and-answer layer over your data. Tipicamente, é carregado com conteúdo semi-estruturado, como perguntas frequentes.Typically, it's loaded with semi-structured content such as FAQs. Use-o para criar uma base de conhecimento para responder a questões de linguagem natural.Use it to create a knowledge base for answering natural-language questions.
  • Aplicativo Web.Web app. Se o seu bot precisar de soluções de IA não fornecidas por um serviço existente, pode implementar a sua própria IA personalizada e acolhê-la como uma aplicação 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. Isto fornece um ponto final web para o seu bot ligar.This provides a web endpoint for your bot to call.

Ingestão de dadosData ingestion

O bot vai contar com dados brutos que devem ser ingeridos e preparados.The bot will rely on raw data that must be ingested and prepared. Considere qualquer uma das seguintes opções para orquestrar este processo:Consider any of the following options to orchestrate this process:

  • Fábrica de Dados Azure.Azure Data Factory. A Data Factory orquestra e automatiza o movimento de dados e a transformação de dados.Data Factory orchestrates and automates data movement and data transformation.
  • Aplicativos lógicos.Logic Apps. A Logic Apps é uma plataforma sem servidor para construir fluxos de trabalho que integram aplicações, dados e serviços.Logic Apps is a serverless platform for building workflows that integrate applications, data, and services. A Logic Apps fornece conectores de dados para muitas aplicações, incluindo o Office 365.Logic Apps provides data connectors for many applications, including Office 365.
  • Funções Azure.Azure Functions. Pode utilizar as Funções Azure para escrever um código personalizado sem servidor que é invocado por um gatilho, — por exemplo, sempre que um documento é adicionado ao armazenamento de bolhas ou ao 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.

Início de sessão e monitorizaçãoLogging and monitoring

  • Insights de Aplicação.Application Insights. Utilize insights de aplicação para registar as métricas de aplicação do bot para fins de monitorização, diagnóstico e analítico.Use Application Insights to log the bot's application metrics for monitoring, diagnostic, and analytical purposes.
  • Armazenamento Azure Blob.Azure Blob Storage. O armazenamento de blobs está otimizado para armazenar quantidades em grande escala de dados não estruturados.Blob storage is optimized for storing massive amounts of unstructured data.
  • Cosmos DB.Cosmos DB. Cosmos DB é adequado para armazenar dados de registo semi-estruturados, tais como conversas.Cosmos DB is well-suited for storing semi-structured log data such as conversations.
  • Power BI.Power BI. Utilize o Power BI para criar painéis de monitorização para o seu bot.Use Power BI to create monitoring dashboards for your bot.

Segurança e governaçãoSecurity and governance

Garantia de qualidade e melhoriasQuality assurance and enhancements

  • Azure DevOps.Azure DevOps. Fornece muitos serviços para gestão de aplicações, incluindo controlo de fontes, construção, teste, implementação e rastreio de projetos.Provides many services for app management, including source control, building, testing, deployment, and project tracking.
  • Código VS Um editor de código leve para o desenvolvimento de aplicações.VS Code A lightweight code editor for app development. Pode utilizar qualquer outro IDE com características semelhantes.You can use any other IDE with similar features.

Considerações de conceçãoDesign considerations

A um nível elevado, um bot de conversação pode ser dividido na funcionalidade bot (o "cérebro") e um conjunto de requisitos circundantes (o "corpo").At a high level, a conversational bot can be divided into the bot functionality (the "brain") and a set of surrounding requirements (the "body"). O cérebro inclui os componentes conscientes do domínio, incluindo a lógica bot e as capacidades ML.The brain includes the domain-aware components, including the bot logic and ML capabilities. Outros componentes são agnósticos de domínio e abordam requisitos não funcionais tais como CI/CD, garantia de qualidade e segurança.Other components are domain agnostic and address non-functional requirements such as CI/CD, quality assurance, and security.

Diagrama lógico da funcionalidade do bot

Antes de entrar nas especificidades desta arquitetura, vamos começar com o fluxo de dados através de cada subcomponente do design.Before getting into the specifics of this architecture, let's start with the data flow through each subcomponent of the design. O fluxo de dados inclui fluxos de dados iniciados pelo utilizador e iniciados pelo sistema.The data flow includes user-initiated and system-initiated data flows.

Fluxo de mensagem do utilizadorUser message flow

Autenticação.Authentication. Os utilizadores começam por autenticar-se utilizando qualquer mecanismo fornecido pelo seu canal de comunicação com o bot.Users start by authenticating themselves using whatever mechanism is provided by their channel of communication with the bot. A estrutura bot suporta muitos canais de comunicação, incluindo Cortana, Microsoft Teams, Facebook Messenger, Kik e Slack.The bot framework supports many communication channels, including Cortana, Microsoft Teams, Facebook Messenger, Kik, and Slack. Para obter uma lista de canais, consulte Ligar um bot aos canais.For a list of channels, see Connect a bot to channels. Quando cria um bot com o Azure Bot Service, o canal Web Chat é automaticamente configurado.When you create a bot with Azure Bot Service, the Web Chat channel is automatically configured. Este canal permite que os utilizadores interajam diretamente com o seu bot numa página web.This channel allows users to interact with your bot directly in a web page. Também pode ligar o bot a uma aplicação personalizada utilizando o canal Direct Line.You can also connect the bot to a custom app by using the Direct Line channel. A identidade do utilizador é utilizada para fornecer controlo de acesso baseado em funções, bem como para servir conteúdo personalizado.The user's identity is used to provide role-based access control, as well as to serve personalized content.

Mensagem do utilizador.User message. Uma vez autenticado, o utilizador envia uma mensagem para o bot.Once authenticated, the user sends a message to the bot. O bot lê a mensagem e encaminha-a para um serviço de compreensão natural da linguagem, como o LUIS.The bot reads the message and routes it to a natural language understanding service such as LUIS. Este passo obtém as intenções (o que o utilizador quer fazer) e entidades (em que coisas o utilizador está interessado).This step gets the intents (what the user wants to do) and entities (what things the user is interested in). O bot então constrói uma consulta que passa para um serviço que serve informações, tais como Azure Search for document retrieval, QnA Maker for FAQs, ou uma base de conhecimento personalizado.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. O bot usa estes resultados para construir uma resposta.The bot uses these results to construct a response. Para dar o melhor resultado para uma determinada consulta, o bot pode fazer várias chamadas para trás e para a frente para estes serviços remotos.To give the best result for a given query, the bot might make several back-and-forth calls to these remote services.

Resposta.Response. Neste momento, o bot determinou a melhor resposta e envia-a ao utilizador.At this point, the bot has determined the best response and sends it to the user. Se a pontuação de confiança da melhor resposta for baixa, a resposta pode ser uma questão de desambiguação ou um reconhecimento de que o bot não poderia responder adequadamente.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.

Registo .Logging. Quando um pedido do utilizador é recebido ou uma resposta é enviada, todas as ações de conversação devem ser registadas numa loja de registos, juntamente com métricas de desempenho e erros gerais de serviços 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. Estes registos serão úteis mais tarde ao diagnosticar problemas e melhorar o sistema.These logs will be useful later when diagnosing issues and improving the system.

Feedback.Feedback. Outra boa prática é recolher os resultados de feedback e satisfação do utilizador.Another good practice is to collect user feedback and satisfaction scores. Como seguimento à resposta final do bot, o bot deve pedir ao utilizador que avalie a sua satisfação com a resposta.As a follow up to the bot's final response, the bot should ask the user to rate their satisfaction with the reply. O feedback pode ajudá-lo a resolver o problema do início a frio da compreensão da linguagem natural e melhorar continuamente a precisão das respostas.Feedback can help you to solve the cold start problem of natural language understanding, and continually improve the accuracy of responses.

Fluxo de dados do sistemaSystem Data Flow

ETL.ETL. O bot baseia-se em informações e conhecimentos extraídos dos dados brutos por um processo ETL no backend.The bot relies on information and knowledge extracted from the raw data by an ETL process in the backend. Estes dados podem ser estruturados (base de dados SQL), semi-estruturados (sistema CRM, PERGUNTAS Frequentes) ou não estruturados (documentos de palavras, PDFs, registos web).This data might be structured (SQL database), semi-structured (CRM system, FAQs), or unstructured (Word documents, PDFs, web logs). Um subsistema ETL extrai os dados num horário fixo.An ETL subsystem extracts the data on a fixed schedule. O conteúdo é transformado e enriquecido, depois carregado numa loja de dados intermediário, como cosmos DB ou Azure Blob Storage.The content is transformed and enriched, then loaded into an intermediary data store, such as Cosmos DB or Azure Blob Storage.

Os dados na loja intermediária são então indexados à Azure Search para a recuperação de documentos, carregados no QnA Maker para criar pares de perguntas e respostas, ou carregados numa aplicação web personalizada para processamento de texto não estruturado.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. Os dados também são utilizados para formar um modelo LUIS para intenção e extração de entidades.The data is also used to train a LUIS model for intent and entity extraction.

Garantia de qualidade.Quality assurance. Os registos de conversação são usados para diagnosticar e corrigir bugs, fornecer informações sobre como o bot está a ser usado, e rastrear o desempenho geral.The conversation logs are used to diagnose and fix bugs, provide insight into how the bot is being used, and track overall performance. Os dados de feedback são úteis para retreinar os modelos de IA para melhorar o desempenho do bot.Feedback data is useful for retraining the AI models to improve bot performance.

Construindo um botBuilding a bot

Antes mesmo de escrever uma única linha de código, é importante escrever uma especificação funcional para que a equipa de desenvolvimento tenha uma ideia clara do que o bot deve fazer.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. A especificação deve incluir uma lista razoavelmente completa de entradas de utilizadores e respostas de bot esperadas em vários domínios de conhecimento.The specification should include a reasonably comprehensive list of user inputs and expected bot responses in various knowledge domains. Este documento vivo será um guia inestimável para desenvolver e testar o seu bot.This living document will be an invaluable guide for developing and testing your bot.

Ingerir dadosIngest data

Em seguida, identifique as fontes de dados que permitirão ao bot interagir de forma inteligente com os utilizadores.Next, identify the data sources that will enable the bot to interact intelligently with users. Como mencionado anteriormente, estas fontes de dados podem conter conjuntos de dados estruturados, semi-estruturados ou não estruturados.As mentioned earlier, these data sources could contain structured, semi-structured, or unstructured data sets. Quando está a começar, uma boa abordagem é fazer uma cópia única dos dados para uma loja central, como cosmos DB ou 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. À medida que progride, deverá criar um pipeline automatizado de ingestão de dados para manter estes dados correntes.As you progress, you should create an automated data ingestion pipeline to keep this data current. As opções para um pipeline de ingestão automatizado incluem Data Factory, Funções e Aplicações Lógicas.Options for an automated ingestion pipeline include Data Factory, Functions, and Logic Apps. Dependendo das lojas de dados e dos esquemas, poderá utilizar uma combinação destas abordagens.Depending on the data stores and the schemas, you might use a combination of these approaches.

À medida que começa, é razoável usar o portal Azure para criar manualmente recursos Azure.As you get started, it's reasonable to use the Azure portal to manually create Azure resources. Mais tarde, devia pensar mais na automatização da implantação destes recursos.Later on, you should put more thought into automating the deployment of these resources.

Lógica de bot core e UXCore bot logic and UX

Uma vez que você tem uma especificação e alguns dados, é hora de começar a tornar o seu bot em realidade.Once you have a specification and some data, it's time to start making your bot into reality. Concentremo-nos na lógica do bot principal.Let's focus on the core bot logic. Este é o código que trata a conversa com o utilizador, incluindo a lógica de encaminhamento, lógica de desambiguação e registo.This is the code that handles the conversation with the user, including the routing logic, disambiguation logic, and logging. Comece por se familiarizar com o Quadro bot,incluindo:Start by familiarizing yourself with the Bot Framework, including:

  • Conceitos básicos e terminologia utilizados no quadro, especialmente [conversas,] [voltas]e [atividades.]Basic concepts and terminology used in the framework, especially conversations, turns, and activities.
  • O serviço Bot Connector,que trata da ligação em rede entre o bot e os seus canais.The Bot Connector service, which handles the networking between the bot and your channels.
  • Como o estado de conversação é mantido, na memória ou melhor ainda numa loja como Azure Blob Storage 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, e como pode ser usado para ligar o seu bot com serviços externos, como serviços cognitivos.Middleware, and how it can be used to hook up your bot with external services, such as Cognitive Services.

Para uma experiência de utilizadorrica, existem muitas opções.For a rich user experience, there are many options.

  • Você pode usar cartões para incluir botões, imagens, carrosséis e menus.You can use cards to include buttons, images, carousels, and menus.
  • Um bot pode apoiar o discurso.A bot can support speech.
  • Pode até incorporar o seu bot numa aplicação ou website e usar as capacidades da aplicação que o hospeda.You can even embed your bot in an app or website and use the capabilities of the app hosting it.

Para começar, pode construir o seu bot on-line utilizando o Serviço Azure Bot,selecionando a partir dos modelos C# e Node.js disponíveis.To get started, you can build your bot online using the Azure Bot Service, selecting from the available C# and Node.js templates. No entanto, à medida que o seu bot se torna mais sofisticado, terá de criar o seu bot localmente e depois implantá-lo na web.As your bot gets more sophisticated, however, you will need to create your bot locally then deploy it to the web. Escolha um IDE, como Visual Studio ou Visual Studio Code, e uma linguagem de programação.Choose an IDE, such as Visual Studio or Visual Studio Code, and a programming language. Os ODKs estão disponíveis para os seguintes idiomas:SDKs are available for the following languages:

Como ponto de partida, pode descarregar o código fonte para o bot que criou usando o Serviço Azure Bot.As a starting point, you can download the source code for the bot you created using the Azure Bot Service. Você também pode encontrar código de amostra,desde simples bots de eco a bots mais sofisticados que se integram com vários serviços de IA.You can also find sample code, from simple echo bots to more sophisticated bots that integrate with various AI services.

Adicione smarts ao seu botAdd smarts to your bot

Para um robô simples com uma lista de comandos bem definida, poderá utilizar uma abordagem baseada em regras para analisar a entrada do utilizador através do 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. Isto tem a vantagem de ser determinista e compreensível.This has the advantage of being deterministic and understandable. No entanto, quando o seu bot precisa de compreender as intenções e entidades de uma mensagem de linguagem mais natural, existem serviços de IA que podem ajudar.However, when your bot needs to understand the intents and entities of a more natural-language message, there are AI services that can help.

  • A LUIS foi especificamente concebida para compreender as intenções e entidades dos utilizadores.LUIS is specifically designed to understand user intents and entities. Treina-se com uma recolha moderadamente dimensionada de entradas de utilizador relevantes e respostas desejadas, e devolve as intenções e entidades para a mensagem dada pelo utilizador.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.

  • A Azure Search pode trabalhar ao lado de LUIS.Azure Search can work alongside LUIS. Utilizando o Search, cria índices pesjáveis sobre todos os dados relevantes.Using Search, you create searchable indexes over all relevant data. O bot questiona estes índices para as entidades extraídas pela LUIS.The bot queries these indexes for the entities extracted by LUIS. A Azure Search também suporta sinónimos,que podem alargar a rede de mapeamentos de palavras corretas.Azure Search also supports synonyms, which can widen the net of correct word mappings.

  • O QnA Maker é outro serviço projetado para devolver respostas para determinadas perguntas.QnA Maker is another service that is designed to return answers for given questions. É tipicamente treinado sobre dados semi-estruturados, como perguntas frequentes.It's typically trained over semi-structured data such as FAQs.

O seu bot pode utilizar outros serviços de IA para enriquecer ainda mais a experiência do utilizador.Your bot can use other AI services to further enrich the user experience. O conjunto de Serviços Cognitivos de serviços de IA pré-construídos (que inclui LUIS e QnA Maker) tem serviços para visão, fala, linguagem, pesquisa e localização.The Cognitive Services suite of pre-built AI services (which includes LUIS and QnA Maker) has services for vision, speech, language, search, and location. Pode adicionar rapidamente funcionalidades como tradução de idiomas, verificação de feitiços, análise de sentimentos, OCR, consciência de localização e moderação de conteúdos.You can quickly add functionality such as language translation, spell checking, sentiment analysis, OCR, location awareness, and content moderation. Estes serviços podem ser ligados como módulos de middleware no seu bot para interagir de forma mais natural e inteligente com o utilizador.These services can be wired up as middleware modules in your bot to interact more naturally and intelligently with the user.

Outra opção é integrar o seu próprio serviço de IA personalizado.Another option is to integrate your own custom AI service. Esta abordagem é mais complexa, mas dá-lhe total flexibilidade em termos do algoritmo de aprendizagem automática, treino e modelo.This approach is more complex, but gives you complete flexibility in terms of the machine learning algorithm, training, and model. Por exemplo, pode implementar o seu próprio tópico modelando e usar algoritmos como LDA para encontrar documentos semelhantes ou relevantes.For example, you could implement your own topic modeling and use algorithm such as LDA to find similar or relevant documents. Uma boa abordagem é expor a sua solução de IA personalizada como um ponto final de serviço web, e chamar o ponto final da lógica do bot principal.A good approach is to expose your custom AI solution as a web service endpoint, and call the endpoint from the core bot logic. O serviço web pode ser hospedado no App Service ou num conjunto de VMs.The web service could be hosted in App Service or in a cluster of VMs. O Azure Machine Learning fornece uma série de serviços e bibliotecas para o ajudar na formação e implementação dos seus modelos.Azure Machine Learning provides a number of services and libraries to assist you in training and deploying your models.

Garantia e melhoria da qualidadeQuality assurance and enhancement

Registo .Logging. Inicie as conversas do utilizador com o bot, incluindo as métricas de desempenho subjacentes e quaisquer erros.Log user conversations with the bot, including the underlying performance metrics and any errors. Estes registos revelar-se-ão inestimáveis para depurar problemas, compreender as interações dos utilizadores e melhorar o sistema.These logs will prove invaluable for debugging issues, understanding user interactions, and improving the system. Diferentes lojas de dados podem ser apropriadas para diferentes tipos de registos.Different data stores might be appropriate for different types of logs. Por exemplo, considere Insights de Aplicação para registos web, Cosmos DB para conversas e Armazenamento Azure para grandes cargas.For example, consider Application Insights for web logs, Cosmos DB for conversations, and Azure Storage for large payloads. Consulte escrever diretamente no Azure Storage.See Write directly to Azure Storage.

Feedback.Feedback. Também é importante entender como os utilizadores estão satisfeitos com as suas interações bot.It's also important to understand how satisfied users are with their bot interactions. Se tiver um registo do feedback do utilizador, pode utilizar estes dados para concentrar os seus esforços na melhoria de determinadas interações e na reconversão dos modelos de IA para um melhor desempenho.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. Utilize o feedback para reforçá-los os modelos, como o LUIS, no seu sistema.Use the feedback to retrain the models, such as LUIS, in your system.

A testar.Testing. Testar um bot envolve testes de unidade, testes de integração, testes de regressão e testes funcionais.Testing a bot involves unit tests, integration tests, regression tests, and functional tests. Para testes, recomendamos a gravação de respostas HTTP reais de serviços externos, como a Azure Search ou a QnA Maker, para que possam ser reproduzidas durante os testes de unidade sem necessidade de fazer chamadas de rede reais para serviços 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 o seu desenvolvimento nestas áreas, veja os Utilitários Botbuilder para JavaScript.To jump-start your development in these areas, look at the Botbuilder Utils for JavaScript. Este repo contém código de utilidade de amostra para bots construído com Microsoft Bot Framework v4 e executando Node.js.This repo contains sample utility code for bots built with Microsoft Bot Framework v4 and running Node.js. Inclui os seguintes pacotes:It includes the following packages:

Estes pacotes são fornecidos como código de amostra de utilidade, e vêm sem garantia de suporte ou atualizações.These packages are provided as utility sample code, and come with no guarantee of support or updates.

Considerações de disponibilidadeAvailability considerations

À medida que apresenta novas funcionalidades ou correções de bugs para o seu bot, o melhor é utilizar vários ambientes de implantação, como a encenação e a produção.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. A utilização de slots de implementação a partir de Azure DevOps permite-lhe fazê-lo com zero tempo de inatividade.Using deployment slots from Azure DevOps allows you to do this with zero downtime. Pode testar as suas últimas atualizações no ambiente de preparação antes de as trocar pelo ambiente de produção.You can test your latest upgrades in the staging environment before swapping them to the production environment. Em termos de carga de manuseamento, o Serviço de Aplicações foi concebido para escalar ou eliminar manualmente ou automaticamente.In terms of handling load, App Service is designed to scale up or out manually or automatically. Como o seu bot está hospedado na infraestrutura global de datacenter da Microsoft, o App Service SLA promete uma elevada disponibilidade.Because your bot is hosted in Microsoft's global datacenter infrastructure, the App Service SLA promises high availability.

Considerações de segurançaSecurity considerations

Como em qualquer outra aplicação, o bot pode ser projetado para lidar com dados sensíveis.As with any other application, the bot can be designed to handle sensitive data. Portanto, restringir quem pode entrar e usar o bot.Therefore, restrict who can sign in and use the bot. Limite também quais os dados que podem ser acedidos, com base na identidade ou função do utilizador.Also limit which data can be accessed, based on the user's identity or role. Use o Azure AD para controlo de identidade e acesso e Key Vault para gerir chaves e segredos.Use Azure AD for identity and access control and Key Vault to manage keys and secrets.

Considerações de DevOpsDevOps considerations

Monitorização e relatóriosMonitoring and reporting

Uma vez que o seu bot esteja em produção, você precisará de uma equipe DevOps para mantê-lo assim.Once your bot is running in production, you will need a DevOps team to keep it that way. Monitorize continuamente o sistema para garantir que o bot opera no pico de desempenho.Continually monitor the system to ensure the bot operates at peak performance. Utilize os registos enviados para Application Insights ou Cosmos DB para criar dashboards de monitorização, quer utilizando o próprio Application Insights, Power BI, quer um dashboard de aplicações 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. Envie alertas para a equipa de DevOps se ocorrerem erros críticos ou se o desempenho cair abaixo de um limiar aceitável.Send alerts to the DevOps team if critical errors occur or performance falls below an acceptable threshold.

Implantação automatizada de recursosAutomated resource deployment

O próprio bot é apenas parte de um sistema maior que fornece-lhe os dados mais recentes e garante o seu bom funcionamento.The bot itself is only part of a larger system that provides it with the latest data and ensures its proper operation. Todos estes outros serviços de orquestração de dados de recursos Azure, — como data factory, serviços de armazenamento como cosmos DB, e assim por diante — devem ser implementados.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. O Azure Resource Manager fornece uma camada de gestão consistente a que pode aceder através do portal Azure, PowerShell ou do Azure CLI.Azure Resource Manager provides a consistent management layer that you can access through the Azure portal, PowerShell, or the Azure CLI. Para velocidade e consistência, o melhor é automatizar a sua implantação usando uma destas abordagens.For speed and consistency, it's best to automate your deployment using one of these approaches.

Implantação contínua de botsContinuous bot deployment

Pode implementar a lógica bot diretamente do seu IDE ou de uma linha de comando, como o Azure CLI.You can deploy the bot logic directly from your IDE or from a command line, such as the Azure CLI. No entanto, à medida que o seu bot amadurece, o melhor é utilizar um processo de implementação contínua utilizando uma solução ci/CD, como a Azure DevOps, conforme descrito no artigo Configurar a implementação contínua.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 é uma boa maneira de aliviar o atrito no teste de novas funcionalidades e correções no seu bot num ambiente de quase produção.This is a good way to ease the friction in testing new features and fixes in your bot in a near-production environment. Também é uma boa ideia ter vários ambientes de implantação, tipicamente pelo menos encenação e produção.It's also a good idea to have multiple deployment environments, typically at least staging and production. A Azure DevOps apoia esta abordagem.Azure DevOps supports this approach.

Considerações de custosCost considerations

Utilize a calculadora de preços do Azure para prever os custos.Use the Azure pricing calculator to estimate costs. Aqui estão outras considerações.Here are some other considerations.

Aplicação botBot application

Nesta arquitetura, o principal controlador de custos é o Azure App Service no qual a lógica da aplicação bot está hospedada.In this architecture, the main cost driver is the Azure App Service in which the bot application logic is hosted. Escolha um nível de plano de serviço de aplicações que melhor se adapte às suas necessidades.Choose an App Service plan tier that best suits your needs. Aqui estão algumas recomendações:Here are some recommendations:

  • Utilize níveis gratuitos e partilhados (pré-visualização) para fins de teste, porque os recursos partilhados não conseguem escalar.Use Free and Shared (preview) tiers for testing purposes because the shared resources cannot scale out.
  • Executa a sua carga de trabalho de produção nos níveis Básico, Standard e Premium porque a aplicação funciona em casos de máquinas virtuais dedicadas e tem recursos que podem ser dimensionados. Os planos do Serviço de Aplicações são faturados por segundo.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.

É cobrado pelos casos no plano do Serviço de Aplicações, mesmo quando a aplicação é interrompida.You are charged for the instances in the App Service plan, even when the app is stopped. Elimine os planos que não pretende utilizar a longo prazo, como implementações de testes.Delete plans that you don't intend to use long term, such as test deployments.

Para mais informações, veja quanto custa o meu plano de Serviço de Aplicações?For more information, see How much does my App Service plan cost?.

Ingestão de dadosData ingestion

  • Azure Data FactoryAzure Data Factory

    Nesta arquitetura, a Data Factory automatiza o pipeline de ingestão de dados.In this architecture, Data Factory automates the data ingestion pipeline. Explore uma gama de capacidades de integração de dados para adequar as suas necessidades de orçamento, desde serviços de integração de servidores SQL geridos para migração sem emenda de projetos do SQL Server para a nuvem (opção custo-efetiva), até oleodutos de dados em larga escala e sem servidores para integrar dados de todas as formas e tamanhos.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.

    Por exemplo, consulte a Azure Data Factory - exemplo de análise de custos.For an example, see Azure Data Factory - example cost analysis.

  • Funções do AzureAzure Functions

    Nesta arquitetura de referência, as Funções Azure são faturadas de acordo com o plano de Consumo.In this reference architecture, Azure Functions is billed as per the Consumption plan. É cobrado com base no consumo de recursos por segundo e cada vez que um evento desencadeia a execução da função.You are charged based on per-second resource consumption and each time an event triggers the execution of the function. Processar vários eventos numa única execução ou lotes pode reduzir o custo.Processing several events in a single execution or batches can reduce cost.

    A azul escala a infraestrutura necessária para executar funções conforme necessário.Azure scales the infrastructure required to run functions as needed. Quando a carga de trabalho é baixa, a infraestrutura é reduzida até zero sem custos associados.When workload is low, the infrastructure is scaled down up to zero with no associated cost. Sempre que a carga de trabalho cresce, a Azure usa capacidade suficiente para servir toda a procura.Whenever the workload grows, Azure uses enough capacity to serve all the demand. Porque paga por uso real, gere o custo exato de cada componente.Because you pay per actual use, manage the exact cost of each component.

Aplicações LógicasLogic Apps

O preço das aplicações lógicas funciona no modelo pay-as-you-go.Logic apps pricing works on the pay-as-you-go model. As aplicações lógicas têm um modelo de preços pay-as-you-go.Logic apps have a pay-as-you-go pricing model. Os gatilhos, ações e execuções de conector são medidos cada vez que uma aplicação lógica é executada.Triggers, actions, and connector executions are metered each time a logic app runs. Todas as ações bem sucedidas e mal sucedidas, incluindo os gatilhos, são consideradas execuções.All successful and unsuccessful actions, including triggers, are considered as executions.

Por exemplo, a sua aplicação lógica processa 1000 mensagens por dia a partir do Azure Service Bus.For instance, your logic app processes 1000 messages a day from Azure Service Bus. Um fluxo de trabalho de cinco ações custará menos de $6.A workflow of five actions will cost less than $6. Para obter mais informações, consulte os preços das Aplicações Lógicas.For more information, see Logic Apps pricing.

Para outras considerações de custos, consulte a secção Custo no Quadro de Well-Architected Microsoft Azure.For other cost considerations, see the Cost section in Microsoft Azure Well-Architected Framework.

Passos SeguintesNext Steps

  • Reveja o modelo de Assistente Virtual para começar rapidamente a construir bots de conversação.Review the Virtual Assistant template to quickly get started building conversational bots.