" /> Composer - use getDate function - Genesys CTI User Forum

Author Topic: Composer - use getDate function  (Read 7922 times)

Offline yoursg

  • Newbie
  • *
  • Posts: 4
  • Karma: 0
Composer - use getDate function
« on: September 07, 2010, 02:38:56 PM »
Advertisement
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

Offline René

  • Administrator
  • Hero Member
  • *****
  • Posts: 1832
  • Karma: 62
Re: Composer - use getDate function
« Reply #1 on: September 07, 2010, 08:12:26 PM »
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.

Offline yoursg

  • Newbie
  • *
  • Posts: 4
  • Karma: 0
Re: Composer - use getDate function
« Reply #2 on: September 08, 2010, 04:11:54 PM »
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"?>
<vxml version="2.1" xml:lang="en-US" xmlns="http://www.w3.org/2001/vxml" xmlns:genesys="http://www.genesyslab.com/2006/vxml21-extension"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">




<!-- 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>



</vxml>


thanks
bye
Luca

Offline René

  • Administrator
  • Hero Member
  • *****
  • Posts: 1832
  • Karma: 62
Re: Composer - use getDate function
« Reply #3 on: September 09, 2010, 07:15:50 AM »
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:

<assign name="AppState.ora_fine" expr="getDate()" />

R.

Offline yoursg

  • Newbie
  • *
  • Posts: 4
  • Karma: 0
Re: Composer - use getDate function
« Reply #4 on: September 10, 2010, 08:13:29 AM »
Hi

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

Thanks
By
Luca

Offline René

  • Administrator
  • Hero Member
  • *****
  • Posts: 1832
  • Karma: 62
Re: Composer - use getDate function
« Reply #5 on: September 10, 2010, 07:20:12 PM »
Hi Luca,

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

R.

Offline yoursg

  • Newbie
  • *
  • Posts: 4
  • Karma: 0
Re: Composer - use getDate function
« Reply #6 on: September 13, 2010, 02:12:58 PM »
Hi Renč

thank you very very much, now is correct.

Bye
Luca