共用方式為


使用變數在各主題間攜帶內容

變數存儲您的客戶對專員中問題的回答 。 例如,您可以在名為 UserName 的變數中儲存客戶名稱。 然後,隨著對話的繼續,專員可以稱呼客戶的名字。

變數的值預設只能用於建立變數所在的主題中。 不過,可以在不同的主題中重複使用這同一個值。 例如,歡迎主題會詢問客戶的名稱和電子郵件地址。 在 Appointment Booking (預約) 主題中,您希望專員記住客戶輸入的內容,並且不會再次詢問。

其中一個重複使用變數的方法是,在主題之間傳遞變數。 另一個方式是將變數設為範圍中的全域變數,這也正是本文所涵蓋的內容。 全域變數之所以被稱為全域變數 ,是因為它們在整個專員的所有主題中都可用。

專員變數在單個用戶會話期間應用。 您可以指定哪些變數應被視為專員變數,以將它們與主題級變數區分開來。

建立全域變數

您可以變更主題變數的範圍來建立全域變數。

  1. 創建變數 或使用 Variables (變數) 窗格 打開現有變數。

  2. 變數屬性窗格底下,選取全域 (任何主題都可以存取)

    變數名稱會有首碼 Global.,使其與主題層級變數有所區別。 例如,UserName 變數現在會顯示為 Global.UserName

    螢幕擷取畫面顯示 [變數屬性] 窗格,並反白顯示 [全域設定]。

  3. 儲存主題。

    全域變數的名稱在所有主題中都必須是唯一的。 如果有衝突,則必須在儲存主題之前重新命名變數。

使用全域變數

當您在 Message (消息) 節點或 Question (問題) 節點中撰寫專員消息時,選擇該 {x} 圖示可查看主題可用的變數。 全域變數會與任何主題變數一起出現在自訂索引標籤中。 變數會依字母順序列出。

螢幕擷取畫面顯示選取全域變數。

尋找所有使用全域變數的主題

您可以尋找定義全域變數的位置以及哪些主題正在使用此變數。 如果您正在處理新的專員,或者如果您有多個變數和 複雜的主題分支,這可能很有用。

  1. 選取製作畫布中的全域變數,或開啟變數窗格並選取全域變數。

  2. 變數屬性窗格的參考區段中,選取任何使用此變數直接移至該主題和節點的主題。

    螢幕擷取畫面顯示 [變數屬性] 窗格中變數所用主題的清單。

全域變數的生命週期

全域變數的值預設會持續存在,直到工作階段結束為止。 清除變數值節點會重設全域變數的值,並用於重設交談系統主題。 該主題可透過重新導向觸發,也可以在使用者鍵入觸發字詞 (例如「重新開始」) 時觸發。在這種情況下,所有的全域變數都會重設。

從外部來源設定全域變數的值

如果要確保專員啟動具有某些上下文的對話,則可以使用外部源初始化全域變數。 假設您的網站要求使用者必須登入。 由於您的專員已經知道使用者的姓名,因此它可以在客戶開始輸入第一個問題之前按姓名問候客戶。

  1. 選取全域變數。

  2. 變數屬性窗格中,選取外部來源可以設定值

在嵌入式 #中設置全域變數專員

如果要 將專員嵌入到簡單的網頁中,則可以將變數及其定義附加到專員的 URL。 或者,如果您想稍微加強控制,可以使用 <script> 程式碼區塊,以程式設計方式呼叫和使用變數。

URL 查詢字串中的變數名稱必須與全域變數不含 Global. 首碼的名稱相符。 例如,全域變數 Global.UserName 在查詢中稱為 UserName

下面的範例提供變數的簡單宣告。 在實際執行案例中,您可能會傳遞另一個已經儲存了使用者名稱的變數作為查詢參數或變數定義 (例如,如果您從登入指令碼取得使用者名稱)。

將變數及其定義作為查詢字串參數 附加到專員的 URL botURL?variableName1=variableDefinition1&variableName2=variableDefinition2格式。

例如:

參數名稱不區分大小寫。 username=Renata 也適用於此範例。

將全域變數新增至自訂畫布

您也可以將變數新增至自訂畫布

  1. <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);
        });
    
  2. 在您的 <script> 部分中,調用 store when you embed your 專員,如以下示例所示,where store is called 就在 where styleOptions is called 上方 (您需要將 the BOT_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));