Copilot Studioにおけるループについて調べていたらおもしろい記事を見つけたので紹介。
会話の中でループを作る方法
Copilot Studioにおいて、会話内のループを構築する場合は「手順に移動」ノードを使用していた。
これはCとかのgoto文と同じ機能で、この「手順に移動」を使用して、前のステップに戻ることでループをつくっていた。
ただ、今回見つけたこちらの記事にトピック内でForeachループを使うことができる、と書いてあったので試してみた。
Discover thousands of collaborative articles on 2500+ skills
Discover 100 collaborative articles on domains such as Marketing, Public Administration, and Healthcare. Our expertly cu...
構築
今回はサンプルとして指定した数のループを実行するトピックを構築。
まずは適当なトリガーを用意して、ループする回数をスロット充填で取得する。
そしたらForeachを追加するためコードエディタを開いて、
actionsの中にkindとしてForeachを追加する。(YAML記法っぽい)
idは適当でよいみたいなので、適当なIDを採番してコードエディタを閉じる。
するとフローにForeachループが追加される。
指定した数のループを実行するため、[ループする項目]にはSequence関数を追加して、
ループの各項目が入る[ループ値の変数]には新しい変数を追加。
※プロパティからループのインデックスも取得可能。
最後に現在の数字をメッセージで送信するノードを追加したいんだけど、[変数の選択]からは変数iにアクセスできないよう。
そこで再度コードエディタを開いて、関数と変数を直接入力する。
フローに戻って関数が入力されていれば完成。
動作確認
こんな感じで回数を指定すると、トピック内でループが実行される。
Power Virtual Agent時代の名残なのか、またはCopilot Studioにおいて今後追加する機能なのかはわからないけど、コードエディタからであればForeachを使うことができる。