エンタープライズ グレードの会話型ボットの作成

Azure Active Directory
App Service
Application Insights
Blob Storage
ボット サービス
Cognitive Services
Cosmos DB
Data Factory
関数
Key Vault
Logic Apps
検索

この参照アーキテクチャでは、Azure Bot Framework を使用してエンタープライズ グレードの会話型ボット (チャットボット) を作成する方法について説明します。This reference architecture describes how to build an enterprise-grade conversational bot (chatbot) using the Azure Bot Framework. ボットは 1 つずつ異なりますが、注意が必要な共通のパターンやワークフロー、テクノロジがいくつかあります。Each bot is different, but there are some common patterns, workflows, and technologies to be aware of. 特に、エンタープライズ ワークロードを処理するボットの場合、コア機能以外にもさまざまな設計上の考慮事項があります。Especially for a bot to serve enterprise workloads, there are many design considerations beyond just the core functionality. この記事では、最も重要な設計上の側面について説明するとともに、積極的に学習を行う、堅牢で安全なボットの作成に必要なツールも紹介します。This article covers the most essential design aspects, and introduces the tools needed to build a robust, secure, and actively learning bot.

アーキテクチャの図Diagram of the architecture

このアーキテクチャの Visio ファイルをダウンロードします。Download a Visio file of this architecture.

このアーキテクチャで使用されるベスト プラクティスのユーティリティ サンプルは、完全にオープン ソースで提供されており、GitHub で入手できます。The best practice utility samples used in this architecture are fully open-sourced and available on GitHub.

ArchitectureArchitecture

ここに示すアーキテクチャでは、次の Azure サービスを使用します。The architecture shown here uses the following Azure services. 使用する独自のボットでは、これらのサービスの一部のみが使用されることも、他のサービスが組み込まれることもあります。Your own bot may not use all of these services, or may incorporate additional services.

ボット ロジックとユーザー エクスペリエンスBot logic and user experience

  • Bot Framework Service (BFS)。Bot Framework Service (BFS). このサービスは、ご使用のボットを Cortana、Facebook Messenger、Slack などの通信アプリに接続します。This service connects your bot to a communication app such as Cortana, Facebook Messenger, or Slack. ボットとユーザーの間の通信が円滑化されます。It facilitates communication between your bot and the user.
  • Azure App ServiceAzure App Service. ボットのアプリケーション ロジックは、Azure App Service でホストされます。The bot application logic is hosted in Azure App Service.

ボットの認識力とインテリジェンスBot cognition and intelligence

  • Language Understanding (LUIS)。Language Understanding (LUIS). Azure Cognitive Services の一部である LUIS によって、ユーザーの意図とエンティティが判別されることで、お客様のボットが自然言語を理解できるようになります。Part of Azure Cognitive Services, LUIS enables your bot to understand natural language by identifying user intents and entities.
  • Azure SearchAzure Search. Search は、すばやい検索が可能なドキュメント インデックスを提供するマネージド サービスです。Search is a managed service that provides a quick searchable document index.
  • QnA MakerQnA Maker. QnA Maker は、データに基づく対話型の Q&A レイヤーを作成できるクラウドベースの API サービスです。QnA Maker is a cloud-based API service that creates a conversational, question-and-answer layer over your data. 通常、FAQ などの半構造化コンテンツが読み込まれます。Typically, it's loaded with semi-structured content such as FAQs. これを使用して、自然言語の質問に回答するためのナレッジ ベースを作成します。Use it to create a knowledge base for answering natural-language questions.
  • Web アプリWeb app. 既存のサービスによって提供されない AI ソリューションがお客様のボットに必要な場合は、独自のカスタム AI を実装し、これを 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. これにより、ご使用のボットから呼び出される Web エンドポイントが提供されます。This provides a web endpoint for your bot to call.

データ インジェストData ingestion

ボットが使用する生データを取り込んで準備する必要があります。The bot will rely on raw data that must be ingested and prepared. このプロセスを調整するには、次のいずれかの方法を検討してください。Consider any of the following options to orchestrate this process:

  • Azure Data FactoryAzure Data Factory. Data Factory は、データ移動とデータ変換を調整し、自動化します。Data Factory orchestrates and automates data movement and data transformation.
  • Logic AppsLogic Apps. Logic Apps は、アプリケーション、データ、およびサービスを統合するワークフローを構築するためのサーバーレス プラットフォームです。Logic Apps is a serverless platform for building workflows that integrate applications, data, and services. Logic Apps では、Office 365 など、多くのアプリケーションにデータ コネクタを提供します。Logic Apps provides data connectors for many applications, including Office 365.
  • Azure FunctionsAzure Functions. Azure Functions を使用すると、トリガー — によってたとえば、ドキュメントが Blob Storage や 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.

ログ記録と監視Logging and monitoring

  • Application InsightsApplication Insights. 監視、診断、分析の目的でボットのアプリケーション メトリックをログに記録するには、Application Insights を使用します。Use Application Insights to log the bot's application metrics for monitoring, diagnostic, and analytical purposes.
  • Azure Blob StorageAzure Blob Storage. Blob Storage は、テキスト データやバイナリ データなどの大量の非構造化データを格納するために最適化されています。Blob storage is optimized for storing massive amounts of unstructured data.
  • Cosmos DBCosmos DB. Cosmos DB は、会話など、半構造化ログ データの格納に適しています。Cosmos DB is well-suited for storing semi-structured log data such as conversations.
  • Power BIPower BI. お使いのボットの監視ダッシュボードを作成するには、Power BI を使用します。Use Power BI to create monitoring dashboards for your bot.

セキュリティとガバナンスSecurity and governance

品質保証と拡張機能Quality assurance and enhancements

  • Azure DevOpsAzure DevOps. ソース管理、ビルド、テスト、デプロイ、プロジェクト追跡など、アプリ管理のための各種サービスを提供します。Provides many services for app management, including source control, building, testing, deployment, and project tracking.
  • VS Code 。アプリ開発用の軽量なコード エディター。VS Code A lightweight code editor for app development. 同様の機能を備えたその他の任意の IDE を使用することもできます。You can use any other IDE with similar features.

設計上の考慮事項Design considerations

大まかに言うと、会話ボットは、ボット機能 ("脳") と一連の周辺的要件 ("身体") に分けることができます。At a high level, a conversational bot can be divided into the bot functionality (the "brain") and a set of surrounding requirements (the "body"). 脳には、ボット ロジックや ML 機能など、知識領域に対応したコンポーネントが含まれています。The brain includes the domain-aware components, including the bot logic and ML capabilities. その他のコンポーネントは知識領域に関係がなく、CI/CD、品質保証、セキュリティなどの非機能的要件に対処します。Other components are domain agnostic and address non-functional requirements such as CI/CD, quality assurance, and security.

ボット機能の論理図

このアーキテクチャの詳細に入る前に、設計の各サブコンポーネントを通過するデータ フローを見てみましょう。Before getting into the specifics of this architecture, let's start with the data flow through each subcomponent of the design. データ フローには、ユーザーが開始するデータ フローと、システムによって開始されるデータ フローがあります。The data flow includes user-initiated and system-initiated data flows.

ユーザー メッセージ フローUser message flow

[認証] :Authentication. ユーザーは、まず、ボットとの通信チャネルによって提供される任意のメカニズムを使用して、自分自身を認証します。Users start by authenticating themselves using whatever mechanism is provided by their channel of communication with the bot. Bot Framework では、Cortana、Microsoft Teams、Facebook Messenger、Kik、Slack など、多くの通信チャネルがサポートされています。The bot framework supports many communication channels, including Cortana, Microsoft Teams, Facebook Messenger, Kik, and Slack. チャネルの一覧については、「ボットをチャネルに接続する」を参照してください。For a list of channels, see Connect a bot to channels. Azure Bot Service を使用してボットを作成すると、Web チャット チャンネルが自動的に構成されます。When you create a bot with Azure Bot Service, the Web Chat channel is automatically configured. ユーザーはこのチャネルを使用することで、Web ページから直接ボットとやり取りすることができます。This channel allows users to interact with your bot directly in a web page. また、Direct Line チャネルを使用して、ボットをカスタム アプリに接続することもできます。You can also connect the bot to a custom app by using the Direct Line channel. ユーザーの ID は、ロールベースのアクセス制御や、パーソナライズされたコンテンツを提供するために使用されます。The user's identity is used to provide role-based access control, as well as to serve personalized content.

ユーザー メッセージUser message. 認証されると、ユーザーはボットにメッセージを送信します。Once authenticated, the user sends a message to the bot. ボットはこのメッセージを読み取って、LUIS などの自然言語理解サービスにルーティングします。The bot reads the message and routes it to a natural language understanding service such as LUIS. この段階で、意図 (ユーザーがしたいこと) と エンティティ (ユーザーの関心の対象) が取得されます。This step gets the intents (what the user wants to do) and entities (what things the user is interested in). 次にボットは、文書検索用の Azure Search、FAQ 用の QnA Maker、カスタム ナレッジ ベースなど、情報を提供するサービスに渡すクエリを作成します。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. ボットは、これらの結果を使用して応答を作成します。The bot uses these results to construct a response. 特定のクエリで最良の結果を得るために、ボットはこれらのリモート サービスとのやり取りを複数回繰り返す場合があります。To give the best result for a given query, the bot might make several back-and-forth calls to these remote services.

応答Response. この時点で、ボットは最適な応答を決定し、これをユーザーに送信します。At this point, the bot has determined the best response and sends it to the user. 最も適合した回答の信頼度スコアが低い場合、応答は、あいまいさを排除するための質問になったり、ボットが的確に応答できないことの確認になったりする可能性があります。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.

ログの記録Logging. ユーザーの要求が受信されたり、応答が送信されたりしたとき、すべての会話アクションは、パフォーマンス メトリックや外部サービスの一般的なエラーと共に、ログ ストアに記録する必要があります。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. これらのログは、後で問題を診断したり、システムを改善したりする際に役立ちます。These logs will be useful later when diagnosing issues and improving the system.

フィードバックFeedback. また、ユーザー フィードバックや満足度のスコアを収集することもお勧めします。Another good practice is to collect user feedback and satisfaction scores. ボットの最終応答のフォロー アップとして、応答に対する満足度を評価してもらうようボットからユーザーに依頼します。As a follow up to the bot's final response, the bot should ask the user to rate their satisfaction with the reply. フィードバックは、自然言語の理解に関するコールド スタートの問題を解決したり、応答の精度を継続的に改善したりするうえで役立ちます。Feedback can help you to solve the cold start problem of natural language understanding, and continually improve the accuracy of responses.

システムのデータ フローSystem Data Flow

ETLETL. ボットは、バックエンドの ETL プロセスによって生データから抽出される情報と知識に依存しています。The bot relies on information and knowledge extracted from the raw data by an ETL process in the backend. このデータは、構造化データ (SQL データベース)、半構造化データ (CRM システム、FAQ)、または非構造化データ (Word 文書、PDF、Web ログ) である可能性があります。This data might be structured (SQL database), semi-structured (CRM system, FAQs), or unstructured (Word documents, PDFs, web logs). ETL サブシステムにより、決まったスケジュールでデータが抽出されます。An ETL subsystem extracts the data on a fixed schedule. コンテンツが変換およびエンリッチされ、Cosmos DB や Azure Blob Storage などの中間データ ストアに読み込まれます。The content is transformed and enriched, then loaded into an intermediary data store, such as Cosmos DB or Azure Blob Storage.

次に、中間ストア内のデータは、文書検索できるように Azure Search 内にインデックス化されたり、QnA Maker に読み込まれて質問と回答のペアが作成されたり、カスタム Web アプリに読み込まれて非構造化テキスト処理が行われたります。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. また、このデータは、意図とエンティティを抽出できるように、LUIS モデルのトレーニングにも使用されます。The data is also used to train a LUIS model for intent and entity extraction.

品質保証Quality assurance. 会話のログは、バグの診断や修正、ボットの使用状況に関する分析情報の提供、および全体的なパフォーマンスの追跡に使用されます。The conversation logs are used to diagnose and fix bugs, provide insight into how the bot is being used, and track overall performance. フィードバック データは、AI モデルを再トレーニングしてボットのパフォーマンスを向上させる際に役立ちます。Feedback data is useful for retraining the AI models to improve bot performance.

ボットの作成Building a bot

コードの 1 行目を記述する前に、開発チームがボットに期待される動作を明確に理解できるように、機能仕様を書くことが重要です。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. 仕様には、さまざまな知識領域でのユーザー入力と予想されるボットの応答について、かなり包括的なリストを含める必要があります。The specification should include a reasonably comprehensive list of user inputs and expected bot responses in various knowledge domains. 随時更新されるこのドキュメントは、ボットを開発およびテストするための非常に貴重なガイドとなります。This living document will be an invaluable guide for developing and testing your bot.

データの取り込みIngest data

次に、ボットがユーザーとインテリジェントにやり取りできるようにするデータ ソースを特定します。Next, identify the data sources that will enable the bot to interact intelligently with users. 前述のように、これらのデータ ソースとしては、構造化データ セット、半構造化データ セット、または非構造化データ セットがあります。As mentioned earlier, these data sources could contain structured, semi-structured, or unstructured data sets. 開始するにあたり、Cosmos DB や Azure Storage などの中央のストアにデータを 1 回だけコピーすることをお勧めします。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. 進行に合わせて、自動化されたデータ インジェスト パイプラインを作成し、このデータを最新の状態に維持する必要があります。As you progress, you should create an automated data ingestion pipeline to keep this data current. 自動化されたインジェスト パイプラインのオプションには、Data Factory、Functions、および Logic Apps があります。Options for an automated ingestion pipeline include Data Factory, Functions, and Logic Apps. データ ストアとスキーマによっては、これらのアプローチを組み合わせて使用する場合もあります。Depending on the data stores and the schemas, you might use a combination of these approaches.

始める時点では、Azure portal を使用して手動で Azure リソースを作成するのが合理的です。As you get started, it's reasonable to use the Azure portal to manually create Azure resources. これらのリソースのデプロイの自動化については、後でさらに検討を重ねる必要があります。Later on, you should put more thought into automating the deployment of these resources.

ボットのコア ロジックとユーザー エクスペリエンスCore bot logic and UX

仕様とデータが用意できたら、いよいよ実際にボットの作成を開始します。Once you have a specification and some data, it's time to start making your bot into reality. ボットのコア ロジックに注目しましょう。Let's focus on the core bot logic. ルーティング ロジック、あいまいさ排除ロジック、ログ記録など、ユーザーとの会話を処理するコードがこれに当たります。This is the code that handles the conversation with the user, including the routing logic, disambiguation logic, and logging. 以下を含め、まず Bot Framework に慣れることから始めてください。Start by familiarizing yourself with the Bot Framework, including:

  • 特に、会話ターンアクティビティなど、フレームワークで使用される基本的な概念と用語。Basic concepts and terminology used in the framework, especially conversations, turns, and activities.
  • ボットとチャネルの間のネットワークを処理する Bot Connector サービスThe Bot Connector service, which handles the networking between the bot and your channels.
  • メモリや、可能であればストア (Azure Blob Storage、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.
  • ミドルウェア。また、ミドルウェアを使用して、Cognitive Services などの外部サービスにボットをフックする方法。Middleware, and how it can be used to hook up your bot with external services, such as Cognitive Services.

豊かなユーザー エクスペリエンスを実現するオプションは多数あります。For a rich user experience, there are many options.

  • カードを使用して、ボタン、イメージ、カルーセル、およびメニューを含めることができます。You can use cards to include buttons, images, carousels, and menus.
  • ボットでは音声がサポートされます。A bot can support speech.
  • ボットをアプリや Web サイトに埋め込むことで、ボットをホストするアプリの機能を使用することもできます。You can even embed your bot in an app or website and use the capabilities of the app hosting it.

最初に、Azure Bot Service を使用してオンラインでボットを作成します。C# と Node.js から使用可能なテンプレートを選択します。To get started, you can build your bot online using the Azure Bot Service, selecting from the available C# and Node.js templates. ボットが洗練されてくるにつれて、ボットをローカルで作成して、それを Web にデプロイする必要が生じます。As your bot gets more sophisticated, however, you will need to create your bot locally then deploy it to the web. Visual Studio や Visual Studio Code などの IDE とプログラミング言語を選択します。Choose an IDE, such as Visual Studio or Visual Studio Code, and a programming language. 次の言語では SDK を利用できます。SDKs are available for the following languages:

出発点として、Azure Bot Service を使用して作成するボット向けのソース コードをダウンロードできます。As a starting point, you can download the source code for the bot you created using the Azure Bot Service. 単純なエコー ボットから各種 AI サービスが統合された高度なボットまで、サンプル コードを検索することもできます。You can also find sample code, from simple echo bots to more sophisticated bots that integrate with various AI services.

ボットをよりスマートにするAdd smarts to your bot

適切に定義されたコマンドの一覧を備えた単純なボットの場合、ルールベースのアプローチを使用して正規表現でユーザー入力を解析できる場合があります。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. これには、確定的でわかりやすいという利点があります。This has the advantage of being deterministic and understandable. ただし、ボットがより自然言語に近いメッセージの意図とエンティティを理解する必要がある場合は、AI サービスを役立てることができます。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 は、特にユーザーの意図とエンティティを理解できるように設計されています。LUIS is specifically designed to understand user intents and entities. 関連性のあるユーザー入力と望ましい応答から成る適度な規模のコレクションを使用して LUIS をトレーニングすると、ユーザーの特定メッセージの意図とエンティティが返されます。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 を LUIS と連携させることができます。Azure Search can work alongside LUIS. Search を使用して、すべての関連データに対して検索可能なインデックスを作成します。Using Search, you create searchable indexes over all relevant data. ボットがこれらのインデックスにクエリを実行して、LUIS によって抽出されたエンティティを取得します。The bot queries these indexes for the entities extracted by LUIS. Azure Search では、シノニムもサポートされているため、正しい単語マッピングを捉えるための網を拡げることができます。Azure Search also supports synonyms, which can widen the net of correct word mappings.

  • QnA Maker は、特定の質問に対して回答を返すように設計されているもう 1 つのサービスです。QnA Maker is another service that is designed to return answers for given questions. これは通常、FAQ などの半構造化データに対してトレーニングされます。It's typically trained over semi-structured data such as FAQs.

ボットは、その他の AI サービスを使用して、ユーザー エクスペリエンスをさらに強化することができます。Your bot can use other AI services to further enrich the user experience. 事前構築済みの AI サービスから成る Cognitive Services スイート (LUIS や QnA Maker を含む) には、視覚、音声、言語、検索、および場所に対応したサービスが含まれています。The Cognitive Services suite of pre-built AI services (which includes LUIS and QnA Maker) has services for vision, speech, language, search, and location. 言語翻訳、スペル チェック、センチメント分析、OCR、位置把握、コンテンツ モデレーションなどの機能を簡単に追加することができます。You can quickly add functionality such as language translation, spell checking, sentiment analysis, OCR, location awareness, and content moderation. これらのサービスをミドルウェア モジュールとしてボットに設定することで、より自然かつインテリジェントにユーザーと対話できるようになります。These services can be wired up as middleware modules in your bot to interact more naturally and intelligently with the user.

別のオプションとして、独自のカスタム AI サービスを統合することもできます。Another option is to integrate your own custom AI service. この方法は複雑さが増しますが、機械学習アルゴリズム、トレーニング、およびモデルという点に関して完全な柔軟性が得られます。This approach is more complex, but gives you complete flexibility in terms of the machine learning algorithm, training, and model. たとえば、独自のトピック モデリングを実装し、LDA などのアルゴリズムを使用して類似または関連する文書を検索できます。For example, you could implement your own topic modeling and use algorithm such as LDA to find similar or relevant documents. Web サービスのエンドポイントとしてカスタム AI ソリューションを公開し、ボットのコア ロジックからエンドポイントを呼び出すことをお勧めします。A good approach is to expose your custom AI solution as a web service endpoint, and call the endpoint from the core bot logic. Web サービスは、App Service または VM のクラスターでホストすることができます。The web service could be hosted in App Service or in a cluster of VMs. Azure Machine Learning には、モデルのトレーニングデプロイを支援する多くのサービスとライブラリが用意されています。Azure Machine Learning provides a number of services and libraries to assist you in training and deploying your models.

品質保証と拡張機能Quality assurance and enhancement

ログの記録Logging. 基になるパフォーマンス メトリックやすべてのエラーを含め、ユーザーとボットの会話が記録されます。Log user conversations with the bot, including the underlying performance metrics and any errors. これらのログは、問題のデバッグ、ユーザー操作の理解、システムの改善を行う際に、非常に重要な役割を果たします。These logs will prove invaluable for debugging issues, understanding user interactions, and improving the system. ログの種類ごとに、適切なデータ ストアが異なる可能性があります。Different data stores might be appropriate for different types of logs. たとえば、Web ログには Application Insights、会話には Cosmos DB、大きなペイロードには Azure Storage の使用を検討します。For example, consider Application Insights for web logs, Cosmos DB for conversations, and Azure Storage for large payloads. Azure Storage への直接的な書き込みに関するページをご覧ください。See Write directly to Azure Storage.

フィードバックFeedback. ユーザーがボットとのやり取りにどの程度満足しているかを理解しておくことも重要です。It's also important to understand how satisfied users are with their bot interactions. ユーザー フィードバックの記録がある場合は、このデータを使用して、特定のやり取りの改善や、AI モデルの再トレーニングに重点を置いてパフォーマンスを向上させることができます。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. フィードバックを使用して、システム内のモデル (LUIS など) を再トレーニングできます。Use the feedback to retrain the models, such as LUIS, in your system.

テストTesting. ボットのテストには、単体テスト、統合テスト、回帰テスト、および機能テストが含まれます。Testing a bot involves unit tests, integration tests, regression tests, and functional tests. テストを行う場合、Azure Search や QnA Maker などの外部サービスからの実際の HTTP 応答を記録することをお勧めします。これにより、単体テストの際に、外部サービスへのネットワーク呼び出しを実際に行うことなく応答を再生することができます。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.

注意

これらの領域での開発を首尾よく開始するには、「Botbuilder Utils for JavaScript (JavaScript 用 Botbuilder ユーティリティ)」を参照してください。To jump-start your development in these areas, look at the Botbuilder Utils for JavaScript. このリポジトリには、Microsoft Bot Framework v4 でビルドされ、Node.js を実行するボット用のサンプル ユーティリティ コードが含まれています。This repo contains sample utility code for bots built with Microsoft Bot Framework v4 and running Node.js. 次のパッケージが含まれます。It includes the following packages:

  • Cosmos DB のログ ストアCosmos DB Logging Store. Cosmos DB でボット ログを保管したり、クエリを実行したりする方法を示します。Shows how to store and query bot logs in Cosmos DB.
  • Application Insights のログ ストアApplication Insights Logging Store. Application Insights でボット ログを保管したり、クエリを実行したりする方法を示します。Shows how to store and query bot logs in Application Insights.
  • フィードバック コレクション ミドルウェアFeedback Collection Middleware. ボット ユーザーにフィードバック要求メカニズムを提供するサンプル ミドルウェアです。Sample middleware that provides a bot user feedback-request mechanism.
  • HTTP テスト レコーダーHttp Test Recorder. ボットの外部サービスからの HTTP トラフィックを記録します。Records HTTP traffic from services external to the bot. LUIS、Azure Search、および QnA Maker のサポートが事前に組み込まれていますが、拡張機能を使用して任意のサービスをサポートすることもできます。It comes pre-built with support for LUIS, Azure Search, and QnAMaker, but extensions are available to support any service. これは、ボットのテストを自動化する際に役立ちます。This helps you automate bot testing.

これらのパッケージはユーティリティ サンプル コードとして提供されており、サポートや更新プログラムの保証は付属しません。These packages are provided as utility sample code, and come with no guarantee of support or updates.

可用性に関する考慮事項Availability considerations

ボットに新しい機能やバグ修正をロールアウトする際は、ステージングや運用など、複数のデプロイ環境を使用することをお勧めします。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. Azure DevOps のデプロイ スロットを使用すると、ダウンタイムなしでこれを実行できます。Using deployment slots from Azure DevOps allows you to do this with zero downtime. 最新のアップグレードを運用環境にスワップする前に、ステージング環境でテストできます。You can test your latest upgrades in the staging environment before swapping them to the production environment. 負荷の処理に関しては、App Service は手動または自動でスケール アップしたりスケール アウトしたりできるように設計されています。In terms of handling load, App Service is designed to scale up or out manually or automatically. お使いのボットは Microsoft のグローバルなデータセンター インフラストラクチャでホストされるため、App Service の SLA によって高可用性が保証されます。Because your bot is hosted in Microsoft's global datacenter infrastructure, the App Service SLA promises high availability.

セキュリティに関する考慮事項Security considerations

他のアプリケーションと同様に、ボットは機密データを処理するように設計できます。As with any other application, the bot can be designed to handle sensitive data. そのため、サインインしてボットを使用できるユーザーを制限できます。Therefore, restrict who can sign in and use the bot. また、ユーザーの ID やロールに基づいて、アクセスできるデータも制限できます。Also limit which data can be accessed, based on the user's identity or role. ID とアクセス制御には Azure AD を使用し、キーとシークレットの管理には Key Vault を使用してください。Use Azure AD for identity and access control and Key Vault to manage keys and secrets.

DevOps の考慮事項DevOps considerations

監視と報告Monitoring and reporting

ボットが運用環境で稼働している場合は、ボットの稼働を維持する DevOps チームが必要になります。Once your bot is running in production, you will need a DevOps team to keep it that way. システムを継続的に監視して、ボットが最高のパフォーマンスで動作していることを確認します。Continually monitor the system to ensure the bot operates at peak performance. Application Insights または Cosmos DB に送信されたログを使用して、Application Insights 自体、Power BI、またはカスタムの Web アプリ ダッシュボードで監視ダッシュボードを作成できます。Use the logs sent to Application Insights or Cosmos DB to create monitoring dashboards, either using Application Insights itself, Power BI, or a custom web app dashboard. 重大なエラーが発生したり、パフォーマンスが許容されるしきい値を下回ったりした場合は、DevOps チームにアラートを送信します。Send alerts to the DevOps team if critical errors occur or performance falls below an acceptable threshold.

自動化されたリソースのデプロイAutomated resource deployment

ボット自体は、ボットに最新データを提供したり、その適切な動作を確保する大規模なシステムの一部にすぎません。The bot itself is only part of a larger system that provides it with the latest data and ensures its proper operation. これらの他の Azure リソース (—Data Factory などのデータ オーケストレーション サービス、Cosmos DB などのストレージ サービス、その他—) を、すべてデプロイする必要があります。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 では、Azure portal、PowerShell、Azure CLI を通じてアクセスできる、一貫性のある管理レイヤーを提供します。Azure Resource Manager provides a consistent management layer that you can access through the Azure portal, PowerShell, or the Azure CLI. 速度と一貫性を実現するには、これらの方法のいずれかを使用してデプロイを自動化することをお勧めします。For speed and consistency, it's best to automate your deployment using one of these approaches.

ボットの継続的なデプロイContinuous bot deployment

ボットのロジックは、IDE から直接デプロイすることも、Azure CLI などのコマンド ラインからデプロイすることもできます。You can deploy the bot logic directly from your IDE or from a command line, such as the Azure CLI. ただし、ボットが成熟してきた場合は、継続的なデプロイの設定に関する記事の説明に従い、Azure DevOps などの CI/CD ソリューションを活用して継続的なデプロイ プロセスを使用することをお勧めします。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. これは、運用環境に近い環境でボットの新機能と修正プログラムをテストする際の煩雑さを軽減する優れた方法です。This is a good way to ease the friction in testing new features and fixes in your bot in a near-production environment. また、複数のデプロイ環境 (通常は最低でもステージング環境と運用環境) を用意することをお勧めします。It's also a good idea to have multiple deployment environments, typically at least staging and production. Azure DevOps は、このアプローチをサポートしています。Azure DevOps supports this approach.

コストに関する考慮事項Cost considerations

コストの見積もりには、Azure 料金計算ツールをご利用ください。Use the Azure pricing calculator to estimate costs. その他の考慮事項のいくつかを次に示します。Here are some other considerations.

ボット アプリケーションBot application

このアーキテクチャでは、主要なコスト ドライバーは、ボット アプリケーション ロジックがホストされている Azure App Service です。In this architecture, the main cost driver is the Azure App Service in which the bot application logic is hosted. ニーズに最も適した App Service プラン レベルを選択してください。Choose an App Service plan tier that best suits your needs. 以下に、推奨事項をいくつか示します。Here are some recommendations:

  • 共有リソースはスケールアウトできないため、テストの目的には Free および Shared (プレビュー) レベルを使用します。Use Free and Shared (preview) tiers for testing purposes because the shared resources cannot scale out.
  • 運用ワークロードは、アプリが専用の仮想マシン インスタンス上で実行され、スケールアウト可能なリソースが割り当てられているため BasicStandard、および Premium レベルで実行します。App Service プランは、1 秒単位で課金されます。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.

アプリが停止されても、App Service プランのインスタンスは課金の対象となります。You are charged for the instances in the App Service plan, even when the app is stopped. テスト配置など、長期的に使用する予定のないプランは削除します。Delete plans that you don't intend to use long term, such as test deployments.

詳しくは、「App Service プランのコスト」をご覧ください。For more information, see How much does my App Service plan cost?.

データ インジェストData ingestion

  • Azure Data FactoryAzure Data Factory

    このアーキテクチャでは、Data Factory によってデータ インジェスト パイプラインが自動化されます。In this architecture, Data Factory automates the data ingestion pipeline. SQL Server プロジェクトをクラウドへシームレスに移行するためのマネージド SQL Server Integration Services (コスト効果の高いオプション) から、すべてのシェイプとサイズのデータを統合するための大規模なサーバーレス データ パイプラインまで、予算のニーズに合わせてさまざまなデータ統合機能を活用します。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.

    例については、Azure Data Factory のコスト分析の例に関するページをご覧ください。For an example, see Azure Data Factory - example cost analysis.

  • Azure FunctionsAzure Functions

    この参照アーキテクチャでは、Azure Functions は 従量課金プラン に従って課金されます。In this reference architecture, Azure Functions is billed as per the Consumption plan. イベントによって関数の実行がトリガーされるたびに、1 秒あたりのリソース消費量に基づいて課金されます。You are charged based on per-second resource consumption and each time an event triggers the execution of the function. 1 回の実行またはバッチで複数のイベントを処理すると、コストを削減できます。Processing several events in a single execution or batches can reduce cost.

    Azure では、関数を実行するために必要なインフラストラクチャが必要に応じてスケーリングされます。Azure scales the infrastructure required to run functions as needed. ワークロードが少ない場合、インフラストラクチャはゼロまでスケールダウンされ、コストがかかりません。When workload is low, the infrastructure is scaled down up to zero with no associated cost. ワークロードが増加するたびに、Azure ではすべての要求に対応するために十分な容量が使用されます。Whenever the workload grows, Azure uses enough capacity to serve all the demand. 実際の使用ごとに支払いを行うため、各コンポーネントの正確なコストを管理します。Because you pay per actual use, manage the exact cost of each component.

Logic AppsLogic Apps

Logic Apps の料金は従量課金制モデルに従います。Logic apps pricing works on the pay-as-you-go model. Logic Apps には従量課金制の価格モデルがあります。Logic apps have a pay-as-you-go pricing model. トリガー、アクション、およびコネクタの実行は、ロジック アプリを実行するたびに課金されます。Triggers, actions, and connector executions are metered each time a logic app runs. トリガーを含め、成功したアクションと失敗したアクションすべてが実行と見なされます。All successful and unsuccessful actions, including triggers, are considered as executions.

たとえば、ロジック アプリで Azure Service Bus からのメッセージを 1 日に 1000 件処理するとします。For instance, your logic app processes 1000 messages a day from Azure Service Bus. 5 つのアクションのワークフローの料金は、$6 未満になります。A workflow of five actions will cost less than $6. 詳細については、「Logic Apps の価格」をご覧ください。For more information, see Logic Apps pricing.

その他のコストに関する考慮事項については、Microsoft Azure Well-Architected Framework のコストに関するセクションをご覧ください。For other cost considerations, see the Cost section in Microsoft Azure Well-Architected Framework.

次の手順Next Steps

  • 会話型ボットの作成をすぐに開始するために、仮想アシスタント テンプレートを確認します。Review the Virtual Assistant template to quickly get started building conversational bots.