【PowerVirtualAgents】Teams でボットを作ってみよう。-- 事前知識 編 --

#・はじめに#
Ignite2020 で発表された Project Oakdale のおかげで「PowerVirtualAgents」が強化され、Teamsとの連携が簡単にできるようになりました。

PowerVirtualAgents は Microsoft が提供する、チャットボットサービスです。
通常 PowerVirtualAgentsの利用には**テナント単位で月額10万円**必要ですが、Teams上（Project Oakdale 環境上）の利用に限り、**Microsoft365ライセンスを保有していれば無料**で利用できるようになりました。

PowerVirtualAgents は日本語にも対応しており、ローコードで、しかもグラフィカルインターフェイスを使用して直観的にチャットボットを作成できます。

無料で、簡単にチャットボットを作成できて、Teamsとの連携も簡単。
これはもう、PowerVirtualAgents を使わない、という選択肢はありません！！笑

この記事では、PowerVirtualAgents を利用する前に知っておきたい事をまとめて記載しました。

#・Microsoft Dataverse for Teams（旧：Project Oakdale）について#
Microsoft Dataverse for Teams については下記記事をご覧ください。
　１．[Microsoft Teamsのための新しいデータプラットフォーム「Project Oakdale」を発表](https://memo.tyoshida.me/en/office-365/project-oakdale-annoucement-for-microsoft-teams/)
　２．[【PowerPlatform】Microsoft Dataverse for Teams（旧：Project Oakdale）備忘録](https://qiita.com/kura_yu/items/2611a20e48cd600bd1d1) 

#・注意事項#
**※2020/11/18 更新：**
<font color="OrangeRed">**2020/11/18 現在、Project Oakdale は一般公開されました。**</font>
　「 Common Data Service（CDS）」は名称変更され「 Microsoft Dataverse 」になりました。
　「 Project Oakdale 」も名称変更され「 Microsoft Dataverse for Teams 」になりました。
　本記事内では、現時点で多く認知されている元々の名称のまま記載しております。

--

Teamsで PowerVirtualAgents を利用する場合、Project Oakdale 上にチャットボットを作成・利用するための環境が用意されます。
（環境はTeamsが勝手に作成してくれるためユーザーが意識する必要はありません。）

Project Oakdale 環境の PowerVirtualAgents を利用するにあたっての注意点は下記の通りです。
-　１．PowerVirtualAgents が無料で利用できるのは**Teams上でチャットボットを作成・利用する場合のみ**です。
-　２．他クラウドサービスと連携する場合や、Teams外のPowerVirtualAgentの利用は有料です。
-　３．Project Oakdale 上でPowerVirtualAgentsを利用するため、Project Oakdaleの制限が適用されます。
-　４．Project Oakdaleの制限（1チーム当たり容量上限2GBなど）は、PowerAppsと合わせた上限値です。
-　５．作成したチャットボットの公開範囲は**「チーム内」or「組織内」**の２パターンです。

#・チャットボットの完成イメージ#
サンプルとして、ユーザーが求めるマニュアルを提供するボットを作成しました。
「マニュアルがほしい」というトリガーフレーズをきっかけにして、提供可能なマニュアルの候補が提示されます。
ユーザーがほしいマニュアルを選択すると、ボットはマニュアルのURLを返してくれます。
![ガイドライン.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613247/d69e0ef6-db83-568a-8bec-783c0406256e.gif)

#・PowerVirtualAgents をちょっとだけ知っておこう#
「・はじめに」で述べたように、PowerVirtualAgents は Microsoft が提供する、チャットボットサービスです。
チャットボットとはいえ、ユーザーからのどんなチャットに対しても適切に答えを返してくれるわけではなく、また、PowerVirtualAgents が機械学習していくという事もありません。

チャットボットの管理者が事前に
**「○○というキーワードがきたら、XXXXの処理を実行してね」**と定義しておく必要があるのです。
この定義を**「トピック」**と呼びます。

##・トピックとは##
PowerVirtualAgents では、ユーザーとボットの対話を定義したものを「トピック」と呼びます。
ユーザーがトピックを呼び出すためのキーワードを**「トリガーフレーズ」**と呼びます。
トピックには下図のように「トリガーフレーズ」と「定義した会話フロー」が含まれており、ユーザーがトリガーフレーズをチャットすることでボットとの会話を開始します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613247/e9d37269-d029-2f94-c656-bf5b18a3faea.png)

このトピックを複数作成しチャットボットに登録することで、ユーザーからの様々なチャットに対応できるチャットボットになっていきます。
例えば、下図のようなチャットボットがあった場合、「経費精算」や「休暇申請」のトピックがあるためその内容には対応できますが、「ナレッジ検索」などはトピックがないため適切な返答ができません。
トピックを追加するか、別のチャットボットを作成する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613247/1099c47e-81b2-6335-60af-857ed3e65bbe.png)

「トリガーフレーズ」は**定義したフレーズと完全一致**する場合にのみトピックが起動するため、類似のフレーズも含めて複数定義する必要があります。
同じ意味のキーワードでも「トリガーフレーズ」に含まれていない場合、ボット側は何も返してくれないか、見当違いな返答を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613247/14b6368c-e5ce-bc9f-cf8b-9a0161768d79.png)

##・チャットボット作成において大切なこと##
トピックは「トリガーフレーズ」と「会話フロー」を作成者が事前に定義する必要があります。

###・トリガーフレーズ を複数用意する###
トリガーフレーズは完全一致しない場合、会話フローは開始されません。
例えば、現在の時間を知りたい場合でも「現在の時間は？」「今の時間は？」「時間を教えて」など色々な入力パターンが考えられるので可能な限り登録しておかないと、適切な回答を返すことができません。

そのため、ユーザーが入力しそうなパターンを可能な限り登録しておく必要があります。
手間はかかりますが、考えられる限りのパターンを登録することで使い勝手の良いトピックにすることができます。

###・会話フローをシンプルにする###
トピック内の会話フローは処理の中で条件分岐させることが可能です。
しかし、運用開始後のメンテナンスを考えた時、処理を複雑にするとメンテナンス範囲が大きくなり修正作業も複雑になりミスが発生する可能性が増えます。

１つのトピックにおいて、例えば「経費申請」とするよりも「交通費申請」とするなど、専門性を上げるなどしてシンプルにすると管理側にも優しいトピックにすることができます。


#・関連記事#
PowerVirtualAgent ではじめてボットを作成する手順について記事にしました。
こちらもぜひご覧ください。
[【PowerVirtualAgents】Teams でボットを作ってみよう。-- はじめてのボット 編 --](https://qiita.com/kura_yu/items/4caaae80139a06d60057)