zoukankan      html  css  js  c++  java
  • asterisk 问题

    Q:SIP可以呼通,但听不到声音
    A:一般是NAT问题造成。
    如果Asterisk处在NAT的后面,则Asterisk的配置如下:
    --------------------------------------------------------------

    sip.conf:
    ;externip = 200.201.202.203
    externhost=dmlink.dvrdns.org
    localnet=192.168.0.0/255.255.0.0


    rtp.conf
    rtpstart=10000
    rtpend=20000
    NAT网关端口映射:
    SIP端口 5060 和 RTP端口10000-20000
    --------------------------------------------------------------
    需要配置externip或externhost,这是Asterisk的公网IP,还需配置localnet,这样当Asterisk判断外部来的SIP会话时(本地是localnet,对方不是localnet),会在Invite应答(200 OK)的SDP 中,将Connection Information置为外部IP,而Media Description的端口从[rtpstart,rtpend]中分配。
    这样,SIP客户端收到Invite应答(200 OK)后,就知道了Asterisk的RTP公网IP+端口,SIP客户端的语音流发到这个地址,NAT网关(端口映射)转发到Asterisk。

    而如果SIP客户端也处于一个NAT之后,Asterisk如何判断出SIP客户端的RTP公网地址呢?

    经过Asterisk代码的分析,Asterisk的SIP并没有实现ICE(Interactive Connectivity Establishment)到SIP的映射,即没有处理ICE在SDP的Media块中定义的一个新属性alt(候选IP地址和端口),而是采用了一个简单的方式,即当NAT=yes时,从哪儿来的到哪儿去(SIP也是用这种策略处理)。

    所以,Asterisk收到来自SIP客户端的RTP包后,Asterisk会记录此包的源地址和端口(是经过了客户端侧NAT转换后的公网IP+端口), Asterisk的语音流将被发到这个地址。客户端侧NAT网关会自动转发到对应的Asterisk的内网地址。

    如此,一个NAT之后的SIP客户端(无需ICE)已经可以拨入一个配置了端口映射的NAT后的Asterisk了。

    Q:Asterisk支持传真吗?
    A:支持。 如果你是安装的Trixbox,则系统已经附带了两个传真收发命令rxfax和txfax。如果是自己安装编译的asterisk,则需要自行安装rxfax和txfax这两个app。

    Q:数字卡PRI呼叫被交换机直接挂断
    A:可能有中继号码限制.需要设置callid为指定号码。可以在拨号脚本中使用SetCallerID功能指定。
    如果局方需要设置国内国际,则zapatal.conf加上
    pridialplan=local
    prilocaldialplan=local

    Q:通话中噪音大,有回声
    A:
    1、首先要在配置文件 /etc/asterisk/chan_dahdi.conf 中激活回音消除,请把以下选项设置为 yes :
    2 echocancel=yes
    2 echocancelwhenbridged=yes
    2 echotraining=yes
    2、调整 rxgain/txgain 设置为了取得好的回音消除效果,必须调整zapata.conf 配置文件中的 rxgain(输入增益) 和 txgain (输出增益)到合适的值,请按照以下步骤来进行:
    1. 把 rxgain/txgain 的值都修改为 1.0;
    2. 用 asterisk 板卡上的通道来拨打一个电话,也就是说需要建立一个通过板卡的通道进行的通话;
    3. 运行 ztmonitor 命令来查看通道收、发音增益是不是在一个比较优化的范围:(注,ztmonitor 命令的第一个参数是你正在通话的通道号)
    4. 根据你的实际情况来调整 rxgain 和 txgain 到一个优化的值。rxgain 和 txgain 的值如果都偏小,你就在配置文件 Zapata.conf 中增加rxgain 和 txgain 的值。
    5. 很多情况下,把 rxgain 和 txgain 的值设置为 8.0 会取得比较好的回音消除效果。

    Q:模拟卡外线通话有时候意外中断
    A:某些地方的汇线通或者线路质量不佳时常出现这个问题。
    需要修改/etc/modprobe.conf,将install wctdm这一行改成下面的样子:
    install wctdm /sbin/modprobe --ignore-install wctdm battdebounce=128 && /sbin/ztcfg

    Q:模拟卡检测不到外线挂机


    2 Q/ o: ` K8 E" ?: ^2 bA: 请检查asterisk的音调区域是否选择正确,检查/etc/system/dahdi.conf及/etc/asterisk/indications.conf。然后打开/etc/asterisk/chan_dahdi.conf,修改busydetect=yes打开忙音检测,并且修改busycount=6即可。

    Q:听到的摘机信号音与普通的电话摘机信号音不一致。
    $ j5 y6 _( {" x* HA:需要修改一下配置文件:6 U) g0 Y! R, f9 s6 k
    /etc/system/dahdi.conf中把 loadzone 和 defaultzont 改为cn
    ) l! F1 [* E+ J. a" |; `# X, K0 T /etc/asterisk/indications.conf把country设置为cn0 n* C8 o- F( S8 F$ b5 ?
    需要重新加载zaptel和asterisk,或者重启系统。8 I. f9 J% @.


    Q, 电话突然中断

    1)BusyDetect
    2)CallProgress
    BusyDetect和CallProgress可能会导致Asterisk错误的检测电话挂断. 把BusyCount设置为一个更大的值,或者关掉CallProgress,可能能解决这个问题. 过量的IRQ缺失也有可能会导致这些问题的出现.
    参考这个网站:http://kb.digium.com/entry/71/
    3) 设置
    /etc/modprobe.conf试试看,安装wctdm: install wctdm /sbin/modprobe --ignore-install wctdm battdebounce=128 && /sbin/ztcfg

    有志者事竟成
  • 相关阅读:
    substring(x)和substring(x,y)的用法
    js 判断字符串中是否包含某个字符串
    js如何将纯数字字符串转换为long型
    union和union all的区别
    JavaScript 中 var 和 let 和 const 关键字的区别
    JS操作文件
    java 字符串和集合互相转换
    关于sql中in 和 exists 的效率问题,in真的效率低吗
    sql 同一张表查询不同数据合并之后关联查询
    Android input输入框 移动页面input手机键盘中的“搜索”按键
  • 原文地址:https://www.cnblogs.com/dancheblog/p/3508780.html
Copyright © 2011-2022 走看看