將交談從 Bot 轉換至人類

適用于: SDK v4

無論 Bot 擁有多少人工智慧,它可能仍然需要將對話交給人類。 如果 Bot 不了解使用者(因為 AI 限制),或要求無法自動化且需要人為動作,則可能需要進行這類交接。 在這種情況下,Bot 應該辨識何時需要交出交談,並提供使用者順暢的轉換。

Microsoft Bot Framework 是一個開放平臺,可讓開發人員與各種代理程式參與平臺整合。

交接整合模型

Microsoft Bot Framework 支援兩種模型來與代理程式參與平臺整合。 這兩個模型的交接通訊協定都相同,但模型與代理程式參與平臺之間的上線詳細資料不同。

其目標是要提供通用解決方案來與任何客戶的系統整合,而是要為 Bot 開發人員和系統整合者提供 通用語言 最佳做法 ,讓聊天機器人開發人員和系統整合者能夠利用對話式 AI 系統在迴圈中建立對話式 AI 系統。

Bot 作為代理程式

在第一個模型中,Bot 稱為 Bot 作為代理程式 ,Bot 會聯結連線至代理程式中樞的即時代理程式排名,並回應使用者要求,就好像要求來自任何其他 Bot Framework 通道一樣。 使用者與 Bot 之間的交談可以呈報給人類代理程式,此時 Bot 會脫離作用中的交談。

此模型的主要優點是其簡單性—您可以以最少的努力將現有的 Bot 新增至代理程式中樞,而代理程式中樞會處理訊息路由的複雜性。

Diagram of an agent hub that can direct messages to a bot or human agents.

Bot 作為 Proxy

第二個模型稱為 Bot 作為 Proxy 。 使用者會直接與 Bot 交談,直到 Bot 決定需要人類代理程式的協助為止。 Bot 中的訊息路由器元件會將交談重新導向至代理程式中樞,以將其分派至適當的代理程式。 Bot 會留在迴圈中,並可收集交談的文字記錄、篩選訊息,或為代理程式和使用者提供其他內容。

彈性和控制是此模型的主要優點。 Bot 可以支援多個通道,並控制對話的呈報方式,以及在使用者、Bot 和代理程式中樞之間路由傳送。

Diagram of a bot that can route messages to an agent hub.

交接通訊協定

通訊協定以事件為中心,由 Bot 傳送至通道,以及通道傳送至 Bot 的狀態更新。

交接起始

Bot 會建立交接起始 事件來起始交接。

事件可以包括:

  • 交接要求的內容,將交談路由傳送至適當的代理程式。
  • 交談的文字記錄,讓代理程式可以在起始交接之前,讀取客戶與 Bot 之間發生的交談。

以下是常見的交接初始事件屬性:

  • 名稱:必要, name 屬性必須設定為 「handoff.initiate」。

  • 交談:必要, 交談 屬性描述活動所在的交談。 交談 必須 包含交談 Id

  • 值:選擇性, value 屬性可以包含代理程式中樞特定的 JSON 內容,中樞可用來將交談路由傳送至相關代理程式。

  • 附件:選擇性的 附件 屬性可以包含文字記錄做為附件。 Bot Framework 會 定義文字記錄 附件類型。 您可以藉由提供 ContentUrl 來傳送內嵌附件(受限於大小限制)或離線。

    handoffEvent.Attachments = new List<Attachment> {
        new Attachment {
            Content = transcript,
            ContentType = "application/json",
            Name = "Transcript",
        }
    };
    

    注意

    代理程式中 樞必須忽略 它們不了解的附件類型。

當 Bot 偵測到需要將交談交給代理程式時,它會藉由傳送交接起始事件來發出其意圖。 適用于 C# 的 SDK 包含建立 CreateHandoffInitiation 有效交接初始事件的方法。

var activities = GetRecentActivities();
var handoffContext = new { Skill = "credit cards" };
var handoffEvent =
    EventFactory.CreateHandoffInitiation(
        turnContext, handoffContext, new Transcript(activities));
await turnContext.SendActivityAsync(handoffEvent);

遞交狀態

代理程式中樞會將交接狀態 事件傳送至 Bot。 事件會通知 Bot 起始的交接作業狀態。

注意

Bot 不需要 處理交接狀態事件;不過,它們 不得 予以拒絕。

以下是常見的交接狀態事件欄位:

  • 名稱:必要, name 屬性必須設定為 「handoff.status」。

  • 交談:必要, 交談 屬性描述活動所在的交談。 交談 必須 包含交談 Id

  • 值:必要, 描述交接作業目前狀態的值屬性。 值具有下列屬性。

    • 狀態:必要, 狀態 屬性可以有下列其中一個值:

      意義
      「accepted」 代理程式接受要求並控制交談。
      「failed」 遞交要求失敗。 訊息 屬性可能包含與失敗相關的其他資訊。
      「completed」 遞交要求已完成。
    • 訊息:選擇性,訊息 屬性是由代理程式中 樞所定義的物件。

    以下是一些範例值物件:

    { "state" : "completed" }
    
    { "state" : "failed", "message" : "Can't find agent with requested skill" }
    

遞交程式庫

已建立 Handoff 連結 ,可補充 Bot Framework v4 SDK 以支援交接;具體來說:

  • 實作 Bot Framework SDK 的新增專案,以支援代理程式交接(也稱為 呈報 )。
  • 包含三種事件種類的定義,用於發出信號交接作業。

注意

與特定代理程式中樞的整合不是程式庫的一部分。

其他資源