Re: [Freeswitch-users] lua IVR interactivity problem
Does anyone use a scripting language based IVR and have this solved? Or otherwise have a solution that doesn't involve maintaining 2 distinct IVRs
If I correctly understand your requirements, then, yes there is a solution. Dave Kompel of Xarix.net has a set of C# classes that wrap the mod_managed FreeSWITCH/FreeSWITCH.Native Event and FreeSWITCH core interface routines to provide the capabilities that you are seeking. His ivr.cs class includes a Play() method that has overloads for playing a prompt file or a list of prompt files. A GetDTMF() method fully supports DTMF barge-in, as well as integrated speech recognition for mixed speech recognition/DTMF based barge-in. Helper classes for dial plan and directory configuration and handling are provided as is FreeSWITCH event accessing and processing. He makes the source freely available for redistribution. We have implemented a mod_managed, C# based version of the classic "Pizza Ordering" speech recognition demo, using Dave's C# classes and our recently introduced MRCPv1, Microsoft Speech Platform 11 based speech recognition server, "mrcpSP11-STT". It fully illustrates the use of single prompt/multiple prompts, prompt barge-in and integrated speech and DTMF handling. It also provides multiple examples of the use of his recently added ASR interfacing capability, via session exec of "detect_speech" and ASR event tracking. A Visual Studio solution containing Dave's C# classes and of course the IVR application classes is available for download at www.pontimax.com/downloads. The IVR prompt files are not contained in the application solution but can be provided upon request. Ray Keating www.pontimax.com 203-526-0170 On Mon, Dec 28, 2015 at 5:41 PM, Stanislav Sinyagin <ssinyagin at gmail.com> wrote:
it's much easier to implement the IVR logic via an ESL connection. Then you can script it in your preferred programming language and perform all necessary database lookups or whatever your application requires.
But in both cases (Lua or mod_perl or mod_python or an ESL application), you would need to execute playAndGetDigits in order to let the user enter DTMF during the playback of the prompt. If you have multiple audio files to play back, you just execute playAndGetDigits with every audio file in the sequence until the DTMF input is detected. You can also build a phrase macro and use it instead.
In case of ESL, you can also subscribe to DTMF events and play audio files asynchronously if playAndGetDigits is not sufficient for your needs.
Here is a short example in Golang, probably you'll find it useful: https://github.com/xlab1/go-fs-secretary-prototype/blob/master/golang/secret...
On Mon, Dec 28, 2015 at 6:46 PM, Peter Hartmann <peter at hartmanncomputer.com> wrote:
I'm trying to port an IVR to lua. I'm new to lua by the way. The big picture: the goal is that the IVR should change based on the output of a shell script.
I've followed the basic example over here, substituting my several wav files for the TTS prompts.
https://freeswitch.org/confluence/display/FREESWITCH/Lua+Welcome+IVR+example
But I've noticed a huge difference between this and the core IVR functionality. DTMF will not interrupt the prompts, it will only be accepted when the script reaches the session:getDigits line. It seems like session:playAndGetDigits could be interactive, but it only accepts one wav. Is there a way for either playAndGetDigits to accept multiple wav files (without concatinating)? Or otherwise is there a way for a scripted IVR to have this interactive functionality? Seems like I need to fork the getDigits first and then play the wavs, right?
I realize I could probably do the logic in the dialplan and then send the caller to different IVRs, but I'd rather not maintain 2 mostly similar IVRs.
Does anyone use a scripting language based IVR and have this solved? Or otherwise have a solution that doesn't involve maintaining 2 distinct IVRs?
Thanks much
Peter Hartmann Hartmann Computer Consulting http://blog.hartmanncomputer.com (212)203-8870
If I can't explain it to you in plain language, that means I don't understand it.
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting at freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users at lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting at freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users at lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
I get a 403 error when trying to access your page. Ray Keating <rayk@pontimax.com> wrote:
Does anyone use a scripting language based IVR and have this solved? Or otherwise have a solution that doesn't involve maintaining 2 distinct IVRs
If I correctly understand your requirements, then, yes there is a solution.
Dave Kompel of Xarix.net has a set of C# classes that wrap the mod_managed FreeSWITCH/FreeSWITCH.Native Event and FreeSWITCH core interface routines to provide the capabilities that you are seeking. His ivr.cs class includes a Play() method that has overloads for playing a prompt file or a list of prompt files. A GetDTMF() method fully supports DTMF barge-in, as well as integrated speech recognition for mixed speech recognition/DTMF based barge-in. Helper classes for dial plan and directory configuration and handling are provided as is FreeSWITCH event accessing and processing. He makes the source freely available for redistribution.
We have implemented a mod_managed, C# based version of the classic "Pizza Ordering" speech recognition demo, using Dave's C# classes and our recently introduced MRCPv1, Microsoft Speech Platform 11 based speech recognition server, "mrcpSP11-STT". It fully illustrates the use of single prompt/multiple prompts, prompt barge-in and integrated speech and DTMF handling. It also provides multiple examples of the use of his recently added ASR interfacing capability, via session exec of "detect_speech" and ASR event tracking.
A Visual Studio solution containing Dave's C# classes and of course the IVR application classes is available for download at www.pontimax.com/downloads. The IVR prompt files are not contained in the application solution but can be provided upon request.
Ray Keating www.pontimax.com 203-526-0170
On Mon, Dec 28, 2015 at 5:41 PM, Stanislav Sinyagin <ssinyagin at gmail.com> wrote:
it's much easier to implement the IVR logic via an ESL connection. Then you can script it in your preferred programming language and perform all necessary database lookups or whatever your application requires.
But in both cases (Lua or mod_perl or mod_python or an ESL application), you would need to execute playAndGetDigits in order to let the user enter DTMF during the playback of the prompt. If you have multiple audio files to play back, you just execute playAndGetDigits with every audio file in the sequence until the DTMF input is detected. You can also build a phrase macro and use it instead.
In case of ESL, you can also subscribe to DTMF events and play audio files asynchronously if playAndGetDigits is not sufficient for your needs.
Here is a short example in Golang, probably you'll find it useful: https://github.com/xlab1/go-fs-secretary-prototype/blob/master/golang/secret...
On Mon, Dec 28, 2015 at 6:46 PM, Peter Hartmann <peter at hartmanncomputer.com> wrote:
I'm trying to port an IVR to lua. I'm new to lua by the way. The big picture: the goal is that the IVR should change based on the output of a shell script.
I've followed the basic example over here, substituting my several wav files for the TTS prompts.
https://freeswitch.org/confluence/display/FREESWITCH/Lua+Welcome+IVR+example
But I've noticed a huge difference between this and the core IVR functionality. DTMF will not interrupt the prompts, it will only be accepted when the script reaches the session:getDigits line. It seems like session:playAndGetDigits could be interactive, but it only accepts one wav. Is there a way for either playAndGetDigits to accept multiple wav files (without concatinating)? Or otherwise is there a way for a scripted IVR to have this interactive functionality? Seems like I need to fork the getDigits first and then play the wavs, right?
I realize I could probably do the logic in the dialplan and then send the caller to different IVRs, but I'd rather not maintain 2 mostly similar IVRs.
Does anyone use a scripting language based IVR and have this solved? Or otherwise have a solution that doesn't involve maintaining 2 distinct IVRs?
Thanks much
Peter Hartmann Hartmann Computer Consulting http://blog.hartmanncomputer.com (212)203-8870
If I can't explain it to you in plain language, that means I don't understand it.
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting at freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users at lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting at freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users at lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
-- Your life is like a penny. You're going to lose it. The question is: How do you spend it? John Covici covici@ccs.covici.com
participants (2)
-
covici@ccs.covici.com
-
Ray Keating