We've Moved! Please visit our new and improved forum over at our new portal: https://portal.plumvoice.com/hc/en-us/community/topics

what event is fired if only dtmf and press # first?

Questions and answers about IVR programming for Plum DEV

Moderators: admin, support

Post Reply
nathanl
Posts: 12
Joined: Wed Oct 15, 2003 8:32 pm
Contact:

what event is fired if only dtmf and press # first?

Post by nathanl »

I am catching "noinput" when nothing is entered, and put in "nomatch" and "error" but none of these seem to catch the event.

Again, I have inputmodes = dtmf and in a digits field I am simply pressing the # key.

Thanks!

P.S. Is there a list of all system events that could be fired and what conditions cause them to fire?

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

IVR ex of link declared with grammar that will make vxml int

Post by support »

the function keys ('*', and '#') do not register as digits.
In the plum voice platform, integers are considered to be numeric characters only (0 - 9).

If you want to <catch> '*' or '#' characters, try using a link:

Code: Select all

<?xml version="1.0"?>
<vxml version="2.0">

<property name="input" value="dtmf"/>

<link expr="'#caught_star'">
  <grammar type="application/x-jsgf">^"*"$</grammar>
</link>

<form id="test">
<field name="next_char" type="digits">
   <prompt timeout="10ms">
     this is a test, you can press star at any point in this prompt.
   </prompt>
</field>
<block>
</block>
</form>

<form id="caught_star">
  <block>
    The star key was pressed!
  </block>
</form>
</vxml>
In the preceding IVR example, a <link> is declared with an IVR grammar that will make the vxml interpreter jump to the "caught_star" form when the # key is pressed.


Here is a list of voicexml events that are fired by the plum voice platform:
"connection.disconnect.hangup"
"connection.disconnect.transfer"
"error.badfetch"
"error.badfetch.baduri"
"error.badfetch.baddialog"
"error.badfetch.applicationuri"
"error.semantic"
"error.semantic.ecmascript"
"error.semantic.no_event_in_throw"
"error.unsupported.format"
"error.unsupported.object"
"error.unsupported.language"
"error.unsupported.transfer"
"noinput"
"nomatch"
Last edited by support on Thu Feb 25, 2010 5:30 pm, edited 4 times in total.

nathanl
Posts: 12
Joined: Wed Oct 15, 2003 8:32 pm
Contact:

Re: what event is fired if only dtmf and press # first?

Post by nathanl »

ok, but here is my problem,
for some reason the default system prompts for noinput sequence:
"Sorry I didn't understand you"
"I still don't understand"
"Please say it one last time"
"I'm sorry I just can't understand your response" <hangup>

is responding when I press #, but not my noinput
event hander is ignored. However when I simply wait and don't
press anything, then my noinput event handler is used and
my message(s) are played instead.

I'm trying to make the two the same (using my messages).
I don't want to go to this message every time the user presses
the #, since it is often valid to terminate input with the #,
but when the user does so and there is no other input, I'd like
to treat it as a "noinput".
I'm not sure how to do that using the <link> and obviously the
system is catching it correctly somehow.

nathanl
Posts: 12
Joined: Wed Oct 15, 2003 8:32 pm
Contact:

Re: what event is fired if only dtmf and press # first?

Post by nathanl »

Just to clarify from the previous post, I'm not really trying to catch the # input. I'm simply trying to make my application only play back my recorded messages. Currently all is fine, except when a user presses a # before any other input. The problem is that the system message plays instead of mine. It is the right idea of the message that I want played, it is just TTS and not quite what I want to say, especially before hangup.

Hopefully that was understandable :?
Thanks!

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

catch nomatch events in IVR application

Post by support »

Try catching <nomatch> events. When you are pressing the # key, it is not matching any defined IVR grammars. <noinput> events are only thrown when there is no speech and no dtmf input.

Try replacing your <catch> block with this:

Code: Select all

<catch event="noinput">
      <!-- put vxml you wish to execute here for noinput events  -->
</catch>

<catch event="nomatch">
      <!-- put vxml you wish to execute here for nomatch events -->
</catch>
Is this what you were trying to do with your IVR application? keep posting here and we'll figure this out.
Last edited by support on Thu Feb 25, 2010 5:32 pm, edited 4 times in total.

nathanl
Posts: 12
Joined: Wed Oct 15, 2003 8:32 pm
Contact:

Post by nathanl »

Perfect yes! I had tried this before, but didn't seem to get the correct results - perhaps there was a syntax error or my file had not been correctly updated last time.

Anyhow, all is working now!
Thank you very much!

Post Reply