Slack에 봇 연결Connect a bot to Slack

적용 대상: SDK v4APPLIES TO: SDK v4

이 문서에서는 봇에 여유 채널을 추가 하는 방법을 보여 줍니다.This article shows how to add a Slack channel to a bot. 다음 방법 중 하나를 선택 하 여 여유 시간 앱 을 구성 합니다.Select one of the following ways to configure the Slack app:

Azure Portal를 사용 하 여 여유 시간 응용 프로그램 만들기Create a Slack application using the Azure portal

  1. 브라우저 에서 로그인 합니다.In your browser, sign in Slack.

  2. 패널로 이동 합니다.Navigate to Your Apps panel.

    봇 설정

  3. Create New App 을 클릭합니다.Click Create New App.

  4. 앱 이름 상자에 여유 시간 응용 프로그램의 이름을 입력 합니다.In the App Name box, enter the name of your Slack application.

  5. 개발 여유 팀 상자에 개발 팀의 이름을 입력 합니다.In the Development Slack Team box, enter the name of your development team. 아직 개발 Slack 팀 멤버가 아닌 경우 만들거나 가입합니다.If you are not already a member of a Development Slack Team, create or join one.

    앱 만들기

  6. 앱 만들기 를 클릭합니다.Click Create App.

새 리디렉션 URL 추가Add a new redirect URL

  1. 왼쪽 패널에서 OAuth & 권한 메뉴 항목을 선택 합니다.In the left panel, select the OAuth & Permissions menu item.

  2. 오른쪽 패널에서 새 리디렉션 URL 추가 를 클릭 합니다.In the right panel, click Add a new Redirect URL.

  3. 상자에을 입력 https://slack.botframework.com/ 합니다.In the box, enter https://slack.botframework.com/.

  4. 추가 를 클릭합니다.Click Add.

  5. URL 저장 을 클릭합니다.Click Save URLs.

    리디렉션 URL 추가

봇 이벤트 구독Subscribe to Bot Events

6가지 특정 봇 이벤트를 구독하려면 다음 단계를 따릅니다.Follow these steps to subscribe to six particular bot events. 봇 이벤트를 구독하면 앱은 지정된 URL의 사용자 활동에 대한 알림을 받게 됩니다.By subscribing to bot events, your app will be notified of user activities at the URL you specify.

봇 핸들은 봇의 이름입니다.Your bot handle is the name of your bot. Bot의 핸들을 찾으려면를 방문 하 여 https://dev.botframework.com/bots 봇을 선택 하 고 봇의 이름을 기록 합니다.To find a bot's handle, visit https://dev.botframework.com/bots, choose a bot, and record the name of the bot.

  1. 왼쪽 패널에서 이벤트 구독 항목을 선택 합니다.In the left panel, select the Event Subscriptions item.

  2. 오른쪽 패널에서 이벤트 사용켜기 로 설정 합니다.In the right panel, set Enable Events to On.

  3. 요청 URLhttps://slack.botframework.com/api/Events/{YourBotHandle}을 중괄호 없이 입력합니다. 여기서 {YourBotHandle}은 봇 핸들입니다.In Request URL, enter https://slack.botframework.com/api/Events/{YourBotHandle}, where {YourBotHandle} is your bot handle, without the braces.

    이벤트 구독

  4. 봇 이벤트 구독 에서 봇 사용자 이벤트 추가 를 클릭합니다.In Subscribe to Bot Events, click Add Bot User Event.

  5. 이벤트 목록에서 이러한 6개 이벤트 유형을 선택합니다.In the list of events, select these six event types:

    • member_joined_channel
    • member_left_channel
    • message.channels
    • message.groups
    • message.im
    • message.mpim

    구독 된 이벤트 목록

  6. 화면 아래쪽에서 변경 내용 저장 을 클릭 합니다.At the bottom of the screen, click Save Changes.

여유 시간으로 이벤트를 추가 하면 요청 해야 하는 범위가 나열 됩니다.As you add events in Slack, it lists the scopes you need to request. 필요한 범위는 구독 하는 이벤트와 응답 방법에 따라 달라 집니다.The scopes you need will depend on the events you subscribe to and how you intend to respond to them. 지원 되는 여유 범위는 범위 및 사용 권한을 참조 하세요.For Slack supported scopes, refer to Scopes and permissions. 또한 Bot OAuth 범위 이해를참조 하세요.See also Understanding OAuth scopes for Bots.

참고

6 월 2020을 기준으로 하는 채널은 봇 V2 권한 범위를 지원 합니다 .이를 통해 봇에서 기능 및 사용 권한을 보다 세분화 된 방식으로 지정할 수 있습니다.As of June 2020 Slack channel supports Slack V2 permission scopes which allow the bot to specify its capabilities and permissions in a more granular way. 새로 구성 된 모든 여유 시간 채널은 V2 범위를 사용 합니다.All newly configured Slack channels will use the V2 scopes. 봇을 V2 범위로 전환 하려면 Azure Portal 채널 블레이드에서 여유 채널 구성을 삭제 하 고 다시 만듭니다.To switch your bot to the V2 scopes, delete and recreate the Slack channel configuration in the Azure portal Channels blade.

대화형 메시지 추가 및 구성(선택 사항)Add and Configure Interactive Messages (optional)

봇이 단추와 같은 Slack 관련 기능을 사용하는 경우 다음 단계를 수행합니다.If your bot will use Slack-specific functionality such as buttons, follow these steps:

  1. 대화형 작업 & 바로 가기 탭을 선택 하 고 대화형 작업 을 사용 하도록 설정 합니다.Select the Interactivity & Shortcuts tab and enable Interactivity.

  2. 요청 URLhttps://slack.botframework.com/api/Actions를 입력합니다.Enter https://slack.botframework.com/api/Actions as the Request URL.

  3. 변경 내용 저장 단추를 클릭합니다.Click the Save changes button.

    메시지 사용

봇에 여유 채널 추가Add the Slack channel to the bot

  1. 왼쪽 패널에서 기본 정보 항목을 선택 합니다.In the left panel, select the Basic Information item.

  2. 오른쪽 패널에서 앱 자격 증명 섹션으로 스크롤합니다.In the right panel, scroll to the App Credentials section. 여유 봇 채널을 구성 하는 데 필요한 클라이언트 ID, 클라이언트 암호서명 암호가 표시 됩니다.The Client ID, Client Secret, and Signing Secret required for configuring your Slack bot channel are displayed. 이러한 자격 증명을 안전한 장소에 복사 하 고 저장 합니다.Copy and store these credentials in safe place.

    자격 증명 수집

  3. Azure Portal에서 봇을 엽니다.Open your bot in the Azure portal.

  4. 왼쪽 패널에서 채널 을 선택 합니다.In the left panel, select Channels,

  5. 오른쪽 패널에서 여유 시간 아이콘을 선택 합니다.In the right panel, select the Slack icon.

  6. 이전 단계에서 저장 한 여유 앱 자격 증명을 해당 필드에 붙여넣습니다.Paste the Slack app credentials you saved in the previous steps into the appropriate fields.

  7. 방문 페이지 URL 은 선택 사항입니다.The Landing Page URL is optional. 생략하거나 변경할 수 있습니다.You may omit or change it.

    자격 증명 제출

  8. 저장 을 클릭합니다.Click Save. 개발 Slack 팀에 Slack 앱에 대한 액세스 권한을 부여하려면 지침을 따릅니다.Follow the instructions to authorize your Slack app's access to your Development Slack Team.

  9. 여유 시간 구성 페이지에서 저장 단추의 슬라이더가 사용 으로 설정 되어 있는지 확인 합니다.On the Configure Slack page, confirm that the slider by the Save button is set to Enabled. 이제 봇에서 사용자와 통신 하도록 봇이 구성 되었습니다.Your bot is now configured to communicate with the users in Slack.

Slack에 추가 단추 만들기Create an Add to Slack button

Slack은 이 페이지Slack에 추가 단추 섹션에서 Slack 사용자가 봇을 찾는 데 도움을 주기 위해 사용할 수 있는 HTML을 제공합니다.Slack provides HTML you can use to help Slack users find your bot in the Add the Slack button section of this page. 봇에서 이 HTML을 사용하려면 href 값(https://로 시작)을 봇의 Slack 채널 설정에 있는 URL로 바꿉니다.To use this HTML with your bot, replace the href value (begins with https://) with the URL found in your bot's Slack channel settings. 대체 URL을 가져오려면 다음 단계를 수행합니다.Follow these steps to get the replacement URL.

  1. 에서 https://dev.botframework.com/bots 봇을 클릭 합니다.On https://dev.botframework.com/bots, click your bot.
  2. 채널 을 클릭하고 Slack 이라는 항목을 마우스 오른쪽 단추로 클릭하고 링크 복사 를 클릭합니다.Click Channels, right-click the entry named Slack, and click Copy link. 이제 이 URL이 클립보드에 포함되었습니다.This URL is now in your clipboard.
  3. 클립보드의 이 URL을 Slack 단추에 제공되는 HTML에 붙여넣습니다.Paste this URL from your clipboard into the HTML provided for the Slack button. 이 URL은 이 봇을 위해 Slack이 제공하는 href 값을 대신합니다.This URL replaces the href value provided by Slack for this bot.

권한 있는 사용자는 수정된 이 HTML에서 제공하는 Slack에 추가 단추를 클릭하여 Slack에서 해당 봇에 연결할 수 있습니다.Authorized users can click the Add to Slack button provided by this modified HTML to reach your bot on Slack.

참고

HTML의 href 값에 붙여넣은 링크에는 필요에 따라 조정할 수 있는 범위가 포함 되어 있습니다.The link you pasted into the href value of the HTML contains scopes that can be refined as needed. 사용 가능한 범위의 전체 목록은 범위 및 사용 권한 을 참조 하세요.See Scopes and permissions for the full list of available scopes.

여유 어댑터를 사용 하 여 여유 시간 응용 프로그램 만들기Create a Slack application using the Slack adapter

Slack과 봇을 연결하기 위해 Azure Bot Service에서 사용할 수 있는 채널뿐만 아니라 Slack 어댑터도 사용할 수 있습니다.As well as the channel available in the Azure Bot Service to connect your bot with Slack, you can also use the Slack adapter. 이 문서에서는 어댑터를 사용하여 봇을 Slack에 연결하는 방법에 대해 알아봅니다.In this article you will learn how to connect a bot to Slack using the adapter. 이 문서는 EchoBot 샘플을 수정하여 Slack 앱에 연결하는 과정을 안내합니다.This article will walk you through modifying the EchoBot sample to connect it to a Slack app.

참고

아래 지침에서는 Slack 어댑터의 C# 구현을 다루고 있습니다.The instructions below cover the C# implementation of the Slack adapter. BotKit 라이브러리의 일부인 JS 어댑터를 사용하는 방법에 대한 지침은 BotKit Slack 설명서를 참조하세요.For instructions on using the JS adapter, part of the BotKit libraries, see the BotKit Slack documentation.

사전 요구 사항Prerequisites

앱 만들기 및 개발 Slack 팀 할당Create an app and assign a development Slack team

Slack에 로그인한 다음, Slack 애플리케이션 만들기 채널로 이동합니다.Log into Slack and then go to create a Slack application channel.

Bot 어댑터 설정

'Create new app'(새 앱 만들기) 단추를 클릭합니다.Click the 'Create new app' button. 앱 이름 을 입력하고, 개발 Slack 작업 영역 팀을 선택합니다.Enter an App Name and select a Development Slack Workspace. 아직 개발 Slack 팀 멤버가 아닌 경우 멤버를 만들거나 조인합니다.If you are not already a member of a development Slack team, create or join one.

앱 만들기

앱 만들기 를 클릭합니다.Click Create App. Slack은 앱을 만들고, 클라이언트 ID 및 클라이언트 암호를 생성합니다.Slack will create your app and generate a client ID and client secret.

봇에 필요한 구성 설정 수집Gather required configuration settings for your bot

앱이 만들어지면 다음 정보를 수집합니다.Once your app is created, collect the following information. 이는 봇을 Slack에 연결하는 데 필요합니다.You will need this to connect your bot to Slack.

  1. Basic Information(기본 정보) 탭에서 Verification Token(확인 토큰)Signing Secret(서명 비밀) 을 확인하고, 나중에 봇 설정을 구성할 수 있도록 유지합니다.Note the Verification Token and the Signing Secret from the Basic Information tab and keep them for later to configure your bot settings.

Slack 토큰

  1. Settings(설정) 메뉴의 Install App(앱 설치) 페이지로 이동하여 지침에 따라 앱을 Slack 팀에 설치합니다.Navigate to the Install App page under the Settings menu and follow the instructions to install your app into a Slack team. 설치가 완료되면 Bot User OAuth Access Token(봇 사용자 OAuth 액세스 토큰) 을 복사하고 나중에 봇 설정을 구성할 수 있도록 이를 유지합니다.Once installed, copy the Bot User OAuth Access Token and, again, keep this for later to configure your bot settings.

봇에서 Slack 어댑터 연결Wiring up the Slack adapter in your bot

Slack 어댑터 NuGet 패키지 설치Install the Slack adapter NuGet package

Microsoft.Bot.Builder.Adapters.Slack NuGet 패키지를 추가합니다.Add the Microsoft.Bot.Builder.Adapters.Slack NuGet package. NuGet을 사용하는 방법에 대한 자세한 내용은 Visual Studio에서 패키지 설치 및 관리를 참조하세요.For more information on using NuGet, see Install and manage packages in Visual Studio

Slack 어댑터 클래스 만들기Create a Slack adapter class

*Slackadapter _ 클래스에서 상속 되는 새 클래스를 만듭니다.Create a new class that inherits from the *SlackAdapter _ class. 이 클래스는 여유 채널에 대 한 어댑터 역할을 하며, Azure Bot Service에서 다른 요청을 처리 하는 데 사용 되는 오류 처리 기능 (샘플에 이미 있는 _ BotFrameworkAdapterWithErrorHandler* 클래스와 유사)을 포함 합니다.This class will act as our adapter for the Slack channel and include error handling capabilities (similar to the _ BotFrameworkAdapterWithErrorHandler* class already in the sample, used for handling other requests from Azure Bot Service).

public class SlackAdapterWithErrorHandler : SlackAdapter
{
    public SlackAdapterWithErrorHandler(IConfiguration configuration, ILogger<BotFrameworkHttpAdapter> logger)
    : base(configuration, logger)
    {
        OnTurnError = async (turnContext, exception) =>
        {
            // Log any leaked exception from the application.
            logger.LogError(exception, $"[OnTurnError] unhandled error : {exception.Message}");

            // Send a message to the user
            await turnContext.SendActivityAsync("The bot encountered an error or bug.");
            await turnContext.SendActivityAsync("To continue to run this bot, please fix the bot source code.");

            // Send a trace activity, which will be displayed in the Bot Framework Emulator
            await turnContext.TraceActivityAsync("OnTurnError Trace", exception.Message, "https://www.botframework.com/schemas/error", "TurnError");
        };
    }
}

Slack 요청을 처리하는 새 컨트롤러 만들기Create a new controller for handling Slack requests

api/slack api/messages Azure Bot Service 채널에서 요청 하는 데 사용 되는 기본값이 아닌 새 끝점에서 여유 시간 앱의 요청을 처리할 새 컨트롤러를 만듭니다.We create a new controller which will handle requests from your slack app, on a new endpoint api/slack instead of the default api/messages used for requests from Azure Bot Service Channels. 봇에 추가 엔드포인트를 추가하면 동일한 봇을 사용하여 Bot Service 채널 및 Slack의 요청을 모두 수락할 수 있습니다.By adding an additional endpoint to your bot, you can accept requests from Bot Service channels, as well as from Slack, using the same bot.

[Route("api/slack")]
[ApiController]
public class SlackController : ControllerBase
{
    private readonly SlackAdapter _adapter;
    private readonly IBot _bot;

    public SlackController(SlackAdapter adapter, IBot bot)
    {
        _adapter = adapter;
        _bot = bot;
    }

    [HttpPost]
    [HttpGet]
    public async Task PostAsync()
    {
        // Delegate the processing of the HTTP POST to the adapter.
        // The adapter will invoke the bot.
        await _adapter.ProcessAsync(Request, Response, _bot);
    }
}

봇의 구성 파일에 Slack 앱 설정 추가Add Slack app settings to your bot's configuration file

아래에 표시된 세 개의 설정을 봇 프로젝트의 appSettings.json 파일에 추가하고, 이전에 Slack 앱을 만들 때 수집한 값을 사용하여 각 설정을 채웁니다.Add the 3 settings shown below to your appSettings.json file in your bot project, populating each one with the values gathered earlier when creating your Slack app.

  "SlackVerificationToken": "",
  "SlackBotToken": "",
  "SlackClientSigningSecret": ""

봇 startup.cs에 Slack 어댑터 삽입Inject the Slack adapter In your bot startup.cs

다음 줄을 startup.cs 파일 내의 ConfigureServices 메서드에 추가합니다.Add the following line to the ConfigureServices method within your startup.cs file. 그러면 Slack 어댑터가 등록되어 새 컨트롤러 클래스에서 사용할 수 있습니다.This will register your Slack adapter and make it available for your new controller class. 이전 단계에서 추가한 구성 설정은 어댑터에서 자동으로 사용됩니다.The configuration settings you added in the previous step will be automatically used by the adapter.

services.AddSingleton<SlackAdapter, SlackAdapterWithErrorHandler>();

일단 추가 되 면 ConfigureServices 메서드는 다음과 같이 표시 됩니다.Once added, your ConfigureServices method should look like this.

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

    // Create the default Bot Framework Adapter (used for Azure Bot Service channels and Emulator).
    services.AddSingleton<IBotFrameworkHttpAdapter, BotFrameworkAdapterWithErrorHandler>();

    // Create the Slack Adapter
    services.AddSingleton<SlackAdapter, SlackAdapterWithErrorHandler>();

    // Create the bot as a transient. In this case the ASP Controller is expecting an IBot.
    services.AddTransient<IBot, EchoBot>();
}

Slack 앱의 구성 완료Complete configuration of your Slack app

봇에 대한 URL 가져오기Obtain a URL for your bot

이제 봇 프로젝트에서 Slack 앱을 만들고 어댑터를 연결했으므로 마지막 단계는 Slack 앱에서 봇의 올바른 엔드포인트를 가리키고 봇에서 메시지를 받도록 앱을 구독하는 것입니다.Now that you have created a Slack app and wired up the adapter in your bot project, the final step is to point the Slack app to the correct endpoint on your bot and subscribe your app to ensure your bot receives messages. 이렇게 하려면 Slack에서 엔드포인트에 대한 URL이 유효한지 확인할 수 있도록 봇이 실행되고 있어야 합니다.To do this your bot must be running, so that Slack can verify the URL to the endpoint is valid.

이 단계를 완료하려면 봇을 Azure에 배포하고, 배포된 봇의 URL을 적어 두세요.To complete this step, deploy your bot to Azure and make a note of the URL to your deployed bot.

참고

Azure에 봇을 배포할 준비가 되지 않았거나 여유 어댑터를 사용할 때 봇을 디버그 하려는 경우 ngrok (이전에 Bot Framework Emulator를 사용 하 여 이미 설치 했을 수 있음)와 같은 도구를 사용 하 여 로컬에서 실행 하는 bot로 터널링 하 고이에 대해 공개적으로 액세스할 수 있는 URL을 제공할 수 있습니다.If you are not ready to deploy your bot to Azure, or wish to debug your bot when using the Slack adapter, you can use a tool such as ngrok (which you will likely already have installed if you have used the Bot Framework Emulator previously) to tunnel through to your bot running locally and provide you with a publicly accessible URL for this.

ngrok 터널을 만들고 봇에 대한 URL을 가져오려면 터미널 창에서 다음 명령을 사용합니다. 이 경우 로컬 봇이 3978 포트에서 실행된다고 가정하며, 해당 봇이 이 포트에서 실행되지 않는 경우 명령에서 포트 번호를 변경하세요.If you wish create an ngrok tunnel and obtain a URL to your bot, use the following command in a terminal window (this assumes your local bot is running on port 3978, alter the port numbers in the command if your bot is not).

ngrok.exe http 3978 -host-header="localhost:3978"

Slack 앱 업데이트Update your Slack app

Slack API 대시보드로 다시 이동하여 앱을 선택합니다.Navigate back to the Slack API dashboard and select your app. 이제 앱에 대해 두 개의 URL을 구성하고 적절한 이벤트를 구독해야 합니다.You now need to configure 2 URLs for your app and subscribe to the appropriate events.

  1. OAuth & Permissions(OAuth 및 권한) 탭에서 Redirect URL(리디렉션 URL) 은 새로 만든 컨트롤러에서 지정한 api/slack 엔드포인트가 포함된 봇의 URL이어야 합니다.In the OAuth & Permissions tab, the Redirect URL should be your bot's URL, plus the api/slack endpoint you specified in your newly created controller. 예들 들어 https://yourboturl.com/api/slack입니다.For example, https://yourboturl.com/api/slack.

Slack 리디렉션 URL

  1. 1단계에서 사용한 것과 동일한 URL을 사용하여 Event Subscriptions(이벤트 구독) 탭의 Request URL(요청 URL) 을 채웁니다.In the Event Subscriptions tab, fill in the Request URL with the same URL you used in step 1.

  2. 페이지 위쪽에 있는 토글을 사용하여 이벤트를 사용하도록 설정합니다.Enable events using the toggle at the top of the page.

  3. Subscribe to bot events(봇 이벤트 구독) 섹션을 펼치고, Add Bot User Event(봇 사용자 이벤트 추가) 단추를 사용하여 im_createdmessage.im 이벤트를 구독합니다.Expand the Subscribe to bot events section and use the Add Bot User Event button to subscribe to the im_created and message.im events.

Slack 이벤트 구독

여유 시간 내에 응용 프로그램 테스트Test your application in Slack

  1. 앱을 설치한 여유 공간 작업 공간에 로그인 http://<your work space>-group.slack.com/ 합니다 ().Log in the Slack work space where you installed your app (http://<your work space>-group.slack.com/). 왼쪽 패널의 섹션 아래에 표시 됩니다.You will see it listed under the Apps section in the left panel.

  2. 왼쪽 패널에서 앱을 선택 합니다.In the left panel, select your app.

  3. 오른쪽 패널에서 e 메시지를 작성 하 고 응용 프로그램에 보냅니다.In the right panel, write e message and send it to the application. Echo bot을 사용한 경우 응용 프로그램은 아래 그림에 표시 된 것 처럼 메시지를 다시 표시 합니다.If you used an echo bot, the application echoes back the message as shown in the figure below.

    앱 테스트

또한 appSettings.json 파일을 위의 단계에서 설명한 것과 동일한 값으로 채워 Slack 어댑터용 샘플 봇을 사용하여 이 기능을 테스트할 수도 있습니다.You can also test this feature using the sample bot for the Slack adapter by populating the appSettings.json file with the same values described in the steps above. 이 샘플에는 README 파일에서 링크 공유, 첨부 파일 수신 및 대화형 메시지 전송의 예제를 보여 주는 추가 단계가 설명 되어 있습니다.This sample has additional steps described in the README file to show examples of link sharing, receiving attachments, and sending interactive messages.