GMAIL에서 Discord 채널 Webhook 자습서로

15476 단어 teamsgmailslackdiscord

추상적인



프로젝트를 진행하는 동안 Slack , Microsoft Teams , Discord 등 통신 공작은 원활한 프로젝트 진행을 위해 벽 요소 중에 하나입니다.

특히, 게임 주요 도구로 문제Discord의 경우 실행에 지속되어 사용자를 만족시키는 강력한 커뮤니케이션 기능을 가지고 있다 보니 프로젝트 메인 커뮤니케이션으로 사용되는 경우도 점차 증가하고 있다.

이번 포스팅에서는 팀 메일이나 공식 메일이 올때마다 메일을 확인하는 것이 아닌 Discord 의 하나의 채널에서 알림이 올수 있도록 웹훅 설정을 하는 과정을 소개하고자 합니다.

Discord DOC 링크: https://discord.com/developers/applications


전제 조건


  • 여기는 Discord 계정이 있고 서버를 생성한 상태를 가정한다
  • 서버에 해당하는 웹훅 권한이 필요하다


  • 후크 웹 권한 설정




    시작하기


    Integrations 메뉴에서 Webhooks 생성을 클릭


    통합 메뉴



    New Webhook 을 선택해서 새로운 Webhook 을 생성한 뒤 필요한 정보( Bot Name , Channel )를 입력해서 Noti-Bot 을 생성
    Discord 세팅은 여기까지 완료되었습니다


    웹훅 생성




    Google 앱 접속 페이지 접속:
    https://www.google.com/script/start/

    새 프로젝트 생성


    구글 앱 메인 화면




    메인 대쉬보드




    새로운 프로젝트에 다음과 함께 글을 작성하세요

    메모


  • webhooks 의학에는 DiscordWebhook URL 을 입력


  • 웹훅 생성 화면


  • channel 의학에는 채널 이름을 등록


  • Discord 채널명


  • searchQuery에는 Google 메일에서 검색 쿼리를 쓰는 것을 사용한다. (하기 이미지 참조)


  • Gmail 검색어


  • Gmail에는 Discord 에 2000 자이상되는 내용을 게시할 수 없도록 하여 2000 자이상한 경우 제한하는 로직이 필요하다.




  • code.gs



    function postDiscord(postMessage) {
        const webhooks = 'https://discord.com/api/webhooks/webhooks/{webhook.id}/{webhook.token}';
        const channel = '{channel name}';
        const parse = 'full';
        const method = 'post';
    
        const payload = {
            channel: channel,
            content: postMessage,
            parse: parse,
        };
    
        const params = {
            method: method,
            payload: payload,
            muteHttpExceptions: true,
        };
    
        response = UrlFetchApp.fetch(webhooks, params);
    }
    
    function sendMailsToDiscord() {
        const searchQuery = '{gmail query}';
        const date = new Date();
        const checkSpan = 30;
        date.setMinutes(date.getMinutes() - checkSpan);
    
        const threads = GmailApp.search(searchQuery);
        const msgs = GmailApp.getMessagesForThreads(threads);
    
        for (let i = 0; i < msgs.length; i++) {
            const lastMsgDate = threads[i].getLastMessageDate();
    
            if (lastMsgDate.getTime() < date.getTime()) break;
    
            for (let j = 0; j < msgs[i].length; j++) {
                const msgDate = msgs[i][j].getDate();
                const msgBody = msgs[i][j].getPlainBody();
                const subject = msgs[i][j].getSubject();
    
                const postMessage =
                    'From mailing list' +
                    '\n' +
                    Utilities.formatDate(msgDate, 'America/New_York', 'MM/DD/yyyy hh:mm:ss') +
                    '\n' +
                    'Title:' +
                    subject +
                    '\n' +
                    '[hr]' +
                    msgBody;
    
                // 2000 Characters limits
                if (postMessage.length > 2000) {
                    const stopPos = 1900; //
                    const msg = '"Exceeded 2000 character limit."';
                    postMessage = postMessage.substring(0, stopPos) + '\n' + msg;
                }
    
                postDiscord(postMessage);
            }
        }
    }
    


    trigger를 설정

    이후에 새로운 메일이 올 경우에는 채널에 새로운 메시지가 게시될 것입니다.

    메모


  • 가까워지기를 선택: sendMailsToDiscord
  • 배포: Head
  • 이벤트 발생시 선택: 시간 기반
  • 트리거 기반 시간 유형 선택: 분 단위 타이머
  • 분 회전 선택: 30분마다
  • 트리거 실패 알림 설정: 즉시 알림


  • 트리거 화면




    결론



    본 포스팅에서는 GMAIL 에서 Discord 채널에 새로운 메일이 올때마다 푸시하는 webhookGoogle App Script 를 통해 Set up해 보았다.
    Discord는 퍼포먼스에 돋보이게 게이머를 만족시킬 수 있을 정도의 수준의 서비스를 제공하고 있으며 앞으로의 여러 프로젝트에서도 많은 작업을 할 것입니다. 거기에 전 세계 기록의 표준 똑딱이 있는GMAIL 을 꺾는 것은 가장 많이 사용하는Webhook 중 하나가 되는 것을 본 모습이 그런 부분에 많은 도움이 되도록 하는 바램이다.

    본 논문에 쓰인 방법이 궁금하다면 하기의 Google App Script 링크에서 자세한 내용을 참고

    링크: https://developers.google.com/apps-script/reference/document

    좋은 웹페이지 즐겨찾기