转帖:asterisk pstn 忙音检测

来源:互联网 发布:centos ftp配置 编辑:程序博客网 时间:2024/06/06 17:13

http://blog.csdn.net/yscdaxian/article/details/5894763

FXO端口(外线,O口,中继线,模拟线,电话线,红模块)用在非北美地区的模拟线路上时,通常用的是loopstart信令,靠识别来自FXS的有特定的频率和特殊的通断比的规律声音(信号音)来判断线路的状态(使用中/已挂机/用户闲)。 

        由于包括中国在内的很多发展中国家的国情现状,很多地区的信号音是非标准的。下面我们以中国为例,介绍Asterisk如何判断模拟卡线路上的状态。 
1. 标准的信号音 
        在中国,规范的忙音信号应该是(0.35秒通,0.35秒断,声音频率是450kz)。Asterisk在indications.conf对cn(中国)的定义就是如此:
引用
[general] 
country=cn 
.... 
[cn] 
ringcadence = 1000,4000 
dial = 450                                                  ;拨号音 
busy = 450/350,0/350                                ;中国忙音标准 
ring = 450/1000,0/4000                              ;振铃音 
congestion = 450/700,0/700                       ;拥塞音 
callwaiting = 450/400,0/4000                       ;呼入等待音 
dialrecall = 450 
record = 950/400,0/10000 
info = 450/100,0/100,450/100,0/100,450/100,0/100,450/400,0/400 
stutter = 450+425

 
        拨号音:(450Hz,-10±3dBm0,连续)——“嗡…”的连续音。 
        忙音:(450Hz,-10±3dBm0,0.35s on/0.35s off)——“嘟,嘟,嘟…”短促音(响0.35秒,断0.35秒)。 
        拥塞音:(450Hz,-10±3dBm0、0.7s on/0.7s off)——这是一种“嘟,嘟…”的短音(响0.7秒,音隔0.7秒)。拥塞音有点像忙音,但比忙音声音要长,它表示程控交换机因某种原因机线拥塞不通。 
        呼入等待音:(450Hz,-20±3dBm0、0.4s on/4.0s off)——在用户登记了“呼叫等待”服务项目后,如果该用户正与对方通话时,又有第三者呼叫该用用,则该用户在受话器中会听到一种微弱的信号音,这种信号是“嘟…”的短促音(响0.4秒,音隔0.4秒,再响0.4秒)。它表示有第三者在呼叫,提醒该用户是否要与第三者通话。 
        特种拨号音: (450Hz,-10±3dBm0,0.4s on/0.04s off)这是一种“嘟,嘟…”的一短一长的声音,当用户的电话中登记了某种程控电话服务项目后,摘机听到的拨号音就是这种特种拨号音,用以提醒该用户。这种拨号音不妨碍该用户打电话,只要在规定产时间(5秒)内拨号即可。 
        二次拨号音:(400Hz,-10±3dBm0、连续) 
        回铃音:(450Hz,-10±3dBm0,1.0s on/4.0s off)——“嘟,嘟…”的断续音(响1秒,断4秒)表示用户拨叫的对方电话已接通,正在振铃。   
        空号音:(450Hz,-10±3dBm0、0.1s on/0.1s off/0.1s on/0.1s off/0.1s on/0.1s off/0.4s on/0.4s off)--“嘟、嘟、嘟-”的450赫的三短一长音(短音为0.1秒,间断0.1秒,长音为0.4秒) 
        三方通话提醒音:(950Hz,-20±3dBm0、0.4s on/10.0s off) 
        催挂音:(950HZ 0.4dB)——当用户用完电话,没有挂机或话机手柄没有放好时,程控电话局会发出一种由小逐渐变大的连续音(950HZ),提醒该用户把话机挂好。 
        长途通知音:(450Hz,-10±3dBm0,0.2s on/0.2s off/0.2s on/0.6s off)——当用户在市内电话通话过程中,又听到“嘟,嘟”声,跟着一小段间歇,又再“嘟,嘟”,这样的短音(响0.2秒,断0.2秒,音隙0.6秒)就是“长途电话通知音”,告诉用户有人工长途电话要和您通话,请尽快结束市内通话,准备接听长途电话。这种长途电话通知音随着我国长途电话自动化的普及也越来越少了。 
 
2. 非标准信号音的处理 
  事实上,除了一些大城市的固网电信公司交换机能够提供标准信号音外,由于中国电信经过很长时间的七国八制的盲目发展阶段,很多地方的信号音是不标准的。

引用
busydetect=yes 
busycount=6                          ;设置的值过小会引起通话中中断的故障 
.................... 
loadzone = cn 
defaultzone = cn

 
        提示:不要盲目按照某些技术帖子所说的,随便增加busypattern这个参数。除非你明确知道这么作的原因。没有这个参数,Asterisk接受任何有规律的断通信号在busycount规定的次数内判别为忙音。如果busy tone的通断间隔不相等(如前文提到的beep 600毫秒,静默400毫秒),才需要手工设置. 
  如果上述设置在你的机器上不生效,请检查线路质量,检测是否有回声,有的时候线路的杂音会干扰到Asterisk的忙音识别。 
 
3. 极性反转信号(反极信号) 
        如果是话务量比较密集的应用或对计费数据比较敏感的环境,建议去电信申请反极信号(反极信号就是极性反转信号,跟kewl start不是一回事)。同时在zapata.conf中增加:

引用
hanguponpolarityswitch=yes ;拆线 
answeronpolarityswitch=yes ;对端应答(用于计费)
 
        这两个设置不要和busydetect=yes或callprogress=yes同时使用。 
 
4. 小技巧: 如何确定自己的线路是否支持kewlstart 
        将一个支持拨号盘高亮的(不需要外接电源,直接从市话取电)的普通模拟电话机连接到PSTN线路上,拨通你的手机,接听手机,然后手机挂机。如果那部模拟电话机在远端(手机)挂线后拨号盘灯熄灭(drop battery),那么这条线路是支持kewlstart的,不需设置busyXXX和callprogress。 
  不要把callprogress和busyxxx属性混用,这是两种不同的工作方式.目前默认工作方式的callprogress仅对北美生效。
原创粉丝点击