前書き
ZOOMのページにログインせずにスケジュールを編集する必要があったため調査内容をまとめておきます。 執筆時点(2021-11-23)ではこの内容で実現できました。 今回はZOOMのAPIからスケジュールの編集を行います。(準備する部分はこちら)APIでスケジュールをいじる
スケジュールを作成する
スケジュールの作成もユーザ情報を取得した時と同じようにリクエストを投げてjsonのレスポンスを受けるだけです。 スケジュール作成は`https://api.zoom.us/v2/users/ユーザのID文字列/meetings`に設定内容をPOSTします。 今回は以下のようなjsonにしましたが詳細に設定をいじれるので公式のリファレンスを参考にユースケースに合わせて調整できます。 2022年の1月15日 15:00を設定する例公式:https://marketplace.zoom.us/docs/api-reference/introduction
{
type: 2, //ミーティングのタイプ(今回はスケジュールされたミーティング、繰り返す予定とかもある)
start_time: "2022-01-15T15:00:00", //設定する開催時間(2022-01-15T15:00:00ZにするとタイムゾーンがGMT固定で設定される)
topic: "作成テスト", //表示されるミーティング名称
timezone: "Asia/Tokyo", //start_timeの時間を割り当てるタイムゾーン
password: "password", //参加するときに入力するパスコード
setting:[
host_video: true, //ホストのビデオON
participant_video: true, //参加者のビデオON
join_before_host: true, //ホストが来る前に参加可能
waiting_room: false //待機室なし
],
duration: 60 //単位は分、予定として押さえる時間(カレンダーとか)
}
早速PHPでAPIを叩いてスケジュールを作成してみます、以下のような感じでできました。
use \Firebase\JWT\JWT;
$payload = array(
"iss" => ZOOM_APIKEY,
"exp" => time() + 30
);
$jwt = JWT::encode($payload, ZOOM_SECRET); //JWTの文字列
$curl = curl_init();
$setteing = [
"host_video" => true,
//とか
];
$create_request = [
"type" => 2,
"setting" => $setting,
//とか
];
$post_json = json_encode($create_request);
curl_setopt($curl, CURLOPT_URL, "https://api.zoom.us/v2/users/".$this->user."/meetings");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
"Authorization: Bearer ".$jwt
"Content-type: application/json"
));
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_json );
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
作成できた場合はレスポンスとしてミーティングの詳細がjson形式で得られます。
{
//抜粋
"id": 1234567,
"host_id": "ホストの文字列",
"topic": "作成テスト",
"start_time": "2021-12-05T08:37:15Z",
"start_url": "https://XXXXX",
"join_url": "https://XXXXX?pwd=YYYYYYY",
"password": "password",
"settings": {
"host_video": true,
...
},
}
ここからjoin_url
とpassword
あたりを抜き出せば関係者に共有してミーティングを行うことができます。
また、ミーティング自体を編集するなどでIDが必要になるのでid
を記録しておきましょう。
作成できたミーティングはZOOMにログインすると確認できます。
ミーティングを編集する
作成したスケジュールの編集も上記とほぼ同じです。異なるのは`/meetings/ミーティングのID`にPATCHで送信することです。//jwtは省略
$setteing = [
"host_video" => true,
//とか
];
$create_request = [
"type" => 2,
"start_time" => "2022-02-16T16:00:00", // 1/15 PM15の予定を 2/16 PM16にする例
"setting" => $setting,
//とか
];
$post_json = json_encode($create_request);
$meeting_id = "ミーティングのID";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://api.zoom.us/v2/meetings/".$meeting_id);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PATCH");
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
"Authorization: Bearer ".$jwt.";",
"Content-type: application/json; charset=UTF-8;"
));
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_json );
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
成功するとミーティングの予定や設定が変更されます。この時、レスポンスは204のステータスだけが返ります。
ミーティングを削除する
削除するのも編集と同様にミーティングのIDを指定してリクエストするだけです。 削除はDELETEになり、特にパラメータなどの設定は必要ありません。//jwtは省略
$meeting_id = "ミーティングのID";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://api.zoom.us/v2/meetings/".$meeting_id);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
"Authorization: Bearer ".$jwt,
"Content-type: application/json"
));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
無事削除されました。こちらも成功するとステータス204が返ります。