We've Moved! Please visit our new and improved forum over at our new portal: https://portal.plumvoice.com/hc/en-us/community/topics

<menu> and <catch> elements

Questions and answers about IVR programming for Plum DEV

Moderators: admin, support

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: <menu> and <catch> elements

Post by support »

Hello,

That error indicates that you have an <audio> tag without the required attributes (src, expr or stream). In order for an audio tag to function you have to specify the URL for that audio. Typically this would either be a src (statically defined URL) attribute or an expr attribute (dynamically defined URL). If you are just using Text-to-Speech only you should not be providing an <audio> tag. For example the following will throw a run-time error:

Code: Select all

<?xml version="1.0"?>
<vxml version="2.1">
	<form>
		<block>
			<prompt>
				<audio>This is some text-to-speech.</audio>
			<prompt>
		</block>
	</form>
</vxml>
While this code will run without issue:

Code: Select all

<?xml version="1.0"?>
<vxml version="2.1">
	<form>
		<block>
			<prompt>
				This is some text-to-speech.
			<prompt>
		</block>
	</form>
</vxml>
Regards,
Plum Support

averlan
Posts: 30
Joined: Thu Sep 21, 2017 8:24 pm

Re: <menu> and <catch> elements

Post by averlan »

Hi,

Thanks for your explanation, but I don't see any <audio> tags without the required attributes (src, expr or stream). Also, I used the "validate" button in Application Configuration and it didn't return any error for the URL below. Do you mind to take a look at the URL below and let me know which line number I should change? Thanks

http://63.88.109.202/DebugIVRSessionsLo ... 6778/8.xml

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: <menu> and <catch> elements

Post by support »

Hello,

There are three sections in your code where you have an <audio> tag with no attributes, one such example is:

Code: Select all

<form id="PresentPastDueBalance">
    <block>
        <audio maxage="0" src = "audio\QQQ\F_E_PastDueBalance.wav">
            <sentence>Your account currently has a past due balance in the amount of</sentence>
        </audio>
        <audio><say-as interpret-as="currency">$50.00</say-as></audio>
        <goto next ="#PresentLastPayment" />
    </block>
</form>
The second <audio> tag does not contain any attributes. The sole purpose of the audio tag is to reference an external audio file, if that file is not available then the contents of the <audio> tag will be played as text-to-speech. However, in this case since you are only using text-to-speech the <audio> tag is not appropriate. Instead you should be using the <prompt> tag which is required in order to use the <say-as> tag. For example your code should look like this:

Code: Select all

<form id="PresentPastDueBalance">
    <block>
        <audio maxage="0" src = "audio\QQQ\F_E_PastDueBalance.wav">
            <sentence>Your account currently has a past due balance in the amount of</sentence>
        </audio>
        <prompt><say-as interpret-as="currency">$50.00</say-as></prompt>
        <goto next ="#PresentLastPayment" />
    </block>
</form>
As we mentioned previously there are three sections in that link that follow this similar pattern of using an <audio> tag with no attributes for text-to-speech when a <prompt> tag should be used instead. You will need to correct all three sections for this application to execute correctly.

Regards,
Plum Support

averlan
Posts: 30
Joined: Thu Sep 21, 2017 8:24 pm

Re: <menu> and <catch> elements

Post by averlan »

Thanks again, I was able to fixed it. One more question...I've noticed that the log entry shows full credit card number (please check below). Since we must be in compliance with PCI Security Council standards, we should not allow any sensitive data to be stored in the logs. We used <voxeo:logcontrol mode="disable"/> for this purposes, but I had to remove it because I was getting an error for this tag. Is there any solution you can offer us?

Log:
dtmf input: 4111111111111111
Found grammar match
hypothesis #0: 4111111111111111 (0.9990)
VXI::assign_element(name="application.fldCreditCardNumber" expr = "CreditCardNumber")

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: <menu> and <catch> elements

Post by support »

Hello,

Yes we offer a similar approach using the <property> tag in VoiceXML. Here is the link to our documentation on the topic: http://www.plumvoice.com/docs/dev/voice ... es:logging. Essentially you will need to set a <property name="logging" value="private"/> at any scope where the data needs to be kept private.

Regards,
Plum Support

averlan
Posts: 30
Joined: Thu Sep 21, 2017 8:24 pm

Re: <menu> and <catch> elements

Post by averlan »

Hi,

We found another issue, it looks like our application stopped logging [session.id] and [session.telephone.ani] values.
We use <var name = "fldSession" expr = "session.id" /> in global.vxml file. Can you please help to resolve this issue. Thanks

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: <menu> and <catch> elements

Post by support »

Hello,

Could you provide us with a bit more context for this? It would be helpful to have some sample code as well as the expected / experienced results? It is difficult to determine the issue without these additional details.

Regards,
Plum Support

averlan
Posts: 30
Joined: Thu Sep 21, 2017 8:24 pm

Re: <menu> and <catch> elements

Post by averlan »

We are getting the error below "Failed to find any SessionID info" in the log file. Thanks

IVR web.config

Code: Select all

<appSettings>    
    <add key="CallerIDPath" value="session.telephone.ani"/>
    <add key="SessionIDPath" value="session.id"/>
<appSettings>

Code: Select all

 
if (!string.IsNullOrEmpty(HttpContext.Current.Request[sessionIDPath]))
            {
                sessionID = HttpContext.Current.Request[sessionIDPath];

                if (log.IsDebugEnabled)
                {
                    log.Debug(string.Format("Setting sessionID based on [{0}]", sessionIDPath));
                }
            }

            if (log.IsInfoEnabled & string.IsNullOrEmpty(SessionID))
            {
                log.Info("Failed to find any SessionID info.");
            } 

averlan
Posts: 30
Joined: Thu Sep 21, 2017 8:24 pm

Re: <menu> and <catch> elements

Post by averlan »

Any thoughts? Your assistance will be very much appreciated.

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: <menu> and <catch> elements

Post by support »

Hi,

We're not certain what you're actively configuring when you say "IVR web.config". The code snippets you provided do not run on the Plum IVR system.

We reviewed a couple call logs and we do see you gettings the session IDs via the session.id. We also see you sending that information via a GET variable:

Code: Select all

http://[IP]/MainIntro.aspx?Payee=QQQ&fldSession=000025%3B006%3B1508263930&languageChoice=1&selectedLanguage=English
http://[IP]/MainIntro.aspx?Payee=QQQ&fldSession=000025%3B010%3B1508263315&languageChoice=1&selectedLanguage=English
http://[IP]/MainIntro.aspx?Payee=QQQ&fldSession=000025%3B001%3B1508265529&languageChoice=1&selectedLanguage=English
Each of these session IDs correlate to calls that we see in your session logs:

Code: Select all

[17/Oct/2017:14:14:17 -0500] [DNIS] 000025;006;1508263930
[17/Oct/2017:14:35:34 -0500] [DNIS] 000025;010;1508263315
[17/Oct/2017:14:39:37 -0500] [DNIS] 000025;001;1508265529
Regards,
Plum Support

averlan
Posts: 30
Joined: Thu Sep 21, 2017 8:24 pm

Re: <menu> and <catch> elements

Post by averlan »

Hi,

So this is basically,

Code: Select all

 HttpContext.Current.Request[session.id]
For some reason with Plum this returns an empty string or null. Do you know why it could be empty?

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: <menu> and <catch> elements

Post by support »

Hi,

You would reference the session.id within the VMXL application. Outside of that, you would use whatever value you stored the session ID in, which appears to be fldSession based upon the sample URLs we found.

Regards,
Plum Support

averlan
Posts: 30
Joined: Thu Sep 21, 2017 8:24 pm

Re: <menu> and <catch> elements

Post by averlan »

Hi,

We do reference the session.id within the VMXL application

Code: Select all

<var name = "fldSession" expr = "session.id" />
Outside of that we want to log session id using HttpContext.Current.Request to get it. So far I've tried without any luck ....

Code: Select all

HttpContext.Current.Request[session.id]

Code: Select all

HttpContext.Current.Request[fldSession]

Code: Select all

HttpContext.Current.Request.QueryString[session.id]

Code: Select all

HttpContext.Current.Request.QueryString[fldSession]
For example, with Voxeo we use this code below to get it

Code: Select all

HttpContext.Current.Request[session.parentsessionid]
Please advise,
Thanks

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: <menu> and <catch> elements

Post by support »

Hi,

Have you verified that you are sending the fldSession variable or have access to that variable (potentially via a session) to the script that is attempting to log the session ID? We would expect that fldSession would be correct if you are attempting to log this value within MainIntro.aspx.

Regards,
Plum Support

averlan
Posts: 30
Joined: Thu Sep 21, 2017 8:24 pm

Re: <menu> and <catch> elements

Post by averlan »

Hello,

Please check below the information from our debugger about the raw request we are getting from you when call starts. We don't see any session id in there. Can you please let us know where we should look for it?

Code: Select all

payee=QQQ
ASP.NET_SessionId=hshrt2azyeugtovu2dpkjhpb
ALL_HTTP=HTTP_CACHE_CONTROL:max-age=0
HTTP_ACCEPT:*/*
HTTP_HOST:63.88.109.203
HTTP_USER_AGENT:PlumVoicePortal/3.2

ALL_RAW=Cache-Control: max-age=0
Accept: */*
Host: 63.88.109.203
User-Agent: PlumVoicePortal/3.2

APPL_MD_PATH=/LM/W3SVC/4/ROOT/Autoscribe.PayIVR
APPL_PHYSICAL_PATH=C:\source\PayIVR\Autoscribe.PayIVR\
AUTH_TYPE=
AUTH_USER=
AUTH_PASSWORD=
LOGON_USER=
REMOTE_USER=
CERT_COOKIE=
CERT_FLAGS=
CERT_ISSUER=
CERT_KEYSIZE=
CERT_SECRETKEYSIZE=
CERT_SERIALNUMBER=
CERT_SERVER_ISSUER=
CERT_SERVER_SUBJECT=
CERT_SUBJECT=
CONTENT_LENGTH=0
CONTENT_TYPE=
GATEWAY_INTERFACE=CGI/1.1
HTTPS=off
HTTPS_KEYSIZE=
HTTPS_SECRETKEYSIZE=
HTTPS_SERVER_ISSUER=
HTTPS_SERVER_SUBJECT=
INSTANCE_ID=4
INSTANCE_META_PATH=/LM/W3SVC/4
LOCAL_ADDR=192.168.110.130
PATH_INFO=/Autoscribe.PayIVR/MainIntro.aspx
PATH_TRANSLATED=C:\source\PayIVR\Autoscribe.PayIVR\MainIntro.aspx
QUERY_STRING=payee=QQQ
REMOTE_ADDR=69.25.74.73
REMOTE_HOST=69.25.74.73
REMOTE_PORT=42666
REQUEST_METHOD=GET
SCRIPT_NAME=/Autoscribe.PayIVR/MainIntro.aspx
SERVER_NAME=63.88.109.203
SERVER_PORT=80
SERVER_PORT_SECURE=0
SERVER_PROTOCOL=HTTP/1.1
SERVER_SOFTWARE=Microsoft-IIS/10.0
URL=/Autoscribe.PayIVR/MainIntro.aspx
HTTP_CACHE_CONTROL=max-age=0
HTTP_ACCEPT=*/*
HTTP_HOST=63.88.109.203
HTTP_USER_AGENT=PlumVoicePortal/3.2

Post Reply