大约在一年前,学习过一段时间的asterisk。作为一个相对成熟的VOIP电话的服务器,asterisk完全可以用来作为个人的一个微型电话局。反正个人有个阿里云服务器闲着,搭一个asterisk用来玩玩吧。
首先,要安装asterisk。个人建议使用apt-get进行安装,因为asterisk需要依赖很多东西,通过apt-get安装可以直接将需要的库等都安装好。
sudo apt-get install asterisk
这样asterisk就安装好了。一年前刚接触asterisk时,是通过安装包安装的,费了一小段时间才安装好,因为之前的环境是一个内网虚拟机的环境,无法连到公网,于是就在安装过程中各种下载需要的依赖库。但是这样安装的asterisk不是最新版,比如我安装时最新版本为14,但是这样安装的版本却是11,不支持很多新协议栈(如PJSIP,OSIP等)(PJSIP在版本12才开始支持),如果对版本有要求的话,最好源码安装。
接下来就是配置了。asterisk有很多的配置文件,这些配置文件都在/etc/asterisk文件夹下。
如果要让asterisk工作起来,首先需要配置用户信息,通过配置sip.conf文件即可:
sudo vim sip.conf
在文件中添加如下内容:
[general] context = default tcpbindaddr = 0.0.0.0 tcpenable = yes [1001] type = friend callerid = User One secret = 1001 host = dynamic canreinvite = no dtmfmode = rfc2833 mailbox = 1001 disallow = all allow = ulaw transport = udp [1002] type = friend callerid = User Two secret = 1002 host = dynamic canreinvite = no dtmfmode = rfc2833 mailbox = 1002 disallow = all allow = ulaw transport = udp
[1003]
type = friend callerid = User Three secret = 1003 host = dynamic canreinvite = no dtmfmode = rfc2833 mailbox = 1003 disallow = all allow = ulaw transport = udp
以上表示配置了三个用户:1001,1002,1003.每个用户的具体配置的每个字段从名字来看就大概能知道。在general中有 很多服务器的基础配置,看一下原先文件中的注释即可。 接下来需要配置每个用户打电话的相关策略,即配置extension.conf文件:
[general] static=yes writeprotect=no [default] exten => 1001,1,Answer() exten => 1001,n,Dial(SIP/1001,20,tr) exten => 1001,n,Hangup exten => 1002,1,Answer() exten => 1002,n,Dial(SIP/1002,20,tr) exten => 1002,n,Hangup
exten => 1003,1,Answer() exten => 1003,n,Dial(SIP/1003,20,tr) exten => 1003,n,Hangup
可以在里面配置很多策略,比如被呼振铃时间等,都是可以配置的。这里就相似于一种脚本语言一样,通过这个脚本,可以 描述整个呼叫过程中的所有过程。 至此,整个asterisk服务器最基本的版本就搭建好了,勉强可以用。 测试:选择了一android系统的终端和一个windows系统的终端进行打电话,android下使用linphone,windows下使用 eyebeam,经过测试,没有问题。 当然,asterisk有很多好玩的东西。比如用户信息的配置等等,还有每个用户的打电话的策略等,都可以通unixODBC和 asterisk提供的相关模块(如realtime等)写入MYSQL数据库,这样便于自己写一个第三方操作数据库的软件直接对 asterisk进行配置;asterisk还可以配置cdr;还可以配置录音等等好玩的东西。以下是当时刚开始学习asterisk时的虚拟机的备份。
服务器配置好后,新问题来了,隔一段时间就有人不断的想登陆你配置好的asterisk服务器,尝试了不同的号码, Register信令和Invite信令也发送了无数次,然而号码都不对。屏蔽它就好。