天天看点

《 FreeSWITCH权威指南》——3.4 FreeSWITCH用作软电话

本节书摘来自华章计算机《 freeswitch权威指南》一书中的第3章,第3.4节,作者:杜金房 张令考 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

也可以把freeswitch简单地用作一个软电话(可以看作用freeswitch做了一个x-lite)。虽然相比而言,freeswitch比配置x-lite略微复杂一些,但你会从中得到更多好处:freeswitch是开源的,更强大、灵活。关键是它是目前笔者所知道的唯一支持celt高清通话的软电话。

freeswitch使用mod_portaudio模块支持你本地的音频设备,该模块默认是不编译的。在你的源代码目录下执行如下命令,以安装该模块:

其他的模块也可以依照上面的方式进行重新编译和安装。安装完成后到控制台中执行:

如果得到“cannot find an input device”之类的错误,则可能是你的声卡驱动有问题。如果是提示“+ok”就是成功了。接着执行pa devlist命令,可以看到如下输出:

以上是笔者的笔记本电脑上的输出,它列出了所有的声音设备。其中,3和4最后的“o”和“i”分别代表声音输出(out)和输入(in)设备。在你的电脑上可能不一样,如果你想选择其他设备,可以使用命令进行修改。例如下列命令可以选择使用笔者电脑上内置的麦克风和耳机:

至此你就有了一个可以用命令行控制的软电话了。尝试输入以下命令:

如上所示,你可以呼叫刚才试过的所有号码。现在假设想从sip分机1000呼叫到你,那么需要修改拨号计划(dialplan)。用你喜欢的编辑器编辑以下文件并放到conf/dialplan/default/portaudio.xml中:

然后,在控制台中按f6或输入以下命令使之生效:

在分机1000上呼叫me或12345678(你肯定想为自己选择一个更酷的号码),然后在控制台上应该能看到类似[debug] mod_portaudio.c:268 brrrring! brrrring! call 1的输出(如果看不到,按f8能得到详细的log),这说明你的软电话在振铃。多按几个回车,然后输入pa answer就可以接听电话了。输入pa hangup可以挂断电话。

当然,你肯定希望在振铃时能听到真正的振铃音而不是看什么brrrrring。好办,选择一个好听的声音文件(wav格式),编辑conf/autoload_configs/portaudio.conf.xml,将ring-file一行修改为下面的样子,其中,value指定你的声音文件的路径:

然后重新加载模块:

再打打试试,看是否能听到振铃音了?

如果你用不习惯字符界面,可以看一下freeswitch-air,它是使用adobe air开发的,为 freeswitch 提供一个简洁的软电话的图形界面。另外,如果你需要高清通话,除需要设置相关的语音编解码器(codec)外,你还需要有一个好的耳机才能达到最好的效果。笔者使用的是一款logitech的usb耳机。除此之外,还有两款基于freeswitch的软电话,分别是fscomm(qt实现)和fsclient(c#实现)。

继续阅读