至目前为至,已经上线了两个E1的项目,使用的都是 Elastix 对接众方语音网关,网关的型号为 ETG-300.遇到的问题也不少,在这里做一个小总结,欢迎指正。
在描述问题前,关于众方语音网关的一些基本操作(如来电监控、配置设定等)请参考官方的相关文档。
问题一:链路状态正常,物理接口也正常,来电无法送入语音网关(在网关无法监测到任何的来电信息),呼出时,出局被 pra 拒绝。
问题分析:出现这种原因,很有可能就是链路的状态的问题,物理接口状态、链路状态正常,但是无法呼入、呼出,很有可能就是E1帧格式(E1 Framing)的问题。
E1帧格式有三种:DF、CRC-4及CRC-ITU, 默认为CRC-4。 设置何种帧格式,主要是取决于 PRA 的协商,一般PRA会提供相关的说明,如:E1 Framing:PCM 31 CRC off。 则表示当前的E1帧格式不允许 CRC 的,只能使用 DF 格式。
问题解决:打开ETG页面->基本配置, 找到帧格式(E1 Framing),选择 DF。 最后,必须重启方可生效。
问题二:呼出时,在语音网关可以监测到出局信息,但没有送到 pra ,在 SIP 已经被拒绝,导致呼出失败
问题分析:在语音语音网关可以监测到出局信息,表示与elastix 是无关的,即Elastix 是正常。那么问题肯定是出在语音网关的配置上。
问题解决:一般来说,这种情况,就是出局的号长判断出了错误。一般有两种方式可以解决
(1)配置页面->系统配置->号长管理
号长管理,就是定义出局时,被叫的号码格式,只有与号长管理中定义的号长及规则一致时,方可出局,否则不可出局。在这里添加一条当前的出局规则即可。
(2)取消出局被叫号长的判断
第一种解决方法有些复杂,而且对所有的出局号码都需要定义规则,比较复杂。由于出局规则可以在Elastix 进行定义,所以在网关端可以取消出局被叫的规则判断。
通过命令: telnet 网关IP 输入用户名,密码后
第一步:执行 en , 再执行 ^isql 进入参数数据表,这里会提示用户名及密码, 默认都是 sa 即中进入
第二步:select IntParam (*) 查询所有的被始化参数, 找到值为 176 ,即以下的数据
ROWID ParamID ParamDesc ParamVal
--------------------------------------------------------------------------------------------
143 176 Is pstn out called form voip trunk no judge len 0
第三步:将 paramVal 为0,修改为 1
update IntParam (ParamID=176) (ParamVal=0) //表示将 paramid 为 176 的,记录的值修改为1
EIS(sql)#update ? (update 的修改语法是)
Command Help: update TableName (* / [Condition1],[Condition2],...) ([Param1],[Param2],...)
the Condition * means all records, Condition and param syntax: FieldName=Value
第四步:使用参数生效
执行 db save
第五步:重启设备
问题三:有些国家出局时,需要强制将特服号的区号加上,方可正常外呼,比如菲律宾,特服号304XXXX时,出局的主叫(CALLERID) 必须加上区号 02, 但是这时,可能语音网关会拒绝,并在SIP端将其拒绝,无法送到 pra处理。
解决:需要更改 intparam ,如前一个问题一样,这次需要修改的参数是
190 112 Disable caller long number check(0:no, 1:yes, default:0) 0
需要将 ParamVal 由 0 ,修改为1 。 修改的方法与前一个问题一样。
问题四:打国际长途时,在网关页面上,配置了以0开头,拨打0086XXXXXXXXXXX,由 pra 出局时,还是会被拒绝在 SIP 端,无法送到 pra 处理。
问题解决:配置了 0 开头,并不能匹配 00 开头,需要另配一个 00 开头,由 pra 出局的配置
问题五:如果以 FXS 潮流语音网关,接普通话机。但是潮流语音网关与ELASTIX不属于同一局域网时,会导致两个分机间拨打,无声音,或是单通的情况。
问题解决:需要在FXS网关上,将stun 选上,并将 stun服务器指向 FXS语音网关所配置的网络网关。
问题六:分机拨打外线时,经常会出现拨号后,收 ACK 的信息出错,并提示
Retransmission timeout reached on transmission [email protected]:5060 for seqno 102(Critical Request) -- see https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions
问题解决:一开始,总以为是 nat 的问题,所以不断的检查,但是最后发现,问题的根源,就是Elastix 与 众方网关对接时,没有指定语音编码导致,在 elastis 中的 trunks 中,查看一下与众方对接的信息
host=192.168.108.180
port=2080
type=friend
qualify=yes
原来的配置是这样的。要配置语音编码,必须要加上 disallow 及 allow 如下:
host=192.168.108.180
port=2080
type=friend
qualify=yes
disallow=all
allow=alaw
具体的编码,就要看与 pra 的协商情况了。
问题七:使用手机拨打特服号时,分机已经响铃了,在未接听前,手机端听不到任何的回铃音。只有接起来后,方可听到声音。这样的体验比较差。
问题解决:修改 intparam 中的
80 114 Force to play local ringtone(0:no, 1:yes, default:0) 0
将 0 修改为 1