使用變數
重要
在對生成式 AI 進行大量投資並增強 Microsoft Copilot 的整合後,Power Virtual Agents 的功能和特性現已成為 Microsoft Copilot Studio 的一部分。
當我們更新文件和培訓內容時,某些文章和螢幕擷取畫面可能會參考 Power Virtual Agents。
您可以使用變數來儲存客戶的回覆,並在稍後的交談中重複使用其內容。
您也可以使用變數來建立邏輯運算式,將客戶動態傳遞至不同的交談路徑。 例如,將客戶的姓名儲存在名為 UserName
的變數中,副手可以在交談繼續時依姓名稱呼客戶。
變數也可以傳遞至其他主題和 Power Automate 流程,或從中傳回。
變數可存在於三個層級或範圍:
- 主題:變數只能用於其建立所在的主題中。 此範圍是您所建立變數的預設範圍。
- 全域變數在所有主題中都可以使用。 您可以變更任何主題變數的範圍,使之成為全域變數。
- 系統變數是與您的副手一起自動建立的。 這些變數提供更多關於交談或使用者的關聯式資訊。 在所有主題中都能使用。
變數類型
變數與基底類型相關聯。 類型決定變數可以包含哪些值,以及將其用於建構邏輯運算式時所能使用的運算子。
類型 | 描述 |
---|---|
字串 | 用於表示文字的字元序列 |
布林值 | 只能是 true 或 false 的邏輯值 |
數字 | 任何實數 |
資料表 | 值的清單,但是所有的值都必須是相同的類型 |
錄製 | 名稱/值組的集合,其中值可以是任何類型 |
日期時間 | 相對於某個時間點的日期、時間、星期幾或月份 |
選擇 | 具有關聯同義字的字串值清單 |
Blank | 「無值」或「未知值」的預留位置;如需詳細資訊,請參閱 Power Fx 中的空白 |
變數的類型是在第一次為其指派值時所設定。 在那之後,該變數的類型便已固定,無法為其指派任何其他類型的值。 例如,如果指定的起始值為 1
變數,則指派類型數字。 嘗試將其指派給 "apples"
的字串值會造成錯誤。
當您測試副手時,變數可能會暫時顯示為未知類型。 尚未指派值的未知變數。
變數順序是由製作畫布由上至下的位置所決定。 也就是,將位於製作畫布頂端的節點視為在位於底端的節點之前。 使用條件節點建立分支時,分支是從左至右排序。 也就是,將最左側分支的節點視為在最右側分支的節點之前。
實體
Copilot Studio 會使用實體,從使用者的回覆中找出特定類型的資訊。 找出的資訊會儲存在類型適合該資訊的變數中。 下表列出與預建實體相關聯的變數基底類型。
Entity | 變數基底類型 |
---|---|
多選選項 | 選擇 |
使用者的整個回覆 | 字串 |
年齡 | 數字 |
布林值 | 布林值 |
縣/市 | 字串 |
色彩 | 字串 |
洲別 | 字串 |
國家或地區 | 字串 |
日期和時間 | 日期時間 |
字串 | |
事件 | 字串 |
Integer | Integer |
語言 | 字串 |
Money | 數字 |
數字 | 數字 |
序數 | 數字 |
組織 | 字串 |
百分比 | 數字 |
人員姓名 | 字串 |
電話號碼 | 字串 |
景點 | 字串 |
速度 | 數值 |
州/省 | 字串 |
街道地址 | 字串 |
溫度 | 數字 |
URL | 字串 |
粗細 | 數字 |
郵遞區號 | 字串 |
自訂實體 | 選擇 |
建立變數
任何提示您選取變數做為輸出的節點 (例如問題節點) 會自動建立屬於適當類型的輸出變數。
挑選要使用的實體
預設會建立有多重選擇選項的問題節點。 若要使用其他預先建立實體或自訂實體,請選取識別方塊,然後選擇副手應偵聽的資訊類型。
重新命名變數
建立變數時,系統會自動指派其名稱。 最佳做法是為您的變數提供有意義的名稱,以便讓必須維護副手的其他人清楚地了解其用途。
在變數屬性窗格中選取變數以打開它。
在變數名稱下方,輸入變數的新名稱。
設定變數
您通常會使用問題節點,將使用者輸入儲存至變數。 不過,在某些情況下,您可能會想要自己來設定此值。 在這些情況下,請使用設定變數值節點。
選擇新增節點 (+) 以新增節點,然後選擇變數管理>設定變數值。
選取設定變數底下的方塊,然後選取建立新變數。
新變數已建立。 在您將值指派給此變數之前,其類型為未知。
如果是到值,請使用以下選項之一指派值:
- 輸入常值。
- 選取類型相同的現有變數。 此動作會將您的變數設定為與您所選變數相同的值。
- 使用 Power Fx 公式。 Power Fx 公式對於無法使用常值的較複雜類型 (例如資料表和記錄類型) 很有用。
使用常值
您可以在任何變數中輸入常值,而不是選取變數值。
節點嘗試將常值解釋為字串、數字或布林值。 例如,123
會解譯為數字。 如果您要改以字串值來解譯,則可將值括在雙引號中,像這樣:"123"
。
在某些案例中,或使用更複雜的類型時,請使用 Power Fx 公式來設定特定類型。
[變數] 窗格
變數窗格可用來檢視主題中可用的所有變數,無論這些變數是在哪些節點中定義或使用。 對於每個變數,您都可以選擇讓變數從其他主題接收其值、將其值傳回給其他主題,還是兩者兼而有之。 您也可以選取變數以在變數屬性窗格中編輯其屬性。
若要開啟變數窗格,請選取主題的功能表列中的變數。
變數屬性窗格
在變數屬性窗格中,您可以重新命名變數、查看其使用所在位置,或將其轉換為全域變數。 不過,無法將其從全域變數轉換回主題變數。 您也可以選擇讓變數可以從其他主題接收值,還是將值傳遞給其他主題。
若要打開變數屬性窗格,請在變數窗格中選取一個變數。 您也可以選取任何節點中的變數來開啟變數屬性窗格。
系統變數
每個副手都帶有內建的系統變數,可提供有關交談的其他資訊。
並非所有系統變數都會顯示在清單中。 您必須使用 Power Fx 公式來存取這些隱藏的系統變數。
若要在 Power Fx 公式中使用系統變數,您必須在變數名稱前加上 System.
。 例如,要在公式中包含系統變數 User.DisplayName
,您必須將其指稱為 System.User.DisplayName
。
姓名 | 類型 | 已隱藏 | 定義 |
---|---|---|---|
活動管道 | 選擇 | 可見 | 目前交談的管道識別碼 |
Activity.ChannelData | 任何 | 隱藏 | 包含特定管道內容的物件 |
Activity.ChannelId | string | 隱藏 | 目前交談的管道識別碼,其類型為字串 |
Activity.From.Id | string | 隱藏 | 傳送者的管道特定唯一識別碼 |
Activity.From.Name | string | 隱藏 | 傳送者的管道特定使用者易記名稱 |
Activity.Name | string | 可見 | 事件的名稱 |
Activity.Text | string | 可見 | 使用者傳送的最新訊息 |
Activity.Type | 選擇 | 可見 | 活動的類型 |
活動 TypeId | string | 隱藏 | 活動的類型,做為字串 |
Activity.Value | 任何 | 隱藏 | 開放端點值 |
Bot.Name | string | 可見 | 您副手的名稱 |
Channel.DisplayName | string | 隱藏 | 管道的顯示名稱 |
Conversation.Id | string | 可見 | 目前交談的唯一識別碼 |
LastActivity.Id | string | 可見 | 先前所傳送活動的識別碼 |
LastMessage.Id | string | 可見 | 使用者所傳送上一則訊息的識別碼 |
LastMessage.Text | string | 可見 | 使用者傳送的上一則訊息 |
Recognizer.TriggerMessage.Id | string | 可見 | 觸發目前主題之使用者訊息的識別碼 |
Recognizer.TriggerMessage.Text | string | 可見 | 觸發目前主題的使用者訊息 |
User.DisplayName | string | 可見 | 已登入使用者的顯示名稱 |
在主題之間傳遞變數
將主題重新導向至其他主題時,您可以在原始主題與目標主題之間傳遞變數的值。 當先前主題已收集到後來主題所需的資訊時,在主題之間傳遞變數特別有用。 使用者會很高興不必再次回答相同的問題。
接收來自其他主題的值
當主題定義變數 (例如,在問題節點) 時,副手會詢問使用者問題以填寫變數值。 如果副手已在先前的主題中取得該值,則無需再次提問。 在這些情況下,可以將此變數設定為接收其他主題的值。 將其他主題重新導向至此主題時,可以將變數的值 (或常值) 傳遞至此變數,並略過該問題。 使用者與副手交談時帶來完美的體驗。
在此範例中,我們使用兩個主題「問候」和「跟客戶談話」。 這兩個主題都要求提供客戶的姓名。 不過,如果「問候」主題先執行,則「跟客戶談話」主題會略過其問題。 反而改用從「問候」主題傳來的變數值。
以下是「跟客戶談話」主題的流程:
如「測試副手」窗格中所示,如果先觸發此主題,它會詢問使用者:「我應該怎麼稱呼您?」,然後將值儲存在名為 userName
的字串變數中。 userName
變數也會設定成從其他主題取得值。 此主題以訊息「希望您度過美好的一天,{userName}!」做為結尾
以下是「問候」主題的流程:
如「測試副手」窗格中所示,如果先觸發此主題,它會詢問使用者:「您叫什麼名字?」,然後將值儲存在名為 UserName
的字串變數中。 主題會傳送訊息「很高興見到您,{UserName}!」,重新導向至「跟客戶談話」主題,這會傳送訊息「希望您度過美好的一天,{userName}!」請注意,「跟客戶談話」主題已略過再次詢問使用者姓名的步驟。 反而改用從「問候」主題傳來的 UserName
變數值。
最後,這裡又是那第二次交談,這次是從「跟客戶談話」主題的角度來看:
讓我們逐步解說設定要讓主題從其他主題接收值的步驟。 我們會使用目前的範例,只要主題需要取得先前主題中的值,同樣的步驟就會奏效。
設定目的地主題
目的地主題是要重新導向到的主題,此主題會接收來自其他主題的值。 在本範例中,這是「跟客戶談話」。
建立或移至目的地主題。
新增問題節點並輸入
What should I call you?
做為訊息。在識別下方,選取預建實體人員名稱。
選取變數以開啟變數屬性窗格。 將其命名為
userName
,然後選取從其他主題接收值。在訊息方塊中,輸入
I hope you're having a wonderful day,
。選取插入變數圖示 ({x}),然後選取 userName。
選取變數後面的空白處,並鍵入
!
。儲存主題。
設定來源主題
來源主題是執行重新導向的主題,此主題提供要傳遞給目的地主題的值。 在本範例中,這是「問候」。
移至來源主題。
新增重新導向節點,並選取目的地主題。
選取 + 新增輸入,然後從要將值傳遞至的目的地主題中選取變數。
選取 > 圖示,然後選取要傳遞其值的變數。
重新導向節點應該看起來像這樣:
儲存主題。
將值傳回原始主題
重新導向至某個主題,而此主題透過提出問題或其他方式取得變數時,可將此變數傳回至原始主題。 此變數會變成原始主題的一部分,並且可以像任何其他變數一樣使用。 因此,副手獲得的資訊可以跨主題使用,從而減少對全域變數的需求。
讓我們繼續上一節中的範例。 我們會在「跟客戶談話」主題中提出新問題,然後將解答傳回給「問候」主題。
設定傳回變數的來源主題
將變數傳回至主題時,來源主題是要重新導向到的主題,也就是提供傳遞回原始主題之值的主題。 在本範例中,這是「跟客戶談話」。
移至來源主題。
新增問題節點並輸入
What city do you live in?
做為訊息。在識別下方,選取預建實體城市。
選取變數以開啟變數屬性窗格。 將其命名為
userCity
,然後選取將值傳回原始主題。儲存主題。
設定傳回變數的目的地主題
將變數傳回至主題時,目的地主題是進行重新導向的主題,也就是從其他主題接收值的主題。 在本範例中,這是「問候」。
移至目的地主題。
在來源主題中選取的變數會在重新導向節點中顯示為輸出變數。
儲存主題。
相關內容
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應