← 返回
IT技术

AI 接待员工作原理:AI 电话代理的架构

✍️ zhirenhun 📅 2026/9/7 👁 129 阅读 ⏱ 21 分钟
AI 接待员工作原理:AI 电话代理的架构

从外部看,AI 接线员似乎很简单:来电者说话,系统作出回应,对话一直进行,直到来电者得到答案或被转接到人工坐席。

在这段对话背后,有一条由电话基础设施、语音识别、语言模型、应用逻辑、API、数据库和呼叫路由组成的处理流水线。

有趣的地方不仅在于 AI 模型本身,而在于这些组件如何协同工作,把音频流转化为有用的业务动作。

想要这些功能的企业有两条路可走。

他们可以购买现成的产品。如今市场上已有专门的 AI 接线员,如 Nextiva 的 XBert,以及来自 GoodcallDialzara 等的工具。

或者他们可以自行构建,而本文正是要一步步带你完成这个过程。无论哪种方式,了解架构都很有帮助:它能让你看到商业产品在内部到底在做什么,以及定制开发需要准备哪些组件。

典型的架构大致如下所示:

这张技术文章配图描述了一个电话呼叫系统的流程,包括电话呼叫、语音转文本、AI推理、工具呼叫、业务系统、回复和文本转语音

在本文中,我们将深入探讨 AI 电话客服背后的架构,从来电者拨打企业电话的那一刻,一直到通话结束后发生的事情。

你将看到电话系统如何接通呼叫,语音如何转换为文本,AI 如何识别意图并保持对话上下文,以及功能调用如何将代理与日历、CRM 和其他业务系统连接起来。我们还将探讨代理如何决定何时将通话转接给人工坐席,以及在此过程中可以传递哪些信息。

我们将涵盖的内容:

电话呼叫进入系统

流程始于一次普通的电话呼叫。客户拨打企业电话号码,电信运营商接听该呼叫。

然后,提供方需要把该来电转接给能够处理它的应用程序。

一种常见做法是使用 webhook。来电到达时,电话服务提供商会向应用发送 HTTP 请求。应用可返回说明,说明如何处理该来电。

呼叫本身需要运营商连接。生产系统通常采用 SIP 中继,通过互联网把语音应用或电话系统接入公共电话网络。

Nextiva、Twilio 和 Bandwidth 等提供商提供 SIP 中继,为 AI 语音系统供应号码和通话容量。随后,应用层接管。

例如,Twilio 在来电语音呼叫到达时,会向配置的应用发送 HTTP 请求。应用可以用 TwiML 指令进行响应,以控制呼叫。

一个简化的 Node.js 端点示例如下:

app.post("/incoming-call", (req, res) => {
  const response = new VoiceResponse();

  response.say("Hello. How can I help you today?");

  res.type("text/xml");
  res.send(response.toString());
});

此示例目前还未涉及任何 AI,仅展示了第一个架构边界。

电话网络负责处理来电,应用程序接收事件并决定后续操作。

此后,应用程序需要处理来电者的音频。

语音转换为文本

用户通过音频与系统交互,但大多数应用逻辑基于结构化数据和文本。

自动语音识别系统(即 ASR 系统)将来电者的语音转换为文本。

例如,来电者可能会说:

"我需要把周五的预约改到周一下午。"

语音识别层可能会产生:

{
  "text": "I need to move my appointment from Friday to Monday afternoon."
}

确切的响应取决于语音识别系统。某些系统还能提供时间戳、置信度、说话人信息或部分转录。

应用程序现在可以将识别出的文本传递给其对话层。

这种分离很有用,因为 AI 推理层不需要理解原始电话音频。它接收文本并返回决策或响应。

系统确定来电者想要什么

下一个挑战是理解意图。

假设有三位来电者这样说:

"我想预约一次咨询。"

"我可以把我的预约改到下周吗?"

"你们的办公室在哪里?"

系统需要识别这些请求需要不同的工作流。

应用程序可以将检测到的意图表示为结构化数据:

{
  "intent": "reschedule_appointment",
  "entities": {
    "current_day": "Friday",
    "requested_day": "Monday",
    "time_preference": "afternoon"
  }
}

语言模型能够生成这种结构,或者应用可以通过另一个分类层得到它。

关键的架构点在于,应用把自然语言转换为下游系统能够处理的信息。

模型可能理解来电者想要重新安排预约,但仅仅因为它生成了这种解释,就不应该直接去修改日历。

应用需要控制接下来发生的事情。

对话以循环方式运行

AI 电话客服通常不会在单个请求中处理整个对话。

相反,它以循环方式运行。

来电者说话。语音识别将音频转换为文本。应用把文本及相关上下文发送给 AI 系统。AI 决定需要说什么或执行什么操作。应用生成音频并将其发送回给来电者。

然后来电者再说一次。

简化版如下所示:

while (callIsActive) {
  const audio = await receiveAudio();

  const text = await speechToText(audio);

  const result = await processConversation({
    text,
    context: conversationContext
  });

  conversationContext = result.updatedContext;

  const audioResponse = await textToSpeech(result.response);

  await sendAudio(audioResponse);
}

这是概念代码,并非完整的电话实现。实际系统需要处理流式音频、中断、超时、错误、身份验证以及特定于提供商的协议。

上下文同样重要。

如果来电者说:

“我想预约。”

系统可能会问:

“您需要什么类型的预约?”

来电者接着说道:

“初步咨询。”

只有当应用程序记住之前的交互时,第二句话才有意义。

对话状态可能包含以下信息:

{
  "intent": "book_appointment",
  "appointment_type": "initial_consultation",
  "customer_name": "Jane Smith",
  "preferred_date": null
}

系统可以在对话进行过程中向此状态添加信息。

AI 调用业务系统

这就是 AI 接待员不仅仅是一个语音聊天机器人的地方。

假设来电者询问:

"您明天下午有空吗?"

仅凭对话内容,AI 无法可靠地回答这个问题。它需要来自日历或调度系统的实时信息。

这就是函数调用(也称为工具调用)发挥作用的地方。

应用程序可以向 AI 公开一组有限的函数:

const tools = [
  {
    name: "check_calendar",
    description: "Find available appointment slots",
    parameters: {
      date: "string",
      appointmentType: "string"
    }
  },
  {
    name: "book_appointment",
    description: "Book an available appointment",
    parameters: {
      slotId: "string",
      customerId: "string"
    }
  }
];

模型可以确定它需要 check_calendar

应用程序随后执行该函数:

const slots = await checkCalendar({
  date: "2026-08-21",
  appointmentType: "consultation"
});

结果会返回到对话上下文中:

{
  "available_slots": [
    "2026-08-21T14:00:00",
    "2026-08-21T15:30:00"
  ]
}

AI 然后可以告诉呼叫者有哪些可用选项。

重要的架构边界在于 AI 决定可能需要什么操作,而应用代码控制该操作如何执行。

这为开发者提供了一个位置,以执行权限、验证输入、处理故障以及控制对业务系统的访问。

预约安排

现在考虑最后一步。

呼叫者选择其中一个可用的时间。

AI 可以请求预约安排:

{
  "tool": "book_appointment",
  "arguments": {
    "slotId": "slot_123",
    "customerId": "customer_456"
  }
}

应用程序会先校验这些值,然后再调用日历系统。

例如:

async function bookAppointment(slotId, customerId) {
  const slot = await getAvailableSlot(slotId);

  if (!slot || slot.booked) {
    throw new Error("Appointment slot is no longer available");
  }

  return calendar.createEvent({
    customerId,
    start: slot.start,
    end: slot.end
  });
}

应用程序随后将实际结果返回给 AI。

这一区别很重要。

AI 不应仅仅因为决定调用 book_appointment 而告诉调用方已预约了约会。

日历系统需要确认操作成功。

日历 API 常见地公开用于创建事件的操作。例如,谷歌日历 提供了一个 events.insert 方法来创建事件。

只有在收到成功响应后,对话层才应告诉调用方约会已确认。

捕获潜在客户信息

同样的架构可以在销售对话过程中捕获信息。

调用方可能会提供姓名、电子邮件地址、公司、电话号码、服务需求以及首选的跟进时间。

对话可以逐步填充一个结构化的潜在客户对象:

{
  "name": "Jane Smith",
  "email": "jane@example.com",
  "company": "Example Corp",
  "interest": "enterprise consultation",
  "appointment_booked": true
}

随后,应用程序可以把这些信息发送到 CRM。

这在对话数据和业务数据之间划出了重要的界限。

转录内容代表了来电者所说的话。

CRM 记录代表了业务需要采取行动的结构化信息。

CRM 可能包含来电者的联系信息、咨询类型、资格数据、预约详情以及跟进状态。

具体字段取决于公司的 CRM 及其销售流程。

了解何时需要人工介入

并非所有对话都应由 AI 系统独自处理。

生产系统需要制定升级规则。

当来电者要求人工服务、请求超出代理支持的工作流程,或者企业决定某类请求必须由人工处理时,可能会触发升级。

应用程序可以明确表示此决定:

if (shouldEscalate(conversation)) {
  return transferToHuman({
    callerId,
    reason,
    conversationContext
  });
}

关键在于转接过程中发生了什么。

一次有效的交接应当携带上下文信息,而不是让接手的员工从零开始。

人工客服可能会收到:

{
  "caller": {
    "name": "Jane Smith",
    "phone": "+1-555-0100"
  },
  "reason": "Complex billing question",
  "summary": "Caller needs help resolving an invoice discrepancy.",
  "actionsCompleted": [
    "Customer identity verified"
  ]
}

具体需要交接哪些数据,取决于所用的系统。

电话平台还能通过语音 API 支持呼叫转接和回拨。例如,Twilio 的语音文档就介绍了呼叫路由功能,其中 的作用是把通话转接到其他目的地。

通话结束后会发生什么

来电者挂断电话,对话未必就此结束。

视系统及其配置而定,应用程序可以保留对话的文字记录以及其他通话数据。

一条简化的通话记录大致如下:

{
  "callId": "call_123",
  "duration": 342,
  "customerId": "customer_456",
  "intent": "book_appointment",
  "appointmentId": "appointment_789",
  "leadCaptured": true,
  "escalated": false
}

转录提供详细对话,结构化字段提供下游应用可查询的信息。

因而,通话可以触发若干业务动作。

电话系统也可以通过状态回调向应用程序通知通话生命周期事件。例如,Twilio 在通话结束时会向号码的状态回调 URL 发送请求,并支持 statusCallbackEvent 属性,用于订阅诸如已启动、振铃、已应答和已完成等拨号腿的生命周期事件。

业务视角

员工视角下,这些基础设施可隐藏在少数业务记录之后。

员工可能看到一个带有联系信息和来电原因的新 CRM 线索。

日历可能包含一条新预约。

对话系统可能包含转录和摘要。

如果通话被转接,员工在与客户交谈前可以获得相关上下文。

这就是 AI 电话代理背后的主要架构思想。

语音界面仅是一层。其下是一套系统,负责将语音转为文本、解释来电请求、维持对话状态、调用外部服务、验证业务操作并把结果返回给来电者。

语言模型提供对话推理。周围的应用提供状态、工具、权限、集成和业务规则,将对话转化为实际工作流。

希望您喜欢这篇文章。您可以 在 LinkedIn 上与我联系

——

🧑‍💻

zhirenhun

一个热爱技术的程序员,喜欢分享前沿AI知识和开发经验。