機器人會話狀態 Snippet

本説明頁面上的資訊同時適用於 StudioDesktop Studio

當使用具有 屬性的動作時,指令碼中需要機器人會話狀態botSessionState片段。 這包括Textbot ExchangeVoicebot Exchange等操作(從這裡開始,這兩個操作都簡稱為Exchange)。 必須正確配置botSessionState屬性,以使您的虛擬客服Closed 代替真人客服專員處理客戶互動的軟體應用程式。能按預期工作。 為此,您必須在腳本中創建此代碼段並正確配置操作,如以下部分所示。

botSessionState屬性必須使用變數進行配置,該變數保存聯絡人和虛擬客服專員之間對話的唯一識別碼。 這是由虛擬客服專員提供者自動指定。 識別碼可防止在對話的每個輪次都建立新的會話,並協助虛擬客服專員在輪次之間保持上下文一致。

提供程式在對話開始時創建識別碼,並將其傳遞給具有第一個回應的腳本。 腳本將標識碼存儲在 botSessionStateVarName (out) 屬性中命名的變數中 Exchange 操作。 最後,指令碼會將前一輪的botSessionStateVarName (out)屬性的識別碼傳遞給botSessionState屬性。

您的指令碼絕不應寫入此屬性或其變數。 必須正確設定您的指令碼,以使用機器人會話狀態識別碼。

除非您使用 Google Dialogflow CX,否則此 snippet 是必需的,您可以在 自訂工作負載 nippet 中設置自定義對話 ID該 ID 與 Bot 會話狀態 代碼段具有相同的目的。 將聯絡人從一個CX 實例Dialogflow轉移到另一個 CX 實例時,將使用自訂對話 ID。 如果您不使用任一 ID,則會為對話中的每一輪次生成一個新的工作階段 ID,您的虛擬客服將不會維護對話的上下文。 如果發生這種情況,不會生成任何錯誤,但系統將無法按預期運行。

指令碼設定

在您使用 Exchange動作時,指令碼中至少需要有兩個該動作的實例。 每個Exchange動作中的botSessionState 屬性必須以不同方式配置:

  • Exchange 動作的第一個執行個體直接位於指令碼開頭的 Begin 動作後面。 配置如下:
    • botSessionState:此處必須為空。
    • botSessionStateVarName (out):屬性必須以您希望指令碼儲存識別碼的變數名稱來配置。
  • 第二個Exchange 動作位於指令碼的後面。 配置如下:
    • botSessionState:使用在Exchange動作的第一個執行個體中botSessionStateVarName (out)中使用的變數進行配置。 該變數必須存儲 JSON 格式機器人會話狀態識別碼
    • botSessionStateVarName (out):屬性必須以您希望指令碼儲存識別碼的變數名稱來配置。
  • Exchange動作的第三個及任何後續執行個體是可選的。 如果您的指令碼包含這些執行個體,請依下列方式配置: 
    • botSessionState:使用在Exchange動作的上一個執行個體中botSessionStateVarName (out)中使用的變數進行配置。 該變數必須存儲 JSON 格式機器人會話狀態識別碼。 機器人會話狀態識別碼通常不會在輪次之間改變。 但是,萬一發生變更,應該配置動作以擷取變更。
    • botSessionStateVarName (out):屬性必須以您希望指令碼儲存識別碼的變數名稱來配置。

所有虛擬代理都需要這種配置。

驗證 botSessionState 屬性是否正確設定

您可以使用指令碼追踪來確認此屬性是否正確設定。

  1. 對虛擬客服專員和聯絡人之間的互動執行指令碼追踪。 您可以使用連續追蹤或擷取特定 ANI 或DNIS的追蹤(僅適用於語音互動)。
  2. 在追踪視窗中,點擊與第一個 Virtual Agent Hub 動作(Voicebot Exchange Textbot Exchange)對應的行。
  3. 在變數清單中,選中 botSessionState 變數。 其值必須為 null(空)。
  4. 在追踪視窗中,點擊追踪中第一個 Virtual Agent Hub 動作後的下一行。
  5. 請注意 botSessionState 變數的值。
  6. 在追踪視窗中,點擊追踪中與任何後續 Virtual Agent Hub 動作對應的行。
  7. 檢查 botSessionState 變數的值。 必須與第 5 步中的相同。

將機器人會話狀態識別字碼轉換為 JSON 格式

botSessionStateVarName (out) 屬性中使用的變數內容必須被轉換成 JSON 格式,並傳遞到您的指令碼中第二個 Exchange 動作的 botSessionState屬性。 要做到此點,可以在 Snippet 動作中包含代碼,或者可以直接配置該屬性。 這兩種方法都可以接受。 然而,在 Snippet 中建立一個變數來保存轉換後的物件的好處是,這樣會更容易看到轉換在哪裡發生。

使用 Snippet 動作

  1. 使用變數的名稱配置 Exchange 動作的 botSessionStateVarName (out) 屬性來保留工作階段狀態識別碼。 例如,botSessionState
  2. 將以下行新增到指令碼中位於 Exchange 動作之前的 Snippet

    ASSIGN botSessionStateOut = botSessionStateOut.asJSON()

    使用在指令碼中使用的變數的名稱。

  3. Exchange 動作中使用在 ASSIGN 陳述式中使用的變數名稱配置 botSessionState 屬性。 例如,botSessionStateOut

在屬性中轉換

如果您在botSessionState屬性中轉換變數,可使用 botSessionStateVarName (out) 變數與 asJSON() 功能。 範例:

  • botSessionStateVarName (out)botSessionState
  • botSessionStatebotSessionState.asJSON()

將聯絡人從一個虛擬客服轉移到另一個

要設定虛擬客服之間的聯絡轉移,您需要正確設定機器人會話狀態 ID。 每個虛擬客服都必須有自己唯一的機器人會話狀態ID。 這有助於單個虛擬客服維護他們參與的對話的上下文。

  • 虛擬客服專員 1:按照本頁前面所述設置機器人會話狀態變數

  • 虛擬客服專員 2:以相同的方式進行設置,在botSessionStateVarName (out)中使用不同的變數來保存機器人會話狀態 ID。 確保在第一次調用此虛擬客服專員時,botSessionState屬性為空。  對話中的第一個回合將唯一的機器人會話狀態ID返回給botSessionStateVarName (out)中的變數。
  • 所有後續虛擬代理:設置與虛擬代理 2 相同,使用唯一變數作為機器人會話狀態 ID。

此方法適用於所有受支援的虛擬客服專員提供者,除非您要在兩個虛擬客服Google Dialogflow CX之間轉移。 在這種情況下,需要不同的方法