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 - 微信公眾號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM