KintoneとZoomの連携について

お世話になります。

こちらの記事を参考にさせていただき、kintoneとZoomアプリの連携を試みています。
無料版のZoomアカウントでは上手く動作するのですが、有料版のZoomアカウントとの連携が下記の通りうまくいかず行き詰っています。

【有料版Zoomで試した場合】
kintoneレコード上
・会議ID(ミーティングID):発行される
・会議リンク(ミーティングURL):発行される
・会議PW(ミーティングPW):発行されない

Zoomアカウント上
上記の予約状況がスケジュールに反映されない

記事にも無料版向けとありましたが、有料版でも動作するようにはどのようにカスタマイズしたら良いでしょうか。

import {ZoomApi} from './zoomApi';

((PLUGIN_ID) => {
  // フィールドコードを変数に格納
  const topic = 'topic';
  const start_time = 'start_time';
  const duration = 'duration';
  const meetingNumber = 'meetingNumber';
  const password = 'password';
  const join_url = 'join_url';

  const zoomapi = new ZoomApi(PLUGIN_ID);
  // ミーティングタイプは「2」の「Scheduled meeting」を指定し、変数に格納
  const meetingType = 2;
  const loginUser = kintone.getLoginUser();

  // レコードが保存されたときに、記入された「会議名」「開始時間」「会議時間」などの情報をもとにzoomミーティングを生成する処理
  kintone.events.on('app.record.create.submit', async event => {
    const record = event.record;
    const data = {
      [topic]: record[topic].value,
      'type': meetingType,
      [start_time]: record[start_time].value,
      [duration]: record[duration].value,
      'timezone': loginUser.timezone
    };
    // zoomユーザー情報を取得
    const user = await zoomapi.getUsers().catch(error => {
      const resp = JSON.parse(error[0]);
      alert(resp.message);
    });
    if (!user) return event;
    const userId = user.users[0].id;
    // 取得したzoomユーザー情報と記入された会議情報でzoomミーティングを生成
    const meetingInfo = await zoomapi.createMeeting(userId, data).catch(error => {
      const resp = JSON.parse(error[0]);
      alert(resp.message);
    });
    if (!meetingInfo) return event;
    record[meetingNumber].value = meetingInfo.id;
    record[join_url].value = meetingInfo.join_url;
    record[password].value = meetingInfo.encrypted_password;
    return event;
  });
  // レコードを作成/編集と、一覧編集画面が表示されるイベントの処理
  kintone.events.on(['app.record.create.show', 'app.record.edit.show', 'app.record.index.edit.show'], event => {
    const record = event.record;
    // 「会議名」「会議パスワード」「会議URL」などの情報を編集不可にする
    record[meetingNumber].disabled = true;
    record[password].disabled = true;
    record[join_url].disabled = true;
    return event;
  });

  // レコードを削除するときに、ミーティングの削除をzoomへ反映する処理
  kintone.events.on(['app.record.detail.delete.submit', 'app.record.index.delete.submit'], event => {
    const record = event.record;
    const meetingId = Number(record[meetingNumber].value);
    return zoomapi.deleteMeeting(meetingId).catch(error => {
      const resp = JSON.parse(error[0]);
      alert(resp.message);
    });
  });
})(kintone.$PLUGIN_ID);

SiN

>会議PW(ミーティングPW):発行されない
パスワードはmeetingInfo.encrypted_passwordにはいっているようですが、確認していますか?
もし確認していなければコード内のmeetingInfoの中身をconsole.logで確認してみてください。
もしかしたら近しい名前の別の変数に格納されているのかもしれません。

>上記の予約状況がスケジュールに反映されない
zoomapi.createMeetingのレスポンスが返ってきているみたいなので、反映されていると思うのですが、
表示だけでしょうか?それとも会議も設定されていない状態になっているのでしょうか。

上記がわかると、解決策が出てくるかもしれません。

TO様

ご回答ありがとうございます。
確認してみたのですが、Zoom(無料アカウント)ですと"passwor"として取得されkintone上にも表示、さらにZOOMアカウントの予約一覧にも表示(会議設定)されていました。

“join_url”: “*************”

“password”: “********”,

“h323_password”: “******”,

“pstn_password”: “******”,

“encrypted_password”: “******************”,

“settings”: {

Zoomの有料アカウントに変更した場合には、kintone上のパスワード部分が空欄となりZoomアカウント側では表示も予約もされていない状況です。

“join_url”: “*************”,

“settings”: {

SiN

何点か確認です.
・有料アカウントはミーティング時にパスワード設定を行う設定になっていますか?
・有料アカウントが会議を設定するにあたって,有料アカウントでJWT認証(またはそれ以外の認証)を行っていますか?
(アカウント異存ではないとは思うのですが…)

なお,調べている最中に少し気になる情報を見つけたので,リンクを貼っておきます.
【2022年7月】Zoom APIにおけるJWTの利用終了について

2023年6月でJWT認証が使えなくなるとのことです.
当該アプリで利用しているkintone2ZoomプラグインもJWT認証を利用しているようでしたので,
留意ください.

 

 

TO様

ご回答、ありがとうございます。

ご質問いただいた点について確認しました。

・有料アカウントはミーティング時にパスワード設定を行う設定になっていますか?
>はい、設定画面にてONになっています。

パーソナル ミーティングID(PMI)パスコード ON

・有料アカウントが会議を設定するにあたって,有料アカウントでJWT認証(またはそれ以外の認証)を行っていますか?
>はい、JWT認証設定済みです。念のため再度こちらをやり直してみましたがやはり有料アカウントの場合のみうまくいきませんでした。

何度もお手間をいただいており申し訳ありませんが、何か解決策がありましたらよろしくお願いします。

SiN様

zoom APIのreferenceを見ても,
無料/有料でAPIの挙動に差が出るような仕組みになっているようにはみえませんでした.
Zoom Meeting API - Create a meeting

index.jsの「user」と,
zoomApi.jsのcreateMeeting(userId, data) にある「args」の中身を比較すれば,
無料/有料の差異がわかるかもしれません.
有料でarg[1]が201であれば,一通りの情報は取得できているはず…と思うのですが…

TO様

色々と調べていただき、ありがとうございます。
無料/有料で違いがないとのことですので、私の設定等などが何か間違っているのかもしれません。

もう一度一からやり直してみたいと思います。