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/loggingdb(本地开发默认连接dev-freeswitch库,线上生产环境统一使用freeswitch库) /redisscheduler与cells[](每个 cell =一台 FreeSWITCH + 配对的 callflow-esl;FreeSWITCH inbound ESL、outbound 回连地址、callflowEsl.baseUrl与录音前缀都在 cell 内,顶层同名字段只是 cell 省略字段的默认值)server.serviceApi.authTokenllm(可选;推理后端地址可显式指定在llm.openaiUrl,也可留空由数据库callout.ai_llm_configs中启用的记录提供)emotionAnalysisliveMonitor、softphone、turn与ringbackDetection
字段语义、默认值与 cell 配置见配置参考。
专题导航
- 模块深入导航
- 配置参考
- 运行与后台任务
- HTTP API
- 任务生命周期
- 集成契约
- 外呼业务代码示例
- 结果结构
- 流程脚本与 NLU 开发规范
- 流程脚本 Chat 节点
- 三栏 AI 话术策略工作台
- LLM 推理引擎架构
- 浏览器软电话
- 转人工
角色与权限
鉴权方式、角色权限矩阵和用户管理接口统一见 HTTP API。
HTTP API
接口路径、请求参数、响应信封和错误约定只在 HTTP API维护。
数据库结构
核心记录及其生命周期见任务生命周期;运行所需的数据库 准备和后台任务使用方式见运行与后台任务。
结果回写
内部回写端点见HTTP API,业务结果、转写和 NLU 摘要 结构见结果结构。
情绪分析
worker 配置、重试与运行事件见运行与后台任务。
调度与重试
领取、容量、提交和终态边界见任务生命周期;调度参数与后台 循环见运行与后台任务。
运行事件与告警
并发模型、日志事件和告警建议见运行与后台任务。
回铃音检测
回铃识别的配置和运行边界见运行与后台任务。
坐席间流转与转人工会议
坐席路由、会议成员操作和僵尸会话收尾见转人工。
集成方式
originate、通道变量、状态机和两层并发契约见集成契约。