はじめに
Workbot for Microsoft Teams を使えば、チャット上で人とのインタラクションを実現でき、人が介在する業務全体の自動化を行うことが可能になります。例えば、Teams のチャット上で管理者の変更、あるいは、アクセス権を付与するユーザーを決定する場合、Workbot の上で Microsoft 365 内のユーザーを指定させる必要がございます。
このケースにおいて、もっとも単純な方法は、テキスト入力ボックスを使ってメールアドレスを入力させる方法です。しかし、利用者が名前からメールアドレスを調べる手間がかかり、メールアドレスの入力間違いのリスクもあります。そのため、チェックと訂正の機能を実装する必要が生じ、結果的に実装コストの増加へとつながってしまいます。
では、この問題を解決するよい方法はないのでしょうか?
カスタムの Adaptive Card を使うことで、ユーザー選択コントロールを作成することが可能
「Workbot for Microsoft Teams でリッチな画面を作成する」の記事でご紹介した通り、Workbot for Microsoft Teams では、Adaptive Card によりチャット上の画面を描画しています。
カスタムの Adaptive Card を記述し、「アダプティブ カードのユーザーピッカー」を使うことで、次のようなユーザー選択コントロールのUIを簡単に作成することが可能です。
このように、名前やメールアドレスなどを元に検索を行うことも可能です。
選択したユーザーの上にカーソルを当てれば、ユーザーの詳細情報も確認可能です。
ユーザー選択を行う Workbot を作成する手順
レシピの全体構成
今回作成するレシピの全体構成です。ユーザー選択を行う画面を表示する「レシピ1」と、[ユーザーを選択]ボタンのクリックをトリガーに動き、選択されたユーザーを受け取って結果を表示する「レシピ2」で構成されます。
ユーザー選択を行うレシピの作成(レシピ1)
「Post reply (old version)」アクションを選び、カスタムの Adaptive Card を記述するために、[Post a raw JSON instead] を 「Yes」に設定します。
[Raw message] に、次の JSON を記述します。「people_picker」というIDの部分が、ユーザー選択コントロールになります。今回は、複数ユーザーの選択を可能にするため、isMultiSelect を true にしていますが、false にすることで単一ユーザーを選択させるように変更も可能です。詳細な仕様については、公式サイト「アダプティブ カードのユーザーピッカー」をご覧ください。
{
"type": "message",
"attachments": [
{
"contentType": "application/vnd.microsoft.card.adaptive",
"content": {
"type": "AdaptiveCard",
"body": [
{
"type": "TextBlock",
"size": "Medium",
"weight": "Bolder",
"text": "M365上のユーザー検索"
},
{
"type": "Input.ChoiceSet",
"choices": [],
"choices.data": {
"type": "Data.Query",
"dataset": "graph.microsoft.com/users"
},
"id": "people_picker",
"isMultiSelect": true
}
],
"actions": [
{
"type": "Action.Submit",
"title": "ユーザーを選択",
"data": {
"bot_command_name": "sample_list_selected_users",
"bot_command_params": ""
}
}
],
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.4"
}
}
]
}
選択されたユーザーを表示するレシピの作成(レシピ2)
カスタムの Adaptive Card を使った際の、パラメーターの受け渡し方については、「Workbot for Microsoft Teams でパスワード入力 を行う」をご覧ください。
今回の例では、次のような対応関係となります。
今回、people_picker には、選択したユーザーのIDがカンマ区切りで渡ってきます。そのため、カンマ区切りの文字列を、配列に変換します。今回は、変換に 「Ruby アクション」を利用します。
カンマ区切りの文字列の配列への変換は、split を使えば1行で実行することが可能です。
{
user_ids: input['user_ids_separated_by_comma'].split(',')
}
あとは、ユーザーIDの配列に対してユーザーIDからユーザー情報を取得し、取得した結果を表示するアクションを追加すれば、レシピは完成です。
レシピの実行結果
「レシピ1」でユーザーを選択し、選択されたユーザーの名前を「レシピ2」で表示した結果です。
まとめ
まとめると、以下のようになります。
- カスタムの Adaptive Card を使えばユーザー選択コントロールを作成可能
- 選択されたユーザーは、カンマ区で区切られたユーザーIDの文字列として取得可能
- カンマ区切りのテキストの配列への変換は ruby アクションが便利
おわりに
いかがでしょうか? カスタムの Adaptive Card を用いることで、標準機能では作成できないユーザー選択コントロールを作成することができます。Adaptive Card のポテンシャルを最大限活用するには、カスタムの Adaptive Card を使用するのは、非常に力強い方法です。
なお、ユーザーを一覧から選択させるだけであれば、Typeahead search という機能を使うことで、標準機能でもある程度近いものを作ることは可能です。こちらについても、別な機会にご紹介できればと思います。
Workatoの導入・導入後の活用などでお困りの場合、Workatoリセラーにご相談する方法もございます。お困りごとがございましたら、認定リセラーの当社へ是非ご相談ください。
参考リンク
- 株式会社 日立ソリューションズ
- Workato 公式サイト
- 本記事のサンプルレシピ
- [Example] Select users (JPDC利用者向け)
- [Example] List selected users (JPDC利用者向け)
- [Example] Select users (USDC利用者向け)
- [Example] List selected users (USDC利用者向け)
- Adaptive Card 関連