作为对Asterisk
和FreeSWITCH
等开源PBX项目不熟悉的人,我正在努力解决一些信息过载问题。已阅读Wiki上的基本FreeSWITCH文档,但仍然没有什么问题。由于我对术语不太熟悉,我将尽量使用近似值。
尝试创建FreeSWITCH的小/简约版本,需要在相当旧的笔记本电脑上运行(Celeron 1GHz,512MB RAM,20GB HDD,已经运行Debian“Wheezy”),并将其设置为6端口GSM-SIP / Jabber网关。因此,通过“小”和“简约”,我的意思是没有绝对必要的模块/可选软件(例如,不需要IVR公告或Skype集成) - 以保持最小的内存占用,以及占用较少的硬盘空间。
粗略的想法是向公共电话网络提供6个GSM端口(通过'GSM开放模块',类似于chan_dongle),以及大约60个SIP扩展,并支持最多6个涉及GSM端口的呼叫,以及大约6个SIP-在此设置上进行SIP呼叫(PBX内部)。我已经读过GSMopen模块的CPU开销很低,所以我猜这是可能的。
答案 0 :(得分:4)
有人可以证实这是一个现实的目标吗?
是的,这很现实。您需要尽可能少地进行转码,因为这是需要CPU资源的地方。但即使使用1Ghz赛扬,6个转码会话似乎也很现实。但它需要测试:))
为简约构建选择的最小模块集可能是什么?
刚开始使用默认的模块列表,并添加gsmopen(我没有gsm网关的经验,对该部分无能为力)。内存占用量非常低,稍后您可能需要其中一些模块。
对于在初始构建期间未选择的模块,可以在以后添加吗?
据我记得,Wiki描述了这个过程。您编辑modules.conf并创建特定模块。
是否粗略估计这种配置可能支持的最大呼叫率?对于SIP-SIP呼叫?鉴于处理器功能不足,内存很小(按照现代标准),我猜两者都是瓶颈,但增加RAM可能仍然是可能的(即使成本高昂且困难)。
这实际上取决于拨号方案的复杂程度。每个上下文都包含许多条件,这些条件正在对通道变量进行正则表达式匹配。因此,您的拨号方案越复杂,您获得的CPS就越少。但对于6通道网关,我不认为这是一个问题。 GSM网络将比您的盒子慢得多:)
我已经读过可以使用Lua / Python / Java等创建“钩子”。但是,如果有人分享了很少使用这种钩子可以实现什么的例子,那么这将使概念更加清晰。是否可以使用这些钩子编写“未接来电日志”或“无应答时重定向”等应用程序?
您可以使用FreeSWITCH控制FreeSWITCH行为的各个方面。甚至有一些例子可以通过外部程序重新实现完整的拨号方案(Kazoo就是这样)。
最简单的操作方式是从拨号方案中启动Lua / JS / Perl / Python脚本:然后它会收到一个“会话”对象,你可以通过调用做任何你想做的事:播放声音,桥接,前进,打新电话并将它们连接在一起,等等。 Here in my blog有一个实际的例子。
然后,您可以构建一个连接到FS套接字的外部应用程序,并监视事件并对活动呼叫执行操作。
此外,它可以在相反的方向完成:运行服务器,FS通过其套接字库连接到它。
此外,您可以使用HTTP服务向FreeSWITCH提供XML配置,并在每次调用时请求这些服务(这将是CPU占用最多的应用程序)。这样,您可以从某个内部数据库提供FS,并构建容错系统。
我希望这有帮助:) 如果需要,你也可以用Skype找到我。
答案 1 :(得分:1)
FreeSWITCH并不是真正需要内存的,你可以简单地从默认的模块开始(最好是使用预构建的Debian软件包)。例如,在我的64位机器上,FreeSWIITH进程仅占用35MB内存。
freeswitch@vx03:~$ uname -a
Linux vx03 2.6.32-5-xen-amd64 #1 SMP Thu Nov 3 05:42:31 UTC 2011 x86_64 GNU/Linux
freeswitch@vx03:~$ ps -p 11873 v
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
11873 ? S<l 10:29 0 0 258136 36852 2.3 /opt/freeswitch/bin/freeswitch -nc -rp -nonat -u freeswitch -g freeswitch
我今天晚些时候会回答你的其他问题