| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358 |
- 欢迎关注公众号: 呼叫中心之开源技术分享
- 后续会陆续有视频教程发布。
- 欢迎加入开源社区
- 添加微信号: 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
- (<param name="core-db-dsn" value="mariadb://Server=127.0.0.1;Port=3306;Database=freeswitch;Uid=root;Pwd=easycallcenter365;" />)
- vim /home/freeswitch/etc/freeswitch/sip_profiles/external.xml
- ( <param name="odbc-dsn" value="mariadb://Server=127.0.0.1;Port=3306;Database=freeswitch;Uid=root;Pwd=easycallcenter365;" />)
- vim /home/freeswitch/etc/freeswitch/sip_profiles/internal.xml
- ( <param name="odbc-dsn" value="mariadb://Server=127.0.0.1;Port=3306;Database=freeswitch;Uid=root;Pwd=easycallcenter365;" />)
- 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地址即可。
-
-
-
|