cybozu developer network

カテゴリー内の他の記事

Cisco Webex TeamsからGaroonスケジュールを予約する

記事内で利用しているライブラリ「request-promise」は、非推奨(deprecated)になりました。
HTTP リクエストができる他のライブラリ(axios など)や、https.requst に書き換えることをおすすめします。
Moment.js はメンテナンスモードになり、日付処理できる代替ライブラリへの移行が推奨されています。
代替ライブラリのひとつ Luxon については、kintone カスタマイズでの導入方法の紹介記事があります。

緊急な来訪で今すぐ会議室を抑えておきたいケースがあると思います。
グループウェアが未導入だと担当者に電話で確認したり、会議室前の予約用紙にサインしてと大変ですが、グループウェアを導入済みであってもパソコンを立ち上げたり、空き状況を検索したりと意外と手間もかかります。

そこで、今回はクラウドベースのコラボレーションサービス 『Cisco Webex Teams』(旧称: Cisco Spark)と大規模向けグループウェア『Garoon』を連携することで、簡単に空き部屋を見つけて予約するTipsを紹介します。

システム概念図

Cisco Webex Teams と Garoon on cybozu(以下 Garoon) のAPIを連携させるために、今回はAWS Lambdaを利用しました。

2018-05-11_15h50_23.png

Cisco Webex Teams とは

  • 1対1から、複数メンバーによるグループメッセージでシームレスに会話が成り立つ
  • モバイル、パソコン専用の Cisco Webex Teams アプリがあり、複数のデバイス利用が可能
  • RESTfulなAPIが揃っており、Webhookも搭載

そのほか多くの特徴があります。Cisco Webex Teams のサイト でご確認ください。

事前準備

Garoon

  • 必要に応じて施設を登録してください
  • API 実行用のユーザーを 1つ用意してください

Cisco Webex Teams

  • Cisco Webex Teams 上に結果を表示するための bot 用のアカウントを用意してください
  • 専用の会議室を 1つ用意してください
  • Cisco Webex Teams の API 情報はこちらのページです

Node.js の JavaScript ファイル

  • 後述の index.js, garoonapi.js の内容をコピーして配置してください
  • request-promise, moment, cheerio を使用していますので、必要に応じてnpm install でインストールして下さい

環境を作成する

アップロード用Zipファイルの作成

index.js を開いて、以下の項目を記入して保存します。

項目 設定値
ROOMID

Cisco Webex Teams の会議室のID
https://developer.webex.com/endpoint-rooms-get.html
で該当する会議室のID を確認することができます
※Test Mode を On にして(ログインする必要あり) Run をクリックすると、
会議室の情報が Response に表示されます。
Response の中から、該当する会議室の ID を取得してください。

BEARER Cisco Webex Teams の bot アカウントの Access Token
https://developer.webex.com/
でログイン後に右上のユーザーのアイコンをクリックすると表示されます

【補足】
OAuth 2.0を利用した認証も可能です。複数のアカウントに関連する操作を行いたい場合や、
APIへのアクセス権を制限したい場合などには、OAuth 2.0を利用する必要があります。
詳細は、
https://developer.webex.com/authentication.html
を参照ください。
DOMAIN kintone のドメイン
SPARK_MADDRESS Cisco Webex Teams の bot アカウントのメールアドレス

同様に garoonapi.js を開いて、以下の項目を記入して保存します。

var USERID = xxx, // API 実行ユーザーのログイン名
      PASSWD = xxx; // API 実行ユーザーのパスワード
項目 設定値
USERID

API 実行ユーザーのログイン名

PASSWD API 実行ユーザーのパスワード

最後に、以下のコマンドで、zip ファイルを作成します。

zip ファイルの名前は、今回は SparkGSch.zip とします。

zip -r SparkGSch.zip index.js garoonapi.js node_modules/

AWS の設定(Lambda,  API Gateway)

Slackから手軽にkintoneへレコード登録する方法 の中の、
「Lambda の設定」「Amazon API Gateway の設定」を参考に、それぞれの設定を行います。

ここでは、注意すべき点を記載します。

Lambda の設定

  • Run Time で Node のバージョンが指定できます。
    最新バージョン(記事作成時点では、Node.js 4.3)を指定することをお勧めします。
  • Advanced settings の Timeout は 0min 20sec としてください。
    ※ 環境によりますが 7 ~ 8秒かかる場合もあります。

API Gateway の設定

Invoke URL の中にDomain 名, Stage 名, Method 名が含まれていることを確認してください

https://(Domain 名)/(Stage 名)/(Method 名)

Cisco Webex Teams Webhook の設定

Spark for Developers の Create a Webhook より、Webhook を作成します。
Test Mode を On にして(ログインする必要あり)、以下の項目を入力後、Run をクリックしてください。

項目 設定値
name

今回作成する Webhook の名前(任意)

targetUrl API Gateway の Invoke URL
resource messages(固定)
event created(固定)
filter roomId=(Cisco Webex Teams の会議室のID)

※ List Webhooks Get Webhook Details から作成した Webhook を確認することができます。

確認する

Cisco Webex Teams の会議室から実際に確認してみましょう。

【※注意】 
必ず、bot 以外のアカウントで確認してください。
(bot アカウントで確認した場合は、プログラムは作動しません)

施設の空きを検索する

いまから 1時間空いている施設を検索する場合は、「1時間で検索して」と入力します。
※画面はパソコン版の画面です

数秒待つと bot がスケジュールの空き状況を教えてくれます。

施設を予約する

先ほどの検索結果より、会議室B を 1時間予約したいと思います。
会議室B は [2] ですので、以下のように入力します。

数秒待つと bot から、会議室を予約しましたとメッセージが返ってきます。

実際に、Cybozu Garoon で施設のスケジュールを見てみます。
たしかに実行した時から1時間の時間帯で、会議室Bが予約されていることがわかります。

応用編

今回は、現在の時刻から検索・予約する方法を紹介しましたが、たとえば施設名に収容員数を含ませることで、人数による絞り込みができたり、施設を検索・予約する際に時間を指定したりするなど、いろいろカスタマイズしてオリジナルのシステムを構築することもできます。

 

今後の展開

リアルタイム性を活かして、今すぐ知りたい、教えてくれるサービス展開ができそうです。

  1. 朝に自分の今日の予定をCisco Webex Teamsで取得する
  2. 他の人の予定を取得する

JavaScript 

index.js

garoonapi.js

【※注】
本記事は 2016年 4月の段階の Cisco Webex Teams のバージョンで記事を作成しています。

記事に関するフィードバック

記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。

サインインしてコメントを残してください。