分享方式:


設定對一般業務開發中心的移交

重要

在對生成式 AI 進行大量投資並增強 Microsoft Copilot 的整合後,Power Virtual Agents 的功能和特性現已成為 Microsoft Copilot Studio 的一部分

當我們更新文件和培訓內容時,某些文章和螢幕擷取畫面可能會參考 Power Virtual Agents。

Copilot Studio 可讓您透過互動中心將副手交談無縫且根據上下文移交給真人專員。

透過某些自訂的開發,您可以將副手設定成將交談移交給任何參與中心。 本指南描述您如何執行此動作。

先決條件

重要

本節中的指示需要由您或您的開發人員進行軟體開發。 它適用於有經驗的 IT 專業人員,例如對開發人員工具、公用程式及 IDE 有深刻了解的 IT 系統管理員或開發人員,他們希望將第三方參與中心與 Copilot Studio 整合在一起。

概觀

顯示一般配接器資料流程的圖解。

完全移交給參與中心遵循以下模式:

  1. 最終使用者與參與中心的聊天畫布互動。

  2. 參與中心會透過內建的聊天路由功能,將傳入聊天路由至副手。

  3. 自訂配接器會將來自參與中心的傳入聊天訊息中繼至 Copilot Studio 副手。

  4. 使用者自觸發移交後,Copilot Studio 會使用完整的交談上下文開始移交。

  5. 自訂配接器會攔截移交訊息、分析完整的交談上下文,並根據可用性將升級的交談無縫傳遞給訓練有素的真人專員。

  6. 使用者的聊天會無縫地和具有上下文地移交給可以繼續交談的真人專員。

若要將交談移交給真人專員,您需要建立自訂的移交配接器。

建立自訂的移交配接器

配接器可以透過中繼並在終端使用者、副手和真人專員之間傳遞訊息,在您的專員參與中心溝通交談。

最常用的專員參與中心提供 SDK 或公開記錄其 API,讓您建立這樣的配接器。

雖然本文無法涵蓋自訂配接器可能包含的內容,但下列範例移交訊息 (根據 Copilot Studio 產生的內容作為我們標準移交給即時助理體驗的一部分) 可以幫助您入門。

這些程式碼片段和範例可讓您從副手交談中提取上下文,並將副手交談無縫地和具有上下文地到任何通用的參與中心。

範例移交訊息承載

目前僅支援透過 Direct Line 進行移交。 深入了解瞭如何透過 Direct Line 與副手互動。 移交時,會引發稱為 handoff.initiate 的事件活動,並傳送給配接器。

您可以在 GitHub 網站上看到完整的範例移交訊息活動

從移交訊息提取上下文

若要使用交談上下文,您必須剖析 handoff.initiate 事件活動。 下列程式碼片段會剖析 handoff.initiate 事件活動,並抽取交談上下文。 請參閱 GitHub 上的完整程式碼範例

public void InitiateHandoff(string botresponseJson)
{
    BotResponse response = JsonConvert.DeserializeObject<BotResponse>(botresponseJson);

    // Look for Handoff Initiate Activity. This indicates that conversation needs to be handed off to agent
    Activity handoffInitiateActivity = response.Activities.ToList().FirstOrDefault(
        item => string.Equals(item.Type, ActivityTypes.Event, System.StringComparison.Ordinal)
        && string.Equals(item.Name, HandoffInitiateActivityName, System.StringComparison.Ordinal));

    if (handoffInitiateActivity != null)
    {
        // Read transcript from attachment
        if (handoffInitiateActivity.Attachments?.Any() == true)
        {
            Attachment transcriptAttachment = handoffInitiateActivity.Attachments.FirstOrDefault(a => string.Equals(a.Name.ToLowerInvariant(), TranscriptAttachmentName, System.StringComparison.Ordinal));
            if (transcriptAttachment != null)
            {
                Transcript transcript = JsonConvert.DeserializeObject<Transcript>(transcriptAttachment.Content.ToString());
            }
        }

        // Read handoff context
        HandoffContext context = JsonConvert.DeserializeObject<HandoffContext>(handoffInitiateActivity.Value.ToString());

        // Connect to Agent Hub
        // <YOUR CUSTOM ADAPTER CODE GOES HERE>
    }
}