HTTP リクエストができる他のライブラリ(axios など)や、https.requst に書き換えることをおすすめします。
代替ライブラリのひとつ Luxon については、kintone カスタマイズでの導入方法の紹介記事があります。
緊急な来訪で今すぐ会議室を抑えておきたいケースがあると思います。
グループウェアが未導入だと担当者に電話で確認したり、会議室前の予約用紙にサインしてと大変ですが、グループウェアを導入済みであってもパソコンを立ち上げたり、空き状況を検索したりと意外と手間もかかります。
そこで、今回はクラウドベースのコラボレーションサービス 『Cisco Webex Teams』(旧称: Cisco Spark)と大規模向けグループウェア『Garoon』を連携することで、簡単に空き部屋を見つけて予約するTipsを紹介します。
システム概念図
Cisco Webex Teams と Garoon on cybozu(以下 Garoon) のAPIを連携させるために、今回はAWS Lambdaを利用しました。
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 |
BEARER | Cisco Webex Teams の bot アカウントの Access Token https://developer.webex.com/ でログイン後に右上のユーザーのアイコンをクリックすると表示されます 【補足】 |
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が予約されていることがわかります。
応用編
今回は、現在の時刻から検索・予約する方法を紹介しましたが、たとえば施設名に収容員数を含ませることで、人数による絞り込みができたり、施設を検索・予約する際に時間を指定したりするなど、いろいろカスタマイズしてオリジナルのシステムを構築することもできます。
今後の展開
リアルタイム性を活かして、今すぐ知りたい、教えてくれるサービス展開ができそうです。
- 朝に自分の今日の予定をCisco Webex Teamsで取得する
- 他の人の予定を取得する
JavaScript
index.js
garoonapi.js
【※注】
本記事は 2016年 4月の段階の Cisco Webex Teams のバージョンで記事を作成しています。
記事に関するフィードバック
記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。