記事内で利用しているライブラリ「request」「request-promise」は、非推奨(deprecated)になりました。
HTTP リクエストができる他のライブラリ(axios など)や、https.requst に書き換えることをおすすめします。
Cisco Webex Teams(旧称: Cisco Spark)と cybozu.com の連携シリーズ第4弾です。
第3弾では、Cisco Webex TeamsのBotを使ってkintoneアプリに登録されている自分のタスクをCisco Webex Teamsに呼び出す方法をご紹介しました。
第4弾はCisco Webex Teamsのメンション機能をつかって、担当者を指定してタスクをkintoneに登録する方法をご紹介します。
似たようなTipsとして、Slackとkintoneを連携させたSlackから手軽にkintoneへレコード登録する方法や、Slack-kintone連携をAzureでもやってみたがあります。
連携の仕組みも動作もほとんど同じですが、本Tipsではタスクの担当者を指定できる点がポイントです。
これまでのCisco Webex Teams と cybozu.com の連携シリーズはこちらです。
第1弾(Garoonとの連携) Cisco Webex TeamsからGaroonスケジュールを予約する
第2弾(ユーザー連携) Cisco Webex Teamsとcybozu.comでユーザー連結を行う
第3弾(kintoneとの連携)kintoneのアプリデータをCisco Webex Teamsに投稿する方法
連携イメージ
Cisco Webex Teamsにタスク投稿用Botを使ってタスクを投稿するとkintoneのタスク管理アプリにレコードが登録されます。
Cisco Webex Teamsのメンション機能を使って人を選択するとkintoneアプリの担当者欄にメンションされた人の名前が登録されます。
また、誰にもメンションをしない場合は投稿者が担当者欄に登録される仕組みです。
連携概要
Azure fuctions(Node.js)にて、以下の処理を行う
- Cisco Webex TeamsのWebhookからPOSTされた投稿メッセージ、投稿者のメールアドレス、メンションされた人のCisco Webex TeamsのユーザーIDを取得
- Cisco Webex Teamsとcybozu.comのユーザーをマッチング
- kintoneへのリクエストデータを作成
- kintone REST APIを実行し、タスク管理アプリにレコードを登録
事前準備
kintoneアプリ
第3弾で作成したアプリをそのまま使うことも可能です。
- 誰のタスクかがわかるシンプルなタスク管理アプリを作成します。
フィールド名 | フィールドタイプ | フィールドコード |
タスク | 文字列(1行) | task |
ステータス | ラジオボタン | status |
担当者 | ユーザー選択 | responsible |
詳細 | 文字列(複数行) | detail |
cybozu.com
第3弾で用意したユーザーを使えます。
- Cybozu.comの管理権を有するユーザーを用意する(ユーザー情報を取得できる権限が必要)
Cisco Webex Teams用Bot
- Spark for DevelopersからMyAppsを開く
- 「Create Bot」をクリックし、以下を参考に設定
項目 | 設定例 |
Display Name | InputTask(bot) ※日本語可 |
Bot Username | 任意文字列@sparkbot.io |
Icon | 任意(URL) |
第3弾にMyAppsの画面ショット付きの説明を記載しています
Cisco Webex Teams
- 任意のスペース(タスクを表示させるスペース)のユーザーに作成したBotを追加する
- 上記のスペースを利用するユーザーを1人以上登録する
- 登録するユーザーのメールアドレスは、cybozu.comに登録されているメールアドレスと一致させる(注)
注:Cisco Webex Teamsとcybozu.comのユーザー連携は、メールアドレスで一致させています。
ユーザー連携の 詳細はCisco Webex Teamsとcybozu.comでユーザー連結を行うをご参照ください。
環境作成
Azure Functions
Azure Functionsの準備に関しては、kintoneとMicrosoft Azureを連携してみよう (Azure Functionsその1)の「Azure Functionsの準備」欄を参考にしてください。
ここでは簡単にポイントのみ記述します。(アカウント等の準備は省略)
- 関数を作成
- Function Appの画面からクイックスタート画面を開く
- シナリオ選択は、「WebHook + API」を選択
- 言語の選択は、「JavaScript」を選択
- パケットモジュールのインストール
- 「Function Appの設定」→ 「Kuduに移動」を選択
- 「site」→作成した関数のフォルダに移動
- package.jsonを生成
- npmコマンドを実行し、「request」「request-promise」をインストール
- package.jsonを開いて下図のようになっているか確認(①、②、③)
- Node.js
- 下記のJavaScripプログラムをコピーし、作成した関数の「</>開発」のコード欄に貼り付
- 「XXX」で記載されている各パラメーターをご自身の環境に合わせて記入
- 「保存」ボタンをクリック
Cisco Webex Teams Webhook の設定
- Cisco Webex for Developers(旧:Cisco Spark for Developers)からWebhookのCreate a Webhookを開く
- TestModeを「ON」にする
- 以下の項目を入力し、「Run」をクリック
項目 | 設定値 |
Authorization | Bearer 「Botのアクセストークン」 ※ |
name | 今回作成する Webhook の名前(任意) |
targetUrl | Azure Functionsの関数のURL ※ |
resource | messages(固定) |
event | created(固定) |
filter | mentionedPeople=me ※ |
※ 詳しくは第3弾(kintoneとの連携)をご参照ください
試してみよう
実際にCisco Webex Teamsのタスク登録用Botが参加しているスペースからタスクを投稿してみましょう。
まず自分が担当するタスクの場合、「@InputTask(Bot)タスク+詳細」のフォーマットで入力します。
※「+」は区切り文字になっており、「+」の前後でタスクと詳細に分けてkintoneに登録されます。
kintoneアプリを確認してみましょう。
次に自分以外の誰かが担当するTodoを登録してみましょう。
今度はCisco Webex Teamsのメンション機能を使って「@InputTask(Bot) @ユーザータスク+詳細」のフォーマットで入力します。
こちらもkintoneアプリを確認してみましょう。
関連技術情報
Cisco Webex Teamsに投稿されたメッセージ(Botへのメンション)を取得する:Get Message Details API
cybozu.comのユーザー情報を取得する:ユーザーエクスポート API(JSON)
kintoneアプリにレコードを登録する:レコード登録(1件)
おわりに
今回は、タスクの担当が一人の場合を想定した例でご説明しましたが、担当者が複数いる場合などにもチャレンジしてみてください。
記事に関するフィードバック
記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。