Copilot Studio 変数の「型」と「種類(スコープ)」について調査|トピックの引数と戻り値の設定も

Copilot Studioにおける変数を詳しく調べてみた。

スポンサーリンク

変数の型

Copilot Studioで用意されている変数の型はPower Apps(Power Fx)とほぼ同じで、以下の通り。

  • String:テキスト
  • Bool:true or false
  • Number:数字
  • Table:テーブル(配列とかも含む)
  • Record:レコード(オブジェクト)
  • DateTime:日時、日付
  • Choice:選択肢
  • Blank:空白(Power Appsの空白と一緒)
この中でPower Appsと異なるのは「選択肢」かなと。
Power Appsではテーブル型の値をコンボボックスとかで選択肢として使っていたけど、Copilot Studioでは「選択肢」は一つの型として扱う。
それとエンティティ自体は「型」ではなく、エンティティにもそれぞれ型が定義されていて、

  • 「年齢」「通貨」「回数」など:数字型
  • 「郵便番号」「国」「都市」など:テキスト型
  • 「ユーザー定義エンティティ」「複数選択オプション」など:選択肢型

となっている。

変数の種類

続いて変数の種類。Copilot Studioにおける変数には以下の4種類がある。

  • トピック変数:トピック内で使用できる変数(最小スコープ)
  • グローバル変数:全てのトピック内で利用が可能
  • システム変数:Copilot Studio側で管理してくれる変数、全てのトピックで利用可能
  • 環境変数:Power Platformの環境単位で設定できる変数。Power Appsとかと一緒

これらの詳細や動作の違いを見ていく。

変数のスコープ:トピック変数とグローバル変数

トピック変数とグローバル変数の違いを見るために、「呼ぶ側のトピック」と「呼ばれる側のトピック」を用意。
呼ぶ側のトピックでトピック変数と、
グローバル変数を定義して、
「呼ばれる側のトピック」で変数を確認すると、グローバル変数のみ参照できる。
※厳密には「呼ばれる側」である必要はなく、エージェント内のすべてのトピックからグローバル変数を参照可能。
試しに動かしてみると、「呼ぶ側」で定義したグローバル変数を「呼ばれる側」から参照してメッセージを出すことができる。

グローバル変数のライフサイクル

公式によるとグローバル変数は以下いずれかでリセットされる。

  • セッションの終了
  • 「変数値をクリアする」ノードの使用
「変数値をクリアする」ノードはシステムトピック「会話をリセットする」から使用するか、トピック内で直接使用することが可能。
※「セッション」についてはまた別の機会に。

トピック間の値の受け渡し

グローバル変数を多用すると変数の管理が煩雑になり、バグが発生する可能性が高くなるので、トピック間の値の受け渡しには引数と戻り値を利用するのがおすすめ。

引数の追加:他のトピックから値を受け取る

他のトピックから値を受け取るには、トピックの[詳細]の[入力]から[新しい変数を作成する]で引数を作成する。
すると「呼ぶ側のトピック」の[入力を追加する]で、先ほど作成した引数を選べるようになって、
値(今回はトピック変数)を渡すことができる。
動かすとこんな感じ。

戻り値の追加:他のトピックに値を返す

値を返す場合は、トピックの[詳細]の[出力]から新しい変数を作成し、
トピック内で[変数を設定する]ノードで戻り値に値を設定する。
すると「呼ぶ側」のリダイレクトノードに「出力」が追加され、戻り値を参照できるようになる。

以上がグローバル変数とトピック変数について。

システム変数

システム変数は量が多すぎるので省略。主に使うのはこの辺りかと。

  • Activity.Text:現在のアクティビティでユーザーが最後に送ったメッセージ
  • LastMessage.Text:ユーザーが前に送信したメッセージ
  • User.Email:ユーザーのメールアドレス
  • User.PrincipalName:UPN
※Activity.TextとLastMessage.Textの違いはこちら
Consumer Privacy Act (CCPA) Opt-Out Icon

環境変数

環境変数はPower AppsとかPower Automateの環境変数と一緒で、環境間で異なる値を定義することができる。

ソリューションから環境変数を定義すると、
トピックの中で使用することができるので、開発環境と本番環境とで参照するSPOのURLを変える、みたいなことが可能。
※エージェントに環境変数を追加すると、ソリューションでのデプロイ時の必須オブジェクトになるので、エクスポートする際はソリューションに追加すること。

以上、Copilot Studioで使える4種類の変数について。

関連記事

タイトルとURLをコピーしました