1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Workbot for Microsoft Teams でユーザー選択コントロールを使う

Last updated at Posted at 2024-06-06

はじめに

Workbot for Microsoft Teams を使えば、チャット上で人とのインタラクションを実現でき、人が介在する業務全体の自動化を行うことが可能になります。例えば、Teams のチャット上で管理者の変更、あるいは、アクセス権を付与するユーザーを決定する場合、Workbot の上で Microsoft 365 内のユーザーを指定させる必要がございます。

このケースにおいて、もっとも単純な方法は、テキスト入力ボックスを使ってメールアドレスを入力させる方法です。しかし、利用者が名前からメールアドレスを調べる手間がかかり、メールアドレスの入力間違いのリスクもあります。そのため、チェックと訂正の機能を実装する必要が生じ、結果的に実装コストの増加へとつながってしまいます。

では、この問題を解決するよい方法はないのでしょうか?

カスタムの Adaptive Card を使うことで、ユーザー選択コントロールを作成することが可能

Workbot for Microsoft Teams でリッチな画面を作成する」の記事でご紹介した通り、Workbot for Microsoft Teams では、Adaptive Card によりチャット上の画面を描画しています。

カスタムの Adaptive Card を記述し、「アダプティブ カードのユーザーピッカー」を使うことで、次のようなユーザー選択コントロールのUIを簡単に作成することが可能です。

image.png

このように、名前やメールアドレスなどを元に検索を行うことも可能です。

image.png

選択したユーザーの上にカーソルを当てれば、ユーザーの詳細情報も確認可能です。

image.png

ユーザー選択を行う Workbot を作成する手順

レシピの全体構成

今回作成するレシピの全体構成です。ユーザー選択を行う画面を表示する「レシピ1」と、[ユーザーを選択]ボタンのクリックをトリガーに動き、選択されたユーザーを受け取って結果を表示する「レシピ2」で構成されます。

image.png

ユーザー選択を行うレシピの作成(レシピ1)

「Post reply (old version)」アクションを選び、カスタムの Adaptive Card を記述するために、[Post a raw JSON instead] を 「Yes」に設定します。

image.png

[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 でパスワード入力 を行う」をご覧ください。
今回の例では、次のような対応関係となります。

image.png

今回、people_picker には、選択したユーザーのIDがカンマ区切りで渡ってきます。そのため、カンマ区切りの文字列を、配列に変換します。今回は、変換に 「Ruby アクション」を利用します。

image.png

カンマ区切りの文字列の配列への変換は、split を使えば1行で実行することが可能です。

{
	user_ids: input['user_ids_separated_by_comma'].split(',')
}

あとは、ユーザーIDの配列に対してユーザーIDからユーザー情報を取得し、取得した結果を表示するアクションを追加すれば、レシピは完成です。

レシピの実行結果

「レシピ1」でユーザーを選択し、選択されたユーザーの名前を「レシピ2」で表示した結果です。

image.png

まとめ

まとめると、以下のようになります。

  • カスタムの Adaptive Card を使えばユーザー選択コントロールを作成可能
  • 選択されたユーザーは、カンマ区で区切られたユーザーIDの文字列として取得可能
  • カンマ区切りのテキストの配列への変換は ruby アクションが便利

おわりに

いかがでしょうか? カスタムの Adaptive Card を用いることで、標準機能では作成できないユーザー選択コントロールを作成することができます。Adaptive Card のポテンシャルを最大限活用するには、カスタムの Adaptive Card を使用するのは、非常に力強い方法です。

なお、ユーザーを一覧から選択させるだけであれば、Typeahead search という機能を使うことで、標準機能でもある程度近いものを作ることは可能です。こちらについても、別な機会にご紹介できればと思います。

Workatoの導入・導入後の活用などでお困りの場合、Workatoリセラーにご相談する方法もございます。お困りごとがございましたら、認定リセラーの当社へ是非ご相談ください。

参考リンク

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?