Copilot Studio 使您能够通过交互枢纽将代理对话无缝且具有上下文地转接给人工客服。
可以经过一些自定义开发配置智能体以将对话递交给任何参与中心。
先决条件
- 使用 Copilot Studio 生成代理。
- 你需要使用 API 或 SDK 以编程方式交互的参与中心。
重要
本文需要一些软件开发技能。 本文中的步骤适用于经验丰富的 IT 专业人员,他们深入了解开发人员工具、实用工具和集成开发环境(IDE)。
Overview
对参与中心的完整转接采用以下模式:
- 客户与参与中心的聊天区域交互。
- 参与中心通过内置聊天传递功能将传入的聊天传递到智能体。
- 自定义适配器将传入的聊天消息从参与中心中继到 Copilot Studio 智能体。
- 当客户触发转接时,Copilot Studio 将开始进行包含完整对话上下文的转接。
- 自定义适配器截取转接消息,分析完整的对话上下文,然后根据空闲情况将升级后的对话无缝传递到技能娴熟的人工代理。
- 将把客户的聊天根据上下文无缝递交给可继续对话的人工代理。
若要将对话递交给人工代理,需要创建自定义转接适配器。
创建自定义转接适配器
适配器通过在客户、智能体和人工代理之间中继和传输消息,与智能体参与中心之间桥接对话。
大多数常用智能体参与中心公开提供软件开发套件 (SDK) 或记载其 API,让您可以创建此类适配器。
本文档不介绍自定义适配器可以包含的内容。 但是,以下示例转接消息(基于 Copilot Studio 作为我们的标准人工代理移交体验的一部分生成的内容)可以帮助您入门。
这些代码段和示例让您可以从智能体对话提取上下文,以便将对话按照上下文无缝递交给任何常规参与中心。
示例转接消息有效负载
交接(Handoff)功能目前仅支持 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>
}
}