kintone-Zoom連携自習2日目

kintoneとZoom連携の2日目。
Node.jsでZoomミーティングを登録する。
登録したZoomミーティングを削除する処理を作成する。

Node.jsでZoomミーティングを登録する

最初にプロトタイプとして、ローカルPC上にNode.jsのコンソールプログラムを作成します。その後AWS SAMを使ってLambdaを実装していきます。

Node.jsでコンソールプログラムの作成

Node: v16.13.1

適当なディレクトリにて、npm initする。git initもしておく。

アクセストークンの取得
始めに、Zoomのアクセストークンの取得を行う。
ファイルを作成(※今回はzoomMeetings.js)。接続用のパラメータは.envファイルに登録してそこから読み込む。
通信用のライブラリはAxiosを利用。

module.exports.getAccessToken = async () => {
  try {
    const authorizationString = Buffer.from(`${process.env.CLIENT_ID}:${process.env.CLIENT_SECRET}`).toString('base64');
    const axiosInstance = axios.create({
      baseURL: 'https://zoom.us/oauth/',
      headers: {'Authorization': `Basic ${authorizationString}`}
    });    
    const response = await axiosInstance.post(
        `token?grant_type=account_credentials&account_id=${process.env.ACCOUNT_ID}`,
      );
    console.log(response);
    return response;
  } catch (error) {
    console.log(error);
  }
}

アクセストークンの取得に成功すると、戻り値のJSONオブジェクトのdataの中のaccess_tokenにトークンがセットされるので、それを使ってミーティングを作成する。

ミーティングの作成
Zoomミーティングを作成する。
Zoomミーティング作成に必要なパラメータはとりあえず固定で設定しておく。(※今回は2022-10-10の13:00開始)
実際の実装時はkintoneのレコードの入力値から設定することになる。

const { DateTime } = require("luxon");
const axios = require('axios').default;

const dt = DateTime.local(2022, 10, 10, 13, 00);
const ZoomMeetingCreateSetting = {
  "topic": "Test Zoom Meeting",
  "start_time": `${dt}`,
  "duration": 60,
  "timezone": "Asia/Tokyo",
}

module.exports.getAccessToken = async () => {
  try {
    const authorizationString = Buffer.from(`${process.env.CLIENT_ID}:${process.env.CLIENT_SECRET}`).toString('base64');
    const axiosInstance = axios.create({
      baseURL: 'https://zoom.us/oauth/',
      headers: {'Authorization': `Basic ${authorizationString}`}
    });    
    const response = await axiosInstance.post(
        `token?grant_type=account_credentials&account_id=${process.env.ACCOUNT_ID}`,
      );
    console.log(response);
    return response;
  } catch (error) {
    console.log(error);
  }
}

module.exports.createZoomMeeting = async () => {
  try {
    const accessToken = await this.getAccessToken();
    console.log(accessToken.data);
    const axiosInstance = axios.create({
      baseURL: 'https://api.zoom.us/v2',
      headers: {'Authorization':`Bearer ${accessToken.data.access_token}`}
    });    
    const response = await axiosInstance.post(
        `/users/me/meetings?userId=me`,
        ZoomMeetingCreateSetting
      );
    console.log(response);

    return response;
  } catch (error) {
    console.log(error);
  }
}

Zoomコンソールにログインしてミーティングが登録されていたらOK。

Zoomコンソール

続きます。

参考:


いいなと思ったら応援しよう!