Composer - use getDate function

Hi

I’m using Composer 8 to write a call flow application.
In an Assign bloc i need to take the current system date and with the “expression builder” I’ve this code line:
AppState.ora_ini=getDate()

But when I test my application on Tomcat, I’ve this error: “Int 50039 008F00C8-10002FFB 7596 exec_error ReferenceError: getDate is not defined”

There is some external .jar to add in Tomcat’s lib?

Thanks
By
Luca

Hi Luca,

getDate() is Javascript function so you don’t need any jar. I don’t know understand why you see that error in Tomcat and MCP (Media Control Platform) is responsible for interpretation and execution of VXML code…

R.

2 Likes

Hi Renè

Sorry, the error is displayed in MCP log.
Here the vxml generated by Composer, can you tell me if the getDate() function is write right?

<?xml version="1.0" encoding="utf-8"?>

<!-- Auto Generated by Composer 8.0.301.81-->
<!-- Application Author:  Version: 1.0 CreatedOn:  -->

<!-- Global Scripts includes -->
<script src="../include/common.js" />
<script src="../include/ctic.js" />
<script src="../include/json.js" />


<!-- Global Vars declarations -->
<script>
 	var AppState=new Object();
	
		AppState.CallUUID = session.connection.uuid;
		if (session.com.genesyslab.userdata != undefined)  {
        	AppState.GVPSessionID = session.com.genesyslab.userdata['gvp-session-id'];
        }
  		else {
        	AppState.GVPSessionID = 'undefined';
        }
		if(session.connection.protocol.sip.requesturi != undefined &amp;&amp;
		   session.connection.protocol.sip.requesturi['APP_LANGUAGE'])
				AppState.APP_LANGUAGE = session.connection.protocol.sip.requesturi['APP_LANGUAGE'];
		else
		        AppState.APP_LANGUAGE = 'en-US';
	
		if(session.connection.protocol.sip.requesturi != undefined &amp;&amp;
		   session.connection.protocol.sip.requesturi['APP_ASR_LANGUAGE'])
				AppState.APP_ASR_LANGUAGE = session.connection.protocol.sip.requesturi['APP_ASR_LANGUAGE'];
		else
		        AppState.APP_ASR_LANGUAGE = 'en-US';
	
		if(session.connection.protocol.sip.requesturi != undefined &amp;&amp;
		   session.connection.protocol.sip.requesturi['GRAMMARFILEDIR'])
				AppState.GRAMMARFILEDIR = session.connection.protocol.sip.requesturi['GRAMMARFILEDIR'];
		else
		        AppState.GRAMMARFILEDIR = '../Resources/Grammars';
	
		if(session.connection.protocol.sip.requesturi != undefined &amp;&amp;
		   session.connection.protocol.sip.requesturi['VOXFILEDIR'])
				AppState.VOXFILEDIR = session.connection.protocol.sip.requesturi['VOXFILEDIR'];
		else
		        AppState.VOXFILEDIR = '../Resources/Prompts';
	
		if(session.connection.protocol.sip.requesturi != undefined &amp;&amp;
		   session.connection.protocol.sip.requesturi['SCRIPTSDIR'])
				AppState.SCRIPTSDIR = session.connection.protocol.sip.requesturi['SCRIPTSDIR'];
		else
		        AppState.SCRIPTSDIR = '../Scripts';
	
		if(session.connection.protocol.sip.requesturi != undefined &amp;&amp;
		   session.connection.protocol.sip.requesturi['EnableReports'])
				AppState.EnableReports = session.connection.protocol.sip.requesturi['EnableReports'];
		else
				AppState.EnableReports = false;
	
		if(session.connection.protocol.sip.requesturi != undefined &amp;&amp;
		   session.connection.protocol.sip.requesturi['EnableSNMP'])
				AppState.EnableSNMP = session.connection.protocol.sip.requesturi['EnableSNMP'];
		else
				AppState.EnableSNMP = false;
	
	
	
		if(session.connection.protocol.sip.requesturi != undefined &amp;&amp;
		   session.connection.protocol.sip.requesturi['LAST_EVENT_NAME'])
				AppState.LAST_EVENT_NAME = session.connection.protocol.sip.requesturi['LAST_EVENT_NAME'];
		else
		        AppState.LAST_EVENT_NAME = 'undefined';
	
		if(session.connection.protocol.sip.requesturi != undefined &amp;&amp;
		   session.connection.protocol.sip.requesturi['LAST_EVENT_MSG'])
				AppState.LAST_EVENT_MSG = session.connection.protocol.sip.requesturi['LAST_EVENT_MSG'];
		else
		        AppState.LAST_EVENT_MSG = 'undefined';
	
		if(session.connection.protocol.sip.requesturi != undefined &amp;&amp;
		   session.connection.protocol.sip.requesturi['LAST_EVENT_URL'])
				AppState.LAST_EVENT_URL = session.connection.protocol.sip.requesturi['LAST_EVENT_URL'];
		else
		        AppState.LAST_EVENT_URL = 'undefined';
	
		if(session.connection.protocol.sip.requesturi != undefined &amp;&amp;
		   session.connection.protocol.sip.requesturi['LAST_EVENT_ELEMENT'])
				AppState.LAST_EVENT_ELEMENT = session.connection.protocol.sip.requesturi['LAST_EVENT_ELEMENT'];
		else
		        AppState.LAST_EVENT_ELEMENT = 'undefined';
	
		if(session.connection.protocol.sip.requesturi != undefined &amp;&amp;
		   session.connection.protocol.sip.requesturi['LAST_EVENT_LINE'])
				AppState.LAST_EVENT_LINE = session.connection.protocol.sip.requesturi['LAST_EVENT_LINE'];
		else
		        AppState.LAST_EVENT_LINE = 'undefined';
	
		if(session.connection.protocol.sip.requesturi != undefined &amp;&amp;
		   session.connection.protocol.sip.requesturi['EnableFCR'])
				AppState.EnableFCR = session.connection.protocol.sip.requesturi['EnableFCR'];
		else
				AppState.EnableFCR = true;
	
		AppState.COMPOSER_WSSTUBBING = '0';
	
		AppState.cod_ivr = '1';
	
		AppState.subsequence_id = '0';
	
		AppState.ora_ini = '';
	
		AppState.ora_fine = 'Enter Value';
	
		AppState.sc = '';
	
		AppState.tentativi = '0';
	
		AppState.bHangUp = 'false';
	
		AppState.iRitorno_SP = '0';
	
		AppState.etichetta_menu = '0';
	
		AppState.path = '0';
	
		AppState.report = 'inizio report';
	
</script>

<!-- Global Scripts -->
<script srcexpr="AppState.VOXFILEDIR + '/' + AppState.APP_LANGUAGE + '/PlayBuiltinType.js'" />
<script>var f = new Format();</script>

<!-- Global Properties declarations -->
<property name="com.genesyslab.logtoasr" value="false" />   	
<property name="com.genesyslab.loglevel" value="3" />

<!-- Metadata information -->
<meta name="com.genesyslab.studio.resourcePath" content="/Callflows/Main.callflow"/>


<!-- Global links -->

<form>
		
	<block>
		
		<goto next="#Start" />
	</block>
</form>


<!-- This is the Entry block -->
<form id="Start">
	<block name="Entry">
		<goto next="#Log1" />
	</block>
</form>	
<catch event="connection.disconnect.hangup">
	<assign name="AppState.LAST_EVENT_ELEMENT" expr="_element"/>
	<assign name="AppState.LAST_EVENT_MSG" expr="_message"/>
	<assign name="AppState.LAST_EVENT_NAME" expr="_event"/>
	<assign name="AppState.LAST_EVENT_LINE" expr="_line"/>
	<assign name="AppState.LAST_EVENT_URL" expr="_url"/>
	<goto next="#traccia_fine_chiamata" />
</catch>



<!-- This is the Assign block -->
<form id="Ora_INI">
	<block>
		
		<assign name="AppState.ora_fine" expr="AppState.ora_ini=getDate()" />	
		<goto next="#Benvenuto" />
	</block>
</form>

<!-- This is the Prompt block -->
<form id="Benvenuto" genesys:cleardtmf="true">
	<block name="BenvenutoP0">
		<prompt bargein="true">				
			<audio expr="AppState.VOXFILEDIR + '/' + AppState.APP_LANGUAGE + '/' + 'benvenuto.vox'"></audio>    		
		</prompt>
	</block>
	<block>
		<goto next="#Inserisci_SC" />
	</block>
</form>

<!-- This is the Subdialog block -->
<form id="Inserisci_SC">
	<property name="com.genesyslab.private" value="true" />  		
	<subdialog name="Inserisci_SCSubdialog" src="http://localhost:8080/IVR_POD_Ins_SC/src-gen/Main.vxml">
		
		<param name="sc" expr="AppState.sc" />
		<param name="tentativi" expr="AppState.tentativi" />
		 
		<filled>
			<if cond="Inserisci_SCSubdialog.sc != 'undefined'">
				<assign name="AppState.sc" expr="Inserisci_SCSubdialog.sc" /> 
			</if>
			<if cond="Inserisci_SCSubdialog.tentativi != 'undefined'">
				<assign name="AppState.tentativi" expr="Inserisci_SCSubdialog.tentativi" /> 
			</if>
			<if cond="Inserisci_SCSubdialog.bHangUp != 'undefined'">
				<assign name="AppState.bHangUp" expr="Inserisci_SCSubdialog.bHangUp" /> 
			</if>
			<goto next="#controllo_sc" />
		</filled>
	</subdialog>
</form>

<!-- This is the Exit block -->
<form id="Exit1">
	<block>
		
		
		<var name="sc" expr="AppState.sc"/>
		<var name="tentativi" expr="AppState.tentativi"/>
		<var name="bHangUp" expr="AppState.bHangUp"/>
		
		<exit namelist="sc tentativi bHangUp "/>
	</block>
</form>

<!-- This is the Branching block -->
<form id="controllo_sc">
	<block>
		<if cond="AppState.sc==0">
			<!-- This is the OutLink -->
			<goto next="#traccia_fine_chiamata" />
		</if>
		<if cond="AppState.bHangup==true">
			<!-- This is the OutLink -->
			<goto next="#traccia_fine_chiamata" />
		</if>
		<goto next="#menu_cliente" />
	</block>
</form>

<!-- This is the DB Data block -->
<form id="traccia_fine_chiamata">
	<var name="AppStateString" expr="'(' + JSON.stringify(AppState) + ')'" />
	<var name="db_query_type" expr="'StoredProcedure'" />
	<!-- branch off based on the query type: SQL Query, Query File or Stored Procedure -->	
	<var name="db_query" expr="'Main_traccia_fine_chiamata.sql'" />		
	<!-- Define parameters to be used for stored procedure prepared statement -->
	<var name="sp_param_RETURN_VALUE" expr="'return$$INTEGER$${iRitorno_SP}'" />
	<!-- Define parameters to be used for stored procedure prepared statement -->
	<var name="sp_param_call_id" expr="'input$$VARCHAR$${CallUUID}'" />
	<!-- Define parameters to be used for stored procedure prepared statement -->
	<var name="sp_param_ora_ini" expr="'input$$VARCHAR$${ora_ini}'" />
	<!-- Define parameters to be used for stored procedure prepared statement -->
	<var name="sp_param_ora_fine" expr="'input$$VARCHAR$${ora_fine}'" />
	<!-- Define parameters to be used for stored procedure prepared statement -->
	<var name="sp_param_cod_ivr" expr="'input$$NUMERIC$${cod_ivr}'" /><var name="sp_param_list" expr="' RETURN_VALUE call_id ora_ini ora_fine cod_ivr'"/>
	<var name="db_name" expr="'DB_PROD_MI'" />
	<var name="db_timeout" expr="20" />
	
	<block>
		<data name="traccia_fine_chiamataData" src="../include/dbrequest.jsp" method="post" 
			namelist="AppStateString db_query db_query_type db_name db_timeout sp_param_list sp_param_RETURN_VALUE sp_param_call_id sp_param_ora_ini sp_param_ora_fine sp_param_cod_ivr" />
			
    	<if cond="typeof traccia_fine_chiamataData.errorMsg == 'undefined'">
        	<if cond="typeof traccia_fine_chiamataData.db_result != 'undefined'">
        		
        		<if cond="traccia_fine_chiamataData.db_result.length == 0">
        			<throw event="error.com.genesyslab.composer.dbemptyresultset" messageexpr="'No records returned from database'" />
        		</if>
        		
        		<assign name="AppState.traccia_fine_chiamataDBResult" expr="traccia_fine_chiamataData.db_result" />
        		
        		<assign name="AppState.traccia_fine_chiamataDBResultColumnNames" expr="traccia_fine_chiamataData.db_result_columns" />
        	</if>
        	<if cond="typeof traccia_fine_chiamataData.db_outparams != 'undefined'">
     			<log expr="'db_outparams:' + traccia_fine_chiamataData.db_outparams"/>
				
						
        		<assign name="AppState.iRitorno_SP" expr="traccia_fine_chiamataData.db_outparams.RETURN_VALUE" />
						
						
						
						
        	</if>
			<goto next="#Exit1" />
    	<else/>
    	    <if cond="typeof traccia_fine_chiamataData.errorType != 'undefined'">
    	        <if cond="traccia_fine_chiamataData.errorType == 'timeout'">
	        	    <throw event="error.com.genesyslab.composer.dbtimeout" messageexpr="traccia_fine_chiamataData.errorMsg" />
	            <elseif cond="traccia_fine_chiamataData.errorType == 'connectionerror'" />
	        	    <throw event="error.com.genesyslab.composer.dbconnectionerror" messageexpr="traccia_fine_chiamataData.errorMsg" />
	            </if>
    		<else/>
        		<throw event="error.com.genesyslab.composer.dberror" messageexpr="traccia_fine_chiamataData.errorMsg" />
    		</if>
    	</if>
	</block>
</form>

<!-- This is the Log block -->
<form id="Log1">
	<block>
		<log genesys:level="3">
			report=<value expr="AppState.report"/>
		</log>
	</block>
	<block>
		<goto next="#Ora_INI" />
	</block>
</form>

<!-- This is the Menu block -->
<form id="menu_cliente">
	<property name="termchar" value="D"/>
	<property name="inputmodes" value="dtmf" />
	<property name="bargein" value="true" />
	<property name="bargeintype" value="speech" /> 		    									   
	<block name="menu_clienteP0">
		<prompt>
		</prompt>
	</block>
	 
	<field name="menu_clienteOption">
		<property name="timeout" value="10s"/>
		<option dtmf="1" value="1" />
		<option dtmf="2" value="2" />
	</field>
	<filled mode="all" namelist="menu_clienteOption">
		<assign name="AppState.etichetta_menu" expr="menu_clienteOption" />  			
				<if cond="menu_clienteOption == '1'">
			<goto next="#Subdialog1" />
		</if>
				<if cond="menu_clienteOption == '2'">
			<goto next="#Subdialog2" />
		</if>
	</filled>
	<catch event="noinput" count="1">
  		<throw event="com.genesyslab.composer.toomanynoinputs" message="exceeded the number of noinput retries" />
  	</catch>
	<catch event="nomatch" count="1">
  		<throw event="com.genesyslab.composer.toomanynomatches" message="exceeded the number of nomatch retries" />
  	</catch>
</form>

<!-- This is the Menu block -->
<form id="menu_sc">
	<property name="termchar" value="D"/>
	<property name="inputmodes" value="dtmf" />
	<property name="bargein" value="true" />
	<property name="bargeintype" value="speech" /> 		    									   
	<block name="menu_scP0">
		<prompt>
		</prompt>
	</block>
	 
	<field name="menu_scOption">
		<property name="timeout" value="10s"/>
		<option dtmf="9" value="9" />
		<option dtmf="1" value="1" />
		<option dtmf="2" value="2" />
		<option dtmf="3" value="3" />
	</field>
	<filled mode="all" namelist="menu_scOption">
		<assign name="AppState.etichetta_menu" expr="menu_scOption" />  			
				<if cond="menu_scOption == '9'">
			<goto next="#Subdialog5" />
		</if>
				<if cond="menu_scOption == '1'">
			<goto next="#Subdialog3" />
		</if>
				<if cond="menu_scOption == '2'">
			<goto next="#Subdialog4" />
		</if>
				<if cond="menu_scOption == '3'">
			<goto next="#Subdialog6" />
		</if>
	</filled>
	<catch event="noinput" count="1">
  		<throw event="com.genesyslab.composer.toomanynoinputs" message="exceeded the number of noinput retries" />
  	</catch>
	<catch event="nomatch" count="1">
  		<throw event="com.genesyslab.composer.toomanynomatches" message="exceeded the number of nomatch retries" />
  	</catch>
</form>

<!-- This is the Subdialog block -->
<form id="Subdialog1"> 		
	<subdialog name="Subdialog1Subdialog" src="../src-gen/concat_path.vxml">
		
		
		<param name="varActionParentId" expr="''"/>
		<param name="path" expr="AppState.path" />
		<param name="nuova_selezione" expr="AppState.etichetta_menu" />
		 
		<filled>
			<if cond="Subdialog1Subdialog.path != 'undefined'">
				<assign name="AppState.path" expr="Subdialog1Subdialog.path" /> 
			</if>
			<goto next="#menu_sc" />
		</filled>
	</subdialog>
</form>

<!-- This is the Subdialog block -->
<form id="Subdialog2"> 		
	<subdialog name="Subdialog2Subdialog" src="../src-gen/concat_path.vxml">
		
		
		<param name="varActionParentId" expr="''"/>
		<param name="path" expr="AppState.path" />
		<param name="nuova_selezione" expr="AppState.etichetta_menu" />
		 
		<filled>
			<if cond="Subdialog2Subdialog.path != 'undefined'">
				<assign name="AppState.path" expr="Subdialog2Subdialog.path" /> 
			</if>
			<goto next="#Exit1" />
		</filled>
	</subdialog>
</form>

<!-- This is the Subdialog block -->
<form id="Subdialog3"> 		
	<subdialog name="Subdialog3Subdialog" src="../src-gen/concat_path.vxml">
		
		
		<param name="varActionParentId" expr="''"/>
		<param name="path" expr="AppState.path" />
		<param name="nuova_selezione" expr="AppState.etichetta_menu" />
		 
		<filled>
			<if cond="Subdialog3Subdialog.path != 'undefined'">
				<assign name="AppState.path" expr="Subdialog3Subdialog.path" /> 
			</if>
			<goto next="#Exit1" />
		</filled>
	</subdialog>
</form>

<!-- This is the Subdialog block -->
<form id="Subdialog4"> 		
	<subdialog name="Subdialog4Subdialog" src="../src-gen/concat_path.vxml">
		
		
		<param name="varActionParentId" expr="''"/>
		<param name="path" expr="AppState.path" />
		<param name="nuova_selezione" expr="AppState.etichetta_menu" />
		 
		<filled>
			<if cond="Subdialog4Subdialog.path != 'undefined'">
				<assign name="AppState.path" expr="Subdialog4Subdialog.path" /> 
			</if>
			<goto next="#Exit1" />
		</filled>
	</subdialog>
</form>

<!-- This is the Subdialog block -->
<form id="Subdialog5"> 		
	<subdialog name="Subdialog5Subdialog" src="../src-gen/concat_path.vxml">
		
		
		<param name="varActionParentId" expr="''"/>
		<param name="path" expr="AppState.path" />
		<param name="nuova_selezione" expr="AppState.etichetta_menu" />
		 
		<filled>
			<if cond="Subdialog5Subdialog.path != 'undefined'">
				<assign name="AppState.path" expr="Subdialog5Subdialog.path" /> 
			</if>
			<goto next="#menu_cliente" />
		</filled>
	</subdialog>
</form>

<!-- This is the Subdialog block -->
<form id="Subdialog6"> 		
	<subdialog name="Subdialog6Subdialog" src="../src-gen/concat_path.vxml">
		
		
		<param name="varActionParentId" expr="''"/>
		<param name="path" expr="AppState.path" />
		<param name="nuova_selezione" expr="AppState.etichetta_menu" />
		 
		<filled>
			<if cond="Subdialog6Subdialog.path != 'undefined'">
				<assign name="AppState.path" expr="Subdialog6Subdialog.path" /> 
			</if>
			<goto next="#Exit1" />
		</filled>
	</subdialog>
</form>

thanks
bye
Luca

Hi Luca,

Your assign block is incorrect = expression should contain ‘getDate()’ only and not ‘AppState.ora_ini=getDate()’. So VXML code should look like this:

R.

Hi

I changed the expr value with “getDate()” but the error is the same.

Thanks
By
Luca

Hi Luca,

I had a chance for quick test and finally got it working - the correct expression is “new Date().getDate()”.

R.

Hi Renè

thank you very very much, now is correct.

Bye
Luca

1 Like