
Zoomの投票作成をAPIで秒処理
こんにちは。経営企画室 プロトタイプビルダーの山下です。
ラーニングサービス部 AWS認定インストラクターの傍ら、主に自分の作業まわりを改善するプロトタイプビルダーを兼任しています。
今日は今年作って、運用しているツールを一つ紹介します。
読んでいただいた方の何かのヒントになれば幸いです。
課題
トレノケートではオンライントレーニングを行う上での配信サービスとして、Zoomミーティングを利用しています。
Zoomミーティングには、投票機能があり、受講者の皆様にアンケートを取ることができます。
ミーティングにはテンプレート機能があるので、ミーティングの設定とあわせて作成しておいた投票を使い回せます。
ですが、トレノケートではミーティングを作成する部門があり、開催するインストラクターが作成するわけではありません。
そして、コース数も約1,400コースあり、それぞれで個別管理をすることが現実的ではないため、テンプレート機能は使いません。
なので、投票などの個別設定はミーティングが作成された後にインストラクターがそれぞれ行います。
そこで例えば10問ほどある投票を作成しようと思うと、毎回同じ質問と選択肢をコピー、ペーストするだけでも、10分以上の時間がかかります。
私はこの作業が面倒で面倒で苦手でした。
この作業が待っていると思うと少しばかり憂鬱になってしまい、美味しいお酒も100%楽しむことができませんでした。
そこで、まずはZoomのAPIのpollsへPostmanを使って、投票内容を書いておいたJsonをPOSTする運用を始めました。
これで毎回、秒で投票作成が完了するようになりました。
すごく便利ですごく嬉しかったので、他のインストラクターにも共有しようと思いましたが、そのためにはZoomのAPI認証情報を共有しなければなりません。
トレノケートではユーザーごとにはAPI認証情報の発行は制御されていて、管理部門から発行してもらったAPI認証情報を使っています。
そこで、以下の要件を満たすツールを作りました。
- インストラクターはログイン認証して利用する。
- 投票内容はゼロから書かなくても過去のミーティングから取得可能。
- 一度使った投票は何度でも呼び出し可能。編集削除も可能。
- 他のインストラクターの投票は見ない。
- ZoomのAPI認証情報は安全な場所で管理して使用する。
作ったもの
ログイン
[UserName]と[Password] を入力して[Login]ボタンからログインします。
投票作成までの流れ
(1) 投票内容登録
データベースに投票内容を登録します。
(2) 投票作成
データベースに登録した投票を、指定したミーティングIDに作成します。
(1) 投票内容登録
[投票内容]をJson形式で入力して、[Add]ボタンで登録します。
[名前]はこのツールで投票内容を見分けやすくするためのものです。いわば目印です。わかりやすい名前をつけてください。(オプション機能参照)
過去のミーティングから投票内容を呼び出すこともできます。(オプション機能参照)
* Jsonの例
2つの投票で、1つめの投票に2つの質問、2つめの投票は1つの質問の例です。
「好きなメニューは何ですか?」の質問は、複数選択("type": "multiple")です。
オプション機能 - 名前
名前をつけて一覧で見やすくすることができます。
既存の投票内容にも名前を入力して[Update]できます。
オプション機能 - 呼び出し
過去に使用したミーティングから投票内容を呼び出せます。
過去のZoomのミーティングIDを入力して、[呼び出し]ボタンを押下します。
投票内容に反映されます。
このまま[add]ボタンから新規追加して、[投票作成]することもできます。
もちろん修正して再利用ができます。
(2) 投票作成
登録した投票が上部一覧に表示されますので選択します。
[投票内容]フィールドに選択した投票内容が表示されます。
ZoomのミーティングIDを[ミーティングID]フィールドに入力して、[投票作成]ボタンを押下します。
[ミーティングID]フィールドが空(ブランク)になったら処理終了です。
Zoomの管理画面を確認してください。
次回以降は、(2) 投票作成の操作のみで、投票作成ができます。
投票内容の編集
登録した投票が上部一覧に表示されますので選択します。
[投票内容]フィールドに選択した投票内容が表示されますので修正します。
[Update]ボタンを押下します。
投票内容の削除
登録した投票の右のゴミ箱アイコンから削除します。
構成サービス
Amazon S3
静的なHTML, CSS, JavaScript、画像を配置して配信しています。
Amazon Cognito
ユーザープールを使って、ユーザーの登録、ログイン認証を行っています。
API GatewayのCognitoオーサライザーを使用してログイン認証していないとAPIが実行できないようにしています。
Amazon DynamoDB
投票内容をユーザーごとに保存しています。
Amazon API Gateway
JavaScriptから呼び出すREST APIをセットアップしています。
それぞれLambdaを呼び出しています。
設定はこちらのSwaggerを参考にしていただけますと幸いです。
(長くなるのでOPTIONSは割愛しています)
AWS Lambda
ランタイムはPython3.8です。
コードを記載します。
ロギング、デバッグコードは割愛します。
DynamoDB PUT
DynamoDB Query
DynamoDB Delete
Zoom GET
Zoom APIの認証情報は、Secrets Managerで安全に管理しています。