Vue+electron 도구로 Slack에게 메시지 보내기

9723 단어 슬랙ElectronVue.js

Vue + electron 도구로 Slack에게 메시지 보내기



일의 발단



새롭게 아르바이트로 입사한 기업의 배속팀의 근태규칙

출사, 휴식 개시, 휴식 종료, 퇴사 시 특정 채널에 각각에 대응하는 이모티콘을 송신한다.

비교적 귀찮은 ... 덧붙여서 이것 이외에도 근태 시스템과 타임 카드의 3 중문.

했던 일



제목대로 Slack의 API를 Vue + electron의 도구로 두드려 원 클릭으로 출사 퇴사 등의 이모티콘을 보낼 수 있었습니다.

코드


vue init 에서 electron-vue 최소한의 템플릿에서 만들고 있습니다.

App.vue
<template>
  <div id="app">
    <div class="cont">
      <div class="button" style="border-color: rgb(129,188,189); color: rgb(129,188,189);" @click="send(1)">
        <h2>出社</h2>
      </div>
      <div class="button" style="border-color: rgb(235,115,62); color: rgb(235,115,62);" @click="send(2)">
        <h2>休憩</h2>
      </div>
      <div class="button" style="border-color: rgb(235,115,62); color: rgb(235,115,62); " @click="send(3)">
        <h2>再開</h2>
      </div>
      <div class="button" style="border-color: rgb(58,61,145); color: rgb(58,61,145);" @click="send(4)">
        <h2>退社</h2>
      </div>
    </div>
  </div>
</template>

<script>
import { SlackOAuthClient } from 'messaging-api-slack';

export default {
  name: "kintary",
  methods: {
    send(type) {
      let mes = ''
      switch(type) {
        case 1:
          mes = ':sagyo-kaishi-作業開始_green:'
          break;
        case 2:
          mes = ':sagyo-ohiru-kyukei-お昼休憩_orange:'
          break;
        case 3:
          mes = ':sagyo-saikai-作業再開_orange:'
          break;
        case 4:
          mes = ':sagyo-shuryo-作業終了_navy:'
          break;
      }
      const client = SlackOAuthClient.connect(
        'xoxp-slackから取得したアクセストークン(管理者じゃなくても自分のものは取得できた)'
      );
      client.postMessage('frontteam_kintai', mes, { as_user: true });
    }

  }
};
</script>

<style>
#app {
  height: 100vh;
  width: 100vw;
  display: flex;
  justify-content: center;
  align-items: center;
}

.cont {
  width: 480px;
  height: 120px;
  display: flex;
  justify-content: center;
  align-items: center;
}

.button {
  height: 100px;
  width: 100px;
  border-radius: 50px;
  border: 3px solid;
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 10px;
}
.button:hover {
  opacity: 0.6;
}
.button:active {
  transform: scale(0.95);
}
</style>

고민한 곳



Slack의 API를 두드릴 때, Axios.post에서 두드렸더니 CORS 관련 오류가 나왔다.

매우 편리한 npm 모듈이 있었기 때문에 온순하게 그것을 이용, import해 설정해 .postMessage만으로 이용할 수 있었다.

※as_user 옵션을 true로 하는 것으로, token을 취득한 User로서 투고를 할 수 있다.

할 수있는 것





미래



제대로 빌드하고 싶다.

좋은 웹페이지 즐겨찾기