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

文章目录


群集模式介绍

在大规模的外呼或者呼入系统,比如整个系统需要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
相关推荐
问道飞鱼4 小时前
分布式中间件-Pika一个高效的分布式缓存组件
分布式·缓存·中间件
懒洋洋的华36911 小时前
消息队列-Kafka(概念篇)
分布式·中间件·kafka
happycao1231 天前
kafka 一步步探究消费者组与分区分配策略
中间件·kafka
问道飞鱼2 天前
分布式中间件-redis相关概念介绍
redis·分布式·中间件
苹果酱05672 天前
使用 React Testing Library 测试自定义 React Hooks
java·开发语言·spring boot·后端·中间件
没有名字的小羊2 天前
fastjson漏洞
运维·网络·web安全·中间件
竹等寒2 天前
中间件常见漏洞
android·web安全·网络安全·中间件
problc2 天前
零拷贝技术在现代编程语言和中间件中的应用
中间件
傻傻虎虎2 天前
【系统架构设计】基于中间件的开发
中间件·系统架构
老K(郭云开)3 天前
汉王手写签批控件如何在谷歌、火狐、Edge等浏览器使用
前端·chrome·中间件·edge·创业创新·html5