Zoom APIを触ってみる
先日、とあるオンライン勉強会にて、運営の方がZoom APIを使って来場者とConnpassページとの突合を楽にしたいと仰っていました。
たぶんAPI提供されてるんじゃないかなと踏んでいたら予想通りあり、簡単に取得できたのでメモ書きします。
今回の場合、勉強会の運営側でレジストレーション機能を使って氏名やConnpass IDの入力後に入室できるようにしているみたいなので、少なくともその登録内容からconnpass IDとZoom上での名前を全員分取得できたらゴールとします。
なお、レジストレーション機能の詳細はこちら。
ZoomのAPIリファレンスはこちらにありました。APIとかDeveloper向けサイトでは定番の英語で書かれているやつです。
探してみるとレジストレーションに関するAPIを発見しましたのでリファレンスに書かれている内容に従って叩いていきましょう。
なお、本稿の内容は2020年5月24日現在のものであるため今後変更が発生するかもしれません。
どうやらGETでパラメータを添えてリクエスト投げると帰ってくるみたいなので、とりあえずcurlでやってみましょう。
ZoomのApp Marletplaceにアクセスし、ログインした上で右の "Develop" からBuild Appを押して、作成画面へいきます。
JWTのCreateボタンを押します(下記画面は作成後のため一部異なります)。
※ JWTはJson Web Token の略です。
App Credentials の下部にある、View JWT Tokenで JWT Tokenをコピーします。
コピーしたJWT Token(<JWT Token>
)と、取得したいミーティングのID(<Meeting ID>
)を下記のコマンドにいれて実行。
kmori@kmoriMacbookPro $ curl -H 'Authorization: Bearer <JWT Token>' https://api.zoom.us/v2/meetings/<Meeting ID>/registrants
そうするとあれこれ情報が返ってくるはずです。
下記はサンプルですが、実際の戻り値を改行やインテンドによる整形をしたものです。
{ "page_count":1, "page_number":1, "page_size":30, "total_records":90, "registrants":[ { "id":"idABCD", "first_name":"AB", "last_name":"CD", "email":"abcd@hogehoge.com", "address":"", "city":"", "country":"", "state":"", "phone":"", "industry":"", "org":"", "job_title":"", "purchasing_time_frame":"", "role_in_purchase_process":"", "no_of_employees":"", "comments":"", "custom_questions":[ { "title":"connpass IDを記入してください。", "value":"id_ABCD" } ], "status":"approved", "create_time":"2020-05-23T18:36:52Z", "join_url":"https://us02web.zoom.us/w/honyarara" }, { "id":"idXYZ", "first_name":"XYZ", "email":"xyz@hogehoge.com", "address":"", "city":"", "country":"", "zip":"", "state":"", "phone":"", "industry":"", "org":"", "job_title":"", "purchasing_time_frame":"", "role_in_purchase_process":"", "no_of_employees":"", "comments":"", "custom_questions":[ { "title":"connpass IDを記入してください。", "value":"id_XYZ" } ], "status":"approved", "create_time":"2020-05-23T18:36:52Z", "join_url":"https://us02web.zoom.us/w/honyarara" } ] }
どうやらレスポンス自体は、
Responses |
---|
page_count |
page_number |
page_size |
total_records |
registrants |
status |
create_time |
join_url |
の8項目で構成されており更に、registrantsの中に
registrants |
---|
id |
first_name |
last_name |
address |
city |
country |
state |
phone |
industry |
org |
job_title |
purchasing_time_frame |
role_in_purchase_process |
no_of_employees |
comments |
custom_questions |
が内包されていて、更にcustom_questionsの中に
custom_questions |
---|
title |
value |
が内包されている模様です。
今回の場合、カスタムの質問でconnpassのIDを聞いているため、custom_questionsの中身まで必要となりますが、ここはパース芸でなんとかなる話なので、ゴールとしているconnpass IDと名前は取得できるので無事におしまい。
さてこのAPIですが、1回で返せる値の個数を示すpage_sizeがデフォルトだと30となっています。
そのため、デフォルトのままだと30人より多い会議では全員分取得できません。なので参加者数に応じてここは調整しましょう(なお最大値は300となっています)。
今回の勉強会では定員が100人であったためpage_sizeを100としてGETしてみましょう。
kmori@kmoriMacbookPro $ curl -H 'Authorization: Bearer <JWT Token>' https://api.zoom.us/v2/meetings/<Meeting ID>/registrants\?page_size=100
これで無事に全員分取得できましたとさ。めでたしめでたし。
他にもZoomのAPIでは会議を開催したり、IMのメッセージを取得・送信したりできるそうです。また、MarketplaceではSlack連携やWebhook等もできるみたいなので、可能性が拡がっていますね。
Enjoy!