呼叫中心开源社区专栏第一篇 - 详解

news/2025/9/26 14:11:53/文章来源:https://www.cnblogs.com/lxjshuju/p/19110984

呼叫中心源代码开源社区专栏第一篇

一次性或一篇文章就能全部写完的,在此分为多个篇章来逐步介绍。就是关于呼叫中心源代码开源社区专栏,我一直想要写这一专栏,最近终于有了时间,静下心来把呼叫中心开源贡献给大家,鉴于呼叫中心本身的特殊性,也不

呼叫中心源代码开源社区如下:

国内gitcode呼叫中心开源社区

全球github呼叫中心开源社区


前言

呼叫中心源码开源第一篇从freeswitch开始着手,freeswtich作为目前开源的软交换系统,代替了以前的AVAYA\ALCATEL 等系统的硬件设备,已经成为目前主流的软交换系统。本篇主要介绍如何编译freeswtich和运行freeswtich,目的是首先把freeswtich给跑起来。只有先把freeswitch跑起来后,后面的章节中再介绍如何控制freeswitch,从而实现我们的呼叫中心功能。


什么?就是一、freeswitch

在这里简单介绍一下freeswitch,freeswtich就是基于IP的一套软交换框架,负责信令的接入与交换,简单点说就是电话的接入与电话的转接等操作,关于freeswitch的文章介绍非常多,读者行自行先去搜索,这里就不细讲了,我们就直接转入到以下正题。

二、编译的系统环境

本篇主要介绍在以下操作系统中编译,
1、阿里的Anolis OS 8(龙蜥操作系统,国内开源免费系统兼容centos)
2、centos 7(此体系目前已停止维护,可选择阿里的Anolis OS系统,好处是阿里的此系统无缝对接centos)

三、freeswtich安装包

若对freeswitch源码编译感觉比较费时的读者,可直接应用已经编译好的freeswitch安装包,点击以下网址有详细说明介绍:

国内开源社区gitcode获取freeswitch安装包

全球开源社区github获取freeswitch安装包

四、freeswitch下载

网址:http://files.freeswitch.org/freeswitch-releases/
本篇下载的版本为:freeswitch-1.10.5.-release.tar.gz

下载fs的指定版本至 /usr/local/src/目录下
在这里插入图片描述

五、安装依赖环境

在命令行中依次执行以下安装命令:
yum install -y git alsa-lib-devel autoconf automake bison broadvoice-devel bzip2 curl-devel libdb4-devel e2fsprogs-devel erlang flite-devel g722_1-devel gcc-c++ gdbm-devel gnutls-devel ilbc2-devel ldns-devel libcodec2-devel libcurl-devel libedit-devel libidn-devel libjpeg-devel libmemcached-devel libogg-devel libsilk-devel libsndfile-devel libtheora-devel libtiff-devel libtool libuuid-devel libvorbis-devel libxml2-devel lua-devel lzo-devel mongo-c-driver-devel ncurses-devel net-snmp-devel openssl-devel opus-devel pcre-devel perl perl-ExtUtils-Embed pkgconfig portaudio-devel postgresql-devel python-devel python-devel soundtouch-devel speex-devel sqlite-devel unbound-devel unixODBC-devel wget which yasm zlib-devel libshout-devel libmpg123-devel lame-devel

yum install autoconf automake postgresql-devel libtool gcc gcc-c++ libtiff libtiff-devel libjpeg-devel openssl-devel

yum install libuuid-devel yasm nasm sqlite-devel libcurl-devel speex-devel ldns-devel libedit-devel lua-devel libsndfile-devel

sudo yum install speexdsp-devel

六、安装freeswitch

1.解压下载的freeswitch

在下载的freeswitch处(/usr/local/src/目录下),解压freeswitch,执行以下命令:
tar zxvf freeswitch-1.10.5.-release.tar.gz

2、配置

进入freeswtich的解压目录,分别执行以下操作:
./rebootstrap.sh
./configure

因为操作系统有很多依赖文件不存在,要求自行下载安装。就是在执行以上命令时,可能会报很多错,那
我在这里把我在配置过程中出现的错误(每个人出现的错误,可能不一定一样),罗列如下,以供参考:

执行./configure遇到的挑战
(1)、缺少C++编译器
在执行./configure中,有可能会提示缺少c++的编译器。这时候需要先安装c++编译器,这里选择gcc

yum -y install gcc
yum -y install gcc-c++

(2)、
得安装spandsp3和sofia-sip
在执行./configure中,遇到类似下图的错误
在这里插入图片描述
安装spandsp,第一从git上下载https://github.com/freeswitch/spandsp.git。然后执行
进入 /usr/local/src/目录下
命令:git clone https://github.com/freeswitch/spandsp.git
在这里插入图片描述

Git命令未知如下图,需要安装git
在这里插入图片描述

yum install -y git
在这里插入图片描述

Git安装好之后,再次git clone https://github.com/freeswitch/spandsp.git

进入刚下载的spandasp目录
在这里插入图片描述
依次执行以下命令:
./bootstrap.sh -j
./configure
make
make install
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:${PKG_CONFIG_PATH}
ldconfig
继续安装freeswitch
在这里插入图片描述

我在执行./bootstrap.sh -j还是报错,意思是缺少libtoolize,这个我们还需安装libtool

yum install libtool
接着执行./configure时分别报缺少libtiff-devel和libjpeg-devel,因此大家又需要安装

yum install libtiff-devel
yum install libjpeg-devel

出现需要安装sofia-sip错误时
在这里插入图片描述
接着安装sofia-sip,首先下载源码https://github.com/freeswitch/sofia-sip.git,之后执行:
命令:git clone https://github.com/freeswitch/sofia-sip.git
进入刚下载的sofia-sip目录
cd /usr/local/src
git clone https://github.com/freeswitch/sofia-sip.git
cd /usr/local/src/sofia-sip
./bootstrap.sh -j
./configure
make
make install
ldconfig

问题:
Cmake 未安装
在这里插入图片描述

下载cmake并进行编译安装,在/usr/local/src目录下执行
wget https://cmake.org/files/v3.14/cmake-3.14.0.tar.gz
在这里插入图片描述

tar vzxf cmake-3.14.0.tar.gz
在这里插入图片描述

cd cmake-3.14.0
./configure
make -dj
make install
(3)、配备成功:
如下图所示,表示freeswitch就配置成功了。
在这里插入图片描述

3、编译Make

我出现的错误,我把这些错误整理出来,以供大家参考:就是在命令行中执行make 命令,可能会出现以下的错误,以下
(1)、问题1:Neither yasm nor nasm have been found.
第一步:yasm --version(先检查版本)
根据提示安装yasm,
在这里插入图片描述
第二步:安装 nasm
sudo yum install nasm
在这里插入图片描述
(2)、问题2:
Make过程中,报错:
libtool: Version mismatch error. This is libtool 2.4.6 Debian-2.4.6-2, but the
libtool: definition of this LT_INIT comes from libtool 2.4.2.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4.6 Debian-2.4.6-2
libtool: and run autoconf again.
CC src/libfreeswitch_la-switch_core_cert.lo
make[1]: *** [src/libfreeswitch_la-switch_apr.lo] 错误 63
make[1]: *** 正在等待未搞定的任务…
解决办法:
Freeswitch源码目录下执行命令:autoreconf –fiv
若仍然报错:autoreconf: ‘configure.ac’ or ‘configure.in’ is required
Freeswitch源码目录下执行命令:autoreconf –fiv -i
即可
或再执行:autoreconf -fiv
(3)、问题3:
You must install libavformat-dev to build mod_av. Stop.
在这里插入图片描述
解决办法:
通过备注:能够不应该mod_av了,此模块已经被最新版本freeswitch删除,因为已经被webRTC代替了。
解决办法:在modules.conf中注释掉mod_av,fs再重新开始编译。(modules.conf位于源代码目录下,见后面mod_opus问题处)

(4)、问题4:
You must install libopus-dev to build mod_opus. Stop
在这里插入图片描述
解决办法:
在这里插入图片描述
在这里插入图片描述
注释掉opus,fs重新开始编译

(5)、问题5:
You must install libks to build mod_signalwire. Stop.
在这里插入图片描述
解决办法:
1)安装 libks(signalwire的依赖项)
yum install libuuid-devel libatomic
wget https://github.com/signalwire/libks/archive/refs/tags/v1.8.2.tar.gz
(上述解压出来的文件夹为libks1.8.2)
cd libks
cmake . (备注:cmake后面有一个. 若提示cmake command not find,说明cmake未安装,按照后面步骤安装cmake .)
make
make install

安装完毕后,freeswitch源码再从 reboot, configure, make再执行一次。

(6)、问题6:
Cmake 未安装
在这里插入图片描述
下载cmake并进行编译安装,在/usr/local/src目录下执行
wget https://cmake.org/files/v3.14/cmake-3.14.0.tar.gz
在这里插入图片描述
tar vzxf cmake-3.14.0.tar.gz
在这里插入图片描述
cd cmake-3.14.0
./configure
make
make install

(7)、难题7:
You must install signalwire-client-c to build mod_signalwire.
在这里插入图片描述
解决办法:
wget https://github.com/signalwire/signalwire-c/archive/refs/tags/1.3.0.tar.gz
tar zxvf signalwire-c-1.3.0.tar.gz
cd signalwire-c-1.3.0
cmake .
make
sudo make install
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig:${PKG_CONFIG_PATH}
sudo ldconfig
freeswitch再次重新编译:./rebootstrap.sh && ./configure && make

(8)、问题8:
编译mod_spandsp报错
查看编译的日志,如下:
在这里插入图片描述

在这里插入图片描述
解决办法:
原因:
由于FreeSwitch依赖spandsp,而spandsp库在不断更新和提交,于是出现版本不兼容的挑战。
解决方式:
回退到匹配版本。

git clone https://github.com/freeswitch/spandsp.git
cd spandsp
#切换到2023年07月05的分支版本,如下:
git checkout -b finecode20230705 0d2e6ac65e0e8f53d652665a743015a88bf048d4
./bootstrap.sh -j
./configure
make
make install

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:${PKG_CONFIG_PATH}
ldconfig

freeswitch再次重新编译:./rebootstrap.sh && ./configure && make

编译成功:(如下图所示)
编译成功:freeswitch has been successfully built
在这里插入图片描述

4、安装 make install

在命令行中执行命令:make install
安装成功,如下图所示:
在这里插入图片描述

七、运行freeswitch

在 /usr/local/freeswitch/bin目录下,
运行 ./freeswitch -nonat
freeswitch运行成功,如下图所示:
在这里插入图片描述

总结

通过以上选择直接利用freeswtich安装包或freeswitch源码编译两种方式,读者按照我们第一篇的讲解和操作,经过自己的努力,应该就把freeswtich软交换系统搭建起来了。

若还有任何问题、疑问可进入以下开源社区找到您的答案

国内gitcode呼叫中心开源社区

全球github呼叫中心开源社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/916971.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

完整教程:【设计模式】适配器模式

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

北京网站建设方案系统网络平台代理

1.首先创建boot分区(200M即可) boot分区作为linux启动相关信息的存储介质,不论boot分区什么时候,它都会排在整个硬盘的起始段,方便系统启动获取相关信息,用户尽量不去更改boot分区的挂载点顺序。 2.接着创建swap分区(应…

原核表达可溶性蛋白难题破解

原核表达可溶性蛋白难题破解在生物医药、疫苗研发、结构生物学和酶工程等领域,重组蛋白的表达与纯化是基础性技术之一。其中,原核表达系统因其高效、成本低廉而成为研究和工业生产中的首选平台。然而,如何获得高可溶…

深入解析:Adobe Fresco下载教程Adobe Fresco 2025保姆级安装步骤(附安装包)

深入解析:Adobe Fresco下载教程Adobe Fresco 2025保姆级安装步骤(附安装包)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fa…

做外贸网站信息怎么让网站收录

一级缓存 Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言。所以在参数和SQL完全一样的情况下,我们使用同一个SqlSession对象调用一个Mapper方法,往往只执…

如何向搜索引擎提交网站seo 网站改版

一、projecrion函数 题目:projecrion函数中的第一个参数fov和第二个参数ratio参数进行实验。看能否搞懂它们是如何影响透视平截头体的。 当ratio不变,fov值变大,显示的物体会变小;当fov不变,radio值变大,…

Torch中的tensor size

本文重点介绍了一下如何在PyTorch中去计算一个高维tensor的大小,也就是元素的总数。在其他框架中我们需要使用size函数来获取,而在PyTorch框架中这个接口被调整为numel,本文给出了两个具体代码示例。技术背景 其实对…

深入解析:贪心算法之船舶装载问题

深入解析:贪心算法之船舶装载问题pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&…

Codeforces 1053 (Div.2)

Codeforces 1053 (Div.2)Codeforces 1053 (Div.2) C. Incremental Stay 题意: 有n个人,存在2*n个时刻,分配这2n个时刻给予n个人进出的时间,输出当博物馆容量为(1-n)时,这些人呆在博物馆的总时长最大值 思路: 对于\…

抗体药物偶联物(ADCs)生物分析:拆解 “靶向导弹” 体内轨迹的核心技术

在肿瘤治疗领域,抗体药物偶联物(ADCs)堪称 “精准导弹”—— 凭借抗体的靶向性将细胞毒性载荷递送至肿瘤细胞,既突破了传统化疗的非特异性毒性,又解决了部分抗体药物疗效不足的问题。截至 2024 年,全球已有十余款…

深入解析:文献阅读 | iMetaMed | FigureYa:一个标准化可视化框架,用于增强生物医学数据解释和研究效率

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

spring boot方案利用Torna生成在线接口文档

spring boot方案利用Torna生成在线接口文档pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

C#关键字 unchecked与checked - 教程

C#关键字 unchecked与checked - 教程2025-09-25 12:22 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !im…

做营销型网站的教程网站建设方案论文1500

6,BGP的基本配置 1,BGP建邻的基本关系 1,EBGP对等体关系直接建邻 [r1]bgp 1----启动BGP进程---后面的1不是进程号,而是配置路由器所在AS的AS号 [r1-bgp] [r1-bgp]router-id 1.1.1.1---配置RID [r1-bgp]peer 12.0.0.2 as-number-…

网站建设分析徐州整站优化

shell的模拟实现 我们知道shell是一个永不退出的程序,所以他应该是一个死循环,并且shell为了防止影响到自己,我们在命令行上输入的所有命令都是由shell的子进程来执行的,所以它应该要有创建子进程的相关函数,当然也会…

网站外链建设工作计划建站合作

第3部分 hashCode() 的作用 hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。 hashCode() 定义在JDK的Object.java中,这就意味着Java中的任何类都包含有hashCo…

详细介绍:微服务的适用边界:从金融科技到量子计算的架构哲学

详细介绍:微服务的适用边界:从金融科技到量子计算的架构哲学pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Con…

静态网站可以做哪些wordpress有后端吗

一.选择题 1、适宜采用inline定义函数情况是(C) A. 函数体含有循环语句 B. 函数体含有递归语句‘、考科一 ’ C. 函数代码少、频繁调用 D. 函数代码多、不常调用 2、假定一个函数为A(int i4, int j0) {;}, 则执行“A (1);”语句后&#xff0c…

网站开发招标参数学校网站建设的应用意义案例

来源:SpringBoot 那些天生自带 Buff 的工具类,你用过几个? 断言 断言是一个逻辑判断,用于检查不应该发生的情况 Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions开启 SpringBoot 中提供了 Assert …

不用js可以做网站吗网站建设费应开具互联网信息服务吗

本文主要向大家介绍了MySQL数据库之在CentOS7上安装MySQL5.7 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。获取RPM包# wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm列出RPM包里都有哪些文件# rpm -q…