- 作者:james.zhu(james.zhu@hiastar.com) www.hiastar.com 微信公眾號(hào):asterisk-cn
- Asterisk課堂-如何通過源代碼安裝方式安裝Asteisk/dahdi
- Asterisk課堂-系統(tǒng)部署環(huán)境要求
- Asterisk課堂-Asterisk技術(shù)架構(gòu)
- Asterisk課堂-撥號(hào)規(guī)則基礎(chǔ)
- Asterisk課堂-創(chuàng)建第一個(gè)撥號(hào)規(guī)則
- Asterisk課堂-撥號(hào)規(guī)則中的Contexts
- Asterisk課堂-撥號(hào)規(guī)則中變量的使用
- Asterisk課堂-撥號(hào)規(guī)則中的Extensions用法
- Asterisk課堂-撥號(hào)規(guī)則中匹配模式
- Asterisk課堂-IAX2 介紹
- Asterisk課堂-IAX2 呼叫流程
- Asterisk課堂-SIP介紹
- Asterisk課堂-SIP呼叫流程
- Asterisk課堂-終端注冊(cè)
- Asterisk課堂-SIP Trunk
- Asterisk課堂-SIP和NAT
- Asterisk課堂-撥號(hào)規(guī)則中的Include使用方法
- Asterisk課堂-撥號(hào)規(guī)則中的語(yǔ)音播放
- Asterisk課堂-DTMF 介紹
- Asterisk課堂-語(yǔ)音IVR基礎(chǔ)
- Asterisk課堂-Timeout 超時(shí)設(shè)置
Asterisk撥號(hào)規(guī)則中支持了多種對(duì)系統(tǒng)時(shí)間控制的方式,這些方式可以監(jiān)控用戶輸入DTMF的時(shí)間,或計(jì)費(fèi)環(huán)境中的一些時(shí)間長(zhǎng)度。本章節(jié)我們介紹撥號(hào)規(guī)則中對(duì)通道的超時(shí)設(shè)置。超時(shí)簡(jiǎn)單來說,就是用戶在默認(rèn)的系統(tǒng)超時(shí)設(shè)置的時(shí)間范圍內(nèi)是否收到系統(tǒng)需要的輸入?yún)?shù)。如果用戶沒有在一定時(shí)間內(nèi)沒有輸入按鍵DTMF,這樣系統(tǒng)需要做一個(gè)錯(cuò)誤提示來引導(dǎo)用戶進(jìn)行下一步的呼叫流程。
視頻中介紹了幾個(gè)超時(shí)的用法和應(yīng)該注意到地方:
今天介紹的超時(shí)包括幾個(gè)方面的內(nèi)容:超時(shí)的語(yǔ)法定義,超時(shí)的幾種設(shè)置方式,Digit超時(shí)注意到地方,超時(shí)和其他設(shè)置之間的配合。
超時(shí)的語(yǔ)法定義比較簡(jiǎn)單,系統(tǒng)設(shè)置了一定的默認(rèn)值,用戶輸入在一定時(shí)間內(nèi)輸入DTMF,否則進(jìn)行錯(cuò)誤處理。這里的Timeout是針對(duì)channel來說的,超時(shí)設(shè)置包括了Reponse Timeout,Digit Timeout 和Absolute Timeout。以上三中超時(shí)設(shè)置是針對(duì)呼叫通道來說的,完全不同于application 中的timeout。
Reponse Timeout,Digit Timeout 和Absolute Timeout的用法。這里我們專門把這三個(gè)超時(shí)進(jìn)行一下簡(jiǎn)單介紹,以便用戶可以快速了解這三個(gè)超時(shí)的不同。Reponse 超時(shí)設(shè)置是用來檢測(cè)用戶是否在一定時(shí)間內(nèi)輸入第一個(gè)數(shù)字。Digit 超時(shí)是系統(tǒng)已經(jīng)收到了用戶輸入的數(shù)字,等待下一次數(shù)字的輸入超時(shí)時(shí)間設(shè)置。例如,用戶如果想輸入62,但是現(xiàn)在用戶僅輸入了6,系統(tǒng)需要等待數(shù)字2 輸入。它們中間的等待時(shí)間就是Digit Timeout的設(shè)置時(shí)間。Absolute Timeout 是針對(duì)呼叫的整個(gè)流程來說,經(jīng)常使用的場(chǎng)景是對(duì)一些呼叫的時(shí)長(zhǎng)控制,例如我們的計(jì)費(fèi)卡。如果做電話運(yùn)營(yíng)的時(shí)候,用戶電話卡金額的不同會(huì)支持不同的時(shí)間長(zhǎng)度。這樣的話,系統(tǒng)可以對(duì)其時(shí)間進(jìn)行控制。最后,因?yàn)橛脩粜枰斎隓TMF,所以Asterisk是否完全完整地收到了用戶輸入的DTMF,這里可能會(huì)引起一些問題。例如,我們經(jīng)常說的IVR不能工作,或者DTMF輸入錯(cuò)誤。引起這些問題的原因很多,用戶需要在實(shí)際環(huán)境中配合服務(wù)器和終端進(jìn)行設(shè)置排查。
使用 Digit Timeout 時(shí)應(yīng)該注意的問題。我們單獨(dú)拿出這個(gè)功能來提醒用戶,因?yàn)橄到y(tǒng)檢測(cè)到是一個(gè)完整的DTMF數(shù)字位數(shù),所以在撥號(hào)規(guī)則設(shè)計(jì)時(shí)一定要避免號(hào)碼的部分重復(fù),這樣的設(shè)計(jì)思路可能會(huì)導(dǎo)致很多錯(cuò)誤。例如,圖例中我們討論的,如果用戶想撥62,實(shí)際上系統(tǒng)里面的分機(jī)號(hào)碼有620和62兩個(gè)號(hào)碼。因?yàn)閾芴?hào)規(guī)則已經(jīng)在內(nèi)存中加載了620和62兩種匹配的設(shè)置,如果用戶撥打62 的時(shí)候,系統(tǒng)仍然需要等待用戶輸入最后一個(gè)0。如果用戶沒有撥0,則進(jìn)入到62相應(yīng)的撥號(hào)流程;否則會(huì)等待0或者通過超時(shí)來進(jìn)行輸入判斷。這樣就可能導(dǎo)致問題的發(fā)生。
Timeout 超時(shí)設(shè)置和其他應(yīng)用之間可能引起一個(gè)系統(tǒng)時(shí)間的重新調(diào)整。在我們的圖例中,如果用戶在流程中設(shè)置了一個(gè)超時(shí)的限制,接下來的邏輯如果涉及了時(shí)間的重新定義,則最新的時(shí)間定義會(huì)覆蓋以前的設(shè)置。如果Waitexten 設(shè)置為30,以前的設(shè)置為20,則Waitexten 的時(shí)間設(shè)置會(huì)覆蓋上面的設(shè)置。所以,我們?cè)谶@里提醒用戶,需要注意這個(gè)時(shí)間的變化,同時(shí)還要通過時(shí)間的流程測(cè)試來驗(yàn)證最后的結(jié)果。
在本章節(jié)中,我們介紹了超時(shí)設(shè)置的用法,幾個(gè)超時(shí)設(shè)置的區(qū)別,還有Digit超時(shí)設(shè)置應(yīng)該注意到對(duì)方,最后我們還介紹了超時(shí)設(shè)置和其他應(yīng)用的時(shí)間關(guān)聯(lián)問題。我們希望通過本章節(jié)的介紹,讓用戶可以基本了解超時(shí)的概念和使用過程中應(yīng)該注意到一些容易出錯(cuò)的地方,例如號(hào)碼設(shè)計(jì)的重復(fù),時(shí)間設(shè)置和其他應(yīng)用的覆蓋問題,并且通過自己編寫呼叫流程來進(jìn)一步驗(yàn)證這些時(shí)間設(shè)置!