为此我们需要实现一个能够能够支撑业务实现并能够接入多个云通话服务渠道的系统,命名为 CC(Call Center,呼叫中心)。
从呼叫模式上看,目前业界大多数采用的是“回拨”模式,即由呼叫中心发起两路呼叫,然后将两路进行连通。提供回拨服务的厂商比较多,比如玖云、华为、吉亚等,下面以玖云和华为为例进行架构设计。(选择玖云和华为主要是因为他们正好使用了不同的两种通话状态获取模式,玖云是回调,而华为是轮询)
(图片看不清的话请另存为后查看)
列名 | 类型 | 长度 | 备注 |
---|---|---|---|
id | bigint | 20 | 主键 |
tenant | varchar | 32 | 租户标识 |
main_num | varchar | 16 | 400 商户号码 |
ext_num | varchar | 8 | 400 商户分机号码 |
agent | varchar | 64 | 坐席标识 |
call_id | varchar | 64 | 由渠道返回的话单 id |
caller | varchar | 16 | 主叫(A 路)号码 |
called | varchar | 16 | 被叫(B 路)号码 |
biz_data | text | 业务数据 | |
channel | varchar | 8 | 渠道标识:(玖云:e9;华为:hw;吉亚:jy) |
ch_state | varchar | 32 | 渠道返回的话单当前状态 |
state | varchar | 8 | 话单当前状态。初始化(发起呼叫 A 路):init;双通:conn;关闭:close |
a_call_time | bigint | 20 | 呼叫 A 路时间 |
b_call_time | bigint | 20 | 呼叫 B 路时间 |
a_offhook_time | bigint | 20 | A 路摘机(接通)时间 |
b_offhook_time | bigint | 20 | B 路摘机(接通)时间 |
conn_time | bigint | 20 | 双通时间 |
close_time | bigint | 20 | 关闭通话时间 |
duration | int | 11 | 通话时长(秒) |
ch_audio_url | varchar | 512 | 渠道录音文件 URL |
audio_url | varchar | 512 | 外部存储录音文件 URL |
ivr_url | varchar | 512 | IVR 语音文件 URL |
ivr_text | text | IVR 文本内容 | |
close_type | varchar | 32 | 0:正常挂断;1:A 路无法接通;2:B 路无法接通;3:A 路目标忙;4:B 路目标忙;5:通话达到最大时长;6:渠道服务器错误;7:渠道网络错误;255:其他错误 |
updated | bigint | 20 | 记录更新时间 |
created | bigint | 20 | 记录创建时间 |
由渠道通过 PSTN 实现电话呼叫:
3.1 呼叫 A 路(客服),A 路摘机
3.2 呼叫 B 路(客户),客户摘机
3.3 A-B 接通进行通话
3.4 通话结束(A/B 挂断或异常)
这个模型用于描述业务系统中的用户实体以及坐席(可以理解为渠道提供的通话线路,同一时刻同一个线路只能有一通电话在拨打)的关联,并却定了这个用户所使用的通话渠道。
默认情况下并不需要指定关联,CC 会自动选择渠道,只有在某些业务场景下需要应用来指定渠道。
呼叫中心系统方面技术交流: 515229