顶顶通呼叫中心中间件-群集模式配置

文章目录


群集模式介绍

在大规模的外呼或者呼入系统,比如整个系统需要1万并发,单机最高也就3000-5000并发,这时候就需要多机群集了。顶顶通呼叫中心中间件使用的是 redis 数据库,将多个FreeSWITCH(mod_cti)连接到同一个redis,这样就可以很容易的配置成群集系统。


联系我们

有意向了解呼叫中心中间件的用户,可以点击该链接添加工作人员的微信:顶顶通小何


提示:以下是本篇文章正文内容,下面案例可供参考


配置流程

  1. 打开需要群集的 Freeswitch 的配置文件cti.json ,文件路径:/ddt/fs/conf/:修改Redis部分,使需要集群的 Freeswitch连接到同一个 Redis中。具体配置如图所示:

  2. 修改 Freeswitch 的域名:Freeswitch 的域名设置在配置文件cti.conf.xml中,路径:/ddt/fs/conf/autoload_configs/。需要将群集的 Freeswitch 的域名设置成一样的,设置完成后重启 Freeswitch:

  3. 配置拨号方案:

    • 创建一个json文件,把以下的内容放进json文件中,并保存。然后其中一个 CCAdmin,切换到 拨号方案页面导入该 json 文件:
json 复制代码
{
    "version": 2,
    "cti_dialplan_extension": {
        "群集分机": "{\"condition\":[{\"field\":\"${sip_h_X-cti_dialer_number}\",\"action\":[{\"application\":\"export\",\"data\":\"nolocal:sip_invite_req_uri=sip:${sip_h_X-cti_dialer_number}@$${local_ip_v4}\"}],\"expression\":\".+\",\"break\":\"never\"},{\"field\":\"\",\"action\":[{\"application\":\"export\",\"data\":\"process_cdr=false\"},{\"application\":\"bridge\",\"data\":\"user\\\/${destination_number}\"}]}]}"
    }
}
  1. 创建名为"cluster"的呼叫路由,然后在该呼叫路由中启用"群集分机"这一拨号方案。具体操作如图所示:

  2. 创建名为"cluster"的 SIP,然后根据下方所给的配置方案在该SIP中进行修改:

    • 呼叫路由:cluster
    • sip-port:$${cluster_port}
    • sip-ip:$${local_ip_v4}
    • rtp-ip:$${local_ip_v4}
    • apply-inbound-acl:cluster
    • disable-register::true
    • auth-calls:false
    • auth-calls-acl-only:false
  3. 修改配置文件acl.confvars

    • acl.conf 配置文件修改如图所示:
    • vars 配置文件修改如图所示:
  4. 在需要群集的不同 Freeswitch 的路径中:/ddt/fs/conf/,创建一个名为private_vars.xml的文件,然后把以下内容保存到该文件中:

    以下内容说明:

    • 如果当前 Freeswitch 需要公网使用sip服务,就把内容中的本机外网IP替换成公网IP;如果只是纯内网使用,则把内容中的本机外网IP替换成$${local_ip_v4}
    • 如果cluster的SIP配置是:sip-ip:$${local_ip_v4},就把第三行内容删除;但如果cluster的SIP配置是:sip-ip:233.22.12.32这种配置了具体IP的,则根据第三行内容提示,设置成互通的IP
XML 复制代码
<include>
  <X-PRE-PROCESS cmd="set" data="external_ip=本机外网IP"></X-PRE-PROCESS>
  <X-PRE-PROCESS cmd="set" data="cluster_ip=如果群集互通用的profile配置sip-ip是$${local_ip_v4},这个配置删除,如果是单独IP,这里设置互通IP"></X-PRE-PROCESS>
</include>
  1. 重启 Freeswitch,然后打开 CCAdmin ,验证群集模式是否配置成功的方法,如图所示:
    如果点击后没有出现多个 Freeswitch,首先查看主机名是否是一样的。主机名相同的话,是无法显示多个 Freeswitch 的。修改服务器主机名的方法可参考:修改服务器主机名的方法

群集模式下呼叫

在群集系统中,转接分机是最棘手的问题,因为分机一般只注册到一个FreeSWITCH上面。顶顶通呼叫中心中间件把分机注册信息和当前通话信息存储到redis里面,转接分机的时候,从redis中获取分机注册的FreeSWITCH ip,然后把呼叫转给这个FreeSWITCH,这样分机只需要注册到群集中的任意一个FreeSWITCH,就可以接听群集中的所有FreeSWITCH的来电了。

转接流程: 呼叫分机1000

  • 判断分机1000注册在哪个FS
  • 如果注册在本机直接呼叫1000 (拨号串 user/1000 )
  • 如果注册到其他fs, 呼叫1000送到指定fs(拨号串 sofia/cluster/1000@fsip)
  • 1000实际注册的fs接收到呼叫1000的请求,执行呼叫1000

线路配置

  • 单机版本使用 拨号串配置为 user/120
  • 群集版本 拨号串配置为 cluster/120
相关推荐
ASKCOS2 小时前
DeerFlow Agent 中间件架构:用插件化链彻底告别 Agent 继承式开发
中间件·架构
阿昌喜欢吃黄桃17 天前
RocketMq事务消息原理
java·中间件·消息队列·rocketmq·mq
半夜修仙18 天前
延迟队列的介绍及常见问题
java·数据库·中间件·rabbitmq
手握风云-18 天前
一条消息的旅程:RabbitMQ 学习与实践(一)
中间件·rabbitmq
RH23121119 天前
2026.6.8Linux
java·数据库·中间件
理人综艺好会20 天前
双Token机制在实际项目中的应用与实践
中间件·token
番茄去哪了20 天前
神领物流面试题(一)
java·大数据·中间件
念何架构之路20 天前
消息中间件
中间件
都说名字长不会被发现20 天前
Spring Boot Starter 中间件账号密码加密方案设计与实现
java·spring boot·后端·中间件
瀚高PG实验室21 天前
java中间件无法连接数据库
java·数据库·中间件·瀚高数据库