将Asterisk联入真实世界(PSTN)需要了解的

很多刚刚接触Asterisk的朋友在试验完内部通话组网后,兴冲冲的搞到一块digium兼容的PSTN,想把自己的Asterisk接入到PSTN网络,结果发现似乎不像刚开始试验时那么顺利了,在这里,我简单的把一些基础的通讯知识分享给大家,让大家在配置zapteldahdi时能减少一些迷惑(既然是个人经验,欢迎大家一起来补充,修整)

  考虑大多数试验用户没有条件使用数字线路,关于数字线路的知识在未来再专帖讨论,本贴中讨论的是模拟接口(模拟信令),假设工作在zaptel(dahdizapel的命令和配置文件的对应在google上很容易找到)

1.模拟接口

FXO-ForeignExchange Office

FXS-ForeignExchangeStation
  两者的差别就是FXS馈电(提供电压),FXO不提供.普通模拟电话就是一个典型的FXO设备.
  在真实的世界中,FXSFXO总是成对出现的.FXS接口向FXO接口馈电(提供电压),振铃;FXOFXS传送号码(DTMF/FSK).所以对接时会出现fxs侧的用户需要首先呼叫到fxs,再二次拨号呼叫到被叫侧,而fxo侧用户可以一次直接呼叫被叫用户(一次拨号)

  在Asterisk,FXO接口接受的是fxs信令和FXS提供给fxo信令.所以你在zapata中看到fxsXX(ls,gs,ks)这个端口是FXO接口,如果是fxoXX(ls,gs,ks)这个端口是FXS接口.  

  FXO用于连接PSTN(因为PSTN(FXS)AsteriskFXO接口馈电)
  FXS用于连接普通电话机,(因为Asterisk通过FXS接口向模拟话机(FXO)提供馈电--这也就是为什么Asterisk接口卡上的FXS接口板需要外接电源的原因)

  如果Asterisk位于企业程控交换机(PBX)的后面,AsteriskFXO接口和PBX的模拟分机口相连,asteriskFXS接口和PBX的模拟中继端口相连

2.模拟信令

loopstart

Kewlstart

grandstart
  这三个术语的具体区别牵扯到通讯专业领域了,普通用户需要了解的是grandstart是需要专门申请的,一般用于中继线(它的好处就在于可以避免进线和出线的碰撞,提高线路使用率),而普通的电话线路一般是loopstart.Asterisk推荐的kewlstart也是一种loopstart,只不过它识别supervisordisconnect信号(就是远端拆线后在发送忙音之前,发送这个信号.所以如果你的局端提供的是kewlstart信号,Asterisk默认的配置可以很正确的识别远端拆线,这也就是为什么默认的zapata.conf中不启用busydetect的原因).在中国大陆,主要采用的是loopstart而北美采用的是kewlstart.

  所以当你正确安装了卡板和驱动,但用默认的fxsks信令,拨号到pstn得到"allcircuit busynow"的提示语时,尝试将zaptel.confzapata.conf中默认的fxsks改为fxsls--(修改完毕后需要重启机器而不是单纯重启asterisk)

3.恼人的忙音识别和拆线
  前文提到FXO是被动接受型的,也就是说在真实世界FXS发送模拟信令,FXO识别来自FXS的信令.这些信令工作在特定的频率,有特殊的断通比.如果局端交换能正确提供这些信号,FXO就能正确的判断线路的状态(使用中,已挂机),但实际上由于中国的国情,很多地区的信号音是非标准的,比如,规范的忙音信号应该是(0.35秒通,0.35秒断,工作频率是450kz),Asteriskindications.confcn的定义就是如此
[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±3dBm00.35son/0.35s off)——“嘟,嘟,嘟…”短促音(响0.35秒,断0.35秒)。

拥塞音:450Hz-10±3dBm00.7son/0.7soff)——这是一种“嘟,嘟…”的短音(响0.7秒,音隔0.7秒)。拥塞音有点像忙音,但比忙音声音要长,它表示程控交换机因某种原因机线拥塞不通。

呼入等待音:450Hz-20±3dBm00.4son/4.0soff)——在用户登记了“呼叫等待”服务项目后,如果该用户正与对方通话时,又有第三者呼叫该用用,则该用户在受话器中会听到一种微弱的信号音,这种信号是“嘟…”的短促音(响0.4秒,音隔0.4秒,再响0.4秒)。它表示有第三者在呼叫,提醒该用户是否要与第三者通话。

特种拨号音:450Hz-10±3dBm00.4son/0.04soff)这是一种“嘟,嘟…”的一短一长的声音,当用户的电话中登记了某种程控电话服务项目后,摘机听到的拨号音就是这种特种拨号音,用以提醒该用户。这种拨号音不妨碍该用户打电话,只要在规定产时间(5秒)内拨号即可。

二次拨号音:400Hz-10±3dBm0、连续)

回铃音:450Hz-10±3dBm01.0son/4.0s off)——“嘟,嘟…”的断续音(响1秒,断4秒)表示用户拨叫的对方电话已接通,正在振铃。  

空号音:450Hz-10±3dBm00.1son/0.1s off/0.1s on/0.1s off/0.1s on/0.1s off/0.4s on/0.4soff)--“嘟、嘟、嘟-”450赫的三短一长音(短音为0.1秒,间断0.1秒,长音为0.4)

三方通话提醒音:950Hz-20±3dBm00.4son/10.0s off

催挂音:950HZ0.4dB)——当用户用完电话,没有挂机或话机手柄没有放好时,程控电话局会发出一种由小逐渐变大的连续音(950HZ),提醒该用户把话机挂好。

长途通知音:450Hz-10±3dBm00.2son/0.2s off/0.2s on/0.6soff)——当用户在市内电话通话过程中,又听到“嘟,嘟”声,跟着一小段间歇,又再“嘟,嘟”,这样的短音(0.2,0.2,音隙0.6)就是“长途电话通知音”,告诉用户有人工长途电话要和您通话,请尽快结束市内通话,准备接听长途电话。这种长途电话通知音随着我国长途电话自动化的普及也越来越少了。

  如果电信给你的忙音信号根本就不是这样的,Asterisk怎么可能识别呢,必然出现无法正确判断拆线的状况.(大城市这种情况就好得多).如果出现这种情况,就不得不通过ztmonitor录音后,判别它通断比,然后将这些数值填入zapata.confbusypattern,重启asterisk所在的服务器(例如beep持续600号码,静音400毫秒,那么busypattern=600,400)

  kewlstart优于传统的Loopstart的地方就在于supervisordisconnect信号.你可以看到北美的论坛上没有讨论忙音识别或者无法拆线的,而在UK,Australia就有很多类似的帖子.但是UK的经验拿到中国来也不行,因为UK的电信普遍采用了7号信令,通过CPC(Callingparty Control-主叫控制)来处理拆线(remotehang up).

  如果你的局端提供给你CPC,supervisordisconnect,恭喜您,你可以摆脱恼人的忙音识别问题了.

备注:如何确定自己的线路是否支持kewlstart

    将一个支持拨号盘高亮的(不需要外接电源,直接从市话取电)普通模拟电话连接到PSTN线路上,拨通你的手机,接听手机,然后手机挂机,如果那部模拟电话在远端(手机)挂线后拨号盘灯熄灭(dropbattery),那么这条线路是支持kewlstart.不需设置busyXXXcallprogress

  在中国,Asteriskzapata.conf需要启用busydetect=yes,以及busycount=6可以解决大多数忙音识别和无法拆线的问题(基于loopstart)

zapata.conf(zapata-channels.conf)
busydetect=yes
busycount=6                         ;
设置的值过小会引起通话中中断的故障
....................
loadzone= cn
defaultzone = cn

备注:

  不要盲目按照国外的帖子随便增加busypattern这个参数。除非你明确知道这么作的原因。没有这个参数,Asterisk接受任何有规律的断通信号在busycount规定的次数内判别为忙音。如果busytone的通断间隔不相等(如前文提到的beep600毫秒,静默400毫秒),才需要手工设置.
  
  不要把callprogressbusyxxx属性混用,这是两种不同的工作方式.目前默认工作方式的callprogress仅对北美生效

  如果上述设置在你的机器上不生效,请检查线路质量,检测是否有回声,有的时候线路的杂音会干扰到Asterisk的忙音识别。

  启用回声消除(见本文回声一节)

  启用增益  (见本文增益一节)

  
如果是话务量比较密集的应用或对计费数据比较敏感的环境,建议去电信申请反极信号,同时在zapata.conf中增加
zapata.conf(zapata-channels.conf)
hanguponpolarityswitch=yes
;拆线
answeronpolarityswitch=yes
;对端应答(用于计费)
(不要和busydetect=yescallprogress=yes同时使用)

4.CLID(主叫号码)
  CLID主叫号码在使用中一般不会碰到问题,但在一些地区还是会有麻烦(我就在宁夏银川哪里碰到过).CLID工作在FSK(美规)DTMF方式,中国这两种情况都有,甚至还有欧规的情况.如果不幸你也有这种问题,呵呵,或者购买一个转换器(几十块一个),或者采用国产的卡(OpenVox就支持GlobalCLID).

备注:如何确定CLID的制式
    拿家里原来的可以来显的电话机,必须是有时间显示的电话机.
    1、先把机器的时间调乱.(随便调,但月份一定调)
    2、然后用自己的手机打进去,电话响5声后挂掉,不要接.
    3、然后看时间自动改过来了没.
    如果是改过来了(年份不改不要紧,但月份一定要),那证明您家里是FSK制式。如果没改过来那您家里就是DTMF制式。
    区分了fsk之后,如果在第一声之前,就显示了号码,那么就是欧制的,如果在第一声和第二声之间显示了来电,那么就是美制的。

5.DTMF

6.回声
zapata.conf
zapatachannels.conf

echocancel=yes
echocancelwhenbridged=yes, 
echotraining=800

7.增益



资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值