跳到正文

callout-server ​

callout-server 是系统二“智能外呼与协同系统”的管理 API、后台任务服务与原生 AI 策略中台, 负责流程脚本、名单、线路、任务调度、重试、坐席状态、软电话、转人工、情绪分析和结果闭环, 以及 NLU 意图决策与槽位抽取、Chat SSE 流式对话、流程脚本生成/仿真与 AI 策略管理。

通话媒体、ASR / TTS 与 FreeSWITCH outbound ESL 执行由 callflow-esl 承担;本模块通过 HTTP、通道变量与数据库契约协调这些能力。

系统二定位 ​

系统二由 callout-server、callout-webpage、callflow-esl 的 callout-flow-business、情绪分析和 FreeSWITCH 共同组成。 它与系统一共享语音底座,但独立维护外呼经营数据、角色权限、AI 策略与任务生命周期。

核心流程 ​

text
创建流程/线路/名单 → 启动 campaign → scheduler 领取联系人
  → callflow-esl originate 并执行流程脚本
  → callout-server 原生 NLU / Chat 决策、坐席协同或转人工
  → 回写通话结果、转写、业务字段和情绪分析

端到端状态边界见任务生命周期与 集成契约。

流程脚本能力 ​

流程脚本支持播报、收集、路由、字段抽取、Chat 和转人工等节点,由 callout-flow-business 在通话内执行。开发规范见:

运行 ​

在仓库根目录:

bash
bun run dev:callout-server

或进入本目录:

bash
bun run dev
bun run start
bun run typecheck
bun test

默认监听和健康检查见服务目录。服务依赖 PostgreSQL、Redis, 并按启用功能访问 FreeSWITCH、callflow-esl、OpenAI 兼容推理后端和情绪分析服务。

配置 ​

最小联调需检查:

  • server / auth / logging
  • db(本地开发默认连接 dev-freeswitch 库,线上生产环境统一使用 freeswitch 库) / redis
  • scheduler 与 cells[](每个 cell =一台 FreeSWITCH + 配对的 callflow-esl;FreeSWITCH inbound ESL、outbound 回连地址、callflowEsl.baseUrl 与录音前缀都在 cell 内,顶层同名字段只是 cell 省略字段的默认值)
  • server.serviceApi.authToken
  • llm(可选;推理后端地址可显式指定在 llm.openaiUrl,也可留空由数据库 callout.ai_llm_configs 中启用的记录提供)
  • emotionAnalysis
  • liveMonitor、softphone、turn 与 ringbackDetection

字段语义、默认值与 cell 配置见配置参考。

专题导航 ​

角色与权限 ​

鉴权方式、角色权限矩阵和用户管理接口统一见 HTTP API。

HTTP API ​

接口路径、请求参数、响应信封和错误约定只在 HTTP API维护。

数据库结构 ​

核心记录及其生命周期见任务生命周期;运行所需的数据库 准备和后台任务使用方式见运行与后台任务。

结果回写 ​

内部回写端点见HTTP API,业务结果、转写和 NLU 摘要 结构见结果结构。

情绪分析 ​

worker 配置、重试与运行事件见运行与后台任务。

调度与重试 ​

领取、容量、提交和终态边界见任务生命周期;调度参数与后台 循环见运行与后台任务。

运行事件与告警 ​

并发模型、日志事件和告警建议见运行与后台任务。

回铃音检测 ​

回铃识别的配置和运行边界见运行与后台任务。

坐席间流转与转人工会议 ​

坐席路由、会议成员操作和僵尸会话收尾见转人工。

集成方式 ​

originate、通道变量、状态机和两层并发契约见集成契约。

日志 ​

日志目录、滚动策略与关键事件见运行与后台任务。 任务中启动的服务必须在结束前停止;常见故障见全仓排障手册。

文档与代码在同一仓库维护,现有 Markdown 是唯一内容源。