봇 작동 방식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.

Azure Bot Service 구성 요소인 Bot Framework 서비스는 사용자의 봇에 연결 된 앱 (예: 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

여기에 설명된 두 가지 활동은 대화 업데이트메시지 입니다.Two activity types illustrated here are: conversation update and message.

대화 상대가 대화에 참여하면 Bot Framework Service에서 대화 업데이트를 보낼 수 있습니다.The Bot Framework Service may send a conversation update when a party joins the conversation. 예를 들어 Bot Framework Emulator와의 대화를 시작하면 두 가지 대화 업데이트 활동(사용자 대화 참여 활동과 봇 참여 활동)이 표시됩니다.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. 그러나 봇은 받은 메시지 작업에 다른 방식으로 응답할 수 있습니다. 일반적으로 봇이 메시지 활동에서 환영 텍스트를 전송 하 여 대화 업데이트 작업에 응답 하는 것이 일반적이 지 않습니다.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. 이 서비스는 봇과 채널 또는 사용자가 상호 작용할 수 있는 방법에 대 한 REST API 및 작업 프로토콜을 정의 합니다.The service defines a REST API and an activity protocol for how your bot and channels or users can interact. 이 REST API를 기반으로 하는 SDK는 대화형 논리에 집중할 수 있도록 서비스의 추상화를 제공 합니다.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를 사용 하 여 봇을 테스트할 수 있지만 봇을 사용할 수 있도록 하려는 각 채널에서 봇의 모든 기능을 테스트 해야 합니다.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.

활동Activities

사용자 (또는 채널)와 봇 간의 모든 상호 작용은 활동 으로 표시 됩니다.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.

Turns

대화에서 사람들은 한 번에 한 명씩 순서대로 말을 합니다.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. 지정 된 활동을 받는 봇과 관련 된 처리로 차례로 생각할 수 있습니다.You can think of a turn as the processing associated with the bot receiving a given activity.

예를 들어 사용자가 특정 작업을 수행 하도록 봇을 요청할 수 있습니다.For example, a user might ask a bot to perform a certain task. 봇은 작업에 대 한 자세한 정보를 얻기 위해 질문에 응답할 수 있습니다 .이 경우이 점이 종료 됩니다.The bot might respond with a question to get more information about the task, at which point this turn ends. 다음 번에 봇은 봇의 질문에 대 한 답을 포함할 수 있는 사용자 로부터 새 메시지를 받거나, 주체의 변경 또는 작업을 수행 하는 초기 요청을 무시 하는 요청을 나타낼 수 있습니다.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.
  • 봇이 수행 하거나 수행한 작업에 대 한 응답을 생성 합니다.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.
  • 에는 봇의 턴 처리기 외부에서의 턴 처리를 포함 하는 미들웨어 파이프라인이 포함 되어 있습니다.Includes a middleware pipeline, which includes turn processing outside of your bot's turn handler.
  • Bot의 턴 처리기를 호출 하 고, 다른 방식으로는 턴 처리기에서 처리 되지 않은 오류를 catch 합니다.Calls the bot's turn handler and catches errors not otherwise handled in the turn handler.

또한 봇은 각 턴 마다 상태를 검색 하 고 저장 해야 하는 경우가 많습니다.In addition, bots often need to retrieve and store state each turn. 저장소, 봇 상태속성 접근자 클래스를 통해 처리 됩니다.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.

봇에는 연결 및 추론 요소가 있고 상태에 대 한 추상화가 있습니다.A bot has connectivity and reasoning elements, and an abstraction for state

SDK에서는 특정 응용 프로그램 계층을 사용 하 여 웹 요청을 보내고 받을 필요가 없습니다.The SDK does not require you use a specific application layer to send and receive web requests. Bot 프레임 워크에는 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를 사용 하 여 봇을 만드는 경우 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 채널에는 몇 가지 채널 특정 동작을 처리 하기 위한 봇이 필요 합니다.(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.
    • 작업 처리기 및 구성 요소 대화 상자 를 사용 하 여 대부분의 순차적인 대화를 처리 합니다.Use an activity handler and a component dialog for largely sequential conversations. 자세한 내용은 구성 요소 및 폭포 대화 상자 정보를 참조 하세요.See about component and waterfall dialogs for more information.
    • 더 광범위 한 사용자 상호 작용을 처리할 수 있는 유연한 대화 흐름의 경우 대화 상자 관리자적응 대화 상자 를 사용 합니다.Use a dialog manager and an adaptive dialog for flexible conversation flow that can handle a wider range of user interaction. 자세한 내용은 적응 대화 상자 소개 를 참조 하세요.See the introduction to adaptive dialogs for more information.
  • 사용자 고유의 봇 클래스를 구현 하 고 각 턴을 처리 하기 위한 고유한 논리를 제공 합니다.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 작업 메서드가 있습니다.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.
  • 이 메서드는 turn에 대 한 컨텍스트 개체를 만듭니다.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.
  • 업데이트 메시지삭제 메시지 와 같이 봇 커넥터에서 제공 하는 다른 메서드를 REST API 합니다.Surfaces other methods provided by the Bot Connector REST API, such as update message and delete message.
  • 오류 또는 예외를 catch 하 여 해당 순서를 catch 하지 않습니다.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의 가장 중요한 추상화 중 하나입니다.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

미들웨어는 다른 메시징 미들웨어와 유사하게 순서대로 각각 실행되는 선형 구성 요소 집합을 구성하고 각 작업에서 작동할 수 있는 기회를 제공합니다.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. 미들웨어 파이프라인의 최종 단계는 애플리케이션이 어댑터의 작업 처리 메서드에 등록한 봇 클래스의 순서 처리기 함수를 호출하는 콜백입니다.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 turn 메서드를 구현 합니다.Middleware implements an on turn method which the adapter calls.

턴 처리기는 turn 컨텍스트를 인수로 사용 합니다. 일반적으로 턴 처리기 함수 내에서 실행 되는 응용 프로그램 논리는 인바운드 활동의 콘텐츠를 처리 하 고, 응답으로 하나 이상의 활동을 생성 하 고,이를 사용 하 여 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. 순서 컨텍스트에서 send activity 를 호출하면 미들웨어 구성 요소를 아웃바운드 작업에서 호출하게 됩니다.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 상태 및 저장소Bot state and storage

다른 웹 앱과 마찬가지로 봇은 본질적으로 상태 비저장입니다.As with other web apps, a bot is inherently stateless. 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.

Bot 만들기 빠른 시작을 따라 간단한 에코 봇을 만들고 테스트 합니다.Follow the Create a bot quickstart to create and test a simple echo bot.

HTTP 세부 정보HTTP Details

활동은 HTTP POST 요청을 통해 Bot Framework Service에서 봇에 도착합니다.Activities arrive at the bot from the Bot Framework Service via an HTTP POST request. 봇은 HTTP 상태 코드 200으로 인바운드 POST 요청에 응답합니다.The bot responds to the inbound POST request with a 200 HTTP status code. 봇에서 채널로 전송된 활동은 별도의 HTTP POST에서 Bot Framework Service로 전송됩니다.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. 두 개의 개별적인 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 Gtimeout 오류 (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 페이로드로 전달되고, 웹 서버에 도착합니다.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와 같은 인기 있는 프레임 워크 중 하나일 수 있습니다.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은 작업 개체를 만들기 위해 deserialize 되어 process 활동 메서드를 통해 어댑터로 전달 됩니다.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 프레임 워크에는 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.

Bot은 웹 응용 프로그램이 며 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
  • Bot 개체A bot object

서로 다른 템플릿 형식 간의 주요 차이점은 봇 개체에 있습니다.The main difference between the different template types is in the bot object. 템플릿은 다음과 같습니다.The templates are:

  • 빈 봇Empty bot
    • 에는 대화의 첫 번째 설정에서 "hello 세계" 메시지를 전송 하 여 사용자가 대화를 시작 하는 작업 처리기가 포함 되어 있습니다.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 봇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

Bot 리소스 관리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를 사용 하 여 어댑터 자체가 채널에 대해 일반적으로 수행 하는 작업을 추가로 수행 하는 채널 어댑터를 사용할 수도 있습니다.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. 자세한 내용은 봇 Framework SDK 리포지토리의 채널 및 어댑터표를 참조 하세요.For more details, see the Bot Framework SDK repository's table of channels and adapters.

봇 커넥터 REST APIThe Bot Connector REST API

Bot Framework SDK는 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