ボットのしくみHow bots work

適用対象: SDK v4APPLIES TO: SDK v4

ボットとは、テキスト、グラフィックス (カード、画像など)、または音声を使用してユーザーが会話形式で対話するアプリです。A bot is an app that users interact with in a conversational way, using text, graphics (such as cards or images), or speech. Azure Bot Service はクラウドプラットフォームです。Azure Bot Service is a cloud platform. ボットをホストして、チャネルで使用できるようにします。It hosts bots and makes them available to channels.

Bot Framework サービスは、Azure Bot Service のコンポーネントであり、ユーザーの bot に接続されたアプリ (Facebook や余裕 など) と ボットとの間で情報を送信します。The Bot Framework Service, which is a component of the Azure Bot Service, sends information between the user's bot-connected app (such as Facebook or Slack and so on, which we call the channel) and the bot. それらによって送信されるアクティビティには、それぞれのチャネルによって付加的な情報が追加される場合があります。Each channel may include additional information in the activities they send. ボットを作成する前に、ユーザーと通信するためにアクティビティ オブジェクトがボットでどのように使用されているかを理解しておくことが大切です。Before creating bots, it is important to understand how a bot uses activity objects to communicate with its users. まずは、単純なエコー ボットを実行するときにやり取りされるアクティビティを見てみましょう。Let's first take a look at activities that are exchanged when we run a simple echo bot.

アクティビティの図activity diagram

ここには、"会話の更新" と "メッセージ" の 2 種類のアクティビティが示されています。Two activity types illustrated here are: conversation update and message.

会話の更新は、当事者が会話に参加したときに Bot Framework サービスによって送信されます。The Bot Framework Service may send a conversation update when a party joins the conversation. たとえば、Bot Framework Emulator による会話の開始時には、(会話に参加するユーザーとボットに 1 つずつ) 会話の更新アクティビティが 2 つ生じます。For example, on starting a conversation with the Bot Framework Emulator, you will see two conversation update activities (one for the user joining the conversation and one for the bot joining). これらのメッセージ交換の更新アクティビティを区別するには、アクティビティの [ メンバーの追加 ] プロパティに含まれているユーザーを確認します。To distinguish these conversation update activities, check who is included in the members added property of the activity.

メッセージ アクティビティは、当事者間の会話情報を伝達します。The message activity carries conversation information between the parties. エコー ボットの例では、メッセージ アクティビティによって単純なテキストが伝達され、そのテキストがチャネルによってレンダリングされます。In an echo bot example, the message activities are carrying simple text and the channel will render this text. また、メッセージ アクティビティでは、読み上げられるテキスト、推奨されるアクション、または表示されるカードが伝達される場合があります。Alternatively, the message activity might carry text to be spoken, suggested actions or cards to be displayed.

この例では、インバウンド メッセージ アクティビティに応じるメッセージ アクティビティがボットによって作成され、送信されました。In this example, the bot created and sent a message activity in response to the inbound message activity it had received. ただし、bot は、受信したメッセージアクティビティに他の方法で応答することができます。メッセージアクティビティで何らかのウェルカムテキストを送信することによって、ボットがメッセージ交換の更新アクティビティに応答することは珍しくありません。However, a bot can respond in other ways to a received message activity; it's not uncommon for a bot to respond to a conversation update activity by sending some welcome text in a message activity. 詳細については 、「ユーザーを歓迎する方法」を参照してください。More information can be found in how to welcome a user.

Bot Framework SDKThe Bot Framework SDK

Bot Framework SDK を使用すると、Azure Bot Service でホストできるボットを構築できます。The Bot Framework SDK allows you to build bots that can be hosted on the Azure Bot Service. サービスは、bot とチャネルまたはユーザーがどのように対話できるかを REST API とアクティビティプロトコルで定義します。The service defines a REST API and an activity protocol for how your bot and channels or users can interact. SDK はこの REST API に基づいて構築され、サービスの抽象化を提供して、会話ロジックに集中できるようにします。The SDK builds upon this REST API and provides an abstraction of the service so that you can focus on the conversational logic. SDK を使用するために REST サービスを理解する必要はありませんが、機能の一部を理解すると役に立つ場合があります。While you don't need to understand the REST service to use the SDK, understanding some of its features can be helpful.

Bot は、会話インターフェイスを持つアプリです。Bots are apps that have a conversational interface. もう人が直接介入する必要がないような、ディナーの予約やプロファイル情報の収集などの繰り返し発生する単純なタスクを自動化されたシステムに移行するために使用できます。They can be used to shift simple, repetitive tasks, such as taking a dinner reservation or gathering profile information, on to automated systems that may no longer require direct human intervention. ユーザーは、テキスト、インタラクティブ カード、および音声を使ってボットと会話します。Users converse with a bot using text, interactive cards, and speech. ボットとの対話では、簡単な質問と回答や、サービスへのアクセスをインテリジェントに提供する洗練された会話などが可能です。A bot interaction can be a quick question and answer, or it can be a sophisticated conversation that intelligently provides access to services.


SDK と REST API によって提供される機能のサポートは、チャネルによって異なります。Support for features provided by the SDK and REST API varies by channel. Bot Framework Emulator を使用して bot をテストできますが、bot を使用できるようにする各チャネルで、bot のすべての機能をテストする必要もあります。You can test your bot using the Bot Framework Emulator, but you should also test all features of your bot on each channel in which you intend to make your bot available.

相互作用には、ターン で処理される アクティビティ の交換が関係します。Interactions involve the exchange of activities, which are handled in turns.


ユーザー (またはチャネル) とボットの間のすべての相互作用は、 アクティビティ として表されます。Every interaction between the user (or a channel) and the bot is represented as an activity. Bot Framework アクティビティスキーマ では、ユーザーまたはチャネルとボットの間で交換できるアクティビティを定義します。The Bot Framework Activity schema defines the activities that can be exchanged between a user or channel and a bot. アクティビティは、人間のテキストや音声、アプリ間の通知、他のメッセージに対する反応などを表すことができます。Activities can represent human text or speech, app-to-app notifications, reactions to other messages, and so on.


人が会話するときは、通常、代わる代わる順番に話します。In a conversation, people often speak one-at-a-time, taking turns speaking. ボットの場合、一般的には、ボットがユーザー入力に反応します。With a bot, it generally reacts to user input. Bot Framework SDK では、"ターン" は、ボットがユーザーから受信するアクティビティと、ボットが即時応答としてユーザーに送り返すアクティビティで構成されています。Within the Bot Framework SDK, a turn consists of the user's incoming activity to the bot and any activity the bot sends back to the user as an immediate response. 特定のアクティビティを受信する bot に関連付けられている処理として、ターンを考えることができます。You can think of a turn as the processing associated with the bot receiving a given activity.

たとえば、ユーザーが特定のタスクを実行するように bot に要求する場合があります。For example, a user might ask a bot to perform a certain task. Bot は、タスクに関する詳細情報を取得するために質問で応答することがあります。この時点で、この点が終了します。The bot might respond with a question to get more information about the task, at which point this turn ends. 次に、bot は、bot の質問への回答を含む可能性がある新しいメッセージをユーザーから受信します。または、タスクを実行するための初期要求を無視するためのサブジェクトまたは要求の変更を表している可能性があります。On the next turn, the bot receives a new message from the user that might contain the answer to the bot's question, or it might represent a change of subject or a request to ignore the initial request to perform the task.

Bot アプリケーション構造Bot application structure

SDK は、bot アプリの会話の理由を処理する bot クラスを定義します。The SDK defines a bot class that handles the conversational reasoning for the bot app. Bot クラス:The bot class:

  • ユーザーの入力を認識して解釈します。Recognizes and interprets the user's input.
  • 入力に関する理由と、関連するタスクを実行します。Reasons about the input and performs relevant tasks.
  • Bot が行っている処理または実行した内容に関する応答を生成します。Generates responses about what the bot is doing or has done.

また、この SDK では、チャネルとの接続を処理する アダプター クラスも定義されています。The SDK also defines an adapter class that handles connectivity with the channels. アダプター:The adapter:

  • ユーザーのチャネルに要求を生成するためのメソッドとメソッドを提供します。Provides a method for handling requests from and methods for generating requests to the user's channel.
  • にはミドルウェアパイプラインが含まれています。これには、bot のターンハンドラーの外部での処理の無効化が含まれます。Includes a middleware pipeline, which includes turn processing outside of your bot's turn handler.
  • Bot のターンハンドラーを呼び出し、それ以外の場合はターンハンドラーで処理されないエラーをキャッチします。Calls the bot's turn handler and catches errors not otherwise handled in the turn handler.

また、多くの場合、bot はそれぞれの状態を取得して格納する必要があります。In addition, bots often need to retrieve and store state each turn. これは、 ストレージbot 状態、および プロパティアクセサー クラスによって処理されます。This is handled through storage, bot state, and property accessor classes. SDK には組み込みのストレージが用意されていませんが、ストレージの抽象化とストレージ層のいくつかの実装が用意されています。The SDK does not provide built-in storage, but does provide abstractions for storage and a few implementations of a storage layer. 状態の管理に関するトピックでは、これらの状態と記憶域の機能について説明します。The managing state topic describes these state and storage features.

Bot には、接続と推論の要素、および状態の抽象化があります。A bot has connectivity and reasoning elements, and an abstraction for state

SDK では、web 要求の送受信に特定のアプリケーションレイヤーを使用する必要はありません。The SDK does not require you use a specific application layer to send and receive web requests. Bot Framework には、ASP.NET (C#)、restify (JavaScript)、aiohttp (Python) 用のテンプレートとサンプルが用意されています。The Bot Framework has templates and samples for ASP.NET (C#), restify (JavaScript), and aiohttp (Python). ただし、アプリに異なるアプリケーションレイヤーを使用することもできます。However, you can choose to use a differ application layer for your app.

SDK を使用して bot を作成する場合は、HTTP トラフィックを受信してアダプターに転送するためのコードを提供します。When you create a bot using the SDK, you provide the code to receive the HTTP traffic and forward it to the adapter. Bot Framework には、独自のボットを開発するために使用できるテンプレートとサンプルがいくつか用意されています。The Bot Framework provides a few templates and samples that you can use to develop your own bots.

ボット ロジックBot logic

Bot オブジェクトには、ターンの理由またはロジックが含まれており、ボットアダプターからの受信アクティビティを受け入れることができる ターンハンドラー が公開されています。The bot object contains the conversational reasoning or logic for a turn and exposes a turn handler, which is the method that can accept incoming activities from the bot adapter.

SDK は、bot ロジックを管理するためのいくつかの異なるパラダイムを提供します。The SDK provides a couple different paradigms for managing your bot logic.

  • アクティビティハンドラー には、受信アクティビティの種類とサブタイプがイベントであるイベントドリブンモデルが用意されています。Activity handlers provide an event-driven model in which the incoming activity types and sub-types are the events. これは、ユーザーとの間に制限された短い対話があるボットに適しています。This can be good for bots that have limited, short interactions with the user.
    • アクティビティハンドラーを使用し、ボットが認識して反応するアクティビティの種類またはサブタイプごとにハンドラーを実装します。Use an activity handler and implement handlers for each activity type or sub-type your bot will recognize and react to.
    • Teams アクティビティハンドラーを使用して、Teams チャネルに接続できるボットを作成します。Use a Teams activity handler to create bots that can connect to the Teams channel. (Teams チャネルでは、bot がチャネル固有の動作を処理する必要があります)。(The Teams channel requires the bot to handle some channel-specific behavior.)
  • ダイアログライブラリには、ユーザーとの実行時間の長いメッセージ交換を管理するための状態ベースのモデルが用意されています。The dialogs library provides a state-based model to manage a long-running conversation with the user.
  • 独自の bot クラスを実装し、各ターンを処理する独自のロジックを提供します。Implement your own bot class and provide your own logic for handling each turn. これがどのように見えるかの例については、「独自のプロンプトを作成して ユーザー入力を収集 する方法」を参照してください。See how to create your own prompts to gather user input for an example of what this might look like.

ボット アダプターThe bot adapter

アダプターには、ターンを開始するための process activity メソッドがあります。The adapter has a process activity method for starting a turn.

  • 要求本文 (要求ペイロード、アクティビティに変換されたもの)、要求ヘッダーを引数として受け取ります。It takes the request body (the request payload, translated to an activity) and the request header as arguments.
  • 認証ヘッダーが有効かどうかを確認します。It checks whether the authentication header is valid.
  • これにより、 コンテキスト オブジェクトが作成されます。It creates a context object for the turn.
  • これは、 ミドルウェア パイプラインを介して実行されます。It runs this through its middleware pipeline.
  • このメソッドは、bot オブジェクトのターンハンドラーにアクティビティを送信します。It sends the activity to the bot object's turn handler.

アダプターも次のようになります。The adapter also:

  • 応答アクティビティを書式設定して送信します。Formats and sends response activities. これらの応答は通常、ユーザーのメッセージですが、ユーザーのチャネルが直接使用する情報を含めることもできます。These responses are typically messages for the user, but can also include information to be consumed by the user's channel directly.
  • Bot コネクタによって提供される他のメソッドを REST API します。たとえば、 更新メッセージ削除メッセージ などです。Surfaces other methods provided by the Bot Connector REST API, such as update message and delete message.
  • それ以外でキャッチされたエラーまたは例外をキャッチします。Catches errors or exceptions not otherwise caught for the turn.

ターンコンテキストThe turn context

"ターン コンテキスト" オブジェクトは、アクティビティに関する情報 (送信者と受信者やチャネル、アクティビティの処理に必要なその他のデータなど) を提供します。The turn context object provides information about the activity such as the sender and receiver, the channel, and other data needed to process the activity. また、ターン中に、ボットの各種レイヤーの境界を越えて情報を追加することもできます。It also allows for the addition of information during the turn across various layers of the bot.

ターン コンテキストは、SDK の中で最も重要なアブストラクションの 1 つです。The turn context is one of the most important abstractions in the SDK. すべてのミドルウェアコンポーネントとアプリケーションロジックへの受信アクティビティを実行するだけでなく、ミドルウェアコンポーネントとボットロジックが送信アクティビティを送信できるメカニズムも提供します。Not only does it carry the inbound activity to all the middleware components and the application logic but it also provides the mechanism whereby the middleware components and the bot logic can send outbound activities.


ミドルウェアは、他のメッセージング ミドルウェアとよく似ています。連続する一連のコンポーネントで構成され、各コンポーネントが順に実行されるため、それぞれがアクティビティで動作できます。Middleware is much like any other messaging middleware, comprising a linear set of components that are each executed in order, giving each a chance to operate on the activity. ミドルウェア パイプラインの最終ステージは、アプリケーションがアダプターの process activity メソッドに登録したボット クラスのターン ハンドラーへのコールバックです。The final stage of the middleware pipeline is a callback to the turn handler on the bot class the application has registered with the adapter's process activity method. ミドルウェアは、アダプターが 呼び出す on ターン メソッドを実装します。Middleware implements an on turn method which the adapter calls.

ターン ハンドラーはターン コンテキストを引数として受け取ります。通常、ターン ハンドラー関数内で実行されているアプリケーション ロジックは、受信アクティビティのコンテンツを処理し、応答として 1 つ以上のアクティビティを生成し、ターン コンテキストの send アクティビティ関数を使用してこれらを送信します。The turn handler takes a turn context as its argument, typically the application logic running inside the turn handler function will process the inbound activity's content and generate one or more activities in response, sending these out using the send activity function on the turn context. ターン コンテキストで "アクティビティの送信" を呼び出すと、ミドルウェア コンポーネントがアウトバウンド アクティビティで呼び出されます。Calling send activity on the turn context will cause the middleware components to be invoked on the outbound activities. ミドルウェア コンポーネントは、ボットのターン ハンドラー関数の前と後に実行されます。Middleware components execute before and after the bot's turn handler function. 実行は本質的に入れ子になっているので、"たまねぎ" と呼ばれる場合があります。The execution is inherently nested and, as such, sometimes referred to being like an onion.

ミドルウェア のトピック では、ミドルウェアについてさらに詳細に説明します。The middleware topic describes middleware in greater depth.

ボットの状態とストレージBot state and storage

他の Web アプリと同様に、ボットは本質的にステートレスです。As with other web apps, a bot is inherently stateless. ボット内の状態は、最新の Web アプリケーションと同じパラダイムに従います。Bot Framework SDK は、状態管理を容易にするためにストレージ 層と状態管理の抽象化を提供します。State within a bot follows the same paradigms as modern web applications, and the Bot Framework SDK provides storage layer and state management abstractions to make state management easier.

状態 の管理に関するトピック では、これらの状態とストレージの機能について説明します。The managing state topic describes these state and storage features.

メッセージング エンドポイントとプロビジョニングMessaging endpoint and provisioning

通常、アプリケーションには、メッセージを受信する REST エンドポイントが必要です。Typically, your application will need a REST endpoint at which to receive messages. また、使用するプラットフォームに従ってボットのリソースをプロビジョニングする必要があります。It will also need to provision resources for your bot in accordance with the platform you decide to use.

ボットの 作成に関するクイックスタートに 従って、単純なエコー ボットを作成してテストします。Follow the Create a bot quickstart to create and test a simple echo bot.

HTTP の詳細HTTP Details

アクティビティは、Bot Framework サービスから HTTP POST 要求を介してボットに送信されます。Activities arrive at the bot from the Bot Framework Service via an HTTP POST request. ボットは、インバウンド POST 要求に対し、200 HTTP 状態コードで応答します。The bot responds to the inbound POST request with a 200 HTTP status code. ボットからチャネルに送信されるアクティビティは、別の HTTP POST で Bot Framework サービスに送信されます。Activities sent from the bot to the channel are sent on a separate HTTP POST to the Bot Framework Service. それに対する肯定応答が 200 HTTP の状態コードで返されます。This, in turn, is acknowledged with a 200 HTTP status code.

プロトコルでは、これらの POST 要求とその受信確認の順序は指定されます。The protocol doesn't specify the order in which these POST requests and their acknowledgments are made. しかし、一般的な HTTP サービスのフレームワークに合わせるため、これらの要求は入れ子にするのが通常です。つまり、アウトバウンド HTTP 要求は、ボットからインバウンド HTTP 要求のスコープ内で行われます。However, to fit with common HTTP service frameworks, typically these requests are nested, meaning that the outbound HTTP request is made from the bot within the scope of the inbound HTTP request. このパターンを前の図に示します。This pattern is illustrated in the earlier diagram. 2 つの異なる HTTP 接続が連続して存在するため、セキュリティ モデルには、その両方に対する手立てが必要となります。Since there are two distinct HTTP connections back to back, the security model must provide for both.


ボットは、ほとんどのチャネルで状態が 200 の呼び出しを確認するために 15 秒です。The bot has 15 seconds to acknowledge the call with a status 200 on most channels. ボットが 15 時間以内に応答しない場合は、HTTP GatewayTimeout エラー (504) が発生します。If the bot does not respond within 15 seconds, an HTTP GatewayTimeout error (504) occurs.

アクティビティの処理スタックThe activity processing stack

メッセージ アクティビティの到着に重点を置き、前のシーケンス図をドリルダウンしましょう。Let's drill into the previous sequence diagram with a focus on the arrival of a message activity.


上の例では、ボットがメッセージ アクティビティに対して、同じテキスト メッセージが含まれた別のメッセージ アクティビティで応答しました。In the example above, the bot replied to the message activity with another message activity containing the same text message. 処理は、HTTP POST 要求で始まります。このとき、アクティビティ情報は JSON ペイロードとして伝達されて、Web サーバーに届きます。Processing starts with the HTTP POST request, with the activity information carried as a JSON payload, arriving at the web server. C# では通常、これは ASP.NET プロジェクトです。JavaScript Node.js プロジェクトでは、これは Express や restify などの一般的なフレームワークの 1 つになる可能性があります。In C# this will typically be an ASP.NET project, in a JavaScript Node.js project this is likely to be one of the popular frameworks such as Express or restify.

"アダプター" は SDK の統合コンポーネントで、SDK ランタイムのコアです。The adapter, an integrated component of the SDK, is the core of the SDK runtime. アクティビティは、HTTP POST 本文で JSON として渡されます。The activity is carried as JSON in the HTTP POST body. この JSON は逆シリアル化され、アクティビティ オブジェクトが作成され、その後、そのプロセス アクティビティ メソッドを介してアダプター に渡 されます。This JSON is deserialized to create the activity object that is then handed to the adapter through its process activity method. アクティビティを受け取ったアダプターにより、"ターン コンテキスト" が作成され、ミドルウェアが呼び出されます。On receiving the activity, the adapter creates a turn context and calls the middleware.

上述したように、ターン コンテキストは、アウトバウンド アクティビティを送信するメカニズムをボットに提供します。この送信処理は、多くの場合、インバウンド アクティビティに対する応答として実行されます。As mentioned above, the turn context provides the mechanism for the bot to send outbound activities, most often in response to an inbound activity. これを実現するために、ターン コンテキストでは _、送信、_更新、および 削除アクティビティ の応答メソッドが提供されます。To achieve this, the turn context provides send, update, and delete activity response methods. 各応答メソッドは、非同期プロセスで実行されます。Each response method runs in an asynchronous process.


プライマリ ボット ターンが完了すると、それを処理していたスレッドによってコンテキスト オブジェクトの破棄処理が行われます。The thread handling the primary bot turn deals with disposing of the context object when it is done. いずれのアクティビティ呼び出しに対しても必ず await を実行します。これにより、プライマリ スレッドでは生成されたアクティビティで待機してから、その処理が終了され、ターン コンテキストの破棄が行われます。Be sure to await any activity calls so the primary thread will wait on the generated activity before finishing its processing and disposing of the turn context. そうしないと、応答 (そのハンドラーも含まれる) にかなりの時間がかかり、コンテキスト オブジェクトに基づいた処理が試みられた場合、"コンテキスト破棄済み" エラーが返されることがあります。Otherwise, if a response (including its handlers) takes any significant amount of time and tries to act on the context object, it may get a context was disposed error.

ボット テンプレートBot templates

アプリに使用するアプリケーション レイヤーを選択する必要があります。ただし、Bot Frameworkには、ASP.NET (C#)、restify (JavaScript)、および aiohttp (Python) 用のテンプレートとサンプルがあります。You need to choose the application layer use for your app; however, the Bot Framework has templates and samples for ASP.NET (C#), restify (JavaScript), and aiohttp (Python). ドキュメントは、これらのプラットフォームのいずれかを使用すると想定して記述されています。ただし、SDK では必要ではありません。The documentation is written assuming you use one of these platforms, but the SDK does not require it of you. テンプレートに アクセスしてインストールする 方法については、ボットの作成に関するクイックスタートを参照してください。See the Create a bot quickstart for instructions on how to access and install the templates.

ボットは Web アプリケーションであり、SDK の言語バージョンごとにテンプレートが提供されます。A bot is a web application, and templates are provided for each language version of the SDK. すべてのテンプレートは、既定のエンドポイント実装とアダプターを提供します。All templates provide a default endpoint implementation and adapter. 各テンプレートには次が含まれます。Each template includes:

  • リソースのプロビジョニングResource provisioning
  • 受信アクティビティをアダプターにルーティングする言語固有の HTTP エンドポイント実装。A language-specific HTTP endpoint implementation that routes incoming activities to an adapter.
  • アダプター オブジェクトAn adapter object
  • ボット オブジェクトA bot object

さまざまなテンプレートの種類の主な違いは、ボット オブジェクトです。The main difference between the different template types is in the bot object. テンプレートは次のとおりです。The templates are:

  • 空のボットEmpty bot
    • 会話の最初のターンに "hello world" メッセージを送信することで、ユーザーを会話に歓迎するアクティビティ ハンドラーが含まれています。Includes an activity handler that welcomes a user to the conversation by sending a "hello world" message on the first turn of the conversation.
  • エコー ボットEcho bot
    • アクティビティ ハンドラーを使用してユーザーを歓迎し、ユーザー入力をエコーバックします。Uses an activity handler to welcome users and echo back user input.
  • コア ボットCore bot
    • SDK の多くの機能をまとめ、ボットのベスト プラクティスを示します。Brings together many features of the SDK and demonstrates best practices for a bot.
    • アクティビティ ハンドラーを使用してユーザーを歓迎します。Uses an activity handler to welcome users.
    • コンポーネント ダイアログと子ダイアログを使用して会話を管理します。Uses a component dialog and child dialogs to manage the conversation.
    • ダイアログでは、Language Understanding (LUIS) とQnA Makerされます。The dialogs use Language Understanding (LUIS) and QnA Maker features.

追加情報Additional information

ボット リソースの管理Managing bot resources

アプリ ID、パスワード、キーまたはシークレットなどのボット リソースは、適切に管理する必要があります。The bot resources, such as app ID, passwords, keys or secrets for connected services, will need to be managed appropriately. その方法の詳細については、セキュリティ ガイドラインに関するページBot Frameworkボット リソースの管理に関するページを参照してくださいFor more on how to do so, see the Bot Framework security guidelines and about managing bot resources.

チャネル アダプターChannel adapters

SDK では、チャネル アダプターを使用することもできます。このアダプター自体は、Bot Connector Service がチャネルに対して通常実行するタスクを追加で実行します。The SDK also lets you use channel adapters, in which the adapter itself additionally performs the tasks that the Bot Connector Service would normal do for a channel.

SDK には、一部の言語でいくつかのチャネル アダプターが提供されています。The SDK provides a few channel adapters in some languages. その他のチャネル アダプターは、Botkit とリポジトリCommunity使用できます。More channel adapters are available through the Botkit and Community repositories. 詳細については、BOT FRAMEWORK SDK リポジトリのチャネルとアダプターの表 を参照してくださいFor more details, see the Bot Framework SDK repository's table of channels and adapters.

The Bot Connector REST APIThe Bot Connector REST API

Bot Framework SDK では、Bot Connector がラップされ、基REST API。The Bot Framework SDK wraps and builds upon the Bot Connector REST API. SDK をサポートする基になる HTTP 要求を理解する場合は、コネクタ認証と関連 記事を参照 してください。If you want to understand the underlying HTTP requests that support the SDK, see the Connector authentication and associated articles. ボットが送信および受信するアクティビティは、アクティビティ スキーマ Bot Framework準拠していますThe activities a bot sends and receives conform to the Bot Framework Activity schema.

次のステップNext steps