欢迎关注公众号: 呼叫中心之开源技术分享 后续会陆续有视频教程发布。 欢迎加入开源社区 添加微信号: 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地址即可。