经常有人问我,你的顶顶通呼叫中心中间件(mod_cti)模块支持多租户吗,每次我都难于一句话描述清楚这个问题,因为我不知道问的是哪种多租户。
我们搜索引擎搜索"FreeSWITCH 多租户" 关键词,得到的大部分是FreeSWITCH 多域配置的说明,也就是FreeSWITCH可以把分机,sofia profile,拨号方案 划分成多个不同的域,每个域完全独立的,类似于虚拟机,一个主机里面搞多个不同的虚拟机,或者docker这样的虚拟环境。也就是一个租户有单独的SIP端口,单独的拨号方案,单独的数据库。 曾经我做也想把CTI模块对多租户的支持搞成这样。可是这样真的好吗?
我们做软件最怕的就是个性化需求,各种定制,最喜欢的就是标准化的东西。独立的SIP端口,独立的拨号方案,独立的数据库,这样搞出来的多租户,不就是一套套个性化定制吗,难于维护,升级麻烦,不方便管理。
多租户需求其实是一套系统,需要支持不同的公司共用,就是做saas服务。saas优点就是软件标准化,维护简单。那么FreeSWITCH 配置多域来实现saas需求是不是根本不符合客户要求? 所以每次我都要解析半天说清楚FreeSWITCH多域的含义,建议客户不要这样做。
顶顶通呼叫中心中间件(mod_cti)模块建议的实现多租户的方法是,分机号,网关名,线路线路组名,外呼队列名字,ACD排队名字前面X位标识租户ID,然后在分机、网关名、线路线路组名、外呼队列添加变量标识租户名字。拨号方案根据租户信息模板的方式,让不同的租户走一套拨号方案。由业务系统通过租户ID或者租户名字区分信息。