[5분 만에 완성되는 웹훅] 오브니즈에서 디스코드로 공지 보내기.

자꾸 까먹는 놈인데 기사로 못 썼으니 일단 적어놔.

Discord 측에서 Webhook URL 준비(2분)


데스크톱 응용 프로그램에서 온 것입니다.

Bot(Webhook의 먼저 가상 사용자)를 만들고 싶은 서버를 열고 서버 이름 오른쪽에 있는 하단 메뉴Server Settings를 엽니다.
Integrations 중에서 Webhooks를 선택합니다.
New Webhook 버튼, 위의 그림과 같이 하십시오.
Webhook URL을 복사하고 제어합니다.

Postman으로 테스트 진행(여기는 안 해도 돼)


디스코드의 웹훅에 관한 규정은 기본적으로 3개에 불과하다.
  • POST를 통해 발송
  • content 키에 전송된 데이터 삽입
  • Content-Type은 application/x-www-form-urlencoded 또는 multipart/form-data 또는 application/json 중 하나
  • 응용 프로그램/x-www-form-urlencoded 때



    multippart/form-data 시



    응용 프로그램/json 때



    잘 보내주실 수 있나요?


    상기 3개의 연락센터-타입을 확인한 방법 중 어느 하나라도 발송이 가능합니다.

    obniz 옆에 코드 쓰기 (복사 붙여넣기 3분)


    설정 등 생략.
    Discord는 버튼 스위치를 누르면 다음과 같이 무작위 추첨 결과 문자열 스크립트를 샘플로 보냅니다.
    axios POST의 Content-Type은 기본값application/json이므로 매개변수 2에 객체{ content: omikuji }를 직접 배치하면 됩니다.
    omikuji.js
    const axios = require('axios');
    const Obniz = require('obniz');
    const obniz = new Obniz('Obniz_ID'); // 自分のObniz IDを入れる
    const DISCORD_WEBHOOK_URL = 'ここに取得したWebhook URLを入れる';
    
    obniz.onconnect = async function () {
      obniz.display.clear();
      obniz.display.print('Hello obniz!');
    
      // スイッチの反応を常時監視し変化があれば実行します
      obniz.switch.onchange = async function (state) {
        if (state === 'push') {
          // プッシュスイッチが押されたとき以下を実行
    
          // ランダム値から「おみくじ結果」を作成します
          const v = Math.random();
          const omikuji = (v > 0.8) ? '大吉' : (v > 0.6) ? '中吉' : (v > 0.4) ? '吉' : '凶';
    
          console.log('おみくじ結果:' + omikuji);
          obniz.display.clear(); // 画面を消去
          obniz.display.print('pushed'); // pushed と画面に表示
    
          // axiosで送る
          try {
            // POSTリクエストでDiscordにおみくじ結果を送信
            const response = await axios.post(
              DISCORD_WEBHOOK_URL,
              { content: omikuji } // このオブジェクトがJSONとして送信される
            );
            // データ送信が成功するとレスポンスが来る
            console.log('レスポンスを受信しました:' + response.data);
            console.log('POSTに成功しました!');
          } catch (error) {
            // ネットワークに接続できてない・サーバーが落ちてる・URLが違うなど
            console.log('POSTに失敗しました……');
            console.error(error);
          }
        } else {
          // プッシュスイッチ戻された・左右などの場合
          obniz.display.clear(); // 画面を消去
        }
      }
    }
    
    Node.js 실행을 사용하여 단추 스위치를 눌러 보십시오.
    $ node omikuji.js
    

    Discord는 원활하게 작동할 경우 이렇게 투고합니다.
    수고하셨습니다.

    좋은 웹페이지 즐겨찾기