[鳳凰院凶真チャットボット]Power Virtual Agents→Power Automate編

前回に続き、Power Virtual Agentsの設定を解説したいと思います。
まずは、前回の動画を見ていただいて、動作の確認です。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">チャットボットを活用してシュタインズゲートの鳳凰院凶真を降臨させてみました！<br><br>友人に薦められてドハマりしたので、Teams→Power Virtual Agents→Power Automate Desktop→Active Dirctoryユーザー追加が出来る近未来ガジェットを作成しました。<a href="https://twitter.com/hashtag/%E3%82%B7%E3%83%A5%E3%82%BF%E3%82%A4%E3%83%B3%E3%82%BA%E3%83%BB%E3%82%B2%E3%83%BC%E3%83%88?src=hash&amp;ref_src=twsrc%5Etfw">#シュタインズ・ゲート</a><a href="https://twitter.com/hashtag/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88?src=hash&amp;ref_src=twsrc%5Etfw">#ガジェット</a><a href="https://twitter.com/hashtag/teams?src=hash&amp;ref_src=twsrc%5Etfw">#teams</a> <a href="https://t.co/sAWdStdTBB">pic.twitter.com/sAWdStdTBB</a></p>&mdash; koby@フロッグポッドエンジニア募集中 (@rockfun) <a href="https://twitter.com/rockfun/status/1320485208802603014?ref_src=twsrc%5Etfw">October 25, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

##ユーザートピックを追加する
前回は、既存のシステムトピックの「挨拶」を変更してみましたが、今回はオリジナルのユーザートピックを追加します。
写真の「新しいトピック」を選択して、まずはトリガーフレーズ（問いかけられたら反応する言葉）を登録します。
![ユーザートピック.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/7a7c9b26-dfb7-2af2-a222-2446f0d8db53.png)

##1.トリガーフレーズを登録する
名前にはこの一連の解答に関する**「名前」**を決めます
今回は、チャットボットの解答によりActiveDirectoryへユーザー登録をおこないますので、「ADへユーザー追加」としています。
**「トリガーフレーズ」**には
+ ユーザー登録がしたい
+ 社員を登録したい
+ 新入社員を登録
+ ADへユーザー追加
+ 社員を追加
+ 新しい社員を登録
この様に登録したら、**「トピックの保存」**を押して保存をしたら**「キャンバスの作成に移動」**を押して、具体的に回答する内容を作っていきます。
![ユーザートピック2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/04594c0b-5d82-4053-4d64-89d0f24fcdac.png)

##2.キャンバスの作成
###2-1.メッセージを表示する
キャンバスには、トリガーフレーズに反応した後に、どのような回答をするかを作っていきます。
赤丸部分にマウスを当てると**「＋」**が出てきて、動作を追加できますので、ここではトリガーのキーワードに反応した後に、ボット側から回答をしたいので**「メッセージを表示する」**を選びます。
![トピック作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/359d5dae-a190-5227-5888-f2dec88a854e.png)
ここに鳳凰院凶真らしい解答を入力しますｗ
![トピック作成2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/547abbf0-5403-467a-4a53-d972b8cbb12c.png)

###2-2.質問の作成
続いて、具体的に質問をしてPower Automate Desktopを使ってActiveDirectoryへユーザー追加するのに必要な回答を聞きます。

####[ADへユーザー追加するのに必要な情報とは]
次回以降に解説しますが、Power Automate DesktopでActive Diriectoryへユーザー追加を行う動作に必要な情報は写真のようになっています。
必要なのは**「名」**、**「姓」**、**「ユーザー名」**です。
※**「場所」**については、管理の都合上、知らない場所にユーザーを作られても困りますので、固定値にしています。
![PAD設定項目.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/1c11f9c4-0514-81f7-e759-0b8b7b455843.png)

話をPower Virtual Agentsに戻しますが、先ほどと同様に、**「メッセージ」**の下に、今度は**「質問する」**を作成します。
Active Directoryへ追加する情報を質問しますので、
**質問する言葉**：ラボメンの苗字を教えて欲しい
**特定**：ユーザーの応答全体（回答を保存する時に使います）
**応答を名前を付けて保存**：UserName_Myouji（後で回答内容をPower Automate Desktopに渡せるように、保存する場所の名前です（変数））
![トピック作成質問.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/2d69fab6-17b5-1ced-80a6-7c292dce3763.png)

同様に「名前（名）」と「アカウント名（ログインネーム）」の質問を作成します。
![トピック作成質問2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/4dbaf00c-f450-4fd6-9d72-7a841bffcd85.png)


###2-3.確認画面
これで必要な情報が揃いましたが、間違えて入力していた場合のシチュエーションを想定して、確認画面を作ります。ここでは入力された内容を表示して、良ければ承認を送信して、間違いがあれば送信せず会話を元に戻します。

**アカウント名**の下に**「質問する」**を追加します。
**質問文**：
入力を確認した。
{X}UserName_Myoji←入力した姓に置き換えられます。
{X}UserName_Namae←入力した名に置き換えられます。
{X}AcountName←入力したログインネームに置き換えられます。
この内容で電話レンジ（仮）をセットするが良いか？
**特定**：複数選択式オプション
**ユーザーのオプション**:
・はい
・いいえ
※ここで一度**「保存」**しましょう。以降の画面で別のウィドウを開きますので、保存しておかないと消えることがあります。
![トピック作成質問複数選択式オプション.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/e354989a-3be3-28c9-ba38-ecbfba65adcd.png)

####2-3-1.「はい」の場合
「はい」を選んだ場合には、Power Automateを使って「承認」を使い担当者へ許可を取り、その後、別環境にあるPower Automateへデータを渡します。
![環境図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/8c2f0c08-bf75-35c9-f90f-4d9d2c8e292c.png)
**「アクションを呼び出す」**から**「フローの作成」**を選択して、Power Automateの作成画面を呼び出します。
※ここで作成するフローは、Power Virtual Agents専用です。他の環境からの使用や変更は出来ませんので注意してください。
![トピック作成アクション作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/0b15aaa4-a491-4c89-9420-7e815bc706ff.png)
画面左の「Power Virtual Agents Flow Template」を選択してください。
![Power-Virtual-Agents-Microsoft-TeamsPA.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/0b8a1bb7-15fb-f9aa-63ad-858c1087732c.png)

#####値の設定
Power Automateの画面には、Power Virtual Agentsから受け取る値を「＋入力の追加」から追加します。左側がPower Automateで利用する値で。右側が説明文章です。

**種類**：テキスト
**変数名**：UserName_Myoji
**説明**：苗字

**種類**：テキスト
**変数名**：UserName_Namae
**説明**：名前

**種類**：テキスト
**変数名**：AcountName
**説明**：ログインネーム

![PA変数.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/08c692b4-1efb-2f46-6538-f1ed72b6a622.png)

画面下の「Return Valus(s) to Power Virtual Agents」は、Power Automateの内の値を戻すときに使いますが、今回は使用しませんので削除します。
![Power-Virtual-Agents-Microsoft-TeamsPA2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/b73c2e6e-de14-16ea-2456-32aca061dda7.png)

####アクション「マイプロフィール」の追加
Power Virtual Agentsから受け取る値を設定したら、下に**「アクションの追加」**から、承認を送信するために、Office365ユーザーコネクタから**「マイプロフィールの取得(V2)」**を選んで追加します。
![PAマイプロフィール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/41944a11-e17c-0d0d-47f9-2040031bdb65.png)

####アクション「承認」の追加
承認コネクタから「開始して承認を待機」を選択して追加後に、

**承認の種類**：カスタム応答-１つの応答を待機
**応答オプション項目**：承認
**応答オプション項目**：却下
**タイトル**：「マイプロフィールの取得(V2)」から取得した「表示名」
**担当者**：色々工夫するところですが、今回は私が管理者なので私のメールアドレス。
**詳細**：「表示名」さんからの依頼です。
社内ADへ下記ユーザー登録の依頼がありました。
ーーーーーーーーーーーーーーーーーーーーーーーー
苗字：「UserName_Myoji」（←初めに設定したPower Virtual Agentsから受け取った変数です。）
名前：「UserName_Namae」（←初めに設定したPower Virtual Agentsから受け取った変数です。）
アカウント名：「AcountName」（←初めに設定したPower Virtual Agentsから受け取った変数です。）
ーーーーーーーーーーーーーーーーーーーーーーーー
承認するか判断をお願い致します。

ここまでが承認設定となります。
![PA承認.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/2f14c2c1-899f-f5e1-fc1e-ba2a535b341e.png)

ここで使用する変数などは、各フィールドを選択すると表示される「動的なコンテンツ」から選択しています。※表示画面が小さいと、このウィンドウが画面外に表示されて選べないという方が結構いますので、画面の縮尺に注意です。
![PA承認2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/83925551-71ab-0dcd-7aa6-a0cbc220be64.png)

####条件分岐の追加
承認の結果を受けて条件分岐します。
![PAhttp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/760f4361-a589-5c65-4dbf-42a4e3025a73.png)

#####Apply to eachの追加
「開始して承認を待機」の下で「アクションの追加」を選び、「コントロール」を選択、**「Apply to each」**を作成してください。
**以前の手順から出力を選択**：応答（「動的なコンテンツ」→「開始して承認を待機」の中から選びます）

#####条件の追加
更に「Apply to each」の中に「アクションの追加」から、「条件」を作成して、
**値の選択**：結果（「動的なコンテンツ」→「開始して承認を待機」の中から選びます）
**次の値に等しい**：承認

#####2-3-1-1.はいの場合
プレミアムコネクタになりますが、「組み込み」タブから「HTTP」を選びます。

**方法**：POST
**URI**：ここは別環境のデータ送信先を指定しますが、次回設定しますので、https://hoo.comとかにして暫定のURIを入力して保存して下さい。
**ヘッダー**：
Enterキー：Content-Type
値の入力：application/json
**本文**：
{
  "UserName_Myoji": "UserName_Myoji（「動的なコンテンツ」→「Power Virtual Agents」から選択）",
  "UserName_Namae": "UserName_Myoji（「動的なコンテンツ」→「Power Virtual Agents」から選択）",
  "AcountName": "UserName_Myoji（「動的なコンテンツ」→「Power Virtual Agents」から選択）"
}

#####2-3-1-2.いいえの場合
teamsで特定のお知らせチャンネルに、申請者へメンションを付けて、却下された事をお知らせします。

#####ユーザーの＠メンショントークンを取得するの追加
まず、メンション相手を取得するのに、「アクションの追加」から「Microsoft Teams」を選択し、「ユーザーの＠メンショントークンを取得する」を作成します。

**ユーザー**：ユーザープリンシパル名（「動的なコンテンツ」から「マイ プロフィールの取得 (V2)」から選択）

#####メッセージを投稿する（V3）
「アクションの追加」から「Microsoft Teams」を選択し、**「メッセージを投稿する（V3）」**を選択します。

**チーム**：お知らせしたいチームを自由に選んでください。
**チャネル：チャンネルも自由に選んでください。
メッセージ：**
「メンション」（「動的なコンテンツ」→「ユーザーの @メンション トークンを取得する」から選択）さん
残念ながら、申請していただきましたADへのユーザー登録は却下されました。
**理由**：
「応答コメント」（「動的なコンテンツ」→「開始して承認を待機」から選択）

※今回は説明が多く長文になっていますが、ここまでがPower Automateの設定となります。
**「保存」**を押して、Power Virtual Agentsに戻ります。

####2-3-2.「やりなおす」の場合（Power Virtual Agentsの内容確認の分岐まで戻ります）
「条件」の「やりなおす」の下に「別のトピックに移動する」から「やり直す」を作成して、入力を間違えた場合に、戻れるようにします。
※会話の初めに戻ってしまうので、どなたか具体的な会話の場所に戻れる方法をご存じでしたら教えてください。
![いいえの戻る.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140547/fcee0162-da1d-a2c5-6078-9e02550841c2.png)

以上が、TeamsのOakdale環境側での設定となります。
長かった、、、、
次回は、別環境でデータを受信する設定と、Power Automate Desktopまでの設定を書きます。

ご精読ありがとうございました。