簡體   English   中英

如果呼叫者提前輸入號碼,星號會掛斷

[英]Asterisk hangs up if caller inputs number early

我們有一個Asterisk IVR系統設置,提示用戶輸入

在擴展文件中,我們具有以下內容:

[englishprocess]
exten => s,1,Answer()
exten => s,n,Wait(1)
exten => s,n,Set(TIMEOUT(digit)=2)
exten => s,n,agi(mstts.agi,"Please enter your ID number followed by pound.",en-US)
exten => s,n,Read(APCODE,,666)
exten => s,n,agi(mstts.agi,"Your ID Number is",en)
exten => s,n,SayDigits(${APCODE})
exten => s,n,agi(mstts.agi,"If this is correct press, 1, otherwise, press, 3",en-US)
exten => s,n,Read(CHECK,,1)
exten => s,n,GotoIf($["${CHECK}" = "3"]?englishprocess,s,1)
exten => s,n,Set(MYADDR=${CURL(webserviceaddress.php?idnum=${APCODE})})
exten => s,n,agi(mstts.agi,${MYADDR},en-US)
exten => s,n,Hangup()

問題是,如果用戶在文本語音提示完成之前輸入了其ID,或者如果用戶在完成語音提示之前打了1

“如果正確,請按1,否則請按3”

服務掛斷。

我們如何保持流程相同並接受用戶的早期輸入?

如果無法及早接受用戶輸入,是否可以防止掛斷並再次提示?

我們切換到Amazon的Polly服務來生成聲音文件,並使用星號方法Playback(filename)而不是extensions_custom.conf內部的agi()來阻止如果用戶過早輸入文本而導致電話掛斷。

授予服務將忽略早期輸入的內容,但至少不會掛斷。 更好的解決方案是接受早期輸入。 如果有其他選擇,我將進行更新。

編輯:找到了一個替代的Read() ,它使我們能夠播放可被中斷的聲音,因此我們現在有了Read()playback()調用的混合,並且可以控制用戶可以通過這種方式跳過哪些聲音文件。 該服務不再掛斷用戶,並且我們不再使用agi()調用。

agi(mstts.agi,"text",[language],[intkey],[speed])

如果用戶輸入任何內容,則使用intkey腳本將停止並轉到該擴展名。 我不知道它是否適合您的情況,但值得嘗試。

exten => _X,1,agi(mstts.agi,"You just pressed ${EXTEN}. Try another one please.",en,any)嘗試使用,any的語言后,看看是否可行。 我從https://github.com/zaf/asterisk-mstts獲得了該示例

Asterisk Dialplan不能認真地使用密集的TextToSpeech創建動態服務。

  • 首先,因為如果您不使用緩存或不使用MRCP連接器,則延遲可能是一個問題。
  • 其次,因為通過這種方式您不支持插入( https://www.w3.org/TR/voicexml20/#dml4.1.5 ),並且您在任何時候都無法與DTMF(或語音)進行交互。

要創建語音門戶,您可能需要一個VoiceXML解釋器。 您可以通過兩種方法在Asterisk中創建此服務:Voximal是運行在Asterisk之上的商業應用程序,或VoiceGlue是免費的GPL無效項目(您可以在舊的Asterisk上運行它)。

查看此行:

print "STREAM FILE $file \"$keys\"\n";

https://www.voip-info.org/wiki/view/stream+file

 Usage: STREAM FILE <filename> <escape digits> [sample offset]

Send the given file, allowing playback to be interrupted by the given digits, if any.

Use double quotes for the digits if you wish none to be permitted.

If sample offset is provided then the audio will seek to sample offset before play starts.

Remember, the file extension must not be included in the filename.

之后,由於某種原因,它會像waitexten和更改擴展名那樣工作。 我不知道誰和為什么將其添加到代碼中,您可以詢問維護者。

因此,只讀取您使用的文件,而不是垃圾郵件問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM