1

私は 2 つのアスタリスク サーバーを持っています。PBXINFLASH から Asterisk 11.9.0 に移行する必要があります。フラッシュ内の PbX は、Asterisk 10.12.1 を実行しています。Asterisk 10.12.1 では完全に正常に動作するダイヤルプランがありますが、Asterisk 11.9.0 を搭載した新しいボックスでは、DTMF またはユーザー キー入力がダイヤルプランの一部で機能しません。私は dtmf のデバッグを試みましたが、両方のサーバーは同じで、デバッグ結果に違いはありません。これは、1 つのマシンで私のダイヤルプランが正常に動作し、他のマシンが部分的に動作することも奇妙です。ダイヤル プランは、発信者が 1 を押して続行し、受信者が電話を受け、システムが通話を受け入れるか電話を切るために 1 を押すように要求する通話画面です。アスタリスク 11.9.0 発信者が 1 を押す入力は正常に機能していますが、2 番目のユーザー/受信者が 1 を押しても機能しません。何でも。

sip アカウントを使用して dtmf をテストしています。同じ問題をテストするために、sip アカウントと sip ソフトフォンを交換しました。以下は、同じマクロの半分が機能し、後半がユーザー入力を受け付けない 2 つの部分です。

機能し、ユーザー入力を受け取る前半。

exten => _X.,n,GotoIf($[${GROUP_COUNT(${CallerNum})} > 1]?Exceeded) ;Exceeded?
exten => _X.,n,Set(HngupCount=1);Hangup
exten => _X.,n,Flite(Please press 1 to speak with ${destUID})
exten => _X.,n,Read(yesno,sip-silence,1,,2,5)
exten => _X.,n,GotoIf($[${yesno} = 1]?continue:hangup)

動作していない、またはユーザーの入力を受け付けていない後半:-

[macro-Dial2]
exten => s,1,Wait(1);ResetCDR
exten => s,n,Set(_StartTime=${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)})
exten => s,n,ResetCDR
exten => s,n,Set(_RCount=1)
exten => s,n(Repeat),Flite(Hi there)
exten => s,n,Flite(${ARG1} wants to speak to you. Please press 1 to accept the call. 2 to forward the call to voicemail or 3 to reject the call.)
exten => s,n,Flite(we are connecting you)
exten => s,n,Read(ACCEPT,sip-silence,1,,1,5)
exten => s,n,Set(_RCount=$[${RCount} + 1])
exten => s,n,NoOp(Counter is ${RCount} -- the user selected: ${ACCEPT});
exten => s,n,Gotoif($[${ACCEPT} = 1]?accept:vm) ;Accept the call
exten => s,n(vm),Gotoif($[${ACCEPT} = 2]?voicemail:rej) ;forward the call to dummy voicemail (Actually just record the callers message)
exten => s,n(rej),Gotoif($[${ACCEPT} = 3]?reject) ;Reject the call and hangup
exten => s,n,Gotoif($[${RCount} > 2]?reject:Repeat) ; If no key pressed, just hangup the call and inform the User.
exten => s,n(accept),set(SecLeg=${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)})

後半では、次の行まで正常に動作します。

exten => s,n,Flite(${ARG1} wants to speak to you. Please press 1 to accept the call. 2 to forward the call to voicemail or 3 to reject the call.)
exten => s,n,Flite(we are connecting you)
4

1 に答える 1

0

ダイヤルプランでは、すべてのフライト メッセージの再生が終了した後にのみ、ユーザー入力が取得されることに注意してください。

${ARG1} のみで再生することを強くお勧めしますが、他のすべての (静的部分) はファイルに記録し、READ コマンドで使用します。

アスタリスクで dtmf デバッグを有効にすると、詳細情報を取得できます。

そのためには、logger.conf を編集する必要があります。

于 2014-06-17T01:26:11.077 に答える