Page 1 of 1

Outbound Call Delays

Posted: Thu Oct 16, 2008 10:51 am
by RandyINSite
We are experiencing excessive delays at the beginning of outbound calls, on the order of 10 to 11 seconds. I suspect this is due to callee_type detection, but I need to know what, if anything, we can do to reduce the delay.

The code I am using is below:

Please note that I removed the finalsilence attribute from the record tag, in an attempt to reduce the delay. This did not help.


Validate URL: http://EMRTest.INSitebiz.com/PhoneRemin ... ssing.aspx


This document is valid VoiceXML


Document:
1 <?xml version="1.0" ?>
2 <!DOCTYPE vxml PUBLIC "-//The Plum Group//DTD VOICEXML 2.1//EN" "/usr/local/plumvp/vxml.dtd">
3 <vxml version="2.0">
4 <property name="inputmodes" value="dtmf"/>
5 <property name="voicename" value="lauren"/>
6 <form id="mainmenu">
7 <var name="callee_type" expr="'answeringmachine'"/>
8 <record cond="callee_type=='answeringmachine'">
9 <noinput>
10 <prompt>
11 <voice name="lauren">
12 <prosody rate="-10%">
13 Hello. This is Dr. xxx's office calling to remind
14 (patient name fills in here)
15 of your appointment on Monday, <say-as type="date">12:00:00 AM</say-as> at <say-as type="time">12:00:00 AM</say-as>
16 at our (clinic name fills in here) clinic.
17 </prosody>
18 </voice>
19 </prompt>
20 <disconnect/>
21 <exit/>
22 </noinput>
23 </record>
24 <field name="menuchoice">
25 <grammar type="application/x-jsgf" mode="dtmf">
26 1|2|3|4|5
27 </grammar>
28 <prompt>
29 <voice name="lauren">
30 <prosody rate="-10%">
31 Hello. This is Dr. xxx's office calling to remind
32 (patient name fills in here)
33 of your appointment on Monday, <say-as type="date">12:00:00 AM</say-as> at <say-as type="time">12:00:00 AM</say-as>
34 in our (clinic name fills in here) clinic.
35 Please press 1 to confirm this appointment, 2 to Reschedule this appointment, 3 to cancel this appointment, 4 to speak to a clinic staff member and 5 to repeat these options.</prosody>
36 </voice>
37 </prompt>
38 <filled>
39 <if cond="menuchoice==1">
40 <prompt bargein="false">
41 <voice name="lauren">
42 <prosody rate="-10%">
43 Your appointment has been confirmed. We look forward to seeing you at our (clinic name fills in here) clinic on Monday, <say-as type="date">12:00:00 AM</say-as> at <say-as type="time">12:00:00 AM</say-as>.
44 </prosody>
45 </voice>
46 </prompt>
47 <submit next="http://EMRTest.INSitebiz.com/PhoneRemin ... &call_id=0" method="get" namelist="menuchoice"/>
48 <elseif cond="menuchoice==2"/>
49 <prompt bargein="false">
50 <voice name="lauren">
51 <prosody rate="-10%">
52 Please hold while you are transferred to the next available staff member to reschedule your appointment. We appreciate your patience.
53 </prosody>
54 </voice>
55 </prompt>
56 <submit next="http://EMRTest.INSitebiz.com/PhoneRemin ... &call_id=0" method="get" namelist="menuchoice"/>
57 <elseif cond="menuchoice==3"/>
58 <prompt bargein="false">
59 <voice name="lauren">
60 <prosody rate="-10%">
61 The appointment has been cancelled. Your success is important to us. A staff member will be contacting you soon to reschedule. Thank you.
62 </prosody>
63 </voice>
64 </prompt>
65 <submit next="http://EMRTest.INSitebiz.com/PhoneRemin ... &call_id=0" method="get" namelist="menuchoice"/>
66 <elseif cond="menuchoice==4"/>
67 <prompt bargein="false">
68 <voice name="lauren">
69 <prosody rate="-10%">
70 Please hold while you are transferred to the next available staff member to reschedule your appointment. We appreciate your patience.
71 </prosody>
72 </voice>
73 </prompt>
74 <submit next="http://EMRTest.INSitebiz.com/PhoneRemin ... &call_id=0" method="get" namelist="menuchoice"/>
75 <elseif cond="menuchoice==5"/>
76 <clear namelist="menuchoice"/>
77 <reprompt/>
78 </if>
79 </filled>
80 <noinput>
81 <reprompt/>
82 </noinput>
83 <nomatch>
84 <prompt>
85 <voice name="lauren">
86 <prosody rate="-10%">
87 Input not recognized.
88 </prosody>
89 </voice>
90 </prompt>
91 <reprompt/>
92 </nomatch>
93 </field>
94 <catch event="connection.disconnect">
95 <submit next="http://EMRTest.INSitebiz.com/PhoneRemin ... &call_id=0" method="get" namelist="menuchoice"/>
96 </catch>
97 </form>
98 </vxml>
99

IVR fix for Outbound Call Delays

Posted: Thu Oct 16, 2008 11:11 am
by support
Hi,

If this delay only occurs at the beginning of your IVR outbound calls, then it's most likely that the cause for this delay is due to callee type detection.

If you would like callee type detection disabled for your account, please send an e-mail to support@plumvoice.com with your IVR customer ID in the subject line requesting for callee type detection to be disabled. The customer ID would be found in your support contract with Plum. If you do not yet have a support contract with Plum, you should contact your sales representative regarding this IVR issue.

Regards,
Plum Support

callee_type detection

Posted: Thu Oct 16, 2008 1:25 pm
by RandyINSite
Greetings.
I have changed my code as follows, with partial success.
I added the prompt block at the beginning.

There is now only a 2 or 3 second delay before playing the first message (the new prompt block).
However, it now seems to always detect the callee_type as answering machine, and hangs up before playing the prompts.

Please tell me where I went wrong.
Thank you.

1 <?xml version="1.0" ?>
2 <!DOCTYPE vxml PUBLIC "-//The Plum Group//DTD VOICEXML 2.1//EN" "/usr/local/plumvp/vxml.dtd">
3 <vxml version="2.0">
4 <property name="inputmodes" value="dtmf"/>
5 <property name="voicename" value="lauren"/>
6 <form id="mainmenu">
7 <block>
8 <prompt>
9 <voice name="lauren">
10 <prosody rate="-10%">
11 Please listen to the following important message from Dr. xxx.
12 </prosody>
13 </voice>
14 </prompt>
15 </block>
16 <var name="callee_type" expr="'answeringmachine'"/>
17 <record cond="callee_type=='answeringmachine'">
18 <noinput>
19 <prompt>
20 <voice name="lauren">
21 <prosody rate="-10%">
22 Hello. This is Dr. x's office calling to remind
23 (patient name)
24 of your appointment on Monday, <say-as type="date">12:00:00 AM</say-as> at <say-as type="time">12:00:00 AM</say-as>
25 at our (clinic name) clinic.
26 </prosody>
27 </voice>
28 </prompt>
29 <disconnect/>
30 <exit/>
31 </noinput>
32 </record>
33 <field name="menuchoice">
34 <grammar type="application/x-jsgf" mode="dtmf">
35 1|2|3|4|5
36 </grammar>
37 <prompt>
38 <voice name="lauren">
39 <prosody rate="-10%">
40 Hello. This is Dr. xxx's office calling to remind
41 (patient name)
42 of your appointment on Monday, <say-as type="date">12:00:00 AM</say-as> at <say-as type="time">12:00:00 AM</say-as>
43 in our name clinic.
44 Please press 1 to confirm this appointment, 2 to Reschedule this appointment, 3 to cancel this appointment, 4 to speak to a clinic staff member and 5 to repeat these options.</prosody>
45 </voice>
46 </prompt>
47 <filled>
48 <if cond="menuchoice==1">
49 <prompt bargein="false">
50 <voice name="lauren">
51 <prosody rate="-10%">
52 Your appointment has been confirmed. We look forward to seeing you at our (clinic name) clinic on Monday, <say-as type="date">12:00:00 AM</say-as> at <say-as type="time">12:00:00 AM</say-as>.
53 </prosody>
54 </voice>
55 </prompt>
56 <submit next="http://EMRTest.INSitebiz.com/PhoneRemin ... &call_id=0" method="get" namelist="menuchoice"/>
57 <elseif cond="menuchoice==2"/>
58 <prompt bargein="false">
59 <voice name="lauren">
60 <prosody rate="-10%">
61 Please hold while you are transferred to the next available staff member to reschedule your appointment. We appreciate your patience.
62 </prosody>
63 </voice>
64 </prompt>
65 <submit next="http://EMRTest.INSitebiz.com/PhoneRemin ... &call_id=0" method="get" namelist="menuchoice"/>
66 <elseif cond="menuchoice==3"/>
67 <prompt bargein="false">
68 <voice name="lauren">
69 <prosody rate="-10%">
70 The appointment has been cancelled. Your success is important to us. A staff member will be contacting you soon to reschedule. Thank you.
71 </prosody>
72 </voice>
73 </prompt>
74 <submit next="http://EMRTest.INSitebiz.com/PhoneRemin ... &call_id=0" method="get" namelist="menuchoice"/>
75 <elseif cond="menuchoice==4"/>
76 <prompt bargein="false">
77 <voice name="lauren">
78 <prosody rate="-10%">
79 Please hold while you are transferred to the next available staff member to reschedule your appointment. We appreciate your patience.
80 </prosody>
81 </voice>
82 </prompt>
83 <submit next="http://EMRTest.INSitebiz.com/PhoneRemin ... &call_id=0" method="get" namelist="menuchoice"/>
84 <elseif cond="menuchoice==5"/>
85 <clear namelist="menuchoice"/>
86 <reprompt/>
87 </if>
88 </filled>
89 <noinput>
90 <reprompt/>
91 </noinput>
92 <nomatch>
93 <prompt>
94 <voice name="lauren">
95 <prosody rate="-10%">
96 Input not recognized.
97 </prosody>
98 </voice>
99 </prompt>
100 <reprompt/>
101 </nomatch>
102 </field>
103 <catch event="connection.disconnect">
104 <submit next="http://EMRTest.INSitebiz.com/PhoneRemin ... &call_id=0" method="get" namelist="menuchoice"/>
105 </catch>
106 </form>
107 </vxml>
108

IVR code for outbound calls

Posted: Thu Oct 16, 2008 3:27 pm
by support
Hi,

Currently, your IVR code is set up so that it always assigns the variable, "callee_type", with the value "answeringmachine".

You would want to adjust your IVR code to something like this:

Code: Select all

<?php
header("Content-type: text/xml");
echo("<?xml version=\"1.0\"?>\n");
$calleetype = $_POST['callee_type'];
?>

<vxml version="2.0">
<property name="inputmodes" value="dtmf"/>
<property name="voicename" value="lauren"/>
<form id="mainmenu">

<block>
<prompt>
<voice name="lauren">
<prosody rate="-10%">
Please listen to the following important message from Dr. xxx.
</prosody>
</voice>
</prompt>
</block>

<var name="callee_type" expr="'<?= $calleetype ?>'"/>

<record cond="callee_type=='answeringmachine'" finalsilence="2000ms">
<noinput>
<prompt>
<voice name="lauren">
<prosody rate="-10%">
Hello. This is Dr. x's office calling to remind
(patient name)
of your appointment on Monday, <say-as type="date">12:00:00 AM</say-as> at <say-as type="time">12:00:00 AM</say-as>
at our (clinic name) clinic.
</prosody>
</voice>
</prompt>
<disconnect/>
<exit/>
</noinput>
</record>

<field name="menuchoice">
<grammar type="application/x-jsgf" mode="dtmf">
1|2|3|4|5
</grammar>
<prompt>
<voice name="lauren">
<prosody rate="-10%">
Hello. This is Dr. xxx's office calling to remind
(patient name)
of your appointment on Monday, <say-as type="date">12:00:00 AM</say-as> at <say-as type="time">12:00:00 AM</say-as>
in our name clinic.
Please press 1 to confirm this appointment, 2 to Reschedule this appointment, 3 to cancel this appointment, 4 to speak to a clinic staff member and 5 to repeat these options.</prosody>
</voice>
</prompt>
<filled>
<if cond="menuchoice==1">
<prompt bargein="false">
<voice name="lauren">
<prosody rate="-10%">
Your appointment has been confirmed. We look forward to seeing you at our (clinic name) clinic on Monday, <say-as type="date">12:00:00 AM</say-as> at <say-as type="time">12:00:00 AM</say-as>.
</prosody>
</voice>
</prompt>
<submit next="http://EMRTest.INSitebiz.com/PhoneReminderProcessCall.aspx?message_reference=&call_parameters=&call_id=0" method="get" namelist="menuchoice"/>
<elseif cond="menuchoice==2"/>
<prompt bargein="false">
<voice name="lauren">
<prosody rate="-10%">
Please hold while you are transferred to the next available staff member to reschedule your appointment. We appreciate your patience.
</prosody>
</voice>
</prompt>
<submit next="http://EMRTest.INSitebiz.com/PhoneReminderProcessCall.aspx?message_reference=&call_parameters=&call_id=0" method="get" namelist="menuchoice"/>
<elseif cond="menuchoice==3"/>
<prompt bargein="false">
<voice name="lauren">
<prosody rate="-10%">
The appointment has been cancelled. Your success is important to us. A staff member will be contacting you soon to reschedule. Thank you.
</prosody>
</voice>
</prompt>
<submit next="http://EMRTest.INSitebiz.com/PhoneReminderProcessCall.aspx?message_reference=&call_parameters=&call_id=0" method="get" namelist="menuchoice"/>
<elseif cond="menuchoice==4"/>
<prompt bargein="false">
<voice name="lauren">
<prosody rate="-10%">
Please hold while you are transferred to the next available staff member to reschedule your appointment. We appreciate your patience.
</prosody>
</voice>
</prompt>
<submit next="http://EMRTest.INSitebiz.com/PhoneReminderProcessCall.aspx?message_reference=&call_parameters=&call_id=0" method="get" namelist="menuchoice"/>
<elseif cond="menuchoice==5"/>
<clear namelist="menuchoice"/>
<reprompt/>
</if>
</filled>
<noinput>
<reprompt/>
</noinput>
<nomatch>
<prompt>
<voice name="lauren">
<prosody rate="-10%">
Input not recognized.
</prosody>
</voice>
</prompt>
<reprompt/>
</nomatch>
</field>
<catch event="connection.disconnect">
<submit next="http://EMRTest.INSitebiz.com/PhoneReminderProcessCall.aspx?hangup=true&message_reference=&call_parameters=&call_id=0" method="get" namelist="menuchoice"/>
</catch>
</form>
</vxml>
From this example, the callee_type would be assigned either the value, "voice", or "answeringmachine".

Hope this helps.

Regards,
Plum Support

Posted: Fri Oct 17, 2008 9:22 am
by RandyINSite
That was the problem, sure enough.

I had to adjust the line you changed to read:

<var name="callee_type" expr="'?= $calleetype ?'"/>

The VoiceXML Validator would not pass the original version:
<var name="callee_type" expr="'<?= $calleetype ?>'"/>

because of the internal brackets.

Thank you for your help with this.