zoukankan      html  css  js  c++  java
  • FreeSwitch 的呼叫 Timeout 的 originate 实测

    首先看看有哪几个timeout?

    call_timeout

    bridge_answer_timeout

    originate_continue_on_timeout 

    originate_timeout

    leg_progress_timeout

    leg_timeout

     

    作用则分别是:

    1. call_timeout 在进行bridge等时,b leg响铃时长,但在具体应用中,对于内线还可以用,而外线,由于国内运营商的原因,会有挂断语音,所以使用它会存在一些问题,同时它是设置在a leg之上的。

        如果您没有使用 {ignore_early_media=true},则一旦收到早期媒体信号, call_timeout 就不再适用。

    2. bridge_answer_timeout  可以容忍处于早期媒体中的bridge没有被应答(可以在任何一条腿上设置)时间。

    3. originate_continue_on_timeout  控制bridge是否在超时后继续运行。 此变量在每个 | 之后重置超时。可以用于顺震。 默认为 false:第一次超时就挂断。

    4. originate_timeout 用于定义originate/bridge过程中的呼叫时长,定义了这个时长如果没有answer就会timeout了。

    5. leg_progress_timeout 指定在获得媒体之前等待的最长时间(无论是早期媒体、振铃还是应答),从而避免转到特定线路的语音邮件。

    6. leg_timeout 它类同于originate_timeout,但是它的可自定义面应算是更广,比如顺振时

    <action application="bridge" data="[leg_timeout=15]user/hastoanswerquickly/some.domain.com,[leg_timeout=60]user/hasaminutetoanswer@some.domain.com"/>

    一般来说,如果是一个主动外呼动作,要定义超时,那么应是:

    originate {originate_time=30}sofia/gateway/xx/018621575908 &echo

    如果是呼入时转到其它外线上,在dialplan中配为 :

    <action application="bridge" data="[originate_timeout=20]sofia/gateway/xx/018621575908"/>

     但是如果有早期媒体(铃声),就会失效,需要加参数 ignore_early_media=true  :

    <action application="bridge" data="[originate_timeout=20,ignore_early_media=true]sofia/gateway/xx/018621575908"/>

    除了以上三个呼叫时的timeout还有个限定最长通话时长的需求,对吧!

    execute_on_answer='sched_hangup +300'



    以秒计

    直接 originate 实际测试:    (fs v1.6.20)

    ---- 无效
    originate [call_timeout=10,origination_caller_id_number=66666666]sofia/external/sip:18000000000@123.123.123.123 &echo
    originate [leg_timeout=10,origination_caller_id_number=66666666]sofia/external/sip:18000000000@123.123.123.123 &echo
    originate {leg_timeout=10,origination_caller_id_number=66666666}sofia/external/sip:18000000000@123.123.123.123 &echo
    originate [originate_timeout=10,ignore_early_media=true,origination_caller_id_number=66666666]sofia/external/sip:18000000000@123.123.123.123 &echo
    originate {originate_timeout=10,origination_caller_id_number=66666666}sofia/external/sip:18000000000@123.123.123.123 &echo
    originate {call_timeout=10,ignore_early_media=true,origination_caller_id_number=66666666}sofia/external/sip:18000000000@123.123.123.123 &echo
    ----- 有效
    originate {leg_timeout=10,ignore_early_media=true,origination_caller_id_number=66666666}sofia/external/sip:18000000000@123.123.123.123 &echo
    originate {originate_timeout=10,ignore_early_media=true,origination_caller_id_number=66666666}sofia/external/sip:18000000000@123.123.123.123 &echo

    上面是直接测试 originate ,没有测试 bridge 情况。

    参考:

    https://freeswitch.org/confluence/display/FREESWITCH/Variables+Master+List

    https://freeswitch.org/confluence/display/FREESWITCH/call_timeout

    FreeSwitch的呼叫Timeout - 宁卫 2018-12-25 - 微信公众号

  • 相关阅读:
    企业管理:“残缺”也是一种美?
    销售到出仓所经历的表
    采购到入库所经历的表
    OM 订单状态
    OM客户、客户地点
    接收事务处理类型 rcv_transactions
    安装ORACLE不能安装解决方法
    系统变量设置
    如何取分组最大值记录
    CentOS (Linux) 上开启FTP服务并配置用户
  • 原文地址:https://www.cnblogs.com/lzpong/p/15041181.html
Copyright © 2011-2022 走看看