Power Virtual Agents for Teamsでチャットボットを作る④ Excelを使う方法

Excel

本記事では、ExcelデータをPower Automateで参照して、応答文を生成する方法を紹介します。

前回の記事では、Teamsの「Lists」に元データを記載しておき、Power AutomateでListsの中身を検索し、その結果をPVAに返すという方法を紹介しました。Teams内でリストデータを管理できるためTeamsでチャットボットの作成が完結するというメリットがありました。

ただ、頻繁にデータの追加や更新を行う場合は、Excelのデータをそのまま使いたいという場合もあるかと思います。

そこで、今回は、キーワード対する結果を記載したリストを定義したExcelをTeamsのチャネル内にアップロードし、そこからデータを取得する方法を紹介したいと思います。

本記事は以下の方向けの記事となっております。

・チャットボットに応答させたい内容が多くなりそうな方

・応答の元となるデータをExcelで管理したい方

Teams内でチャットボット作成を完結させたいという方は、TeamsのListsでリストデータを管理する方法をご確認ください。

今回作成するBOTの概要

今回は、PVAを使用して以下のようなBOTを作ります。

  1. 【ユーザ】「でんわ」と話しかける
  2. 【BOT】「電話番号を検索します」(改行)「検索したい苗字をひらがなで入力してください」とBOTが応答する
  3. 【ユーザ】(上記発言に対して)ユーザが入力を行う ex.「さとう」
  4. 【BOT】入力した文字を検索する
  5. 【ユーザ】「(入力された文字)さんの電話番号は(XXXX)です」または、「(入力された文字)さんは登録されていません」と表示する

実現方法

Excelで応答データを管理するためには、以下の3つのツールを使用します。

ツール名ツールの説明
Power Virtual Agents
(PVA)
チャットボットを作成できるツール
ExcelMicrosoftの表計算ソフト
Power Automate業務を自動化するためのRPAツール

上記3つのツールを、Power Automateを軸にして連携することで、Excelのリストデータを取得し、そのデータをPVAがユーザへ返すことが実現できます。

処理の全体図


PVAとPower Automate間のデータの流れや処理は、以下の図のようになります。

※詳細な説明については、前回記事(Listsデータを使う方法)にて説明しています。

以降で、前項で説明した内容を実際に実現するための具体的な手順を紹介します。

事前準備:Excelでリストデータを作成し、Teamsに投稿する

Excelでリストデータを作成する

事前準備として、Excelでリストデータを作成します。

ExcelデータをPower Automateで扱う場合には、テーブルにしておく必要があります。対象となるデータ範囲を選択し、「挿入」タブの「テーブル」を選択します。

選択した範囲がテーブルになりました。

列名が「列1」「列2」となっているので、列名も変更しておきます。

作成したExcelファイルをTeamsに投稿する

作成したExcelファイルを、Teamsに投稿します。Excelファイルはどのチャネルに投稿しても参照できるため、任意の場所で構いません。今回は、チャットボットを導入するチャネルに投稿します。

PVAでチャットボットを新規作成する

前回記事と同様に、チャットボットを新規作成します。

PVAのフローは以下のように、トリガーフレーズ・質問・終了をフローに追加しておきます。

Power Automateのフローを作成する

PVAのフローで、「質問」アクションと終了のあいだにカーソルを当てると「ノードの追加」と表示されるので+マークを押下します。


「アクションを呼び出す」→「フローの作成」をクリックします。

Power Automateテンプレートの選択

表示されているPower Automateのテンプレートから、「Power Virtual Agents テンプレート」を選択します。

テンプレートを選択すると「Power Virtual Agents」「Return Value(s) to Power Virtual Agents」というアクションが表示されているかと思います。

それぞれ、「入力の追加」と「出力の追加」と記載がありますが、入力というのはPVAからの入力、出力というのはPVAに返す値となります。テンプレートにはデフォルトでこの2つのアクションが設定されており、この間にデータを検索したり編集するなどの処理を加えていくことで目的を実現します。

input/output用の変数を設定

PVAからPower Automateに渡される値を受け取るための変数、Power AutomateからPVAに返す値を渡すための変数をそれぞれ設定します。

フローの1番目のアクション「Power Virtual Agents」には「input」と入力、

「変数を初期化する」アクションには、Excelから取得したデータを格納するための変数を初期化するフローを作成します。

なお、それぞれについての設定手順は、前回記事

  • PVAから渡された値をPower Automateで受け取る
  • Output用の変数を作成

にて詳しく説明していますので、あわせてご確認ください。

Excelの行を取得

Excelデータから検索条件に一致する行を取得します。

例えば、「さとう」と入力したら、「080-XXXX-YYYY」を取得できるようにします。

「行の取得」アクションで対象の行を取得する

先程追加した「変数を初期化する」アクションのあとに、「行の取得」アクションを追加します。

Excel Onlineを押下し、一覧のなかから「行の取得」を選択します。

以下のように設定します。

設定内容は以下の通りです。

項目設定内容
場所事前準備で作成したExcelを投稿したチャネル
ドキュメント ライブラリドキュメント
ファイルExcelファイルが格納されている場所
(候補が表示されるのでそれを選択すればOKです)
テーブルテーブル1
キー列「名前」
(Excelで設定した列名。候補が表示されるのでそれを選択すればOKです)
キー値input(最初のアクションで設定した変数名)

設定内容に関する補足説明

「キー列」は、取得対象を検索する列を設定します。今回は、ユーザから「さとう」など名前が入力され、その値をもとにExcelのリストデータを探しにいくため、「名前」を設定します。

このように設定することで、「名前」列から「さとう」が入っている行を取得することができます。

output変数に取得した値をセットする

「行の取得」アクションで取得した値は、以下のように「名前」「電話番号」という行全体が取得されています。

ユーザには電話番号を返したいので、電話番号の値のみを取り出します。

「変数の設定」アクションで行から値を取り出す

「行の取得」アクションの後に「変数の設定」アクションを追加します。

「名前」にはoutput_data、「値」には「電話番号」を設定します。

これで、電話番号の値のみを取り出すことができました。

PVAへ返却する値にoutput変数をセットする

取り出した電話番号の値を、PVAに返却します。

「Return value(s) to Power Virtual Agents」アクションに、output_dataをセットします。

以上でPower Automateの設定は完了です。

PVAで検索結果をユーザへ返す

Power Automateでリストデータの取得フローが完成したら、PVA側でフローの続きを作成します。具体的には、Power Automateから返された値(今回は電話番号)をPVA側でユーザにメッセージとして返すフローを作成します。

作成したPower AutomateのフローをPVAに設定し直す

「Power Automateのフローを作成する」の手順のなかで、PVAのフロー上でPower Automateのフローを作成をしました。しかし、この状態だと作成したPower AutomateのフローはPVAに紐づいていません。

PVAのフローにPower Automateを追加するには、いったんPower Automateのフローを保存して、PVAのフローで「アクションを呼び出す」から「Power Virtual Agents フロー テンプレート」を選択します。おかしな仕様ですが、現状、再度PVAから設定し直す方法でしか解決できないためこの方法で進めます。

「質問」アクションの以降のフロー上にカーソルを当て「+」マークを押下し、「アクションを呼び出す」から作成したフローテンプレートを選択します。

筆者の環境では複数のフローテンプレートを作成したため何個も表示されていますが、初めて作成された方は一つだけ出ていると思うので、それを選択してください。

Power Automate入力には「{x}input」を、出力には「{x}output」を設定します。

ユーザへ返すメッセージを作成する

Power Automateのフロー呼び出し以降のフロー上にカーソルを当て、「メッセージを表示する」を選択します。

メッセージ内容には、「{x}inputさんの電話番号は{x}outputです」と入力します。

{x}inputにはユーザからの入力値 (=「さとう」)が入り、

{x}outputにはPower Automateからの返却値 (=「080-XXXX-YYYY」)が入ります。

これで全ての設定が完了しました。

PVAで作成したボットのテストを行う

作成したボットのテストを行います。PVAの画面左下にある「ボットのテスト」を押下します。

ボットが正常に動作することを確認できました。

チャットボットの公開&Teamsのチャネルに導入する

作成したチャットボットは公開する必要があります。手順については前回記事にて詳しく説明していますのでそちらをご参照ください。

なお、筆者の環境では、PVAの画面にある「Teamsでボットを開く」からBOTが開けない現象が発生することがありました。その際の対処方法についても触れていますので、あわせてご確認ください。

まとめ

今回は、キーワード対する結果を記載したリストを定義したExcelをTeamsのチャネル内にアップロードし、そこからデータを取得する方法を紹介しました。

Power Virtual Agents for Teamsは、Teams内にノーコードでチャットボットを作成できます。しかし、意外と設定が難しかったりPVA自体の操作性がイマイチな部分もあって、躓く部分もあるかもしれません。

そのような場合には、以下の記事を見ながら一度同じように設定してみることをおすすめします。一度BOTを動かすことに成功できれば、それをベースにしてご自身の目的に合わせて設定していただければと思います。

コメント

タイトルとURLをコピーしました