- 作者:james.zhu(james.zhu@hiastar.com) www.hiastar.com 微信公眾號:asterisk-cn
- Asterisk課堂-如何通過源代碼安裝方式安裝Asteisk/dahdi
- Asterisk課堂-系統(tǒng)部署環(huán)境要求
- Asterisk課堂-Asterisk技術(shù)架構(gòu)
- Asterisk課堂-撥號規(guī)則基礎(chǔ)
- Asterisk課堂-創(chuàng)建第一個撥號規(guī)則
- Asterisk課堂-撥號規(guī)則中的Contexts
- Asterisk課堂-撥號規(guī)則中變量的使用
- Asterisk課堂-撥號規(guī)則中的Extensions用法
- Asterisk課堂-撥號規(guī)則中匹配模式
- Asterisk課堂-IAX2 介紹
- Asterisk課堂-IAX2 呼叫流程
- Asterisk課堂-SIP介紹
- Asterisk課堂-SIP呼叫流程
- Asterisk課堂-終端注冊
- Asterisk課堂-SIP Trunk
- Asterisk課堂-SIP和NAT
- Asterisk課堂-撥號規(guī)則中的Include使用方法
- Asterisk課堂-撥號規(guī)則中的語音播放
- Asterisk課堂-DTMF 介紹
- Asterisk課堂-語音IVR基礎(chǔ)
- Asterisk課堂-Timeout 超時設(shè)置

Asterisk撥號規(guī)則中支持了多種對系統(tǒng)時間控制的方式,這些方式可以監(jiān)控用戶輸入DTMF的時間,或計費環(huán)境中的一些時間長度。本章節(jié)我們介紹撥號規(guī)則中對通道的超時設(shè)置。超時簡單來說,就是用戶在默認的系統(tǒng)超時設(shè)置的時間范圍內(nèi)是否收到系統(tǒng)需要的輸入?yún)?shù)。如果用戶沒有在一定時間內(nèi)沒有輸入按鍵DTMF,這樣系統(tǒng)需要做一個錯誤提示來引導(dǎo)用戶進行下一步的呼叫流程。
視頻中介紹了幾個超時的用法和應(yīng)該注意到地方:
今天介紹的超時包括幾個方面的內(nèi)容:超時的語法定義,超時的幾種設(shè)置方式,Digit超時注意到地方,超時和其他設(shè)置之間的配合。
超時的語法定義比較簡單,系統(tǒng)設(shè)置了一定的默認值,用戶輸入在一定時間內(nèi)輸入DTMF,否則進行錯誤處理。這里的Timeout是針對channel來說的,超時設(shè)置包括了Reponse Timeout,Digit Timeout 和Absolute Timeout。以上三中超時設(shè)置是針對呼叫通道來說的,完全不同于application 中的timeout。

Reponse Timeout,Digit Timeout 和Absolute Timeout的用法。這里我們專門把這三個超時進行一下簡單介紹,以便用戶可以快速了解這三個超時的不同。Reponse 超時設(shè)置是用來檢測用戶是否在一定時間內(nèi)輸入第一個數(shù)字。Digit 超時是系統(tǒng)已經(jīng)收到了用戶輸入的數(shù)字,等待下一次數(shù)字的輸入超時時間設(shè)置。例如,用戶如果想輸入62,但是現(xiàn)在用戶僅輸入了6,系統(tǒng)需要等待數(shù)字2 輸入。它們中間的等待時間就是Digit Timeout的設(shè)置時間。Absolute Timeout 是針對呼叫的整個流程來說,經(jīng)常使用的場景是對一些呼叫的時長控制,例如我們的計費卡。如果做電話運營的時候,用戶電話卡金額的不同會支持不同的時間長度。這樣的話,系統(tǒng)可以對其時間進行控制。最后,因為用戶需要輸入DTMF,所以Asterisk是否完全完整地收到了用戶輸入的DTMF,這里可能會引起一些問題。例如,我們經(jīng)常說的IVR不能工作,或者DTMF輸入錯誤。引起這些問題的原因很多,用戶需要在實際環(huán)境中配合服務(wù)器和終端進行設(shè)置排查。



使用 Digit Timeout 時應(yīng)該注意的問題。我們單獨拿出這個功能來提醒用戶,因為系統(tǒng)檢測到是一個完整的DTMF數(shù)字位數(shù),所以在撥號規(guī)則設(shè)計時一定要避免號碼的部分重復(fù),這樣的設(shè)計思路可能會導(dǎo)致很多錯誤。例如,圖例中我們討論的,如果用戶想撥62,實際上系統(tǒng)里面的分機號碼有620和62兩個號碼。因為撥號規(guī)則已經(jīng)在內(nèi)存中加載了620和62兩種匹配的設(shè)置,如果用戶撥打62 的時候,系統(tǒng)仍然需要等待用戶輸入最后一個0。如果用戶沒有撥0,則進入到62相應(yīng)的撥號流程;否則會等待0或者通過超時來進行輸入判斷。這樣就可能導(dǎo)致問題的發(fā)生。

Timeout 超時設(shè)置和其他應(yīng)用之間可能引起一個系統(tǒng)時間的重新調(diào)整。在我們的圖例中,如果用戶在流程中設(shè)置了一個超時的限制,接下來的邏輯如果涉及了時間的重新定義,則最新的時間定義會覆蓋以前的設(shè)置。如果Waitexten 設(shè)置為30,以前的設(shè)置為20,則Waitexten 的時間設(shè)置會覆蓋上面的設(shè)置。所以,我們在這里提醒用戶,需要注意這個時間的變化,同時還要通過時間的流程測試來驗證最后的結(jié)果。

在本章節(jié)中,我們介紹了超時設(shè)置的用法,幾個超時設(shè)置的區(qū)別,還有Digit超時設(shè)置應(yīng)該注意到對方,最后我們還介紹了超時設(shè)置和其他應(yīng)用的時間關(guān)聯(lián)問題。我們希望通過本章節(jié)的介紹,讓用戶可以基本了解超時的概念和使用過程中應(yīng)該注意到一些容易出錯的地方,例如號碼設(shè)計的重復(fù),時間設(shè)置和其他應(yīng)用的覆蓋問題,并且通過自己編寫呼叫流程來進一步驗證這些時間設(shè)置!