Cisco Japan Blog
Share

初めての WebexAPI 活用⑤(会議予約システムを作成する)


2021年8月23日


初めての WebexAPI 活用」の第5回(最終回)になります。

第3回で bot の作成、第4回で Integration と API が活用できるようになったため、サンプルプログラムを参考に会議予約をしてくれる bot を作成します。

※エンジニア向けの内容となっております


私は bot のプログラム作成の経験がなく、今回初めて bot の構築を行います。

ですので、第3回、第4回で取得したサンプルプログラムを参考に、会話形式で会議室予約に必要な情報を収集する bot を作成し、Integration を使用して bot が API を呼び出しする方針で進めます。

第3回(bot 処理)、第4回(API 呼び出し)のサンプルプログラムを確認しながら、以下の流れで進めます。

1. 会議室予約情報を収集するbotを作成する

2. Webex Meetingsを作成するAPIを呼び出しできるようにする

3. botがAPI呼び出し処理を発行する

 

1. 会議室予約情報を収集する bot を作成する

第3回で取得したサンプルプログラムを参考に、会話形式で会議室予約に必要な情報を収集する bot を作成していきます。

参考にするのは第3回の際に git から取得した「botkit-template\features\threads.js」というソースです。

まずは bot に話しかけてみて、「threads.js」がどのような動きをしているか確認します。

 

「threads.js」にて構築された bot の応答は「states」で呼び出しできるため、bot に「states」と話しかけます。

「threads.js」にて構築された bot の応答は「states」で呼び出しできるため、bot に「states」と話しかけます。

 

bot とのやり取りを確認すると、bot が発言した質問に対して入力した回答が

・ 誤っている場合 → 誤っている事を通知して再度質問へ

・ 正しい場合 → 正しい事を通知して終了する

動きになっています。

この動きをフローチャートで表現してみます。

この動きをフローチャートで表現してみます。

 

今度はサンプルプログラム「threads.js」を確認してみます。

各フローチャートの内容は以下の通りにプログラムされています。

各フローチャートの内容は以下の通りにプログラムされています。

 

これから作成したい会議予約システムのフローチャートを作成します。

これから作成したい会議予約システムのフローチャートを作成します。

 

上記フローチャート「工程④」の Integration はまだ作成していないため、Integration 呼び出し箇所の実装は行わず、上記 S、①-⑥の通りにプログラムを作成します。

※ローカルサーバーは第3回同様に ngrok を使用してトンネルします

 

結果、以下のように bot と会話して予約を進めることができました。

結果、以下のように bot と会話して予約を進めることができました。

 

会議室の予約状況は PostgreSQL を使用して DB 管理できるように作成しました。

「工程③」では DB から予約状況を取得して空き情報を表示し、要求された時間が空いていたら DB に予約されたことを更新しています。

会議室の予約が成功したため、再度会議室予約要求を行うと、14時が予約済に更新されたことも確認できます。

会議室の予約状況は PostgreSQL を使用して DB 管理できるように作成しました。

 

2. Webex Meetings を作成する API を呼び出しできるようにする

Integration を使用して、Webex Meetings のスケジュール作成を行います。

第4回で作成した Integration の権限情報を修正して、サンプルプログラムも合わせて参考にして作成していきます。

Integration の設定変更

第4回で作成した Integration の権限を再設定して活用します。

作成済みの Integration の変更は、「Cisco Webex for Developers」から変更できます。

 

「Webex for Developers」にログインして「Start Building Apps」を選択します。

「Webex for Developers」にログインして「Start Building Apps」を選択します。

 

作成済の Bot や Integration が表示されるので、変更する Integration を選択します。

作成済の Bot や Integration が表示されるので、変更する Integration を選択します。

 

「Scopes」の項目を確認します。

Webex Meetings のスケジュール作成を行うために、teams、place、room の権限を取得するように設定します。

再設定したら「Save」を選択します。

再設定したら「Save」を選択します。

 

プログラム作成

第4回で使用したサンプルプログラムを参考に、Webex Meetings のスケジュール作成用の OAuth認証コード、アクセストークンを取得し、API を使用する流れを作成します。

サンプルプログラムの処理内容をフローチャートで作成します。

第4回で紹介した API 呼び出しまでの流れ

① 使用したい API に必要な権限を Integratioin により申請して OAuth認証コードを取得する

② 認証コードを使用して権限付与されたアクセストークンを取得する

③ アクセストークンを使用して API を呼び出しする

がそのままフローチャートに表現されていることが確認できます。

プログラム作成

 

サンプルプログラムを確認してみると、各フローは以下の通りにプログラムされています。

【index.html】

【index.html】

 

【oauth_demo.py】

 

Webex Meetings スケジュール作成 API 呼び出しのフローチャートを作成します。

第4回にも記載したとおり、「OAuth認証コード」の取得は初回のみで問題ないため、サンプルコード①の「OAuth認証コード」はプログラムに組み込まず、あらかじめ取得して使用します。

Webex Meetings スケジュール作成 API 呼び出しのフローチャートを作成します。

 

※「Oauth認証コード」取得用のリクエストをブラウザのアドレスバーに入力すれば取得できます

※ローカルサーバーは第4回同様に ngrok を使用してトンネルします

ローカルサーバーは第4回同様に ngrok を使用してトンネルします

 

アクセストークンについてもリフレッシュトークンを使用して更新すれば毎回取得しなくても問題ありませんが、今回はリフレッシュトークンによる更新の仕組みを作成しないため、毎回アクセストークンを取得する仕組みで作成します。

また、サンプルプログラムと異なり、トリガーは「html 画面での操作」ではなく「bot からの要求」を使用するため、html ファイルは作成せずに Python で記載します。

 

以上の内容からフローチャートを作成し、フローチャートからプログラムを作成すると、次の構成で作成できることがわかります。

フローチャートからプログラムを作成すると、次の構成で作成できることがわかります。

 

API 呼び出し箇所の作成を行います。

Webex Meetings のスケジュール作成を行うために必要な API を「Webex for Developers」から確認します。

「Webex for Developers」を開き、「Go to Docs」→「API Reference」→「Meetings」を選択すると、ミーティング関連の処理を行う API が表示されます。

API の一覧を確認すると「Create a Meeting」が確認できるため、この API を使用します。

API「https://webexapis.com/v1/meetings」を選択して、API の詳細仕様を確認します。

API「https://webexapis.com/v1/meetings」を選択して、API の詳細仕様を確認します。

 

API 呼び出しに必要な「Body Parameters」が確認できます。

画面右側を「Example」に切り替えると設定例が表示されるので、例を参考に必要な情報を設定します。

画面右側を「Example」に切り替えると設定例が表示される

 

確認した情報をプログラムへ反映します。

確認した情報をプログラムへ反映します1

確認した情報をプログラムへ反映します2

 

3. bot が API 呼び出し処理を発行する

作成した bot プログラムの「工程④」にて、スケジュールを作成する返答が bot にあった場合、「2. Webex Meetings を作成する API を呼び出しできるようにする」工程で作成したフローに進むよう呼び出し処理を追加します。

 

「2.Webex Meetingsを作成する API を呼び出しできるようにする」工程で作成した「botcall」関数を呼び出すためには、「http://localhost:ポート/botcall」の http リクエストを発信すれば OK です。

これにより、処理の流れは以下の通りになります。

Webex Meetingsを作成する API を呼び出しできるようにする

 

上図の通り Bot のプログラムを変更して、再度 Bot に会議室予約を依頼します。

Bot のプログラムを変更して、再度 Bot に会議室予約を依頼します。

 

bot とのやり取りが完了した後、ミーティングがスケジュールされたことを通知するメールを受信しました。

Webex Meeings のスケジュール一覧を Web から確認すると、指定した時間に指定したタイトルでミーティングがスケジュールされた事が確認できました。

【メール】

bot とのやり取りが完了した後、ミーティングがスケジュールされたことを通知するメールを受信しました。

 

【Webex Meetings(Web)】

【Webex Meetings(Web)】

 

プログラミングのスキルは必要となりますが、第3回、第4回で使用したサンプルプログラムを参考に、実用可能な Bot を作成することができました。

冒頭でも記載した通り、Bot のプログラム作成は初めてでしたが、「Webex for Developers」から提供されているツール、ドキュメント、サンプルプログラムを使用する事で会議室予約 Bot を作成する事ができました。

 

連載内容

第1回:会議予約システムを作成する(導入)

第2回:環境構築

第3回:bot を作成して Webex Messaging で動かす

第4回:Integration を作成し API を使用する

第5回:会議予約システムを作成する

 

Tags:
コメントを書く