Slack Workflow에서 Backlog 티켓 기표를 자동화해보기

11057 단어 슬랙BacklogBashgas

우선 소개



Slack Workflow라는 것이 있습니다.
정례 작업을 Slack상에서 자동화하는 것이 가능합니다.
도구 연동 및 작업 자동화

Webhook도 사용할 수 있습니다.
Webhook을 사용하여 고급 워크플로 만들기

하고 싶은 일



현재 상태는 시스템 오류를 Slack 통지하고 있습니다.

그 오류 알림 중에서 Backlog에 과제 추가가 필요한 것을 확인하고,
기표하는 운용으로 하고 있습니다.

이하의 순서로 실시하고 있습니다.
1. Slack의 내용을 확인
2. 티켓 기표가 필요한지 확인(문서 보기 or 멤버에게 질문)
3. Backlog에 티켓 기표한다(Slack의 통지를 copipe)

Slack→Backlog나 GitHub를 오가기 때문에, 귀찮다고 하는 생각이. . .
여기 편을 Slack상에서 끝내고 싶었고, Slack Workflow 도입을 생각했습니다.

결론부터



Slack Workflow에서 스프레드 시트를 통해,
GAS에서 Backlog API를 호출하기로 결정했습니다.

Slack Workflow -> google 스프레드 시트 -> Backlog

절차


  • 스프레드시트 만들기
  • Slack WorkFlow 만들기

  • 만든 시트에 워크플로에서 받은 매개 변수를 추가합니다.

  • GAS에서 Backlog API로 티켓을 추가하는 스크립트 준비
    function createTicket(apiKey, baseUrl, projectId, issueTypeId, summary, description) { 
        var date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd'); 
    
        var payload = {
            "projectId" : projectId,
            "summary" : summary + " (" + date + ")",
            "issueTypeId" : issueTypeId,
            "priorityId" : '3',
            "description" : '```\n'+ description + '\n```'
        }
        var options = {
            "method" : "POST",
            "payload" : payload
        }
        var url = baseUrl + '/api/v2/issues'
            + '?' + 'apiKey=' + apiKey
            ;
        return JSON.parse(UrlFetchApp.fetch(url, options).getContentText("UTF-8"));
        }
        function main() {
        // 現在のスプレッドシートを取得
        var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
        //現在のシートを取得
        var sheet = spreadsheet.getActiveSheet();
    
        lastRow = sheet.getLastRow();
        //エラータイトル取得
        var thisErrTitle = sheet.getRange(lastRow, 1).getValue();
        //エラーメッセージ取得
        var thisErrMsg = sheet.getRange(lastRow, 2).getValue();
    
        var apiKey = 'apikey';
        var baseUrl = 'baseurl';
        //ここで登録したいプロジェクト指定
        var projectId = 'projectId';
        var issueTypeId = 'issueTypeId';
    
        //バックログに課題追加
        var json = createTicket(apiKey, baseUrl, projectId, issueTypeId, thisErrTitle, thisErrMsg);
    }
    
  • GAS 준비가되면 스프레드 시트 업데이트로 작동하도록 트리거를 설정합니다

  • 이제 WebhookURL을 실행하면 Slack Workflow가 실행됩니다.

    시도해보기


    curl -X POST -d \
        "{\"error_title\":\"$error_title", \"error_message\":\"$text\"}" \
        $slack_webhook_url
    

    curl 실행으로 Slack에 통지가 옵니다.


    「티켓 기표하시겠습니까」버튼을 누르면 티켓이 기표되었습니다!
    (캡처는 할애로・・・)

    마지막으로



    원래 Slack에 통지라고 하는 곳에서 재검토하자는 이야기도 나오고 있으므로, 이 구조 자체의 수명은 매우 짧을지도 모릅니다・・・
    앞으로 살릴 타이밍이 오면 또 마주보고 싶습니다.
    끝.

    참고



    Slack | Webhook을 사용하여 고급 워크플로 만들기
    Backlog API | 과제 추가
    Google Spreadsheet에 새 행이 추가되면 Chatwork에 알립니다.

    좋은 웹페이지 즐겨찾기