欢迎关注公众号: 呼叫中心之开源技术分享
后续会陆续有视频教程发布。
欢迎加入开源社区
添加微信号: 18556579517
系统使用及配置演示视频:https://mp.weixin.qq.com/s/05GIFKWtHt6EB0mxgL0BuA
我们提供了预编译的二进制文件。 百度网盘下载地址: https://pan.baidu.com/s/1xFgMPCu0VKHKnG69QhyTlA 提取码: etv5
注意:如果是采用预编译的二进制部署方式, 部署之前请把百度网盘中的文件全部下载到本地文件夹。
然后把文件上传到 linux 服务器目录中,仅支持使用Debian12,推荐下载地址: https://mirrors.163.com/debian-cd/current/amd64/iso-dvd/
一. Freeswitch部署
注意:如果你是手动编译的FreeSWITCH,请把编译后的文件打包名为: FreeSWITCH-for-easycallcenter365-1.10.11.zip 后再上传到 linux 目录下。
在从源代码手动编译的情况下,如果需要docker部署,也需要从前面提到的百度网盘下载docker镜像文件 freeswitch-debian12.5-image.tar。
环境准备:docker及mysql8的安装
docker 的安装参考文档: https://gitee.com/easycallcenter365/freeswitch-modules-libs/blob/master/docs/zh-cn/Debian12-install-docker.md 。
mysql8 的安装参考文档: https://gitee.com/easycallcenter365/freeswitch-modules-libs/blob/master/docs/zh-cn/Debian12-install-mysql8.md 。
1. 创建数据库: freeswitch
导入 freeswitch-1.10.11.sql
注意这里设置数据库root密码为: easycallcenter365
2. 导入freeswitch 的docker 镜像
docker load -i freeswitch-debian12.5-image.tar
3. 部署Freeswitch程序
mkdir /home/freeswitch/
unzip -d /home/freeswitch/ FreeSWITCH-for-easycallcenter365-1.10.11.zip
# 注意去掉多余目录,确保Freeswitch的bin目录位于 /home/freeswitch/下;
修改Freeswitch的数据库密码:
vim /home/freeswitch/etc/freeswitch/autoload_configs/switch.conf.xml
()
vim /home/freeswitch/etc/freeswitch/sip_profiles/external.xml
( )
vim /home/freeswitch/etc/freeswitch/sip_profiles/internal.xml
( )
vim /home/freeswitch/share/freeswitch/scripts/auth_user.lua
( local dbh = freeswitch.Dbh("mariadb://Server=127.0.0.1;Port=3306;Database=easycallcenter365;Uid=root;Pwd=easycallcenter365;"))
请注意:如果你的MySQL和FreeSWITCH不在同一台服务器上,请修改上面的 Server=127.0.0.1 为实际的IP地址。
这里的MySQL用户名和密码,如果和你的不一样, Uid=root;Pwd=easycallcenter365; 请修改为正确的值。
4. 创建docker容器
chmod +x /home/freeswitch/bin/*
docker run --log-opt max-size=100m --log-opt max-file=3 \
--ulimit core=-1 --security-opt seccomp=unconfined --privileged=true \
-itd --name freeswitch-debian12 \
-v /home/Records:/home/Records -v /home/freeswitch:/usr/local/freeswitchvideo \
--network=host freeswitch-debian12-image /usr/local/freeswitchvideo/bin/freeswitch_start.sh
5. 设置容器的时区:
docker cp /usr/share/zoneinfo/Asia/Shanghai freeswitch-debian12:/etc/localtime
6. 进入Freeswitch控制台
docker exec -it freeswitch-debian12 /usr/local/freeswitchvideo/bin/fs_cli
查看状态: sofia status (如果显示数量为0说明安装失败,一般是数据库用户名及密码错误导致)
二. easycallcenter365 的部署
1. 部署 easycallcenter365.jar
首先请导入最新的数据库脚本 easycallcenter365.sql。
MySQL创建一个名为 easycallcenter365 的数据库,然后导入 easycallcenter365.sql 文件。
a. 在本地文件夹,修改 easycallcenter365.jar 和 easycallcenter365-gui.jar 的配置文件;
如果使用的密码是 easycallcenter365 ,则跳过该步骤 b 和 c ;
b. easycallcenter365.jar 中默认设置的MySQL的root密码是 easycallcenter365 ;
配置文件是:\BOOT-INF\classes\application-uat.properties ;
可以使用Winrar打开jar包,鼠标拖拽拷贝出该文件,修改后再覆盖该文件。
注意:修改jar包时,"压缩方式(C)",要选择"存储",否则会导致jar包损坏。
c. easycallcenter365-gui.jar 设置的MySQL的root密码也是 easycallcenter365 ;
配置文件是: \BOOT-INF\classes\application-pro.yml
可以参照上一步骤c,使用Winrar打开jar包修改数据库连接密码。
d. 把 easycallcenter365.jar 和 easycallcenter365-gui.jar 文件上传到linux的 /home/easycallcenter365/ 目录下;
mkdir /home/easycallcenter365/
e. 检查java版本:
# java -version
输出 java version "1.8.0_391"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
如果是OpenJDK,则需要卸载并重新安装 Oracle JDK,
参考文章:https://gitee.com/easycallcenter365/freeswitch-modules-libs/blob/master/docs/zh-cn/debian12-install-jdk8.md
f. 启动两个jar包程序:
cd /home/easycallcenter365/
nohup java -Dfile.encoding=UTF-8 -jar easycallcenter365.jar > /dev/null 2>&1 &
nohup java -Dfile.encoding=UTF-8 -jar easycallcenter365-gui.jar > /dev/null 2>&1 &
三. FunASR的部署
我们提供了 funasr-server 的一键安装包 funASR-0.1.9
链接: https://pan.baidu.com/s/1Cg1xUcxrsLMaUv8CklFLug 提取码: 4tke
通过funASR官方文档进行安装,有比较大的安装失败概率。
下载安装包到本地,然后参考网盘中的文档 "FunAsr-0.1.9-集群离线部署.txt" 进行安装。
四. 运行设置
这里假定服务器的IP地址是: 192.168.14.218
1. 启动服务
docker restart freeswitch-debian12
【如果前面已经启动了 easycallcenter365.jar 和 easycallcenter365-gui.jar ,这里不需要重复启动! 】
nohup java -Dfile.encoding=UTF-8 -jar easycallcenter365.jar > /dev/null 2>&1 &
nohup java -Dfile.encoding=UTF-8 -jar easycallcenter365-gui.jar > /dev/null 2>&1 &
* 注意事项
启动 easycallcenter365.jar 和 easycallcenter365-gui.jar 之前,请确保FreeSWITCH和MySQL已经启动,一定注意启动顺序。
打开 easycallcenter365 日志: tail -f /home/easycallcenter365/logs/easycallcenter365.log
打开 FreeSWITCH 日志: tail -f /home/freeswitch/var/log/freeswitch/freeswitch.log
进入 FreeSWITCH 控制台: docker exec -it freeswitch-debian12 /usr/local/freeswitchvideo/bin/fs_cli
* 阿里云主机设置
如果当前部署是在阿里云上,需要在防火墙中设置相关端口开放。 点击主机实例,找到"安全组",然后点击"管理规则",在访问规则中,
手动添加以下端口:
```txt
自定义TCP 目的: 8899 源: 所有IPV4(0.0.0.0/0) 描述: easycallcenter365-gui
自定义TCP 目的: 1081 源: 所有IPV4(0.0.0.0/0) 描述: easycallcenter365电话工具条
自定义UDP 目的: 21002/31002 源: 所有IPV4(0.0.0.0/0) 描述: easycallcenter365电话语音端口
自定义UDP 目的: 5080 源: 所有IPV4(0.0.0.0/0) 描述: easycallcenter365电话语音呼入端口
```
注意:在阿里云上开放公网端口风险较大,社区版用户需要注意安全风险。建议设置IP来源的地址段。
(云端部署的安全防护措施仅对商业版用户提供支持。)
2. 大模型参数准备
a. 如果您需要对接 DeepSeekV3,请准备好参数 apiKey ;
注意,easycallcenter365使用的是阿里云百炼平台的大模型接口: https://bailian.console.aliyun.com/ ,
选择顶部菜单:模型 -> 文本模型 -> 更多模型,选择 deepseek-v3 ,设置好体验对话框之,可以进行在线调试。
在左下角,"密钥管理"菜单,可以找到API Key。
b 如果您需要对接"扣子Coze智能体", 请准备好 coze-pat-token 和 coze-bot-id 两个参数。
coze-pat-token 参数请在 https://www.coze.cn/open/oauth/pats 后台创建;
点击右上角的"添加",在添加对话框中,过期时间最长可设置为30天,
勾选 "Bot管理" -> "chat",接着 "选择指定工作空间",最后点击确定保存,
创建成功之后,就可以看到令牌的值,复制它, 注意关闭窗口后无法再次看到!
coze-bot-id 参数的值如何查看?
进入扣子主页,https://www.coze.cn/home ,最近编辑 菜单下面,可以看到最近创建的智能体,
选择一个智能体并点击进入,在地址栏中就可以看到, 比如:
https://www.coze.cn/space/7367249902209859647/bot/7447790819148414985
这里的 coze-bot-id 就是 7447790819148414985 。
特别注意:智能体发布的时候,在发布页面的最下方,一定要勾选 API,否则无法调用智能体接口!
c. 如果是对接 MaxKB ,则需要修改三个参数: maxkb-server-url 、maxkb-api-key 、maxkb-model 。
在 MaxKB 后台,点击进入你事先创建好的应用,在 "应用信息" 中找到 "API 访问凭据", 下方的 "Base URL",
复制 "Base URL",在它的值后面追加字符串 /chat/completions,最终完整的示例:
http://222.124.14.142:8081/api/application/abbed614-2313-11f0-b414-0242ac110002/chat/completions
d. 如果对接的是dify,需要准备好2个参数: apiKey 和 dify 的接口地址。
3. 修改语音合成设置
登录可视化web管理后台: http://192.168.14.218:8899/ (这里假定服务器的IP地址是: 192.168.14.218,请修改为实际的IP地址)
用户名: admin 密码: admin123 分机: 1001
后台菜单: "基础配置" -> "语音合成设置" -> "阿里云tts参数配置"
修改三个参数字段: access_key_id、app_key、access_key_secret 。
阿里云 access_key_id和access_key_secret设置:
登录阿里云后台,鼠标悬停在页面的右上角,在弹出的个人信息中,选择 "权限与安全" -> "AccessKey",
在弹出的窗口中,选择 "继续使用云账号 AccessKey",最后在页面上点击按钮 "创建AccessKey"。
身份校验通过后,就会创建成功,请把 AccessKey ID 和 AccessKey Secret 下载到本机。
阿里云语音 app_key的设置,参考文章: https://blog.csdn.net/HaaSTech/article/details/120217461
参数修改后,自动生效,无需重启FreeSWITCH程序。
成功获取 access_key_id和access_key_secret以及app_key后,在后台保存设置即可。
4. 修改语音识别设置
easycallcenter365 社区版,默认仅支持 FunAsr 语音识别,无需设置。
商业版用户,可以支持把语音识别模块替换为 阿里云 或者科大讯飞。
如果选择阿里云语音识别,阿里云后台注意设置语音识别参数,在"项目功能配置"中,找到 "语音识别" -> "修改配置",
商业版语音识别模块支持8K/16K采样率,目前可以支持多种方言及东南亚小语种。
5. 大模型配置
后台菜单: "基础配置" -> "大模型配置",点击添加。
DeepSeekV3配置的例子:
名称: 招生机器人 (举例)
实现类:DeepSeekChat
apiKey: sk-3e88fb8159dxxxxxxxxeaf34246e94 (填写为自己的)
服务地址:https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
模型名称:deepseek-v3
大模型提示词:参考百度网盘同目录下的 "提示词/llmTips.txt"
FAQ内容:参考百度网盘同目录下的 "提示词/faq.txt"
转人工提示:请稍后,正在为您转接人工坐席。
挂机提示:欢迎您再次来电咨询,祝您生活愉快,再见!
客户不说话提示:您好,请问在听吗? 能听到到吗
开场白:您好,欢迎致电未来科技大学,请问有什么可以帮到您?
打断开关:打开
打断关键词:学费 专业 住宿 就业 前景 失业 专科 本科 奖学金 助学金 贷款 助学贷款 等一下 等下 等等 等我一下 先停下 听我说 先听我说
忽略打断关键词:呃 哦 哦哦 嗯 嗯嗯 嗯好的 好的 对 对对 是的 明白 啊 这样啊 是这样啊 这样的 您好 你好
客户意向提示词: 参考百度网盘同目录下的 "提示词/customerSortTips.txt"
说明: "客户意向提示词" 是用于客户意向分类的,适用于外呼场景下对客户分类的需求。目前仅支持 DeepSeekV3。
Coze扣子智能体配置的例子:
名称:招生客服测试
实现类:Coze
服务地址:https://api.coze.cn/v3/chat/
botId:7447790819148414985
token类型:pat
patToken:pat_DDFWN3cHvLW3zjcaQsJxxxxxxxvtjgaspyKZNz4CUwMil
转人工提示:请稍后,正在为您转接人工坐席。
挂机提示:欢迎您再次来电咨询,祝您生活愉快,再见!
客户不说话提示:您好,请问在听吗? 能听到到吗
开场白:您好,欢迎致电未来科技大学,请问有什么可以帮到您?
打断开关:关闭
6. 呼入客服配置
后台菜单: "呼叫中心" -> "呼入配置",点击添加。
添加呼入配置号码
大模型底座: 选择在第6步中设置的大模型
音色: 选择语音播报的发音人
被叫号码:654321 (就是呼入号)
服务方式:选择ai或者acd
转人工业务组: 转人工坐席时的业务组
系统支持配置多个呼入号码,不同的呼入号码可以支持使用不同的大模型底座。
7. 呼入客服的测试
在百度网盘的同目录下载 "软电话.zip" 安装包,
使用软电话之前请先安装vc++运行环境 vcredist_x64_2015-2022.exe。
打开软电话注册并测试:
分机号及密码: 1001 123456
注册地址: 192.168.14.218:5080 (请把 192.168.14.218 改为你自己的虚拟机地址)
注册成功后,拨号: 654321
就可以进行智能客服的呼入电话测试了。 在菜单 "呼入记录查询"中,可以查询对话记录和听录音。
一切正常的话,此时应该可以听到语音播报。
如果无法听到语音播报请查看日志进行问题排查。
一般需要查看 easycallcenter365 和 FreeSWITCH 日志。
查看 easycallcenter365 日志: /home/easycallcenter365/logs/easycallcenter365.log
查看 FreeSWITCH 日志: /home/freeswitch/var/log/freeswitch/freeswitch.log
对于linux新手建议把 easycallcenter365.log 和 freeswitch.log 下载到本机方便查看。
8. 机器人外呼配置
首先需要配置外呼线路。
后台菜单: "基础配置" -> "线路配置",点击添加。
a. 添加线路配置
网关名称: test (不支持汉字,请使用英文或者字母)
网关用途: 不限制
profile名称: external
主叫号码:007
网关地址: 192.168.14.201:5080
外呼语音编码: pcma (或者pcmu)
网关名称描述:测试线路
网关最大并发数:1
是否认证注册: 对接模式
使用优先级:1
b. 创建外呼任务
后台菜单: "AI外呼" -> "外呼任务管理",点击添加。
添加外呼任务
任务名称: 测试外呼
任务类型: AI外呼
最大并发: 1
外呼线路: test
大模型底座:招生机器人
音色:艾夏-普通话女生
下载数据导入模板: 在任务类型,一栏的末尾,点击下载模板。 下载AI外呼任务的 Excel 模板。
任务保存后,打开 Excel 模板,编辑待呼叫的号码列表,保存。
在任务列表中,找到刚刚创建的外呼任务,点击"导入数据"按钮, 选择刚编辑的Excel。
注意:如果服务器配置是4c/8g,单次导入的Excel数据不要超过5万条,否则会报错。
如果配置是8c/16g以上,单次正常可以导入10万条数据。
最后:点击 "启动外呼" 按钮,启动任务。
c. 问题排查
日志及问题排查,参考第8步中提到的日志文件路径。
通过菜单 "AI外呼记录",可以查询外呼记录,如果是线路原因导致外呼失败,可以查看 "挂机原因"字段。
d. 数据导出
通过菜单 "AI外呼记录",可以选择外呼任务,导出指定任务的外呼结果。
9. 对接大模型及智能体注意事项
无论是对接Coze还是MaxKB或Dify,请先在网页界面的对话窗口中,把文字对话的流程跑通。
Coze扣子需要充值,请保持有一定账户余额。
由于DeepSeek官方API速度太慢,这里默认使用的是阿里云百炼平台的大模型接口。
10. 其他说明
本一键安装包用于体验测试,实际投产建议部署在阿里云上。
原因如下:
a. 语音合成调用的是阿里云,语音播报延时受网络波动影响;
b. 语音识别,一般也是使用云端,语音识别结果返回的延时也受到网络波动影响;
FunAsr仅限测试使用,语音识别效果比云服务要差,不推荐用于商用;
c. 无论是调用扣子Coze智能体还是DeepSeekV3,使用的都是云端大模型,也会受到网络波动影响。
11. 其他问题汇总
a. 关于电话工具条的设置问题
如果是想把工具条代码集成到自己的业务系统中,请参考easycallcenter365项目主页文档: https://gitee.com/easycallcenter365/easycallcenter365#%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%E8%BD%AC%E5%86%85%E7%BD%AE%E4%BA%BA%E5%B7%A5%E5%9D%90%E5%B8%AD
如果是想测试 easycallcenter365-gui 管理后台的电话工具条,在管理后台找到,参数管理,修改参数: call-center-server-ip-addr ,改为当前服务器的对外IP地址即可。