CloudFunctions+SlackAPI를 사용하여 정기적으로 사용자 수를 알릴 수 있도록 자동화해 보았습니다.

최근 만든 웹 서비스 에서 수동으로 사용자 수 등의 데이터를 취득했지만,
귀찮게 되었기 때문에, 지금도 SlackAPI를 사용해 보았다.

이런 느낌으로 통지됩니다!



유저수나 등록 데이터수등을 통지♪
지금은 매일 0:00에 통지하도록 하고 있기 때문에, 매일 즐거움(´ω`)



전체 흐름



전체의 흐름은 이런 느낌
  • Slack API로 Slack App 만들기
  • 만든 앱에서 Incoming Webhooks 사용
  • Incoming Webhooks에 Webhook URL 추가
  • 얻은 Webhook URL을 사용하여 Functions에서 메시지 보내기

  • 1. Slack API로 Slack App 만들기



    우선, 「 htps : // 아피. scck. 코 m/아 ps 」에 액세스



    Create New App을 클릭하면 작성 대화 상자가 표시되므로,
    앱 이름을 입력하고 Create App을 클릭합니다.



    이제 Slack App을 만들 수있었습니다 ( 'ω`)

    2. 만든 앱에서 Incoming Webhooks 사용



    웹 API에서 메시지를 게시할 수 있도록 설정하려면
    작성한 앱 설정의 기본 Infomarion에서 'Incoming Webhooks' 사용



    클릭하면 이런 느낌. 기본값은 OFF이므로 ON으로 전환합니다.



    이것으로 유효하게 되었다(´ω`)

    3. Incoming Webhooks에 Webhook URL 추가



    활성화되었으므로 어떤 채널에 알릴지 설정합니다.

    활성화하면 아래쪽에 "Add New Webhook to Workspace"가 있으므로 클릭하십시오.



    클릭하면 채널의 선택 화면이 나오므로, 투고처를 설정하고, 「허가한다」를 클릭.
    투고처는 채널 뿐만이 아니라, 개인에게도 설정할 수 있습니다(´ω`)


    허가하면, 이런 느낌의 화면에.
    WebhookURL이 추가되므로 "Copy"를 눌러 복사하십시오.


    4. 얻은 Webhook URL을 사용하여 Functions에서 메시지 보내기



    검색된 WebhookURL로 메시지를 보내면 OK

    CloudFunctions의 코드는 이런 느낌.


    const functions = require("firebase-functions");
    const admin = require("firebase-admin");
    admin.initializeApp();
    
    /**
     * Slackにメッセージ(text)を送る関数
     */
    const axios = require("axios");
    async function sendSlack(text) {
      const webhookURL = "https://YOUR_WEBHOOK_URL";
      const param = { text: text };
      const headers = { "Content-Type": "application/x-www-form-urlencoded" };
      try {
        await axios.post(webhookURL, param, { headers: headers });
      } catch (error) {
        console.error(`Error occuered in sendSlack: ${error}`, error);
      }
    }
    
    /**
     *  Slackへの通知を定期実行するFuncitons
     */
    exports.slackNotify = functions.pubsub
      .schedule("0 0 * * *")
      .timeZone("Asia/Tokyo")
      .onRun(async context => {
    
        // Slack通知
        await sendSlack("こんにちは");
      });
    
    sendSlack(text)webhookURL 에,
    위에서 복사한 Webhook URL을 붙이십시오.
    이런 식으로 「안녕하세요」된다(´ω`)



    그리고는, Function내에서 Firestore라든지를 호출해, 데이터를 수집·집계하면 OKヽ(=´▽`=)ノ

    메시지 보내는 것만으로는 매우 간단 (´ω`)

    그 밖에도 여러가지



    그 밖에도 파라미터를 바꾸면 색을 바꾸거나 이미지를 보낼 수 있습니다! !
    - Slack의 Incoming Webhooks를 쓰러뜨리다 - Qiita

    공식 문서라고 여기
    - Incoming Webhooks | Slack

    또한이 기사에서 쓴 것처럼 작업의 무료 프레임은 Google 계정 당 ...
    놀이나 테스트용으로 몇개나 만들면 과금되기 시작하므로 주의가 필요합니다...
    - Cloud Functions for Firebase의 cron과 같은 정기 실행을 시도하면 간단했습니다 - Qiita

    이상!!

    이런것을 만들고 있습니다! !



    최근, 적독용의 독서 관리 앱 「적독 하우 매치」를 릴리스했습니다!
    적독 하우 매치은 Nuxt.js+Firebase에서 개발 중입니다!



    괜찮다면 놀아주세요 ヽ (= '▽`=) 노

    요청, 감상, 조언 등이 있다면,
    공식 계정( @MemoryLoverz )과 개발자( @kira_puka )까지~

    좋은 웹페이지 즐겨찾기