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。
続きます。