配置对任何通用参与中心的转接

Copilot Studio 让您可以通过参与中心将助手对话根据上下文无缝地转接给人工代理。

可以经过一些自定义开发配置助手以将对话转接给任何参与中心。 本指南介绍其操作方法。

先决条件

重要提示

本节中的某些说明需要您或您的开发人员进行软件开发。 其面向经验丰富的 IT 专业人士,如深谙开发人员工具、实用程序和集成开发环境 (IDE) 并希望将第三方参与中心与 Copilot Studio 集成的 IT 管理员或开发人员。

概述

显示常规适配器数据流的图。

对参与中心的完整转接采用以下模式:

  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>
    }
}