SlackOps: JavaScript를 사용하여 애플리케이션을 Slack 채널에 로그인

여기Woovi에서 우리는 Slack 채널에서 많은 애플리케이션 로그를 관리합니다. 우리는 다음과 같은 것을 알 수 있습니다.
  • 어떤 이유로 일부 요청이 실패했습니다.
  • 신규 사용자가 누구인지, 회사가 누구인지, 그들이 이동한 흐름은 무엇인지 등;
  • 누군가 QR 코드를 지불한 경우, 인출, 일부 환불 등 Pix와 관련된 것;

  • 우리는 모든 사용자의 데이터와 보안을 중요하게 생각하므로 민감한 데이터를 삭제하고 전송하지 않습니다.

    이 모든 것이 우리의 개발 환경, 로컬 및 스테이징에도 있습니다.

    일부 채널에 어떻게 로그인할 수 있습니까?



    여기서 우리는 내부적으로 sendtoSlack@slack/node 라이브러리를 모두 처리하는 @slack/webhook라는 간단한 함수를 만듭니다.

    따라서 Slack에서 생성한 웹후크 요청 URL을 가져와 다음과 같은 환경 변수에 넣습니다. process.env.SLACK_WEBHOOK . 여기를 봐:

    // .env
    SLACK_WEBHOOK = 
    "https://api.slack.com/messaging/webhooks/<foo>/<bar>";
    


    웹후크 URL을 생성하는 방법을 볼 수 있습니다here.


    URL이 있으면 이 웹후크를 IncomingWebhook 인수로 사용하여 url에서 인스턴스를 생성합니다. 예를 들어:

    import { IncomingWebhook } from '@slack/webhook'; 
    
    const wh = new IncomingWebhook(process.env.SLACK_WEBHOOK);
    


    이제 어떤 환경에 있는지 간단한 조건부 유효성 검사를 수행하고 이를 기반으로 Slack 채널을 가져옵니다. 이와 같이:

    const getChannel = (channel: string) => {
      const isProduction = process.env.NODE_ENV === 'production';
    
      if (!isProduction) return `${channel}-dev`;
    
      return channel;
    }
    


    그런 다음 지금 메시지를 보낼 수 있습니다. IncomingWebhook 인스턴스를 사용하여 send 메서드를 실행하기만 하면 됩니다.

    const wh = new IncomingWebhook(process.env.SLACK_WEBHOOK);
    
    await wh.send({
      channel: getChannel('<some channel here>'),
      blocks: // your message will go here
    });
    


    그리고 Slack 채널에서 메시지를 볼 수 있습니다! 이제 함수로 추상화하여 어디서나 사용할 수 있습니다.


    최종 결과는 다음과 같습니다.

    const sendToSlack = async ({
      channel,
      blocks,
    }) => {
      const getChannel = (channel: string) => {
        const isProduction = process.env.NODE_ENV === 'production';
    
        if (!isProduction) return `${channel}-dev`;
    
        return channel;
      }
    
      try {
        const wh = new IncomingWebhook(process.env.SLACK_WEBHOOK);
    
        wh.send({
          channel: getChannel(channel),
          blocks,
          // feel free to add any other arguments from this function that fits your needs.
        });
      } catch (err) {
        // do something with the error
        // here, we logged into Sentry
      }
    }
    


    이 기능을 사용하면 코드베이스 어디에서나 로깅을 재사용할 수 있습니다.

    Discord와 같은 다른 통신 도구를 사용하여 유사한 행동에 도달할 수 있습니다. 그들이 webhook 또는 이와 유사한 것을 어떻게 처리하는지 확인하십시오.

    그런데 blocks 무엇인지 궁금하시다면 슬랙에서 블록킷이 무엇인지 here 보시면 됩니다. 사물을 기록하는 더 예쁜 방법입니다.

    간단한 메시지만 원하는 경우 attachmentwh.send 인수를 사용할 수 있습니다.

    sendToSlack 함수를 사용하여 기록하는 방법에 대한 간단한 예를 볼 수 있습니다.

    sendToSlack({
      channel: 'join',
      attachments: [
        {
          text: 'Invalid recaptcha attempt',
        },
        ...getSomeUsefulData(), // here we get some useful data like timestamp, etc
      ],
    });
    



    Woovi은 쇼핑객이 원하는 대로 결제할 수 있는 스타트업입니다. 이를 가능하게 하기 위해 Woovi는 판매자가 주문을 수락할 수 있는 즉시 결제 솔루션을 제공합니다.

    여기서 우리는 일상적인 프로세스를 개선하기 위해 Slack을 사용하여 많은 작업을 수행합니다. 궁금한 사항이 있으면 we are hiring !

    좋은 웹페이지 즐겨찾기