Power Virtual Agentsをいじったので覚書

Power Platformのサービスの一つ、Power Virtual AgentsをMicrosoftのLearnサイトを見ながらいじってみたので覚書としてまとめます。
まだ触っている途中なのでこの先も何回か更新するかと思います。

学習にあたってはLearnサイトの他にこちらの記事にもお世話になりました。

https://qiita.com/tarox/items/3b661553121a0c86f28b


# <font color="green">0⃣Power Virtual Agentsの起動について</font>
Officeアプリ一覧に存在していないらしく、Power AppsやPower Automateのように直接起動できません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/8fbb1de8-0c02-fc23-df93-9f6a7400f062.png)
Power Appsのメニュー画面から[チャットボット]タブを選択して新しく作成するか、既存のチャットボット（[チャットボット]タブの[リスト]タブの一覧から選択可能。）を起動することでPower Virtual Agentsを開くことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/e92549a7-6487-1098-5c99-93275b313cd1.png)

# <font color="green">1⃣トピックについて</font>
トピックは主に2種類あり、ボット作成時にデフォルトで作成され状態が「常にオン」（作成者がオフにすることもできない）<b>システムトピック</b>と、作成者によって作成されその有効/無効の状態も作成者によって編集される<b>ユーザートピック</b>があります。

:::note warn
システムトピックもユーザートピックも開発者によってどのような会話をボットに展開させるか編集することができますが、そのトピックの起点となるトリガーフレーズについてはシステムトピックの場合、編集することができません。
:::

## フォールバックトピックについて
上記の他に特殊なトピックとしてフォールバックトピックというものがあります。
フォールバックトピックはユーザーの入力から該当するトピックをボットが見つけられなかった場合や、ユーザーの入力をボットが理解できなかった場合にボットがどのように応答するかを決めたトピックです。（現時点での私の解釈なので誤りや不足あればご指摘ください。）

https://docs.microsoft.com/ja-jp/learn/modules/manage-power-virtual-agents-topics/6-fall-back-topics

<dl>
<td>フォールバックとは？</td>
<dd>
<ul style="list-style-type: disc">
<li><a href ="https://wa3.i-3-i.info/word14810.html">「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典 (i-3-i.info)</a></li>
<li><a href ="https://e-words.jp/w/%E3%83%95%E3%82%A9%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF.html">IT用語辞典 e-Words</a></li>
</dd>
<td>エスカレーションとは？</td>
<dd>
<ul style="list-style-type: disc">
<li><a href="https://e-words.jp/w/%E3%82%A8%E3%82%B9%E3%82%AB%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3.html">IT用語辞典 e-Words</a>
</dd>
</dl>

### フォールバックトピックの追加の仕方
フォールバックトピックの内容を編集するには以下のように行います。
1. そのボットの設定を開き、【システムのフォールバック】をクリック。![MicrosoftTeams-image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/2bb3176f-f421-8c3b-d93a-e36c6e71e015.png)
2. 以下のダイアログが表示されるので【＋追加】をクリックして完了です。 ![MicrosoftTeams-image (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/3b57b7fb-ed21-2eb6-3a17-2492c7e4a12f.png)
3. 実際にボットがユーザーの操作に対応できなかった場合どのような処理を行うのか編集するには以下のボタンをクリックして編集します。![MicrosoftTeams-image (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/13e1730e-90cc-ebec-e9c4-7daa26ea2662.png)

## :warning:コピーしたトピックについて
コピーしたトピックはデフォルトでは無効になっています。使用するには有効状態になっているかどうかを確認する必要があります。
またトピックの中のコメントや質問などの会話のコピペはPower AppsのコントロールやPower Automateのアクションなどの他のPower Platformのサービスのように行うことはできないようです。（似たような質問を繰り返すときなどは面倒くさそうです。）
![MicrosoftTeams-image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/48f88f2f-e648-900a-415c-acaa480d573d.png)

https://docs.microsoft.com/ja-jp/learn/modules/implement-power-virtual-agents/3-bot-topics

# <font color="green">2⃣アクションを使用して認証を行ったりPower Automateのフローを呼び出す</font>
「アクションを呼び出す」でボットとの会話中に認証やPower Automateフローを起動することができます。また、チャットボットは現在のところMicrosoft Power Apps または Power Automate の同じ環境で表示されるテーブルに直接アクセスできないので、アクセスしたい場合は[Power Automateフローで呼び出す必要がある](https://docs.microsoft.com/ja-jp/learn/modules/implement-power-virtual-agents/4-bot-entities)ようです。

私はまだこの辺について詳しく触っていないので備忘録替わりに参考URLをリスト化しておきます。

1．認証について

https://qiita.com/taminami/items/1424a515d3b5c66905ec

https://docs.microsoft.com/ja-jp/power-virtual-agents/advanced-end-user-authentication

2．Power Auotomate フローの呼び出しについて

https://docs.microsoft.com/ja-jp/power-virtual-agents/advanced-flow#call-a-power-automate-flow-as-an-action-from-a-bot


https://blog.truestar.co.jp/micorosoft/power-virtual-agents/20210326/42759/


# <font color="green">3⃣エンティティとは</font>
Power Virtual AgentsのエンティティはDataverseのエンティティ（データベースのテーブル）とは使用イメージが異なるので注意が必要です。
Power Virtual Agentsのボットが持つエンティティは、<b>基本的にはユーザーの入力に表記揺れがあってもボットが理解できるようにする</b>ための機能です。

https://docs.microsoft.com/ja-jp/learn/modules/manage-power-virtual-agents-topics/4-entities


エンティティには2つの種類があり、closedListというものとRegixPatternというものがあります。closedListは比較的直感的に操作しやすいですが、RegixPatternの方は学習が必要そうです。

《closedList》
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/8be8d263-8390-8d5d-d8b6-c7653d32c3b7.png)
《RegixPattern》
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/6b4c5ff1-af73-a840-0441-a47fe98ee1a5.png)

## カスタムエンティティとその使い方について
ボット作成時、ボットは予め【事前構築済のエンティティ】を持ちますが、作成者が独自にカスタムエンティティを作成することもできます。（例：商品名についての表記揺れを吸収するエンティティなど。）

エンティティは基本的にはユーザーの入力の表記揺れを吸収するためのものですが、画像のようにカスタムエンティティで追加した値をトピック内の質問の選択肢で表示させることができます。
![MicrosoftTeams-image (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/467d1bc5-53a8-6f73-207d-4fddd3f08585.png)
この場合は質問ノードで「特定」で任意のエンティティを追加した上で、「ユーザーのオプション」ボタンで使用できる選択肢を編集してやる必要があります。

# <font color="green">4⃣変数について</font>
## 変数が使用できる範囲について
変数はいわゆるローカル変数のTopic変数(そのトピック内のみでしか利用できない)と、いわゆるグローバル変数としてのBot変数(複数のトピックを跨いで利用することが可能)のいずれかの種類で利用します。
ある変数の値について、他のボットでも使用したい場合、「変数のプロパティ」ウィンドウの[使用状況]を変更する必要があります。
![PowerVirtualAgentsの変数.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/21878394-094f-05d0-9516-8301c0800c75.png)
## デバッグについて
ボットのテストを行うと変数に入っている値を確認することができます。
## :warning: 注意点
また[「変数」を使用する機能自体がまだプレリリースのようです](https://docs.microsoft.com/ja-jp/power-virtual-agents/authoring-variables)ので、Virtual Agentで変数を使用してユーザーからの応答をその後の会話に利用することができる…はずなのですが、応答がうまくいかないことが多いです。（日本語対応しきれてない感じもします。）
例）
「××社員」と入力したのに何故か「××従業員」に変換される。(会話自体が失敗することもあります。)
![MicrosoftTeams-image (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/9035b69f-9079-723f-b7c9-a9bbca9c0fba.png)

# <font color="green">5⃣エクスポートするには</font>
ボット/トピックを別の環境にエクスポート/インポートさせるには本記事執筆時点(2021/12月上旬現在)では<b>ソリューションを利用してチャットボット全体を移行する</b>しか方法が無いようです。

# <font color="green">6⃣公開するには</font>
作成したボットを他のユーザーに利用してもらうにはPower Apps やPower Automateなどと同様に、共有するユーザーを追加し、「公開」操作を行う必要があります。
共有するユーザーを追加するには[管理]タブ下の[セキュリティ]タブから「共有」メニューを選択し、ユーザー追加画面で行います。
![PowerVirtualAgents_共有するユーザーの追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/3c19a248-de68-6df1-7a1c-66e2396fd637.png)

## ボットをTeamsやLINEで利用してもらう
作成したボットをTeamsやLINE、WEBページで利用してもらうことも可能です。
### 利用できるチャネルの設定の仕方
[管理]タブ下の[チャネル]タブから追加したいチャネルを選択します。公開するチャネルをTeamsにした場合、[Teamsを有効にする]をクリックして接続を行う必要があります。
![PowerVirtualAgents_Teamsでの利用.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/767db012-15f4-c67d-aec7-f76ee5c3a12c.png)

Teamsの場合、ユーザーはTeamsのチャットでボットと会話することができます。
![PowerVirtualAgents_Teamsでの使用イメージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218676/17032ee2-78d7-85c8-3058-73ddfa812485.png)
この場合ボットを利用するのにTeams用のPower Virtual Agentsアプリをインストールする必要はありませが、ユーザーはTeamsアプリに<b>ボットそのものをアプリとして</b>インストールしなければなりません。

# <font color="green">7⃣環境のアクセス権について</font>
環境に追加されるユーザーのセキュリティロールにはボットの作成のみを許可する権利もあります。

https://docs.microsoft.com/ja-jp/learn/modules/implement-power-virtual-agents/2-environments


# <font color="green">その他参考リンク</font>

https://www.nttdata-gsl.co.jp/related/blog/using-chatbot.html