Deploy.txt 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. 欢迎关注公众号: 呼叫中心之开源技术分享
  2. 后续会陆续有视频教程发布。
  3. 欢迎加入开源社区
  4. 添加微信号: 18556579517
  5. 系统使用及配置演示视频:https://mp.weixin.qq.com/s/05GIFKWtHt6EB0mxgL0BuA
  6. 我们提供了预编译的二进制文件。 百度网盘下载地址: https://pan.baidu.com/s/1xFgMPCu0VKHKnG69QhyTlA 提取码: etv5
  7. 注意:如果是采用预编译的二进制部署方式, 部署之前请把百度网盘中的文件全部下载到本地文件夹。
  8. 然后把文件上传到 linux 服务器目录中,仅支持使用Debian12,推荐下载地址: https://mirrors.163.com/debian-cd/current/amd64/iso-dvd/
  9. 一. Freeswitch部署
  10. 注意:如果你是手动编译的FreeSWITCH,请把编译后的文件打包名为: FreeSWITCH-for-easycallcenter365-1.10.11.zip 后再上传到 linux 目录下。
  11. 在从源代码手动编译的情况下,如果需要docker部署,也需要从前面提到的百度网盘下载docker镜像文件 freeswitch-debian12.5-image.tar。
  12. 环境准备:docker及mysql8的安装
  13. docker 的安装参考文档: https://gitee.com/easycallcenter365/freeswitch-modules-libs/blob/master/docs/zh-cn/Debian12-install-docker.md 。
  14. mysql8 的安装参考文档: https://gitee.com/easycallcenter365/freeswitch-modules-libs/blob/master/docs/zh-cn/Debian12-install-mysql8.md 。
  15. 1. 创建数据库: freeswitch
  16. 导入 freeswitch-1.10.11.sql
  17. 注意这里设置数据库root密码为: easycallcenter365
  18. 2. 导入freeswitch 的docker 镜像
  19. docker load -i freeswitch-debian12.5-image.tar
  20. 3. 部署Freeswitch程序
  21. mkdir /home/freeswitch/
  22. unzip -d /home/freeswitch/ FreeSWITCH-for-easycallcenter365-1.10.11.zip
  23. # 注意去掉多余目录,确保Freeswitch的bin目录位于 /home/freeswitch/下;
  24. 修改Freeswitch的数据库密码:
  25. vim /home/freeswitch/etc/freeswitch/autoload_configs/switch.conf.xml
  26. (<param name="core-db-dsn" value="mariadb://Server=127.0.0.1;Port=3306;Database=freeswitch;Uid=root;Pwd=easycallcenter365;" />)
  27. vim /home/freeswitch/etc/freeswitch/sip_profiles/external.xml
  28. ( <param name="odbc-dsn" value="mariadb://Server=127.0.0.1;Port=3306;Database=freeswitch;Uid=root;Pwd=easycallcenter365;" />)
  29. vim /home/freeswitch/etc/freeswitch/sip_profiles/internal.xml
  30. ( <param name="odbc-dsn" value="mariadb://Server=127.0.0.1;Port=3306;Database=freeswitch;Uid=root;Pwd=easycallcenter365;" />)
  31. vim /home/freeswitch/share/freeswitch/scripts/auth_user.lua
  32. ( local dbh = freeswitch.Dbh("mariadb://Server=127.0.0.1;Port=3306;Database=easycallcenter365;Uid=root;Pwd=easycallcenter365;"))
  33. 请注意:如果你的MySQL和FreeSWITCH不在同一台服务器上,请修改上面的 Server=127.0.0.1 为实际的IP地址。
  34. 这里的MySQL用户名和密码,如果和你的不一样, Uid=root;Pwd=easycallcenter365; 请修改为正确的值。
  35. 4. 创建docker容器
  36. chmod +x /home/freeswitch/bin/*
  37. docker run --log-opt max-size=100m --log-opt max-file=3 \
  38. --ulimit core=-1 --security-opt seccomp=unconfined --privileged=true \
  39. -itd --name freeswitch-debian12 \
  40. -v /home/Records:/home/Records -v /home/freeswitch:/usr/local/freeswitchvideo \
  41. --network=host freeswitch-debian12-image /usr/local/freeswitchvideo/bin/freeswitch_start.sh
  42. 5. 设置容器的时区:
  43. docker cp /usr/share/zoneinfo/Asia/Shanghai freeswitch-debian12:/etc/localtime
  44. 6. 进入Freeswitch控制台
  45. docker exec -it freeswitch-debian12 /usr/local/freeswitchvideo/bin/fs_cli
  46. 查看状态: sofia status (如果显示数量为0说明安装失败,一般是数据库用户名及密码错误导致)
  47. 二. easycallcenter365 的部署
  48. 1. 部署 easycallcenter365.jar
  49. 首先请导入最新的数据库脚本 easycallcenter365.sql。
  50. MySQL创建一个名为 easycallcenter365 的数据库,然后导入 easycallcenter365.sql 文件。
  51. a. 在本地文件夹,修改 easycallcenter365.jar 和 easycallcenter365-gui.jar 的配置文件;
  52. 如果使用的密码是 easycallcenter365 ,则跳过该步骤 b 和 c ;
  53. b. easycallcenter365.jar 中默认设置的MySQL的root密码是 easycallcenter365 ;
  54. 配置文件是:\BOOT-INF\classes\application-uat.properties ;
  55. 可以使用Winrar打开jar包,鼠标拖拽拷贝出该文件,修改后再覆盖该文件。
  56. 注意:修改jar包时,"压缩方式(C)",要选择"存储",否则会导致jar包损坏。
  57. c. easycallcenter365-gui.jar 设置的MySQL的root密码也是 easycallcenter365 ;
  58. 配置文件是: \BOOT-INF\classes\application-pro.yml
  59. 可以参照上一步骤c,使用Winrar打开jar包修改数据库连接密码。
  60. d. 把 easycallcenter365.jar 和 easycallcenter365-gui.jar 文件上传到linux的 /home/easycallcenter365/ 目录下;
  61. mkdir /home/easycallcenter365/
  62. e. 检查java版本:
  63. # java -version
  64. 输出 java version "1.8.0_391"
  65. Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
  66. Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
  67. 如果是OpenJDK,则需要卸载并重新安装 Oracle JDK,
  68. 参考文章:https://gitee.com/easycallcenter365/freeswitch-modules-libs/blob/master/docs/zh-cn/debian12-install-jdk8.md
  69. f. 启动两个jar包程序:
  70. cd /home/easycallcenter365/
  71. nohup java -Dfile.encoding=UTF-8 -jar easycallcenter365.jar > /dev/null 2>&1 &
  72. nohup java -Dfile.encoding=UTF-8 -jar easycallcenter365-gui.jar > /dev/null 2>&1 &
  73. 三. FunASR的部署
  74. 我们提供了 funasr-server 的一键安装包 funASR-0.1.9
  75. 链接: https://pan.baidu.com/s/1Cg1xUcxrsLMaUv8CklFLug 提取码: 4tke
  76. 通过funASR官方文档进行安装,有比较大的安装失败概率。
  77. 下载安装包到本地,然后参考网盘中的文档 "FunAsr-0.1.9-集群离线部署.txt" 进行安装。
  78. 四. 运行设置
  79. 这里假定服务器的IP地址是: 192.168.14.218
  80. 1. 启动服务
  81. docker restart freeswitch-debian12
  82. 【如果前面已经启动了 easycallcenter365.jar 和 easycallcenter365-gui.jar ,这里不需要重复启动! 】
  83. nohup java -Dfile.encoding=UTF-8 -jar easycallcenter365.jar > /dev/null 2>&1 &
  84. nohup java -Dfile.encoding=UTF-8 -jar easycallcenter365-gui.jar > /dev/null 2>&1 &
  85. * 注意事项
  86. 启动 easycallcenter365.jar 和 easycallcenter365-gui.jar 之前,请确保FreeSWITCH和MySQL已经启动,一定注意启动顺序。
  87. 打开 easycallcenter365 日志: tail -f /home/easycallcenter365/logs/easycallcenter365.log
  88. 打开 FreeSWITCH 日志: tail -f /home/freeswitch/var/log/freeswitch/freeswitch.log
  89. 进入 FreeSWITCH 控制台: docker exec -it freeswitch-debian12 /usr/local/freeswitchvideo/bin/fs_cli
  90. * 阿里云主机设置
  91. 如果当前部署是在阿里云上,需要在防火墙中设置相关端口开放。 点击主机实例,找到"安全组",然后点击"管理规则",在访问规则中,
  92. 手动添加以下端口:
  93. ```txt
  94. 自定义TCP 目的: 8899 源: 所有IPV4(0.0.0.0/0) 描述: easycallcenter365-gui
  95. 自定义TCP 目的: 1081 源: 所有IPV4(0.0.0.0/0) 描述: easycallcenter365电话工具条
  96. 自定义UDP 目的: 21002/31002 源: 所有IPV4(0.0.0.0/0) 描述: easycallcenter365电话语音端口
  97. 自定义UDP 目的: 5080 源: 所有IPV4(0.0.0.0/0) 描述: easycallcenter365电话语音呼入端口
  98. ```
  99. 注意:在阿里云上开放公网端口风险较大,社区版用户需要注意安全风险。建议设置IP来源的地址段。
  100. (云端部署的安全防护措施仅对商业版用户提供支持。)
  101. 2. 大模型参数准备
  102. a. 如果您需要对接 DeepSeekV3,请准备好参数 apiKey ;
  103. 注意,easycallcenter365使用的是阿里云百炼平台的大模型接口: https://bailian.console.aliyun.com/ ,
  104. 选择顶部菜单:模型 -> 文本模型 -> 更多模型,选择 deepseek-v3 ,设置好体验对话框之,可以进行在线调试。
  105. 在左下角,"密钥管理"菜单,可以找到API Key。
  106. b 如果您需要对接"扣子Coze智能体", 请准备好 coze-pat-token 和 coze-bot-id 两个参数。
  107. coze-pat-token 参数请在 https://www.coze.cn/open/oauth/pats 后台创建;
  108. 点击右上角的"添加",在添加对话框中,过期时间最长可设置为30天,
  109. 勾选 "Bot管理" -> "chat",接着 "选择指定工作空间",最后点击确定保存,
  110. 创建成功之后,就可以看到令牌的值,复制它, 注意关闭窗口后无法再次看到!
  111. coze-bot-id 参数的值如何查看?
  112. 进入扣子主页,https://www.coze.cn/home ,最近编辑 菜单下面,可以看到最近创建的智能体,
  113. 选择一个智能体并点击进入,在地址栏中就可以看到, 比如:
  114. https://www.coze.cn/space/7367249902209859647/bot/7447790819148414985
  115. 这里的 coze-bot-id 就是 7447790819148414985 。
  116. 特别注意:智能体发布的时候,在发布页面的最下方,一定要勾选 API,否则无法调用智能体接口!
  117. c. 如果是对接 MaxKB ,则需要修改三个参数: maxkb-server-url 、maxkb-api-key 、maxkb-model 。
  118. 在 MaxKB 后台,点击进入你事先创建好的应用,在 "应用信息" 中找到 "API 访问凭据", 下方的 "Base URL",
  119. 复制 "Base URL",在它的值后面追加字符串 /chat/completions,最终完整的示例:
  120. http://222.124.14.142:8081/api/application/abbed614-2313-11f0-b414-0242ac110002/chat/completions
  121. d. 如果对接的是dify,需要准备好2个参数: apiKey 和 dify 的接口地址。
  122. 3. 修改语音合成设置
  123. 登录可视化web管理后台: http://192.168.14.218:8899/ (这里假定服务器的IP地址是: 192.168.14.218,请修改为实际的IP地址)
  124. 用户名: admin 密码: admin123 分机: 1001
  125. 后台菜单: "基础配置" -> "语音合成设置" -> "阿里云tts参数配置"
  126. 修改三个参数字段: access_key_id、app_key、access_key_secret 。
  127. 阿里云 access_key_id和access_key_secret设置:
  128. 登录阿里云后台,鼠标悬停在页面的右上角,在弹出的个人信息中,选择 "权限与安全" -> "AccessKey",
  129. 在弹出的窗口中,选择 "继续使用云账号 AccessKey",最后在页面上点击按钮 "创建AccessKey"。
  130. 身份校验通过后,就会创建成功,请把 AccessKey ID 和 AccessKey Secret 下载到本机。
  131. 阿里云语音 app_key的设置,参考文章: https://blog.csdn.net/HaaSTech/article/details/120217461
  132. 参数修改后,自动生效,无需重启FreeSWITCH程序。
  133. 成功获取 access_key_id和access_key_secret以及app_key后,在后台保存设置即可。
  134. 4. 修改语音识别设置
  135. easycallcenter365 社区版,默认仅支持 FunAsr 语音识别,无需设置。
  136. 商业版用户,可以支持把语音识别模块替换为 阿里云 或者科大讯飞。
  137. 如果选择阿里云语音识别,阿里云后台注意设置语音识别参数,在"项目功能配置"中,找到 "语音识别" -> "修改配置",
  138. 商业版语音识别模块支持8K/16K采样率,目前可以支持多种方言及东南亚小语种。
  139. 5. 大模型配置
  140. 后台菜单: "基础配置" -> "大模型配置",点击添加。
  141. DeepSeekV3配置的例子:
  142. 名称: 招生机器人 (举例)
  143. 实现类:DeepSeekChat
  144. apiKey: sk-3e88fb8159dxxxxxxxxeaf34246e94 (填写为自己的)
  145. 服务地址:https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
  146. 模型名称:deepseek-v3
  147. 大模型提示词:参考百度网盘同目录下的 "提示词/llmTips.txt"
  148. FAQ内容:参考百度网盘同目录下的 "提示词/faq.txt"
  149. 转人工提示:请稍后,正在为您转接人工坐席。
  150. 挂机提示:欢迎您再次来电咨询,祝您生活愉快,再见!
  151. 客户不说话提示:您好,请问在听吗? 能听到到吗
  152. 开场白:您好,欢迎致电未来科技大学,请问有什么可以帮到您?
  153. 打断开关:打开
  154. 打断关键词:学费 专业 住宿 就业 前景 失业 专科 本科 奖学金 助学金 贷款 助学贷款 等一下 等下 等等 等我一下 先停下 听我说 先听我说
  155. 忽略打断关键词:呃 哦 哦哦 嗯 嗯嗯 嗯好的 好的 对 对对 是的 明白 啊 这样啊 是这样啊 这样的 您好 你好
  156. 客户意向提示词: 参考百度网盘同目录下的 "提示词/customerSortTips.txt"
  157. 说明: "客户意向提示词" 是用于客户意向分类的,适用于外呼场景下对客户分类的需求。目前仅支持 DeepSeekV3。
  158. Coze扣子智能体配置的例子:
  159. 名称:招生客服测试
  160. 实现类:Coze
  161. 服务地址:https://api.coze.cn/v3/chat/
  162. botId:7447790819148414985
  163. token类型:pat
  164. patToken:pat_DDFWN3cHvLW3zjcaQsJxxxxxxxvtjgaspyKZNz4CUwMil
  165. 转人工提示:请稍后,正在为您转接人工坐席。
  166. 挂机提示:欢迎您再次来电咨询,祝您生活愉快,再见!
  167. 客户不说话提示:您好,请问在听吗? 能听到到吗
  168. 开场白:您好,欢迎致电未来科技大学,请问有什么可以帮到您?
  169. 打断开关:关闭
  170. 6. 呼入客服配置
  171. 后台菜单: "呼叫中心" -> "呼入配置",点击添加。
  172. 添加呼入配置号码
  173. 大模型底座: 选择在第6步中设置的大模型
  174. 音色: 选择语音播报的发音人
  175. 被叫号码:654321 (就是呼入号)
  176. 服务方式:选择ai或者acd
  177. 转人工业务组: 转人工坐席时的业务组
  178. 系统支持配置多个呼入号码,不同的呼入号码可以支持使用不同的大模型底座。
  179. 7. 呼入客服的测试
  180. 在百度网盘的同目录下载 "软电话.zip" 安装包,
  181. 使用软电话之前请先安装vc++运行环境 vcredist_x64_2015-2022.exe。
  182. 打开软电话注册并测试:
  183. 分机号及密码: 1001 123456
  184. 注册地址: 192.168.14.218:5080 (请把 192.168.14.218 改为你自己的虚拟机地址)
  185. 注册成功后,拨号: 654321
  186. 就可以进行智能客服的呼入电话测试了。 在菜单 "呼入记录查询"中,可以查询对话记录和听录音。
  187. 一切正常的话,此时应该可以听到语音播报。
  188. 如果无法听到语音播报请查看日志进行问题排查。
  189. 一般需要查看 easycallcenter365 和 FreeSWITCH 日志。
  190. 查看 easycallcenter365 日志: /home/easycallcenter365/logs/easycallcenter365.log
  191. 查看 FreeSWITCH 日志: /home/freeswitch/var/log/freeswitch/freeswitch.log
  192. 对于linux新手建议把 easycallcenter365.log 和 freeswitch.log 下载到本机方便查看。
  193. 8. 机器人外呼配置
  194. 首先需要配置外呼线路。
  195. 后台菜单: "基础配置" -> "线路配置",点击添加。
  196. a. 添加线路配置
  197. 网关名称: test (不支持汉字,请使用英文或者字母)
  198. 网关用途: 不限制
  199. profile名称: external
  200. 主叫号码:007
  201. 网关地址: 192.168.14.201:5080
  202. 外呼语音编码: pcma (或者pcmu)
  203. 网关名称描述:测试线路
  204. 网关最大并发数:1
  205. 是否认证注册: 对接模式
  206. 使用优先级:1
  207. b. 创建外呼任务
  208. 后台菜单: "AI外呼" -> "外呼任务管理",点击添加。
  209. 添加外呼任务
  210. 任务名称: 测试外呼
  211. 任务类型: AI外呼
  212. 最大并发: 1
  213. 外呼线路: test
  214. 大模型底座:招生机器人
  215. 音色:艾夏-普通话女生
  216. 下载数据导入模板: 在任务类型,一栏的末尾,点击下载模板。 下载AI外呼任务的 Excel 模板。
  217. 任务保存后,打开 Excel 模板,编辑待呼叫的号码列表,保存。
  218. 在任务列表中,找到刚刚创建的外呼任务,点击"导入数据"按钮, 选择刚编辑的Excel。
  219. 注意:如果服务器配置是4c/8g,单次导入的Excel数据不要超过5万条,否则会报错。
  220. 如果配置是8c/16g以上,单次正常可以导入10万条数据。
  221. 最后:点击 "启动外呼" 按钮,启动任务。
  222. c. 问题排查
  223. 日志及问题排查,参考第8步中提到的日志文件路径。
  224. 通过菜单 "AI外呼记录",可以查询外呼记录,如果是线路原因导致外呼失败,可以查看 "挂机原因"字段。
  225. d. 数据导出
  226. 通过菜单 "AI外呼记录",可以选择外呼任务,导出指定任务的外呼结果。
  227. 9. 对接大模型及智能体注意事项
  228. 无论是对接Coze还是MaxKB或Dify,请先在网页界面的对话窗口中,把文字对话的流程跑通。
  229. Coze扣子需要充值,请保持有一定账户余额。
  230. 由于DeepSeek官方API速度太慢,这里默认使用的是阿里云百炼平台的大模型接口。
  231. 10. 其他说明
  232. 本一键安装包用于体验测试,实际投产建议部署在阿里云上。
  233. 原因如下:
  234. a. 语音合成调用的是阿里云,语音播报延时受网络波动影响;
  235. b. 语音识别,一般也是使用云端,语音识别结果返回的延时也受到网络波动影响;
  236. FunAsr仅限测试使用,语音识别效果比云服务要差,不推荐用于商用;
  237. c. 无论是调用扣子Coze智能体还是DeepSeekV3,使用的都是云端大模型,也会受到网络波动影响。
  238. 11. 其他问题汇总
  239. a. 关于电话工具条的设置问题
  240. 如果是想把工具条代码集成到自己的业务系统中,请参考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
  241. 如果是想测试 easycallcenter365-gui 管理后台的电话工具条,在管理后台找到,参数管理,修改参数: call-center-server-ip-addr ,改为当前服务器的对外IP地址即可。