Is it possible to have an xml based ivr play the greeting message once and if no response within a timeout period go ahead and tranfer to an internal extension in place of repeating the greeting? Also, is menu-exec-api and menu-exec-app when used in an xml ivr the same thing? Thanks, Brian
I would like to see an XML IVR implementation for FreeSwitch along these lines... dtmf.class.php yesnogram.class.php login.class.php menu.class.php message.class.php navigator.class.php noinput.class.php nomatch.class.php record.class.php script.class.php subdb.class.php transfer.class.php click2call.class.php vxml.class.php vxml.class_debug.class.php # <?php # # /** # * Default home application # */ # class home { # # // FreeSwitch VXML Application # # var $app; # # function home () { # # } # # function process () { # # $this->app = new FreeSwitch VXML; # # $this->app->start_vxml('','','en','','','2.0'); # # $this->app->load("message", array("","Hello World !","","hello.wav")); # # $this->app->end_vxml(); # # $this->app->generate(); # } # } # # ?>
PHP?! Yucky! :-( ________________________________ From: freeswitch-users-bounces@lists.freeswitch.org [mailto:freeswitch-users-bounces@lists.freeswitch.org] On Behalf Of EdPimentl Sent: Friday, May 23, 2008 8:23 AM To: freeswitch-users@lists.freeswitch.org Subject: Re: [Freeswitch-users] XML based IVR I would like to see an XML IVR implementation for FreeSwitch along these lines... dtmf.class.php yesnogram.class.php login.class.php menu.class.php message.class.php navigator.class.php noinput.class.php nomatch.class.php record.class.php script.class.php subdb.class.php transfer.class.php click2call.class.php vxml.class.php vxml.class_debug.class.php # <?php # # /** # * Default home application # */ # class home { # # // FreeSwitch VXML Application # # var $app; # # function home () { # # } # # function process () { # # $this->app = new FreeSwitch VXML; # # $this->app->start_vxml('','','en','','','2.0'); # # $this->app->load("message", array("","Hello World !","","hello.wav")); # # $this->app->end_vxml(); # # $this->app->generate(); # } # } # # ?>
It is all about choices. We are glad to see JS support. The thought of languages such as PHP, Ruby, or Erlang are just progressive alternative to enhance what is already a superior and compelling platform. Best regards, -E
That was an elegant, well-thought out, lucid, and professional reply to my childish ranting... :-) That being said, it looks like Lua is the lead horse in the most-favored scripting language for FS apps. Still, anything that can be embedded can be used. If you know of Ruby, PHP, or Erlang experts who can help with the challenges of embedding then I'm sure the FS devs would love to hear from them. -MC ________________________________ From: freeswitch-users-bounces@lists.freeswitch.org [mailto:freeswitch-users-bounces@lists.freeswitch.org] On Behalf Of EdPimentl Sent: Friday, May 23, 2008 11:15 AM To: freeswitch-users@lists.freeswitch.org Subject: Re: [Freeswitch-users] XML based IVR It is all about choices. We are glad to see JS support. The thought of languages such as PHP, Ruby, or Erlang are just progressive alternative to enhance what is already a superior and compelling platform. Best regards, -E
Love Lua!!! Thanks for pointing this gem.... and another perfect reason for others to consider a move to Freeswitch. Best regards, -E
Agreed! ________________________________ From: freeswitch-users-bounces@lists.freeswitch.org [mailto:freeswitch-users-bounces@lists.freeswitch.org] On Behalf Of EdPimentl Sent: Friday, May 23, 2008 1:31 PM To: freeswitch-users@lists.freeswitch.org Subject: Re: [Freeswitch-users] XML based IVR Love Lua!!! Thanks for pointing this gem.... and another perfect reason for others to consider a move to Freeswitch. Best regards, -E
Woof! I'm experimenting with event sockets (inbound, if it matters), and was playing dialtone via the gentones app, like this: sendmsg call-command: execute execute-app-name: gentones execute-app-arg: %(10000, 0, 350, 440) \n\n When I pressed digits on the phone, instead of the DTMF events showing up shortly after the button was pressed, nothing was reported until the 10 seconds of tone was up, then all the DTMF evetns were reported in a quick burst. Is this the expected behavior? Is there a way to get the DTMF events reported as they happen during gentones? Version info: FreeSwitch Version 1.0.pre4 (8544M) --Woof!
How are you calling the socket application for the outbound event socket connection? If you put it in async you should get those events. /b On May 23, 2008, at 3:58 PM, Andy Spitzer wrote:
Woof!
I'm experimenting with event sockets (inbound, if it matters), and was playing dialtone via the gentones app, like this:
sendmsg call-command: execute execute-app-name: gentones execute-app-arg: %(10000, 0, 350, 440) \n\n
When I pressed digits on the phone, instead of the DTMF events showing up shortly after the button was pressed, nothing was reported until the 10 seconds of tone was up, then all the DTMF evetns were reported in a quick burst.
Is this the expected behavior? Is there a way to get the DTMF events reported as they happen during gentones?
Version info: FreeSwitch Version 1.0.pre4 (8544M)
--Woof!
_______________________________________________ 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
Brian West sip:brian@freeswitch.org
Woof! On Fri, 23 May 2008 17:13:59 -0400, Brian West <brian@freeswitch.org> wrote:
How are you calling the socket application for the outbound event socket connection? If you put it in async you should get those events.
I've tried it various ways, but this is the one I'm currently using: <extension name="DIALTONE"> <condition field="destination_number" expression="^DIALTONE$"> <action application="socket" data="127.0.0.1:8084 async full"/> </condition> </extension> Using nc on port 8084, I get the DTMF events in real time before I call gentones--and after it finishes--but during the tone the DTMF events appear to be queued and only delivered once the gentones completes. For example (long responses truncated for clarity) $ nc -v -l 127.0.0.1 8084 Connection from 127.0.0.1 port 8084 [tcp/*] accepted connect Channel-Username: 207 Channel-Dialplan: XML Channel-Caller-ID-Name: 207 Channel-Caller-ID-Number: 207 ... myevents Content-Type: command/reply Reply-Text: +OK Events Enabled sendmsg call-command: execute execute-app-name: answer Content-Type: command/reply Reply-Text: +OK Content-Length: 3303 Content-Type: text/event-plain Channel-State: CS_EXECUTE Channel-State-Number: 4 Channel-Name: sofia/cdhcp151.pingtel.com/207%40cdhcp151.pingtel.com Unique-ID: 85d100a8-46a6-4270-be3e-06159d5783c5 Call-Direction: inbound ... Event-Name: CHANNEL_EXECUTE ... Content-Length: 3281 Content-Type: text/event-plain Channel-State: CS_EXECUTE Channel-State-Number: 4 Channel-Name: sofia/cdhcp151.pingtel.com/207%40cdhcp151.pingtel.com Unique-ID: 85d100a8-46a6-4270-be3e-06159d5783c5 ... Event-Name: CHANNEL_ANSWER ... Content-Length: 3323 Content-Type: text/event-plain Channel-State: CS_EXECUTE Channel-State-Number: 4 Channel-Name: sofia/cdhcp151.pingtel.com/207%40cdhcp151.pingtel.com Unique-ID: 85d100a8-46a6-4270-be3e-06159d5783c5 ... Event-Name: CHANNEL_EXECUTE_COMPLETE ... (Now I press the digit "*") Content-Length: 3288 Content-Type: text/event-plain Channel-State: CS_EXECUTE Channel-State-Number: 4 Channel-Name: sofia/cdhcp151.pingtel.com/207%40cdhcp151.pingtel.com ... DTMF-Digit: * DTMF-Duration: 2000 Event-Name: DTMF ... (Now I start a 10 second tone, and press the digit "0" shortly after it starts) sendmsg call-command: execute execute-app-name: gentones execute-app-arg: %(10000, 0, 350, 440) Content-Type: command/reply Reply-Text: +OK Content-Length: 3338 Content-Type: text/event-plain Channel-State: CS_EXECUTE Channel-State-Number: 4 Channel-Name: sofia/cdhcp151.pingtel.com/207%40cdhcp151.pingtel.com Unique-ID: 85d100a8-46a6-4270-be3e-06159d5783c5 ... Application: gentones Application-Data: %25(10000,%200,%20350,%20440) Event-Name: CHANNEL_EXECUTE ... (Nothing happens here for 10 seconds) Content-Length: 3347 Content-Type: text/event-plain Channel-State: CS_EXECUTE Channel-State-Number: 4 Channel-Name: sofia/cdhcp151.pingtel.com/207%40cdhcp151.pingtel.com Unique-ID: 85d100a8-46a6-4270-be3e-06159d5783c5 Application: gentones Application-Data: %25(10000,%200,%20350,%20440) Event-Name: CHANNEL_EXECUTE_COMPLETE ... Event-Date-timestamp: 1211578728120470 ... (And now immediately after the gentones is complete, comes the report of the digit I pressed 9 seconds ago) Content-Length: 3288 Content-Type: text/event-plain Channel-State: CS_EXECUTE Channel-State-Number: 4 Channel-Name: sofia/cdhcp151.pingtel.com/207%40cdhcp151.pingtel.com Unique-ID: 85d100a8-46a6-4270-be3e-06159d5783c5 ... DTMF-Digit: 0 DTMF-Duration: 2000 Event-Name: DTMF ... Event-Date-timestamp: 1211578728120470 ... --Woof!
see if just async and not async full works On Fri, May 23, 2008 at 4:45 PM, Andy Spitzer <woof@pingtel.com> wrote:
Woof!
On Fri, 23 May 2008 17:13:59 -0400, Brian West <brian@freeswitch.org> wrote:
How are you calling the socket application for the outbound event socket connection? If you put it in async you should get those events.
I've tried it various ways, but this is the one I'm currently using:
<extension name="DIALTONE"> <condition field="destination_number" expression="^DIALTONE$"> <action application="socket" data="127.0.0.1:8084 async full"/> </condition> </extension>
Using nc on port 8084, I get the DTMF events in real time before I call gentones--and after it finishes--but during the tone the DTMF events appear to be queued and only delivered once the gentones completes.
For example (long responses truncated for clarity)
$ nc -v -l 127.0.0.1 8084 Connection from 127.0.0.1 port 8084 [tcp/*] accepted connect
Channel-Username: 207 Channel-Dialplan: XML Channel-Caller-ID-Name: 207 Channel-Caller-ID-Number: 207 ...
myevents
Content-Type: command/reply Reply-Text: +OK Events Enabled
sendmsg call-command: execute execute-app-name: answer
Content-Type: command/reply Reply-Text: +OK
Content-Length: 3303 Content-Type: text/event-plain Channel-State: CS_EXECUTE Channel-State-Number: 4 Channel-Name: sofia/cdhcp151.pingtel.com/207%40cdhcp151.pingtel.com Unique-ID: 85d100a8-46a6-4270-be3e-06159d5783c5 Call-Direction: inbound ... Event-Name: CHANNEL_EXECUTE ...
Content-Length: 3281 Content-Type: text/event-plain
Channel-State: CS_EXECUTE Channel-State-Number: 4 Channel-Name: sofia/cdhcp151.pingtel.com/207%40cdhcp151.pingtel.com Unique-ID: 85d100a8-46a6-4270-be3e-06159d5783c5 ... Event-Name: CHANNEL_ANSWER ...
Content-Length: 3323 Content-Type: text/event-plain
Channel-State: CS_EXECUTE Channel-State-Number: 4 Channel-Name: sofia/cdhcp151.pingtel.com/207%40cdhcp151.pingtel.com Unique-ID: 85d100a8-46a6-4270-be3e-06159d5783c5 ... Event-Name: CHANNEL_EXECUTE_COMPLETE ...
(Now I press the digit "*") Content-Length: 3288 Content-Type: text/event-plain
Channel-State: CS_EXECUTE Channel-State-Number: 4 Channel-Name: sofia/cdhcp151.pingtel.com/207%40cdhcp151.pingtel.com ... DTMF-Digit: * DTMF-Duration: 2000 Event-Name: DTMF ...
(Now I start a 10 second tone, and press the digit "0" shortly after it starts) sendmsg call-command: execute execute-app-name: gentones execute-app-arg: %(10000, 0, 350, 440)
Content-Type: command/reply Reply-Text: +OK
Content-Length: 3338 Content-Type: text/event-plain
Channel-State: CS_EXECUTE Channel-State-Number: 4 Channel-Name: sofia/cdhcp151.pingtel.com/207%40cdhcp151.pingtel.com Unique-ID: 85d100a8-46a6-4270-be3e-06159d5783c5 ... Application: gentones Application-Data: %25(10000,%200,%20350,%20440) Event-Name: CHANNEL_EXECUTE ...
(Nothing happens here for 10 seconds)
Content-Length: 3347 Content-Type: text/event-plain
Channel-State: CS_EXECUTE Channel-State-Number: 4 Channel-Name: sofia/cdhcp151.pingtel.com/207%40cdhcp151.pingtel.com Unique-ID: 85d100a8-46a6-4270-be3e-06159d5783c5 Application: gentones Application-Data: %25(10000,%200,%20350,%20440) Event-Name: CHANNEL_EXECUTE_COMPLETE ... Event-Date-timestamp: 1211578728120470 ...
(And now immediately after the gentones is complete, comes the report of the digit I pressed 9 seconds ago) Content-Length: 3288 Content-Type: text/event-plain
Channel-State: CS_EXECUTE Channel-State-Number: 4 Channel-Name: sofia/cdhcp151.pingtel.com/207%40cdhcp151.pingtel.com Unique-ID: 85d100a8-46a6-4270-be3e-06159d5783c5 ... DTMF-Digit: 0 DTMF-Duration: 2000 Event-Name: DTMF ... Event-Date-timestamp: 1211578728120470 ...
--Woof!
_______________________________________________ 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
-- Anthony Minessale II FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ AIM: anthm MSN:anthony_minessale@hotmail.com <MSN%3Aanthony_minessale@hotmail.com> GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com<PAYPAL%3Aanthony.minessale@gmail.com> IRC: irc.freenode.net #freeswitch FreeSWITCH Developer Conference sip:888@conference.freeswitch.org <sip%3A888@conference.freeswitch.org> iax:guest@conference.freeswitch.org/888 googletalk:conf+888@conference.freeswitch.org<googletalk%3Aconf%2B888@conference.freeswitch.org> pstn:213-799-1400
Please update to at least rev 8564 and try again. Thanks, On May 23, 2008, at 5:10 PM, Andy Spitzer wrote:
Woof!
On Fri, 23 May 2008 17:57:59 -0400, Anthony Minessale <anthony.minessale@gmail.com
wrote:
see if just async and not async full works
Just tried that. No, it doesn't work either.
--Woof!
_______________________________________________ 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
Brian West sip:brian@freeswitch.org
Woof! On Fri, 23 May 2008 20:02:46 -0400, Brian West <brian@freeswitch.org> wrote:
Please update to at least rev 8564 and try again. Will do next Tuesday. Thanks for the quick fixes. Enjoy the long weekend (for those of you who are US based, at least!)
--Woof!
Andy, I have tested it and it works... but I would really appreciate if you can test it before monday's 1.0 release. On May 23, 2008, at 7:22 PM, Andy Spitzer wrote:
Woof!
On Fri, 23 May 2008 20:02:46 -0400, Brian West <brian@freeswitch.org> wrote:
Please update to at least rev 8564 and try again. Will do next Tuesday. Thanks for the quick fixes. Enjoy the long weekend (for those of you who are US based, at least!)
--Woof!
_______________________________________________ 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
Brian West sip:brian@freeswitch.org
Woof! On Fri, 23 May 2008 20:34:30 -0400, Brian West <brian@freeswitch.org> wrote:
I have tested it and it works... but I would really appreciate if you can test it before monday's 1.0 release.
It now works as expected. Sorry I didn't get a chance to try it before the release, but sometimes life trumps work (probably not often enough, I'm afraid!). Thanks for the fix, and congrats on the release. --Woof!
Andy, I replicated your problem on RC4. It's very interesting as when I try the very same thing using the playback application instead of gentones, it works properly in a non-blocking mode: sendmsg call-command: execute execute-app-name: playback execute-app-arg: tone_stream://%(10000, 0, 350, 440) \n\n A quick fix, if you wish -----Original Message----- From: freeswitch-users-bounces@lists.freeswitch.org [mailto:freeswitch-users-bounces@lists.freeswitch.org] On Behalf Of Andy Spitzer Sent: Saturday, May 24, 2008 8:11 AM To: freeswitch-users@lists.freeswitch.org Subject: Re: [Freeswitch-users] Delayed DTMF events during gentones Woof! On Fri, 23 May 2008 17:57:59 -0400, Anthony Minessale <anthony.minessale@gmail.com> wrote:
see if just async and not async full works
Just tried that. No, it doesn't work either. --Woof!
Its already fixed in SVN. /b On May 24, 2008, at 9:10 AM, UV wrote:
Andy, I replicated your problem on RC4.
It's very interesting as when I try the very same thing using the playback application instead of gentones, it works properly in a non-blocking mode:
sendmsg call-command: execute execute-app-name: playback execute-app-arg: tone_stream://%(10000, 0, 350, 440) \n\n
A quick fix, if you wish
-----Original Message----- From: freeswitch-users-bounces@lists.freeswitch.org [mailto:freeswitch-users-bounces@lists.freeswitch.org] On Behalf Of Andy Spitzer Sent: Saturday, May 24, 2008 8:11 AM To: freeswitch-users@lists.freeswitch.org Subject: Re: [Freeswitch-users] Delayed DTMF events during gentones
Woof!
On Fri, 23 May 2008 17:57:59 -0400, Anthony Minessale <anthony.minessale@gmail.com> wrote:
see if just async and not async full works
Just tried that. No, it doesn't work either.
--Woof!
_______________________________________________ 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
Woof! On Sat, 24 May 2008 10:10:55 -0400, UV <uv@talknet.com.au> wrote:
sendmsg call-command: execute execute-app-name: playback execute-app-arg: tone_stream://%(10000, 0, 350, 440) \n\n
A quick fix, if you wish
Neat. I wasn't aware of that syntax of tone_steam: URL. I'll be sure to add that to my bag of tricks. It's very similar to something I came up with years ago for netann and MSCML RFCs but had to drop for political reasons...we didn't want to have to wait to publish the RFCs because we'd have to standardize with IANA on a tone: scheme, so we dropped it from the RFCs even though it is really useful in real life. It had a syntax like: tone://dialtone?freq1=440&power1=-20&freq2=340&power2=-20&duration=10000 where all tone generation variables are specified as URL parameters. There was also a "silence://silence?duration=xxxx" scheme for generating various amounts of silence. It was just an alias for tone:, as setting freq1=0, freq2=0 was the same as saying silence. --Woof!
participants (7)
-
Andy Spitzer
-
Anthony Minessale
-
Brian Snipes
-
Brian West
-
EdPimentl
-
Michael Collins
-
UV