VXML Detect Which Key Was Pressed | Outbound Application Tutorial | Gateway Tutorial
With dynamically generated VXML files, you can pretty much do whatever you want with your application. In this sample, we'll collect key press 1 - 5 from our customer. The following is the updated start.jsp file:
<?xml version="1.0"?> <vxml version="1.0"> <% String ans = request.getParameter("ans"); boolean isAnsweringMachine = ("t".equals(ans)); %> <form id="td"> <% if (isAnsweringMachine) { %> <block> <audio src="audio/answering.wav"/> </block> <% } else { %> <field name="rating"> <prompt timeout="10s"> <block> <audio src="audio/live.wav"/> </block> </prompt> <dtmf> 1 | 2 | 3 | 4 | 5 </dtmf> <filled> <submit next="recordrating.jsp" namelist="rating"/> </filled> </field> <% } %> </form> </vxml>
This start.jsp file will generate the follow VXML for live human pickup:
<?xml version="1.0"?> <vxml version="1.0"> <form id="td"> <field name="rating"> <prompt timeout="10s"> <block> <audio src="audio/live.wav"/> </block> </prompt> <dtmf> 1 | 2 | 3 | 4 | 5 </dtmf> <filled> <submit next="recordrating.jsp" namelist="rating"/> </filled> </field> </form> </vxml>
As you can see the key press is captured by VXML file's "rating" field. This value is then submitted to the next JSP file called recordrating.jsp.
<?xml version="1.0"?> <vxml version="1.0"> <% String key = request.getParameter("rating"); int ratetotal = 1; Integer RateTotal = (Integer) application.getAttribute("rate" + key); if (RateTotal != null) ratetotal = RateTotal.intValue() + 1; application.setAttribute("rate" + key, new Integer(ratetotal)); %> <form id="td"> <block> <audio src="audio/thankyou.wav"/> </block> </form> </vxml>
Here we simply record the key press as application attributes. A thank you message is returned the gateway. It should be quite easy to change the code such that the key press is saved to a relational database, for example.
You can test your recordrating.jsp with your browser using the following address:
http://localhost:8155/ocall/myapp/recordrating.jsp?rating=3