使用變數在各主題間攜帶內容
變數存儲您的客戶對專員中問題的回答 。 例如,您可以在名為 UserName
的變數中儲存客戶名稱。 然後,隨著對話的繼續,專員可以稱呼客戶的名字。
變數的值預設只能用於建立變數所在的主題中。 不過,可以在不同的主題中重複使用這同一個值。 例如,歡迎主題會詢問客戶的名稱和電子郵件地址。 在 Appointment Booking (預約) 主題中,您希望專員記住客戶輸入的內容,並且不會再次詢問。
其中一個重複使用變數的方法是,在主題之間傳遞變數。 另一個方式是將變數設為範圍中的全域變數,這也正是本文所涵蓋的內容。 全域變數之所以被稱為全域變數 ,是因為它們在整個專員的所有主題中都可用。
專員變數在單個用戶會話期間應用。 您可以指定哪些變數應被視為專員變數,以將它們與主題級變數區分開來。
建立全域變數
您可以變更主題變數的範圍來建立全域變數。
創建變數 或使用 Variables (變數) 窗格 打開現有變數。
在變數屬性窗格底下,選取全域 (任何主題都可以存取)。
變數名稱會有首碼
Global.
,使其與主題層級變數有所區別。 例如,UserName
變數現在會顯示為Global.UserName
。儲存主題。
全域變數的名稱在所有主題中都必須是唯一的。 如果有衝突,則必須在儲存主題之前重新命名變數。
使用全域變數
當您在 Message (消息) 節點或 Question (問題) 節點中撰寫專員消息時,選擇該 {x} 圖示可查看主題可用的變數。 全域變數會與任何主題變數一起出現在自訂索引標籤中。 變數會依字母順序列出。
尋找所有使用全域變數的主題
您可以尋找定義全域變數的位置以及哪些主題正在使用此變數。 如果您正在處理新的專員,或者如果您有多個變數和 複雜的主題分支,這可能很有用。
選取製作畫布中的全域變數,或開啟變數窗格並選取全域變數。
在變數屬性窗格的參考區段中,選取任何使用此變數直接移至該主題和節點的主題。
全域變數的生命週期
全域變數的值預設會持續存在,直到工作階段結束為止。 清除變數值節點會重設全域變數的值,並用於重設交談系統主題。 該主題可透過重新導向觸發,也可以在使用者鍵入觸發字詞 (例如「重新開始」) 時觸發。在這種情況下,所有的全域變數都會重設。
從外部來源設定全域變數的值
如果要確保專員啟動具有某些上下文的對話,則可以使用外部源初始化全域變數。 假設您的網站要求使用者必須登入。 由於您的專員已經知道使用者的姓名,因此它可以在客戶開始輸入第一個問題之前按姓名問候客戶。
選取全域變數。
在變數屬性窗格中,選取外部來源可以設定值。
在嵌入式 #中設置全域變數專員
如果要 將專員嵌入到簡單的網頁中,則可以將變數及其定義附加到專員的 URL。 或者,如果您想稍微加強控制,可以使用 <script>
程式碼區塊,以程式設計方式呼叫和使用變數。
URL 查詢字串中的變數名稱必須與全域變數不含 Global.
首碼的名稱相符。 例如,全域變數 Global.UserName
在查詢中稱為 UserName
。
下面的範例提供變數的簡單宣告。 在實際執行案例中,您可能會傳遞另一個已經儲存了使用者名稱的變數作為查詢參數或變數定義 (例如,如果您從登入指令碼取得使用者名稱)。
將變數及其定義作為查詢字串參數 附加到專員的 URL botURL?variableName1=variableDefinition1&variableName2=variableDefinition2
格式。
例如:
- 您有一個名為
Global.UserName
的全域變數。 - 您的專員的 URL 是 https://web.powerva.microsoft.com/webchat/bots/12345。
- 要在網站上開始專員對話時傳入使用者名,請將查詢字元串附加
UserName=
為: https://web.powerva.microsoft.com/webchat/bots/12345?UserName=Renata。
參數名稱不區分大小寫。 username=Renata
也適用於此範例。
將全域變數新增至自訂畫布
您也可以將變數新增至自訂畫布。
<script>
在頁面上您有專員的部分,按如下方式定義變數,替換variableName1
不帶Global.
前綴variableDefinition1
的變數名稱和定義。 以逗號分隔多個變數 (,
)。const store = WebChat.createStore({}, ({ dispatch }) => next => action => { if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') { dispatch({ type: "WEB_CHAT/SEND_EVENT", payload: { name: "pvaSetContext", value: { "variableName1": "variableDefinition1", "variableName2": "variableDefinition2" } }, }); } return next(action); });
在您的
<script>
部分中,調用store
when you embed your 專員,如以下示例所示,wherestore
is called 就在 wherestyleOptions
is called 上方 (您需要將 theBOT_ID
替換為專員的 ID):const BOT_ID = "12345-5678"; const theURL = "https://powerva.microsoft.com/api/botmanagement/v1/directline/directlinetoken?botId=" + BOT_ID; fetch(theURL) .then(response => response.json()) .then(conversationInfo => { window.WebChat.renderWebChat( { directLine: window.WebChat.createDirectLine({ token: conversationInfo.token, }), store, styleOptions }, document.getElementById('webchat') ); }) .catch(err => console.error("An error occurred: " + err));