슬랙의 지보가 회사 내 트위터에!여러분의 분류를 한 채널로 모으는 슬랙봇을 만들어 봤습니다.

슬랙의 분보(times-xxx 채널)는 자신의 업무 일지에 사용할 수도 있고, 팀원들의 상황을 알아보는 데도 사용할 수 있어 좋다.
다만, 팀 구성원 수가 늘고 인원이 늘어나면 각 분보 채널을 보기가 어려워진다.
이 문제를 해결하기 위해 우리는 슬랙 앱을 만들어 한 채널에서 각자의 분류 채널의 투고를 공유했다.이 앱이 있다면 그 집약채널times-all만 보면 사내 트위터에서 여러분의 분보를 열람할 수 있어 편리하다.
이 기사에서 나는 그 프로그램의 소개와 설정 방법을 쓸 것이다.
※ 원재료는 전임 Misocacurrent-all 통로입니다.감사🙏
※ 분보의 개요여기.

만든 물건


각 분보의 투고를 한 채널의 슬랙 봇에 모으다.
이 Bot을 분류 채널 및 분류 요약 채널에 추가하면 보고서의 모든 투고가 요약 채널에 공유됩니다.

창고는 여기 있습니다.
https://github.com/kawamataryo/times-all-bot
다음은 설치 방법에 대한 설명입니다.

설정


Slack 응용 프로그램 만들기


https://api.slack.com/apps에 액세스하여 Create New App에 새 응용 프로그램을 만듭니다.

창설 후 사이드바에서 접근OAuth & Permissions하여 프로그램의 권한 범위를 설정합니다.설정할 범위는 chat:writechannels:history입니다.

그런 다음 페이지 위에 있는 Install to Workspace에서 작업공간에 응용 프로그램을 추가합니다.
추가 애플리케이션에 표시된 OAuth Token은 나중에 사용할 예정이니 기록해 주십시오.

또한 사이드바에 있는 Basic Information를 방문하여 기록해 주십시오Signing Secret.

위에서 말한 바와 같이, 슬랙 프로그램의 설정이 완료되었습니다.

Lambda에 대한 depro


응용 프로그램의 실제 상태는 AWS Lmabda를 디버깅하는 Bolt 프레임워크입니다.
먼저 프로젝트를 디렉터리에 복제합니다.
$ git clone https://github.com/kawamataryo/times-all-bot.git
$ cd times-all-bot
$ npm i
디버깅 시 환경 변수를 사용하여 Slack 정보를 참조합니다.프로젝트 바로 아래에서 아래 내용에 따라 제작해 주십시오.env.SLACK_SIGNING_SECRET,SLACK_BOT_TOKEN는 상기 슬랙 앱 제작에 기록된 Signing SecretOAuth Token의 값이다.AGGREGATE_CHANNEL_ID는 분보 발언을 총괄하는 채널times-all 등)의 ID다.
※ 채널 ID 확인 방법은 여기.부터.
SLACK_SIGNING_SECRET=<YOUR_TOKEN>
SLACK_BOT_TOKEN=<YOUR_TOKEN>
AGGREGATE_CHANNEL_ID=<CHANNEL_ID>
이렇게 준비하면 완성됩니다.다음 명령은 AWS Lambda로 전달됩니다.
$ npm run deploy
이 응용 프로그램은 Serverless 프레임워크를 사용하여 AWS Lambda에서 응용 프로그램을 설계합니다.사전에 AWS의 신용등급을 ~/.aws/credentials디테일로 설정해 주십시오.
프로그램이 순조롭게 끝나면 끝점의 URL이 표준 출력으로 출력됩니다.
그것을 적어 주세요.
# ...
endpoints:
  POST - https://u6db.execute-api.us-east-1.amazonaws.com/dev/slack/events
# ...

Slack 응용 프로그램에서 엔드포인트 로그인


마지막으로 슬라이드 프로그램의 설정입니다.
Slack 프로그램의 관리 화면에서 사이드바 Event Subscriptions 에 접근하여 Enable Events 의 검사를 열고 이벤트 구독을 사용합니다.Request URL 방금 디버깅할 때 가져온 Lambda의 끝점을 설정하십시오.
그리고 Subscribe to bot events에 추가message.channels.

설정 후 프로그램을 다시 설치해야 하기 때문에 OAuth & Permissions부터 시작해야 합니다.이렇게 되면 앱을 추가하는 채널에서 이벤트가 발생할 때마다 람다의 요청이 취소된다.

방송 채널·회합 채널에 앱 추가


각 분보 채널과 집합 채널에 방금 만든 앱을 설치하면 완성됩니다.🎉
※ 두 가지 측면에서 추가해야 하니 주의하세요
이후 각 지보 채널에서 기고한 내용은 모두 취합 채널에 공유된다.

이루어지다


설치가 매우 간단하다.
Lambda에서 분보 채널을 구독하는 이벤트를 시작하여 집합 채널에 투고합니다.
포인트는 파마 링크 형식으로 투고하는 것이다.chat.postMessage에서도 분보된 투고 내용을 집약채널에 직접 투고할 수 있지만 이렇게 하면@here 등 멤버들도 전개된다.반면 첨부파일 등은 펼칠 수 없는 문제점도 있다.
이에 따라 회합 채널에 파마 링크를 띄우고 채널에서 소규모 홍보를 펼치면 분보된 기고문 내용을 확인할 수 있다.
src/functions/slack/handler.ts
import { App, ExpressReceiver } from "@slack/bolt";
import serverlessExpress from "@vendia/serverless-express";

const aggregateChannelId = process.env.AGGREGATE_CHANNEL_ID;

const expressReceiver = new ExpressReceiver({
  signingSecret: process.env.SLACK_SIGNING_SECRET,
  processBeforeResponse: true,
});

const app = new App({
  token: process.env.SLACK_BOT_TOKEN,
  receiver: expressReceiver,
});

app.message(async ({ client, event }) => {
  // 集約チャネル内の投稿か、投稿の編集・削除の場合は除外
  if (
    event.channel == aggregateChannelId ||
    event.subtype == "message_changed" ||
    event.subtype == "message_deleted"
  ) {
    return;
  }

  try {
    // 投稿のpermalinkの取得
    const permalinkRes = await client.chat.getPermalink({
      channel: event.channel,
      message_ts: event.event_ts,
    });

    // 集約チャネルへの投稿
    await client.chat.postMessage({
      channel: aggregateChannelId,
      text: permalinkRes.permalink as string,
    });
  } catch (e) {
    console.error(e);
  }
});

export const handler = serverlessExpress({
  app: expressReceiver.app,
});
자세한 내용은 창고를 보세요.
Bolt for JavaScript

끝맺다


이상은'슬랙의 분보가 사내 트위터에! 여러분의 분보를 한 채널에 집중시키는 슬랙봇'을 만들어 보았습니다.
지금의 슬랙도 도입해 다행히 호평을 받았다.이 Bot 자체는 투고를 다른 채널에 공유하는 것일 뿐이기 때문에 총결산 분보 외에도 많은 용도가 있다고 생각합니다.꼭 쓰셔야 한다면 기쁘겠습니다.
더 이상 사용하기에 문제가 있으면 마음대로 평론해 주세요.

좋은 웹페이지 즐겨찾기