【发布时间】:2014-06-11 18:59:39
【问题描述】:
我很难考虑这个问题的解决方案, 我正在使用 asterisk 开发一个电话 ivr 智能应用程序,它需要一些时间来向呼叫者读取号码,asterisk 的工作方式是使用文件 say.conf 来构建音频文件以播放要输入的号码。
例如,如果我写 saynumber(123) 它将进入 say.conf 文件并找到匹配的正则表达式,然后构建要播放的文件列表(例如它将播放 /digits /百然后数字/然后数字/二十然后数字/三,
现在问题来了:
SayNumber命令在播放文件时没有监听用户输入,这意味着用户不能通过在手机上输入一些数字来中断系统,这对用户来说很不方便。
Read(var,filestoplayseperatedby&) 命令能够在播放文件列表时监听用户的 dtmf 输入。 我想要实现的是将基于 say.conf 文件的文件列表获取到一个变量,然后在我得到文件后,我将使用 Read 命令,它会在听取用户输入的同时说出数字.我也不想使用 tts 引擎,因为它是一个多语言应用程序,并非所有引擎都可用 tts(希伯来语等)。而且 tts 也不能解决播放时听用户输入的主要问题。
对不起我的英语,因为我不是以英语为母语的人。
这是星号 say.conf 文件的一部分:
_[n]um:X000000000 => num:${SAY:0:1}, digits/billion
_[n]um:XXXXXXXXXX => num:${SAY:0:1}, digits/billion, num:${SAY:1}
_[n]um:XX000000000 => num:${SAY:0:2}, digits/billion
_[n]um:XXXXXXXXXXX => num:${SAY:0:2}, digits/billion, num:${SAY:2}
_[n]um:XXX000000000 => num:${SAY:0:3}, digits/billion
_[n]um:XXXXXXXXXXXX => num:${SAY:0:3}, digits/billion, num:${SAY:3}
任何帮助将不胜感激。
【问题讨论】:
标签: asterisk