0
votes

I'm having a hard time thinking about a solution for this problem, I'm using asterisk to develop a phone ivr smart application which needs some time to read number to the caller, the way asterisk work is using the file say.conf for building the audio files to play for the number to input.

For example, if I write saynumber(123) it will go into say.conf file and find the matching regex and then build list of files to play (for the example it will play /digits/hundred then digits/and then digits/twenty then digits/three,

Now to the problem:

The command SayNumber is not listening to the user input while playing the files which means that the user cant interrupt the system by typing some number on his phone and it's not convenient for the user.

The command Read(var,filestoplayseperatedby&) is capable of listening to the user dtmf input while playing list of files. What I'm trying to achieve is getting the list of the files based on the say.conf file to a variable, then after I got the file I will use the Read command and the it will say the number while listening to the user input. I also don't want to use tts engines since its a multilingual application that not all of them are tts available (Hebrew etc.) Also tts won't solve the main issue listening to the user input while playing.

Sorry for my English, since I'm not a native English speaker.

Here is a part from the asterisk say.conf file:

_[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}

Any help will be appreciated.

1

1 Answers

0
votes

You have 2 options

1) change saydigits to read digits(c/c++ programming)

2) give correct string to READ app(using fastagi/agi or other method)