VoiceXML 2.1 Development GuideHome  |  Frameset Home

  Outbound Transfer Basics  |  TOC  |  Transfer Exceptions  

Disconnect Events


A connection.disconnect.hangup event can occur in three ways:

The way to handle this event is to appropriately <catch> it.


<catch event="connection.disconnect.hangup">
    <log expr="'*** LOG: caught connection.disconnect.hangup event! ***'"/>
    <submit next="myCleanUp.cgi" namelist="myVariable"/>
    <exit/>
</catch>


Note that there is an explicit </exit> within our catch handler for the disconnect event. This is because, if a caller disconnects while an active voice reco field is listening for user input, then the W3C specification demands that the application immediately exit with an error.semantic event. While this is transparent to the user, it presents an ugly error getting thrown in the logger, resulting in confusion for the developer. Best practices dictate that after a disconnect event is thrown, caught, and handled, that the document should have an explicit <exit> element present to gracefully end the application, which will result in sidestepping this error event altogether.

The other important caveat to the disconnect condition is that at least one voice recognition field absolutely must be present in order to successfully catch this event. If there is not an existing one, we can create a 'dummy' field with a 'garbage' grammar to allow this event to be properly caught:


<catch event="connection.disconnect.hangup">
    <log expr="'*** LOG: caught connection.disconnect.hangup event! ***'"/>
    <submit next="myCleanUp.cgi" namelist="myVariable"/>
<!-- always use an exit after catching the disconnect -->
    <exit/>
</catch>

  <form>
    <field name="dummy">
<!-- set the 'noinput' timeout to 1 second -->
      <property name="timeout" value="1s"/>

      <prompt>
        Thanks for calling, you may now hang up.
      </prompt>

<!-- create a 'garbage' grammar that will NEVER get a match -->
      <grammar type="text/gsl"> [poppaoomowmow] </grammar>

      <filled>
        <prompt>
          no way this will ever happen.
        </prompt>
      </filled>

      <noinput>
        <disconnect/>
      </noinput>

    </field>
  </form>


Download the Code!

  Download the source code


  ANNOTATIONS: EXISTING POSTS
agonzalez
6/29/2006 4:23 AM (EDT)
in the WillWorkJustAsFineAsPaint.vxml after de log of the expression you use a submit tag without method and also without parameters it should be a goto also in the wont workt the same stuff thanks
agonzalez
6/29/2006 4:33 AM (EDT)
why to make the platform to install and evaluate a grammar it shouldnt be better a code as this?
------------------------------BOF----------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE vxml SYSTEM "../dtd/vxml.dtd">
<vxml xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml
http://www.w3.org/TR/voicexml21/vxml.xsd" version="2.1">
<catch/>
<meta name="maintainer" content="someone@somewhere.somedomain"/>
<form>
  <block>
    <prompt>
      Thanks for calling, you may now hang up.
    </prompt>
    <exit/>
  </block>
</form>
</vxml>
------------------------------EOF--------------------------
sorry this thing is said at:
http://docs.voxeo.com/voicexml/2.0/frame.jsp?page=disconnect.htm
agonzalez
6/29/2006 4:43 AM (EDT)
well im developing a application that jumps between much .jsp files is there anyway to catch a "<catch event="connection.disconnect.hangup" scope="application"/>"or i have to include a catch in 26 files?
---------------------------------------------------------------
sorry for this its answered at:
http://docs.voxeo.com/voicexml/2.0/frame.jsp?page=vxml.htm
zscgeek
6/29/2006 9:37 AM (EDT)
Agonzalez,

As you saw if you put the <catch> in the application root document it will be active for the entire lifetime of your application. This is the way most people handle global scoped event handing.

If you need a more detailed example of this please just let us know and we can try to cook something up for you.

Regards,

    RJ
zmaqbool
2/15/2007 12:44 PM (EST)
Hi, I have an application scoped vxml file, which has the following code for catch event

code for appRoot.jsp

  <catch event="connection.disconnect.hangup">
    <submit next="diconnect.jsp"/>
    <exit/>
  </catch>

and in another vxml file, I have no reference, to this catch event, I have just included appRoot.jsp.

My Problem is that when i hang up the phone , while currently being on this page. Nothing happens... I mean it does not goto disconnect.jsp page at all..

I would be extremely thankful for helping me out.

Zahid
mikethompson
2/15/2007 3:25 PM (EST)
Hi Zahid,

Catching hangup events in VoiceXML can be a bit tricky at times, but not impossible by any means.  You need to ensure you are within an active recognition field in order to catch the hangup.  This is simply the way the VoiceXML FIA operates, but we can easily trick the platform into thinking we are in a recognition field all the time.  Check out this tutorial on disconnect events and I think you will learn a lot:

http://docs.voxeo.com/voicexml/2.0/mot_discoevents.htm

If you are still struggling to catch the hangup after making these changes, please open a private account ticket with us and we will be glad to help you.

Best,
Mike Thompson
Voxeo Corporation

login
  Outbound Transfer Basics  |  TOC  |  Transfer Exceptions  

© 2008 Voxeo Corporation  |  Voxeo IVR  |  VoiceXML & CCXML IVR Developer Site