为了便于测试,首先搭建一个opensips,作为proxy。
opensips搭建
要首先安装mysql。
版本opensips-1.8.0-tls,去掉Makefile.conf中的exclude_modules中的db_mysql,执行命令make all;make install(最好是make prefix=/usr/local/opensips-1.8.0-tls/ all;makeprefix=/usr/local/opensips-1.8.0-tls/ install,以下路径的配置以这个为准)。
修改文件opensipsctlrc,打开配置项:
DBENGINE=MYSQL
DBHOST=localhost
DBNAME=opensips
mysql的帐号密码DBRWUSER=root DBRWPW="1234"
还有一些路径修改成/usr/local/opensips-1.8.0-tls/下的路径,默认是/usr/local/。
修改配置文件opensips.cfg listen=udp:192.168.0.191:9060,IP不能是127.0.0.1。
其余的使用默认配置即可。
执行命令/usr/local/opensips-1.8.0-tls/sbin/opensipsdbctlcreate,会创建相关的数据库。
/usr/local/opensips-1.8.0-tls/sbin/opensipsctladd 1100@192.168.0.191:9060 1100会增加帐号1100,密码也是1100。
执行命令/usr/local/opensips-1.8.0-tls/sbin/opensipsctlstart会启动opensips。
详细的配置步骤请参考http://www.opensips.org/Documentation/Manual-1-8
使用命令/usr/local/opensips-1.8.0-tls/sbin/opensipsctlonline查看注册上的帐号,
/usr/local/opensips-1.8.0-tls/sbin/opensipsctlul show 1100@192.168.0.191:9060也可以。
在opensips上创建帐号1100/1100,1101/1101,1102/1102,1103/1103。
域名是eullansh.f3322.org:9060 1110/1110 1111/1111
Asterisk注册到opensips
Asterisk使用帐号1100/1100注册到opensips,在配置文件sip.conf中的[general]中添加:
register =>1100?udp://1100@192.168.0.191:9060:1100:1100@192.168.0.191:9060/1100~300
具体的每个字段含义在sip.conf中有注释。
在sip.conf的最下面增加帐号:
[1100]
type=friend
username=1100
secret=1100
context=opensips_trunk
qualify=yes
;host=192.168.0.191:9060
;fromdomain=192.168.0.191:9060
;fromuser=1100
insecure=invite,port
disallow=all
allow=ulaw
allow=alaw
然后增加dialplan:
[opensips_trunk]
exten =>1100,1,Answer()
same => n,Background(welcome)
same => n,WaitExten(15)
exten =>_801X,1,Dial(SIP/${EXTEN},30,Ttr)
same => n,Hangup()
重启asterisk。使用命令/usr/local/sbin/opensipsctl ul show 1100@192.168.0.191:9060,可以看到是否注册到opensips:
Contact::<sip:1100@192.168.0.198:5060>;q=;expires=287;flags=0x0;cflags=0x0;socket=<udp:192.168.0.191:9060>;methods=0xFFFFFFFF;user_agent=<AsteriskPBX 11.5.0>
测试步骤
1、呼入
使用一个软电话注册到opensips(1101/1101。注意,这里使用的主叫号码不能是asterisk中已有的分机号码,否则asterisk会认为是内部分机呼叫内部分机),然后拨打1100。这时听到放音后拨asterisk上的一个分机号码:8010,这时8010分机振铃,摘机后可以正常通话。
2、呼出
在extension.conf中的[from-internal]中增加
exten=>_9.,1,Dial(sip/1100/${EXTEN:1},30,Ttr) #这里定义9是从sip trunk呼出
same=> n,Congestion()
same=> n,Hangup()
使用分机8010,拨91101,这样注册在opensips上的1101会振铃,摘机后可以正常通话。
3、呼入后进行呼叫转移
首先在配置文件features.conf中打开配置[featuremap]中的blindxfer => #1和atxfer => *2。
l 盲转
使用一个软电话注册到opensips(1101/1101),拨打1100,听到放音后拨asterisk上的一个分机号码:8010,接通后,8010按#1,听到提示音后,拨8012,这时会接通分机8012
l 咨询转
使用一个软电话注册到opensips(1101/1101),拨打1100,听到放音后拨asterisk上的一个分机号码:8010,接通后,8010按*2,听到提示音后,拨8012,这时会接通分机8012,8010挂机后,1101和8012可以开始通话。