뽀뽀하면 쁘띠 픽하는 서버리스 BOT을 만들었습니다.

💡 만든 것



Slack 의 특정의 Reaction 에 반응해, Reaction 로 반응해 돌려주는 서버리스 BOT입니다.



Slack의 BOT와 Subscribe를 사용하여 모든 Reaction을 API-Gateway를 통해 Lambda에 수신합니다.
특정의 Reaction 이었을 경우는 Slack API 를 호출해, Reaction 를 복수 붙여 돌려줍니다.
Slack BOT는 수동으로 구성해야 하지만 AWS 측은 Serverless Framework를 사용하여 환경 구축을 자동화합니다.

Serverless Framework 없이 만드는 단계는 마지막 기사

아티팩트



saitota/SlackServerlessReactionBot

✋ 구축 절차



필요한 것


  • AWS 계정
  • Serverless Framework
  • Slack 계정

  • 도입 절차



    1. 여기에서 BOT 만들기


    - Bot User
        - Display Name
        - Default Username
    - Permissions
        - OAuth & Permissions
            - Scopes
                - channels:history
                - channels:write
    

    2. 토큰 2개 취득


    - Permissions
        - OAuth & Permissions
            - OAuth Access Token
            - Bot User OAuth Access Token
    

    3. 리포지토리를 Clone



    콘솔
    $ git clone https://github.com/saitota/SlackServerlessReactionBot.git
    

    4. Serverless 구성 파일을 편집하고 이전 토큰으로 다시 작성하십시오.



    sererless.yml
    OAUTH_TOKEN: 'xoxp-000000000000-000000000000-000000000000-0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x'
    BOT_TOKEN: 'xoxb-000000000000-0x0x0x0x0x0x0x'
    

    5. Serverless Framework에서 배포(사전에 aws-cli 초기화 필요)



    콘솔
    $ sls deploy ./SlackServerlessReactionBot
    ...
    api keys:
      None
    endpoints:
      POST - https://0x0x0x0x0x.execute-api.ap-northeast-1.amazonaws.com/prod/
    functions:
      fnc: SlackServerlessReactionBot-prod-fnc
    

    6. Slack BOT의 엔드포인트 설정과 Subscribe 설정을 합니다.


  • Event Subscriptions
  • Request URL: set your endopint url(you can see in your deploy log)

  • Subscribe to Workspace Events
  • reaction_added
  • reaction_removed


  • 7. 설정 완료!



    Slack에서 HOOK_REACTION의 반응 (기본값은 👍)을 추가합시다.

    빠진 곳



    Lambda가 실행되면 Slack에서 다음 이메일을 받았고 Subscribe가 제대로 비활성화 될 수 있습니다. 구그도 정보 없이 로그 봐도 모르고, API-Gateway 와 Lambda-Function 를 재작성한다고 치료했습니다. 근본 원인을 모르겠지만 HTTP Return Code가 좋지 않았을 수 있습니다.

    emailfromslack
    Events are disabled for BOTNAME.
    Something's gone awry with BOTNAME, so we've temporarily stopped sending events to it. Not to worry—we're sure you can get it fixed right up.
    
    Please log in to correct the problem, and feel free to reply to this email if you need help.
    

    📝 후기



    공개용으로 Serverless Framework 를 사용해 보았습니다, 클라우드 환경 구축 부분을 코드화할 수 있어 배포 가능한 형태로 할 수 있으므로 매우 멋집니다. BOT 작성의 곳도 자동화할 수 있으면 좋겠습니다만.

    좋은 웹페이지 즐겨찾기