Testing external IVR using Asterisk

My company has an unstable IVR system. When calling the 1-800-xxx-xxxx and if it’s working, the greeting message would be “Welcome to …”, when the IVR is not working right, the IVR would play the default message “Due to technical difficulty…”. I would like to automate a test call every hour to the IVR to confirm if the IVR is working as expected by detecting the “Welcome to…” For simplicity, in first phase, we only want to compare what msg test call receives to the expected greeting announcement and send us an notification. Then after that, we might want to send DTMF signal to target a certain IVR menu area in the IVR for additional tests.

My initial thought on this is that if we can automate this task with a softphone to dial the company number, record the greeting in some kind of wave file and then compare with the expected wav file. I am wondering if this is the right approach. If it’s so, is there an open source tool that would allow to compare the sound files (wav,gsm…). It might have to trim the silence before and after the recorded greeting.

Or if this can be implement using Asterisk to originate the call ? and perhaps leveraging Sphinx to recognize the returned announcement ?

What are your thoughts on these?

Thanks

Do you have control over the IVR, or are you the customer and your vendor frequently has issues?

If you have control then I would suggest adding a ‘test’ branch based on the caller-id of your test server. I have implemented similar solutions where the first thing the IVR does if ANI == [test system] is enter a branch which goes through and validates all the components for the IVR are functioning…

check-db
check-dns
check-audio files
etc

The IVR host would return a DTMF sequence to let you know what the results of the test are. Usually I do a 0 or 1 based on the success of each test.

1111 would mean all 4 tests passed
1101 would mean 1 test failed

Not saying this will work for you, but this is how I personally have solved this problem in the past.

-g

[quote=“ahle1”]My company has an unstable IVR system. When calling the 1-800-xxx-xxxx and if it’s working, the greeting message would be “Welcome to …”, when the IVR is not working right, the IVR would play the default message “Due to technical difficulty…”. I would like to automate a test call every hour to the IVR to confirm if the IVR is working as expected by detecting the “Welcome to…” For simplicity, in first phase, we only want to compare what msg test call receives to the expected greeting announcement and send us an notification. Then after that, we might want to send DTMF signal to target a certain IVR menu area in the IVR for additional tests.

My initial thought on this is that if we can automate this task with a softphone to dial the company number, record the greeting in some kind of wave file and then compare with the expected wav file. I am wondering if this is the right approach. If it’s so, is there an open source tool that would allow to compare the sound files (wav,gsm…). It might have to trim the silence before and after the recorded greeting.

Or if this can be implement using Asterisk to originate the call ? and perhaps leveraging Sphinx to recognize the returned announcement ?

What are your thoughts on these?

Thanks[/quote]

Can you record some DTMF tones in the “Due to technical difficulty…” message? Your calling program can detect these tones and act accordingly.

bradkc5sp,
That sounds like a great idea. That got me excited wanting to create that calling program but wondering where I should start using Asterisk.

I can initiate a call via Ast Manager but then how I can stream the audio back to the Asterisk to detect the DTMF embeded in it.

Any thoughts ?

Thanks in advance

[quote=“ahle1”]bradkc5sp,
That sounds like a great idea. That got me excited wanting to create that calling program but wondering where I should start using Asterisk.

I can initiate a call via Ast Manager but then how I can stream the audio back to the Asterisk to detect the DTMF embeded in it.

Any thoughts ?

Thanks in advance[/quote]

Set up a .call file to start your call. In the context you create for this call, place a Background statement with Silence/5 and be sure that the recorded tone(s) happen with the first 5 seconds. The call will detect the tone(s) without any other need for “streaming”. Asterisk is listening during the call.