Slack Bolt API 및 Node.js를 사용하여 slackbot 만들기

May 04 2023
Slack Slack은 팀의 워크플로우를 단순화하기 위해 다양한 통합 및 확장을 제공하는 인기 있는 팀 커뮤니케이션 도구입니다. 그러한 확장 중 하나는 작업을 자동화하고 커뮤니케이션을 보다 효율적으로 만드는 데 도움이 되는 Slack Bot입니다.

느슨하게

Slack은 팀의 워크플로를 단순화하기 위해 다양한 통합 및 확장을 제공하는 인기 있는 팀 커뮤니케이션 도구입니다 . 그러한 확장 중 하나 는 작업을 자동화하고 커뮤니케이션을 보다 효율적으로 만드는 데 도움이 되는 Slack Bot입니다 .

이 튜토리얼에서는 메시지와 상호 작용할 수 있는 node.js로 Slack 앱을 구축하기 위한 Slack의 라이브러리인 Bolt를 사용하여 Slack 봇을 생성하는 방법을 보여드리겠습니다.

전제 조건:

시작하기 전에 다음이 있는지 확인하십시오.

· 컴퓨터에 설치된 Node.js v12 이상

· 컴퓨터에 설치된 npm

· JavaScript, Node.js에 대한 기본적인 이해

단계 작업 공간에 봇을 설치하려면

새 Slack 작업 공간 만들기

Slack 작업 공간을 만들려면 다음 단계를 따르십시오 —
1. Slack 웹 사이트를 방문 하고 2. 새 작업 공간 만들기를
클릭합니다 . 3. 이메일 주소를 입력합니다 . 4. 화면의 지시에 따라 설정 프로세스를 완료합니다. 이메일 주소를 확인하고 새 Slack 워크스페이스 사용을 시작하기 위한 이메일입니다. 6. 새로 만든 워크스페이스에서 채널을 만들고 팀원을 초대하고 즉시 메시지를 보냅니다.



새 Slack 앱 만들기

새 Slack 앱을 만들려면 다음 단계를 따르세요 —
1. Slack API 웹사이트 로 이동합니다. 2. 앱 만들기를
클릭합니다 . 3. 새 앱 만들기를 클릭합니다. 4. 앱에 이름을 지정하고 앱을 추가할 작업 공간을 선택합니다. 5. 완료하면 앱의 기본 정보 페이지로 리디렉션됩니다.


oAuth 및 권한

앱이 Slack과 통신하기 전에 앱 권한을 설정하세요. 앱 권한을 설정해야 합니다. 이렇게 하려면 OAuth 및 권한 페이지로 이동하여 범위까지 아래로 스크롤합니다. 앱에 다음 범위를 추가합니다.

작업 공간에 앱 설치

위의 모든 구성으로 이제 앱을 작업 공간에 설치할 수 있습니다. 왼쪽 사이드바에서 설정 → 앱 설치 → 워크스페이스에 설치 로 이동합니다 .

참고: 개인 정보 보호 문제로 인해 설치 부분이 까다로울 수 있습니다. 각 조직은 내부적으로 프로세스를 정의합니다. 조직의 작업 공간에 앱을 설치할 때 이를 고려하십시오. Slack 관리자에게 설치 프로세스의 전제 조건을 확인할 수도 있습니다.

Slackbot 서버 설정

이제 코드를 작성해 보겠습니다. slackbot에 대해 전송된 요청을 처리할 수 있는 Slackbot용 서버를 구성해야 합니다. 코딩타임!!

이름이 있는 디렉터리를 만들고 test-botnpm을 시작합니다.

mkdir test-bot && cd test-bot
npm init -y

  1. slack/bolt: 설명에 따르면 Slack 플랫폼으로 프로그래밍을 시작하는 가장 빠른 방법입니다.
  2. dotenv: .env 파일에서 process.env로 환경 변수를 로드하는 제로 의존성 모듈입니다.

yarn add @slack/bolt
yarn add -D dotenv

SIGNING_SECRET봇과 통신하기 전에 Slack은 먼저 및 로 봇을 확인해야 합니다 BOT_TOKEN. 둘 다 Git을 사용하는 동안 노출되지 않도록 .env 파일에 저장해야 합니다.

  • SIGNING_SECRET: 기본 정보 → 앱 자격 증명 → 서명 비밀로 이동합니다.
  • BOT_TOKEN: 설정 → 앱 설치 → 봇 사용자 oAuth 토큰으로 이동합니다.

SLACK_SIGNING_SECRET="YOUR SIGNING SECRET"
SLACK_BOT_TOKEN="YOUR BOT TOKEN"

라는 파일을 만들고 index.js봇 디렉터리의 루트 수준에 유지하고 다음 코드를 추가합니다.

const { App } = require("@slack/bolt");
require("dotenv").config();
// Initializes your app with credentials
const app = new App({
  token: process.env.SLACK_BOT_TOKEN,
  signingSecret: process.env.SLACK_SIGNING_SECRET,
});

(async () => {
  const port = 3000
  await app.start(process.env.PORT || port);
  console.log('Bolt app started!!');
})();

slackbot과 서버가 통신하는 방법

Slack 앱/봇은 .NET에서 만든 서버에 도달할 수 있는 방법이 필요합니다 localhost. Slack에는 Slack이 WebSocket을 사용하여 애플리케이션 서버에 연결할 수 있는 소켓 모드 라는 기능이 있습니다.

설정 → 기본 정보 → 앱 수준 토큰으로 이동합니다. 토큰 및 범위 생성 버튼을 클릭합니다 . 토큰에 이름을 지정하고 앱에 사용 가능한 두 가지 범위를 지정합니다.

  1. 연결:쓰기
  2. 인증:읽기

그런 다음 설정소켓 모드 로 이동합니다 . 소켓 모드 활성화 스위치를 토글합니다 . 마지막으로 파일로 이동하여 with 및 your를 초기화하는 코드를 업데이트합니다 .index.jsappsocketMode:trueappToken

const app = new App({
  token: process.env.SLACK_BOT_TOKEN,
  signingSecret: process.env.SLACK_SIGNING_SECRET,
  socketMode:true, // enable to use socket mode
  appToken: process.env.APP_TOKEN
});

Slack의 메시지

봇을 언급하거나 메시지로 봇에 보낼 @ 및 추가 텍스트를 포함할 수 있습니다.
Slack에서 앱 언급은 이벤트 입니다 . 새 사용자가 채널에 가입하거나 새 채널이 생성되는 등의 다른 이벤트를 수신할 수도 있습니다 . 봇/앱이 이벤트를 수신하도록 허용하려면 이벤트 구독을 설정해야 합니다.

소켓 모드를 활성화했으므로 명시적인 URL을 지정할 필요가 없습니다.

이제 앱에 일부 이벤트 권한을 부여해야 합니다. 봇 이벤트 구독 드롭다운 메뉴를 클릭 하고 다음 이벤트를 추가합니다.

메시지와 관련된 네 가지 이벤트가 있습니다.

  • message.channels: 공개 채널에서 메시지를 수신합니다.
  • message.groups: 개인 채널에서 메시지를 수신합니다.
  • message.im: 앱의 DM에서 사용자와 메시지를 수신합니다.
  • message.mpim: 다중 사용자 DM의 메시지를 수신합니다.

app.message("hey", async ({ command, say }) => {
    try {
      say("Hello Human!");
    } catch (error) {
        console.log("err")
      console.error(error);
    }
});

앱 설정 페이지 로 돌아갑니다 . 기능 아래에서 앱 홈 메뉴 옵션을 클릭합니다 . 아래로 스크롤하여 사용자가 메시지 탭에서 슬래시 명령 및 메시지를 보낼 수 있음 확인란을 선택합니다 .

CMD + RMac을 사용 중인 경우 및 CTRL + RPC를 사용 중인 경우 를 사용 하여 Slack을 다시 로드합니다 . 이제 봇에 메시지를 보낼 수 있습니다.

앱 으로 돌아가서 test-bot다음과 같은 메시지를 보냅니다 @test-bot hey. 봇으로부터 답장을 받아야 합니다.

매번 정확한 단어를 일치시킬 수 없습니다. 사용자가 우리 봇에 보내는 메시지에 키워드가 포함되어 있는지/그 중 일부만 포함되어 있는지 확인할 방법이 필요합니다. 이를 위해 Slack에서는 정규식을 사용할 수 있습니다. 예를 들어 위에서 사용한 코드 블록을 다음과 같이 업데이트해 보겠습니다.

// matches any string with RegEx
app.message(/hi/, async ({ command, say }) => {
    try {
      say("Hello Human!");
    } catch (error) {
        console.log("err")
      console.error(error);
    }
});

메시지를 듣고 메시지에 회신할 수 있는 봇을 만드는 것이 즐거웠기를 바랍니다.

봇이 수행할 수 있는 여러 활동이 있습니다. 여기에서 모두 찾을 수 있습니다.https://slack.dev/bolt-js/concepts

#슬랙봇 #자바스크립트 #nodejs