やりたいこと
Blue Prismのプロセスから会議設定をしたい。
設定したあとにほしいものは、設定した会議のURLとパスコード。
どうやるのか
公式のこのページ「Zoom APIの使用」の図が一発でわかるので転載します。
- BPプロセスからZoom認証サーバへ、認証のリクエストを投げる
- アクセストークンが返ってくる
- そのトークンを使って、Zoom APIに、会議作成のリクエストを投げる
- 会議が作成されて、会議の情報が返ってくる
まずアプリを作成する
Zoom App Marketplace に行って、Server-to-Server-OAuth のアプリを用意します。
Zoomのアカウントは無料のやつでも会社のでもとりあえずオッケー。そのアカウントで会議を作成します。
サインインしたら右上のメニューから、Develop→Build Server-to-Server Appを選択。
そんなにいろいろ設定するところはないのですぐできます。公開はしないでアクティベートだけしたらいいです。
アプリを作成したら、認証情報(アカウントID、クライアントID、クライアントシークレット)をメモっておきます。
Blue Prismで認証情報を作成する
クライアントID、クライアントシークレットを、OAuthクライアント認証で作成します。
認証情報取得アクションを作成する
認証情報を取得するのはいつものアレ。
この認証情報を投げてトークンを取得するのですが、投げる前にBase64エンコードする必要があります。
エンコードのVBOはDXにあります。 Utility - Encode Decode
アクションの中身はこうです。
変換するテキストの中身はこんな感じです。これをエンコードのステージの入力にします。
出力引数は、「クライアントID:クライアントシークレット」をBase64エンコードしたテキストです。
トークン生成アクションを作成する
中身はこうです。
入力引数は
- アカウントID:アプリを作成したときにメモったやつ
- 認証情報取得アクションの出力引数であるテキスト(クライアントID:クライアントシークレット)
出力引数は生成したトークンが入っているコレクションです。
生JSONだと扱いにくいので、コレクションに変換してから返します。Utility - JSONは標準VBOです。
Utility - HTTPも標準VBO。これのPostアクションを使います。中身はこう。
投げるヘッダがBasicなので、Use Bearer TokenはFalseにしておきます。
URLは「https://zoom.us/oauth/token?grant_type=account_credentials&account_id={アカウントID}」
HeadersはAuthorizationの1行だけ。設定する値は「Basic Base64エンコードしたテキスト」です。
会議を作成する
材料は揃ったので、会議を作成します。
先述の認証情報取得やトークン生成のアクションは公開せず、このアクションだけ公開にしておきます。
入力引数は
- アカウントID
- 認証情報名
- 会議タイトル:テキスト
- 開始日時:日時
- 所要時間(分):数値
アクションの中身はこんな感じ。
認証情報取得→トークン生成→開始日時をテキストに変換→リクエストを投げる
開始日時をテキストに変換するときの形は「yyyy-MM-ddTHH: mm:ss」。日と時の間に「T」が入ります。
Post JSONステージの中身はこう。
Bearer Tokenに、トークン生成アクションの出力で受け取ったトークンを設定し、Use Bearer TokenをTrueにします。
Bodyの中身。各値を入力引数の値にReplaceします。
{
"topic": "<会議タイトル>",
"start_time": "<開始日時>",
"duration": <所要時間>,
"timezone": "Asia/Tokyo"
}
返ってきたJSONをコレクションに変換して、会議URLとパスコードを返します。
コレクションの項目で使いそうなのは以下。
- start_url:ホストとして参加するときのURL
- join_url:普通の参加者にお知らせするURLはこっち
- password:パスコード。これは半角英数で、「H323_password」「pstn_password」のほうは数字です。H323とかpstnって何やねんというかたは、私も知識が薄くて上手に説明できないので、VoIPの説明とかをググってください。
これらを使って会議設定のプロセスを作成し、会議設定したあとに参加者にメールを送信するとかの処理を追加したらいいと思います。
終わりです
今回はタイトルと時間だけで設定しましたが、手で設定するときの項目はだいたい全部設定できます。
BodyのJSONに書くときの項目など、詳しくは公式資料を参照してください。→ Zoom API の概要