Power Platformを活用したチャットボット開発

## はじめに
Power PlatformのPower AutomateとPower Virtual Agentsを使用してチャットボットを作成しました。
Microsoft Power Platformでチャットボットを作成する方法を紹介します。

## 今回作成するもの
新潟県内にあるサウナ施設の情報を検索するチャットボットを作成します。
情報の項目として、

・名前
・場所（区）
・サウナの種類
・利用料金
・公式サイトのURL　

をチャットボットに質問することで表示させるようにします。
チャットボットを作成するために、MicrosoftのPower Virtual AgentsとPower Automateを使用します。これらは比較的簡単にチャットボットを作成する事ができます。

![全体像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3635301/b0bc10af-3f21-5481-7e3a-b9c2f174060c.png)
こちらは、今回作成する一連の流れです。

## Power Virtual Agents作業
まず、Microsoft TeamsからPower Virtual Agentsのアプリケーションを開きます。
次に新しいCopilotを作成しましょう。トピックから新しいトピックを作成し、作業開始です。
![スクリーンショット 2023-12-19 14.36.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3635301/158bedaf-6325-f146-86bb-94ecca9dabaf.png)
私はサウナ検索というトピックを作成しました。
<br>

![トリガー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3635301/56b1db10-204c-8f68-234e-81331be28af4.png)
初めにトリガーフレーズというものを設定します。
チャットにこれらの設定した文字が入力されると、処理が実行されます。
<br>

![メッセージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3635301/0440dd8f-a775-a70c-df4d-a4e25359f504.png)
トリガーフレーズが入力された際のメッセージを設定します。
今回は、「新潟市内のサウナ施設をお調べします。」と表示されるように設定しました。

<br>
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3635301/5ba00dc8-dfa7-9259-3269-adc17de3c5db.png">

メッセージの後にどのキーワードで検索を行うのか設定します。
選択肢は
・名前
・場所
・温度
・種類
・値段
この5つを選択する事ができるアクションを設定しました。

<br>

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3635301/14a44745-d98c-895a-24c1-8ff8f632b9f9.png">

どのキーワードで検索を行うか設定した後、実際のキーワードの名前を入力してもらうように、メッセージを表示させた後に、入力するアクションを設定します。

<br>
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3635301/dc2cfa80-2dac-a3d9-4167-6233d2e64016.png">

上の図では、Power Automateで作成したフローを呼び出し抽出された値を表示させています。

<br>
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3635301/193d18d2-f533-4b8d-8a44-c67a283628fe.png">

抽出された値の表示方法をメッセージとして設定しています。

## Power Automate作業
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3635301/4fe8ff05-b5a5-a986-9505-84c23d5ea02b.png">

上の図は、Power Automate内で作成した処理をまとめたものです。
初めに選択された情報と出力する結果の変数の初期化を行います。変数の初期化を行う理由として、もしも初期化をしない状態でその変数を用いて演算処理を行おうとすると、例外（実行時エラー）が発生し、プログラムがとまってしまうからです。

表内に存在する行を一覧表示で元となるExcelのデータから選択されたキーワードに一致する値を抽出します。
ここで重要になってくるのが、contains関数です。
このcontains関数をフィルタークエリに設定することで、キーワードが含まれる文字の行を全て抽出する事ができます。

Apply to eachでは、抽出した行の情報をどのようにメッセージとして表示させるかの設定を行なっています。

## 実行結果
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3635301/9b4fee45-4a30-6d0a-2167-53f117ee68eb.png"> <img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3635301/aa5725fb-7d62-ff3f-56fb-9181eee00b06.png">

このように、トリガーフレーズが入力されたらサウナ検索botが実行されます。
上記の結果では、名前からじょんのびが含まれる情報を参照して表示しています。


## まとめ
Power Platformを活用することで簡単にチャットボットを作成する事ができます。
今回使用したのはPower AutomateとPower Virtual Agentsですが、その他にもPower Platformではローコードで様々なシステムを開発する事ができます。
Power AutomateとPower Virtual Agentsはチャットボットの開発を効率的かつ柔軟に行うために設計されています。企業はこれらを活用して、作業の合理化、生産性の向上、カスタマーサービスの向上などを実現する事ができます。

## 参考文献
[新潟市 (新潟県) のサウナ施設一覧](https://sauna-ikitai.com/niigata/新潟市)