`

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

 
阅读更多

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

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

1.模拟接口

FXO-Foreign Exchange Office

FXS-Foreign Exchange Station
  两者的差别就是FXS馈电(提供电压),而FXO不提供.普通模拟电话就是一个典型的FXO设备.
  在真实的世界中,FXS和FXO总是成对出现的.由FXS接口向FXO接口馈电(提供电压),振铃;FXO向FXS传送号码(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)向Asterisk的FXO接口馈电)
  FXS用于连接普通电话机,(因为Asterisk通过FXS接口向模拟话机(FXO)提供馈电--这也就是为什么Asterisk接口卡上的FXS接口板需要外接电源的原因)

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

2.模拟信令

loop start

Kewl start

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

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

3.恼人的忙音识别和拆线
  前文提到FXO是被动接受型的,也就是说在真实世界FXS发送模拟信令,而FXO识别来自FXS的信令.这些信令工作在特定的频率,有特殊的断通比.如果局端交换能正确提供这些信号,FXO就能正确的判断线路的状态(使用中,已挂机),但实际上由于中国的国情,很多地区的信号音是非标准的,比如,规范的忙音信号应该是(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秒)就是“长途电话通知音”,告诉用户有人工长途电话要和您通话,请尽快结束市内通话,准备接听长途电话。这种长途电话通知音随着我国长途电话自动化的普及也越来越少了。

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

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

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

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

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

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

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

备注:

  
不要盲目按照国外的帖子随便增加busypattern这个参数。除非你明确知道这么作的原因。没有这个参数,Asterisk接受任何有规律的断通信号在busycount规定的次数内判别为忙音。如果busy tone的通断间隔不相等(如前文提到的beep 600毫秒,静默400毫秒),才需要手工设置.
  

  不要把callprogress和busyxxx属性混用,这是两种不同的工作方式.目前默认工作方式的callprogress仅对北美生效

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

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

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

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

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

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

5.DTMF

6.回声
zapata.conf(zapata-channels.conf)

echocancel=yes
echocancelwhenbridged=yes,
echotraining=800

7.增益

分享到:
评论

相关推荐

    asterisk pdf

    与PSTN终结类似,VoIP终结是指通过互联网将Asterisk系统的呼叫发送到PSTN网络的过程。通常情况下,这需要借助于VoIP服务提供商的服务来实现。 ##### 2. PSTN再生 VoIP再生则是指通过互联网接收来自PSTN网络的呼叫...

    Asterisk 简介 Asterisk 架构 Asterisk程序框图

    Asterisk是一款开源的电话交换机软件,它允许用户创建高度自定义的通信系统,包括VoIP(Voice over IP)电话、会议桥、自动呼叫分配(ACD...如果你对自定义通信系统感兴趣,深入了解Asterisk将是一次有价值的学习经历。

    通过asterisk-java操作asterisk

    7. **源码分析**:对于标签中的“源码”,意味着你可能需要查看Asterisk-java的源代码来了解其工作原理或进行定制开发。通过阅读源代码,你可以理解其内部的工作流程,学习如何更好地利用API,甚至贡献代码到开源...

    asterisk拨号方案的配置

    Asterisk拨号方案的配置是Voice over Internet Protocol(VoIP)技术中的一个关键组件,它控制着呼入和呼出电话的处理和路由。配置文件“extensions.conf”是Asterisk拨号方案的核心,它定义了呼入和呼出的处理流程...

    Asterisk 之数据库配置方案 asterisk数据库

    在进行数据库配置之前,我们需要先按照常规配置对 Asterisk 进行配置,然后将配置从配置文件迁移到数据库中。数据库配置可以使用 MySQL、PostgreSQL 等数据库管理系统。 VI. 结论 Asterisk 之数据库配置方案可以...

    asterisk 七号信令 模块

    这个模块为Asterisk提供了接入PSTN(公共交换电话网)的能力,使其能够处理VoIP和PSTN之间的通话。 以下是压缩包中的文件及其在chan_ss7模块中的作用: 1. `ANNOUNCE`:这通常是一个文档或公告,可能包含了关于...

    Asterisk.NET 1.6.3 控制Asterisk

    在使用前,你需要将其解压,并根据项目需求引用相关的库文件到你的.NET项目中。 总结来说,Asterisk.NET 1.6.3 提供了.NET平台下控制Asterisk PBX的强大工具,通过AMI和FastAGI接口实现了丰富的电话系统功能,如...

    asterisk info 录音实现方案

    标题“asterisk info 录音实现方案”中提到的是利用Asterisk的info事件来触发录音操作,并通过HTTP协议向...实现这样的功能,需要对Asterisk的通话处理流程有充分了解,并且要能熟练修改和自定义其配置文件和功能模块。

    Asterisk 中文语音包

    Asterisk是一款开源的IP电话系统,它允许用户创建自己的通信平台,支持VoIP(Voice over IP)服务,包括电话...了解如何正确安装和配置语音包是提升Asterisk服务质量的关键,特别是对于面向中文用户的通信解决方案。

    Asterisk 中文文档说明

    首先,让我们了解一下Asterisk的核心概念。Asterisk是一个PBX(Private Branch eXchange),它能够管理电话线路,路由呼叫,并提供各种电话服务,如语音邮件、会议呼叫和自动话务员。通过使用SIP协议,Asterisk可以...

    Asterisk教程

    在安装和配置过程中,需要访问一些关键的网页资源,如PSTN、G.729和G.711编码的介绍,以及Digium和Asterisk的官方维基百科页面。 在实际部署中,Asterisk机器的LAN地址是90.0.0.3,这对于网络配置和远程访问至关...

    Asterisk AMI 接口代码

    在实际开发中,除了掌握`asterisk-java`库的用法,还需要对Asterisk的基本概念和工作原理有一定的理解,比如了解呼叫流程、通道、队列、拨号计划等。此外,熟悉Asterisk的AMI文档也很重要,这样可以更好地理解和利用...

    Asterisk权威指南中文

    Asterisk权威指南中文(第3版) Asterisk权威指南(第3版)第15章自动话务员 Asterisk权威指南(第3版)第02章Asterisk体系结构 Asterisk权威指南(第3版)第05章用户设备配置 Asterisk权威指南(第3版)第06章Dialplan基础 ...

    最全Asterisk代码学习笔记

    13. **PSTN支持**:Asterisk不仅支持VoIP,还可以通过FXO/FXS接口与传统电话线路(PSTN)连接,实现VoIP与PSTN的互连。 14. **CLI命令**:Asterisk提供命令行接口(CLI)进行实时监控和控制,如查看状态、修改配置...

    asterisk16版本安装包

    在本场景中,我们讨论的是Asterisk的16版本安装包,这将引导我们深入理解Asterisk的核心功能、安装流程以及如何进行编译和配置。 1. **Asterisk核心功能**: - **PBX(Private Branch Exchange)**:Asterisk作为...

    Asterisk CLI 命令列表

    这个命令用于列出Asterisk当前加载的所有模块,这对于了解系统的运行状态和调试问题非常有用。你可以看到每个模块的功能、版本和状态。 2. **sip show peers** 此命令显示所有注册的SIP(Session Initiation ...

    asterisk 学习日志

    了解Asterisk的基本概念,如DAHDI(数字接入分机接口)、通道变量和全局变量,以及PBX(Private Branch eXchange)的工作原理,对深入学习Asterisk至关重要。 10. **C语言字符串处理**: C语言中的字符串处理是...

    基于Asterisk多种接入方式的VoIP系统研究

    ### 基于Asterisk多种接入方式的VoIP系统研究 #### 1. 引言 自1995年以色列VocalTec公司推出InternetPhone以来,VoIP技术的发展经历了翻天覆地的变化。这项技术不仅改变了人们的通信方式,还促进了电信行业的转型...

    chan_dahdi.rar_asterisk_asterisk channel_asterisk中cid_channel as

    在配置和使用Asterisk时,了解如何处理CID和管理Dahdi通道是非常关键的。这涉及到设置正确的拨号规则,确保Asterisk能正确识别和处理CID信息,以及配置Dahdi通道以适应不同的电话服务提供商和硬件设备。熟练掌握这些...

Global site tag (gtag.js) - Google Analytics