공부회 정보를 push 통지하는 slack 앱을 만들었다

5860 단어 5경 6슬랙slack-api

소개



공부회의 정보를 정기적으로 push 통지해 주는 slack 앱을 만들었다.

이런 식으로 push 통지하고 싶은 공부회의 조건을 설정하면,



조건에 맞는 공부회가 설정한 시간에 정기적으로 통지된다.



동기 부여



큰 공부회나 인기의 공부회의 개최를, qiita의 트렌드 기사나 하테부의 기사에 들려져 있는 것을 보고, 나중에 아는 것이 상당히 있다. 그런 인기의 공부회를 push 통지해 주는 구조가 있으면 「하고 있었던 것 몰랐다」라고 하는 것을 줄일 것 같다고 생각했기 때문에 만들어 보았다.

아키텍처는 다음과 같은 이유로 heroku를 사용하기로 결정했습니다.
- 서버 요금 무료
- docker에서 배포를 지원합니다.
- 스케줄러의 구조도 있다

수요가 있을지 모르지만, 다른 사람도 이 구조를 사용할 수 있도록 환경 구축의 순서를 써 갑니다.

구축 절차



0) 사전에 해 두는 것


  • heroku 계정 준비
  • heroku cli를 설치하십시오
  • $ brew tap heroku/brew && brew install heroku
    

  • 코드을 로컬로 복제합니다.
  • slack 앱을 만들고 작업 공간에 추가합니다.
    방법은이 기사 등이 도움이됩니다.

  • 1) heroku에 출시



    사전에 heroku 계정이 없는 사람은 만들어 둔다.
    
    # 事前にアプリケーションのルートディレクトリに移動しておく
    $ heroku container:login                                 # ログイン
    $ heroku create -a app_name                              # herokuアプリの作成。アプリ名は適当に決める。(heroku内で一意なアプリ名である必要あり)
    $ heroku git:remote -a app_name                          # herokuリポジトリをgit登録。
    $ heroku addons:create scheduler:standard                # スケジューラのアドオンを追加(事前にherokuアカウントにクレジットカード登録が必要)
    $ heroku addons:add cleardb:ignite                       # mysqlのアドオンを追加
    $ heroku config                                          # CLEARDB_DATABASE_URLが登録されていることを確認
    $ heroku config:set DATABASE_URL="<ユーザー名>:<password>@tcp(<ホスト名>:3306)/<DB名>?parseTime=true" # CLEARDB_DATABASE_URLの値を元にgolangのsql.Open()に渡す用の文字列に整形
    $ heroku config:set SLACK_TOKEN="<slackのトークン>"        # slackアプリのトークンを環境変数に設定
    $ heroku config:set WEB_HOOK_URL="<slackのwebHookURL>"   # slackのwebHookURLを環境変数に設定
    $ heroku stack:set container                             # heroku.ymlを使う時はこれがいるぽい
    $ git push heroku master                                 # リリース
    

    2) slack 설정



    작성해둔 slack 앱의 설정 화면으로 이동해 둔다.

    2-1) slash 명령 설정



    통지하는 연구회의 조건 설정은, slash 커멘드 경유로 열리는 다이얼로그로부터 실시하도록 하고 있다.
    그 slash 명령의 설정을 해 간다.
  • 명령을 새로 작성
  • 명령 실행시 API 대상 설정

  • 2-2) Interactive Components 설정



    공부회의 조건 설정을 하는 다이얼로그를 submit했을 때에 두드리는 API처의 설정.



    3) 스케줄링 설정



    heroku 화면으로 이동하여 스케줄러 추가 기능을 클릭합니다.


    /main connpass slack 를 실행하는 작업을 만듭니다. 실행 간격은 좋아합니다.


    4) 공부회 통지 설정



    작성한 slash 커멘드를 실행해, 열린 설정 다이얼로그상에서 통지 조건의 설정을 한다.


    ※주의
    heroku의 무료 플랜이라면 30분이 지나면 자동으로 프로세스가 떨어진다.
    그래서 첫번째 slash 명령은 서버 기동 시간이 걸리므로 타임아웃으로 실패한다. 그 후 너무 빈틈없이 다시 slash 명령을 실행하면 대화 상자가 열립니다.

    5) 설정 완료



    여기까지 하면, heroku의 환경 변수로 설정한 webHookURL 앞으로, 공부회 정보가 정기적으로 포스트되게 된다.

    아키텍처



    golang, gin, docker, mysql, slack api, connpass api, heroku 느낌으로 만들고 있습니다.

    하나의 이미지로 api 서버로도 명령 실행 서버로도 기동시키고 싶었기 때문에, 기동시에 플래그를 건네주는 것으로 api 서버, 커멘드 실행 서버가 바뀌도록 하고 있다.

    또한 핫 리로드 도구에 에어을 사용합니다.
    go에서 핫 리로드라고 하면. 좋은 것이 다른 것일까라고 생각하고 있었지만, 최근에는 air가 유행하고 있어? 포이.

    좋은 웹페이지 즐겨찾기