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
We've Moved! Please visit our new and improved forum over at our new portal: https://portal.plumvoice.com/hc/en-us/community/topics
Outbound Call Delays
IVR fix for Outbound Call Delays
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
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
Last edited by support on Wed Feb 17, 2010 1:06 pm, edited 3 times in total.
Plum Support
http://www.plumvoice.com
http://www.plumvoice.com
-
- Posts: 11
- Joined: Wed Aug 13, 2008 3:25 pm
callee_type detection
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
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
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:
From this example, the callee_type would be assigned either the value, "voice", or "answeringmachine".
Hope this helps.
Regards,
Plum Support
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>
Hope this helps.
Regards,
Plum Support
Last edited by support on Wed Feb 17, 2010 1:07 pm, edited 3 times in total.
Plum Support
http://www.plumvoice.com
http://www.plumvoice.com
-
- Posts: 11
- Joined: Wed Aug 13, 2008 3:25 pm
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.
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.