정상 작업을 chatwork 연계하여 자동화한 이야기

6005 단어 Chatwork
그레인지 Advent Calendar 2017 11일째의 기사를 담당했습니다, yoshida029라고 합니다.
그레인지로 서버 측 엔지니어를하고 있습니다.

이번에는 정상 작업을 chatwork 연계하여 자동화한 이야기가 됩니다.

소개



일상적인 정상 작업이 있습니다.

정상 작업의 예
  • KPI 정보 집계
  • 앱 순위 변동
  • 내부 검토 결과 집계
  • 정규 작업 시작 및 종료 신호
  • 앱 빌드 완료 알림
  • 매 릴리스 전에 마스터 유효성 검사 결과보고
  • (오늘의 날씨, 기차 지연 정보, 트렌드 워드 게시물 등 취미에 들린 통지)

  • 간단한 작업이지만 수동으로 누출이나 실수가 발생할 수 있으므로
    자동화 대응을 진행했습니다.

    chatwork 토큰 획득



    발행 방법은 이쪽에서

    API Token 발급
    https://help.chatwork.com/hc/ko/articles/115000172402-API-Token 게시

    협력 수단


  • curl의 게시물
  • Google Apps Script에서 게시
  • php에서 게시

  • curl의 게시물



    샘플 코드


    curl -X POST -H "X-ChatWorkToken: トークン" -d "body='メッセージ'" "https://api.chatwork.com/v2/rooms/{ルームID}/messages"
    

    실제로는 jenkins에서 두드려 사용합니다.
    「매일 ○○시부터 저것이 시작된다―」의 개시·종료를 투고하고 있습니다.

    Google Apps Script에서 chatwork 게시



    스프레드시트에서 chatwork에 게시합니다.

    스크립트 편집기 열기


    리소스 -> 스크립트...에서 스크립트 추가 대화 상자가 열립니다.
    이제 ChatWorkClient의 프로젝트 키를 검색하고 추가합니다.

    버전은 17 이상을 선택했습니다.



    샘플 코드


    function myFunction() {
      var cwClient = ChatWorkClient.factory({token: 'トークン'});
      cwClient.sendMessage({
            room_id: 'ルームID',
            body: 'メッセージ'
      });
    }
    

    chatwork의 내용을 스프레드 시트에 내보내기



    chatwork 게시물 내용을 스프레드시트에 내보냅니다.
    function myFunction() {
        var cwClient = ChatWorkClient.factory({token: 'トークン'});
        var messageList = cwClient.get('/rooms/ルームID/messages', {
            force: 1
        });
    
        var logsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート名');
        for (var i in messageList) {
          var date = new Date(messageList[i].send_time * 1000);
          var sendDate = new Date(date.getFullYear(), date.getMonth(),date.getDate(), 0, 0, 0);
          // 最終行に追加
          logsheet.appendRow([sendDate, messageList[i].account.name, messageList[i].body]);
        }
    }
    

    약간의 토론을 의사록에 올리거나 사용하면 편리.

    php에서 게시



    php에서 chatwork에 게시합니다.
    public static function send() {
        $url = sprintf('https://api.chatwork.com/v2/rooms/%d/messages', 'ルームID');
        $option = [
            'body' => '[info][title]タイトル[/title]本文[/info]',
        ];
    
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ChatWorkToken: ' . 'トークン']);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($option, '', '&'));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_exec($ch);
        curl_close($ch);
    }
    

    git 푸시시에 유효성 검사 결과가 NG인 경우 통지합니다.
    프로덕션 환경에서 알림 메일 대신 chatwork로 만들거나.

    도입해 본 결과


  • 아침 낮과 밤을 깨달았을 때 누군가가 집계한다는 사람 맡김의 운영이 없어졌습니다
  • 평일 아침 집계, 토일요일 공휴일 분은 월요일에 정리해 하는 운용이 없어졌습니다
  • 집계해도 메일 보지 않는다.
  • 서버에 로그인하는 횟수가 다소 줄어들기 때문에 기분 좋게 쉬워집니다
  • 마스터 데이터의 검사를 대신 대답 해 주므로 엔지니어가 조사하는 횟수가 줄어 들었습니다

  • 마지막으로



    비 엔지니어는 정상 작업인지 여부를 알지 못할 수 있습니다.
    말려들어 버리자.
    대부분 기뻐합니다.

    정상적인 작업을 자동화하여 창의적인 시간을 늘리세요.

    이상이 됩니다.

    좋은 웹페이지 즐겨찾기