Plum DEV Documentation
voicexml:tags:submit

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

voicexml:tags:submit [2015/07/31 14:23]
admin [<submit>]
voicexml:tags:submit [2019/09/17 12:29]
Line 1: Line 1:
-{{description>​‹submit› VoiceXML tag details and VXML code example | Submit sends data to the web server and transitions to the document sent back in the response.}} 
-====== <​submit>​ ====== 
- 
- 
-The <​submit>​ element is used to submit information to the origin web server and then transition to the document sent back in the response. Unlike <​goto>,​ it lets you submit a list of variables to the document server via an HTTP GET or POST request. 
-==== Attributes ==== 
- 
-| fetchhint | This attribute is not supported. | 
-| fetchtimeout | (defaults to "​fetchtimeout"​ global property value) The timeout for fetches. Must be specified with the appropriate time units (e.g., "​120s"​ for 120 seconds). | 
-| maxage | (defaults to "​documentmaxage"​ global property value) Tells the platform the maximum acceptable age, in seconds, of cached documents. | 
-| maxstale | (defaults to "​documentmaxstale"​ global property value) Tells the platform the maximum acceptable staleness, in seconds, of expired cached documents. | 
-| next | The URI reference. | 
-| expr | Like next, except that the URI reference is dynamically determined by evaluating the given ECMAScript expression. | 
-| fetchaudio | (defaults to "​fetchaudio"​ global property value) The URI of the audio clip to play while the fetch is being done. | 
-| method | (defaults to "​get"​) The request method: get, post, or raw. | 
-| enctype | (defaults to "​application/​x-www-form-urlencoded"​) This attribute specifies the HTTP POST encoding format. The other permissible choices are "​multipart/​form-data",​ which is the encoding method used by the platform when binary data is being submitted, "​application/​xml",​ when fetching raw XML, and "​application/​json",​ when fetching raw JSON. | 
-| namelist | The list of variables to submit. The default is to submit no variables. If a namelist is supplied, it may contain individual variable references that are submitted with the same qualification used in the namelist. Declared VoiceXML and ECMAScript variables can be referenced. | 
- 
-====Notes==== 
- 
-Exactly one of "​next"​ and "​expr"​ must be specified. NOTE: When setting the "​method"​ attribute to "​post",​ the platform does a normal POST with the variables passed in the namelist encoded as "​application/​x-www-form-urlencoded"​ or "​multipart/​form-data"​. After encoding the namelist, the platform passes the data and tells the server that the data is encoded with whatever format it used to encode. However, when setting the "​method"​ attribute to "​raw",​ the "​raw"​ type is still a POST request, but does two things to change the default behavior, allowing control over both the data and the encoding type reported to the server: 1) Rather than encoding the namelist to create the "​data",​ the platform instead executes the rawexpr javascript expression and uses the result for the data. 2) It passes the encoding that was provided in the "​enctype"​ attribute as the encoding to the web server. 
- 
-====Example==== 
-**start.php** 
-<​code>​ 
-<?php 
-  header("​Content-type:​ text/​xml"​);​ 
-  echo "<?​xml version=\"​1.0\"?>​\n";​ 
-?> 
- 
-<vxml version="​2.0">​ 
-  <var name="​license_number"/>​ 
-  <var name="​request_type"/>​ 
-  <​form>​ 
-    <field name="​license"​ type="​digits">​ 
-      <​prompt>​ 
-        Please enter your driver'​s license number. 
-      </​prompt>​ 
-      <​filled>​ 
-        <assign name="​license_number"​ expr="​license"/>​ 
-      </​filled>​ 
-    </​field>​ 
-    <field name="​request">​ 
-      <grammar type="​application/​srgs+xml"​ mode="​dtmf"​ root="​choice"​ maxdigits="​1">​ 
-        <rule id="​choice">​ 
-          <​one-of>​ 
-            <​item>​1</​item>​ 
-            <​item>​2</​item>​ 
-          </​one-of>​ 
-        </​rule>​ 
-      </​grammar>​ 
-      <​prompt>​ 
-        To renew your license, press 1. To request a new license plate, press 2. 
-      </​prompt>​ 
-      <​filled>​ 
-        <assign name="​request_type"​ expr="​request"/>​ 
-        <submit next="​process_request.php"​ method="​post"​ namelist="​ 
-        license_number request_type"​ fetchtimeout="​60s"/>​ 
-      </​filled>​ 
-    </​field>​ 
-  </​form>​ 
-</​vxml>​ 
-</​code>​ 
-**process_request.php** 
-<​code>​ 
-<?php 
-  header("​Content-type:​ text/​xml"​);​ 
-  echo("<?​xml version=\"​1.0\"?>​\n"​);​ 
-  // get the variables posted to this script 
-  $name = $_POST['​license_number'​];​ 
-  $license = $_POST['​request_type'​];​ 
-  // here we could process the data by entering the information into a database or calling a webservice 
-?> 
- 
-<vxml version="​2.0">​ 
-  <​form>​ 
-    <​block>​ 
-      <​prompt>​ 
-        Thank you. We will process your request and get back to you shortly. Goodbye. 
-      </​prompt>​ 
-      <​exit/>​ 
-    </​block>​ 
-  </​form>​ 
-</​vxml>​ 
-</​code>​ 
- 
-The output of the above script would be: 
- 
-Computer: Please enter your driver'​s license number. \\ 
-Human: <user enters: 1 2 3 4 5> \\ 
-Computer: To renew your license, press 1. To request a new license plate, press 2. \\ 
-Human: <user enters: 2> \\ 
-Computer: Thank you. We will process your request and get back to you shortly. Goodbye. \\ 
- 
- 
-====Child Tags==== 
- 
-None 
- 
- 
-====Parent Tags==== 
- 
-[[voicexml:​tags:​block|<​block>​]],​ [[voicexml:​tags:​catch|<​catch>​]],​ [[voicexml:​tags:​error|<​error>​]],​ [[voicexml:​tags:​filled|<​filled>​]],​ [[voicexml:​tags:​foreach|<​foreach>​]],​ [[voicexml:​tags:​help|<​help>​]],​ [[voicexml:​tags:​if|<​if>​]],​ [[voicexml:​tags:​noinput|<​noinput>​]],​ [[voicexml:​tags:​nomatch|<​nomatch>​]] 
-