1

アスタリスクダイヤルプランでは、dtmf入力が2桁以上の場合にそのようになり、プロンプトの再生中に1桁が押されると、1桁のdtmf入力の場合と同様にi拡張子(無効な拡張子)になります。プロンプトが再生されていますが、正しい内線番号に移動しますか?ありがとう

4

3 に答える 3

4

次に、ユーザーがダイヤルプランを続行するために 4 桁の PIN を入力する必要がある別の例を示します。

[Login]
exten = s,1,Playback(/var/lib/asterisk/sounds/custom/login)
exten = s,n,Set(rightPIN=1234)
exten = s,n,Read(inPIN,/var/lib/asterisk/sounds/custom/enterPIN,4)
exten = s,n,GotoIf($["${inPIN}" = "${rightPIN}"]?pin-accepted,1)

; Didn't go to pin-accepted, so play badPIN and hangup
exten = s,n,Playback(/var/lib/asterisk/sounds/custom/badPINgoodbye)
exten = s,n,Hangup()

; correct pin, play something
exten = pin-accepted,1,Playback(/var/lib/asterisk/sounds/custom/something)
...

Read() アプリケーションの 3 番目のパラメーターは、待機する桁数です。読み取りの詳細については、Asterisk Wiki: 読み取りを参照してください。

編集:これを非常にうまく行うAuthenticateというダイヤルプラン アプリもあります。

于 2013-03-12T17:56:15.723 に答える
0

これを読むことから始めることをお勧めします:

http://astbook.asteriskdocs.org/en/2nd_Edition/asterisk-book-html-chunk/asterisk-CHP-5-SECT-1.html

または ORelly の著書「Asterisk the future of telephony」。

于 2013-03-13T06:52:36.197 に答える
0

これは、diaplan の設定方法によって異なりますが、background() アプリケーションを使用しているようです。Background() は DTMF をリッスンし、最初の明確な一致で現在のコンテキストの拡張機能にルーティングします。

たとえば、コンテキストに 1、2、および 100 がある場合、2 を押すと (明確であるため) 2 に直接ルーティングされます。background() は 1 または 100 のどちらに移動するかがわからないため、1 を押すとタイムアウトを待ちます。現在のコンテキストには 3 で始まる拡張機能がないため、3 を押すと i の特別な拡張機能に移動します。

IVR コンテキストから内部電話の 1 つにルーティングすることが目的の動作である場合は、電話コンテキストを IVR コンテキスト内に含める必要があります。

[phones]
exten => 100,1,Dial(SIP/phone1)
exten => 101,1,Dial(SIP/phone2)
...

[IVR]
exten => s,1,Background(message)

exten => 1,1,Queue(Sales)
exten => 2,1,Queue(Support)
exten => i,1,Playback(pbx-invalid)

include => phones

公式ドキュメントの詳細: https://wiki.asterisk.org/wiki/display/AST/Application_BackGround

于 2013-03-12T14:58:08.953 に答える