Voice and answering machine issues.
Posted: Fri Jul 20, 2007 5:53 am
Hi Support,
I have a couple of queries regarding the following script.
1. If the user enters no response in the menu elements, the voice reverts back from the UK Female voice of Millie to the american male voice, can this be changed in anyway. I have tried a number of different options but they either error out or just use the male voice anyway.
2. A large number of calls that are answered by humans (as opposed to answering machines) end at the point where the date and time is first read out and they are not given the option to enter anything at the menu. The line just disconnects. As you can imagine, without the option to confirm attendance or cancellation the service is not working as it should be right now.
3. Currently I post information remotely to a server to tell me where a call is up to so taht ew can report information back to the surgery accordingly. Our web server does have the odd blip and I would like to know how to capture the bad.fetch error and retry the submission possibly with a message to the user to say 'please wait whilst we try again' or something like that.
4. The delay in detecting an answering machine sometimes leads to patients putting the phone down before the message is read out. Is there anyway to change this? Or would it be better to have the detection removed completely and just go straight into the call with a 'You have an information message from Hobs moat surgery, please press 1 to pick up the message' at which point the call waits for the number 1 to be pressed, if nothing is pressed the answering machine beep script is called and the appropriate message is played after the beep or as soon as the 1 button is pressed.
<?xml version="1.0"?>
<vxml version="2.0">
<var name="amt" expr="'0.00'" />
<form id="welcome">
<block>
<prompt bargein="false">
<voice name="millie">
Hello
<!--- <break time="1s"/> --->
This is an information call from the hobs moat appointment reminder service.
</voice>
</prompt>
</block>
<block>
<assign name="status" expr="'welcome'"/>
<assign name="callID" expr="1234"/>
</block>
<subdialog
name="postStatus"
src="http://www.appointmentm8.com/index.cfm? ... atusUpdate"
namelist="status callID"
method="post"
fetchtimeout="10s">
</subdialog>
<block>
<goto next="#purpose"/>
</block>
</form>
<form id="purpose">
<block>
<prompt bargein="false">
<voice name="millie">
Don't forget a member of your household has a medical appointment at
</voice>
</prompt>
</block>
<!--- <block>
<assign name="status" expr="'purpose'"/>
<assign name="callID" expr="1234"/>
</block>
<subdialog
name="postStatus"
src="http://www.appointmentm8.com/index.cfm? ... atusUpdate"
namelist="status callID"
method="post"
fetchtimeout="10s">
</subdialog>
<block>
</block> --->
<subdialog name="result" src="#appdatetime"></subdialog>
</form>
<form id="appdatetime">
<block>
<prompt bargein="false">
<voice name="millie">
<say-as type="time">4:35 pm</say-as> on Monday the <say-as type="number">27</say-as> of June 2007
</voice>
</prompt>
</block>
<block>
<assign name="status" expr="'date and time'"/>
<assign name="callID" expr="1234"/>
</block>
<subdialog
name="postStatus"
src="http://www.appointmentm8.com/index.cfm? ... atusUpdate"
namelist="status callID"
method="post"
fetchtimeout="10s">
</subdialog>
<block>
<goto next="#menuoptions"/>
</block>
</form>
<menu id="menuoptions" dtmf="true">
<property name="inputmodes" value="dtmf"/>
<prompt bargein="true">
<voice name="millie">
You may now perform one of the following options.
<break time="1s"/>
Press 1 to confirm you will be attending the appointment.
<break time="1s"/>
Press 2 to cancel your appointment, you will be asked to confirm your cancellation so do not hang up until the end of the call.
<break time="1s"/>
or Press 3 to repeat the date and time of the appointment.
</voice>
</prompt>
<choice next="#attending">
</choice>
<choice next="#cancel">
</choice>
<choice next="#repeat">
</choice>
<nomatch>
You must choose from:
Press 1 to confirm you will be attending the appointment.
Press 2 to cancel your appointment.
or, Press 3 to repeat the date and time of the appointment.
</nomatch>
</menu>
<form id="attending">
<block>
<prompt bargein="false">
<voice name="millie">
Thank you for confirming you will be attending your appointment.
</voice>
<!--- <break time="1s"/> --->
</prompt>
</block>
<block>
<assign name="status" expr="'attending'"/>
<assign name="callID" expr="1234"/>
</block>
<subdialog
name="postStatus"
src="http://www.appointmentm8.com/index.cfm? ... atusUpdate"
namelist="status callID"
method="post"
fetchtimeout="10s">
</subdialog>
<block>
<goto next="#goodbye"/>
</block>
</form>
<menu id="cancel" dtmf="true">
<property name="inputmodes" value="dtmf"/>
<prompt bargein="true">
<voice name="millie">
You have indicated that you wish to cancel your appointment.
<break time="1s"/>
Please press 1 to confirm that you do wish to cancel your appointment or
press 2 to return to the main menu and reselect your option.
</voice>
</prompt>
<choice next="#confirmcancel">
</choice>
<choice next="#confirmnonecancel">
</choice>
<nomatch>
You have indicated that you wish to cancel your appointment.
Please press 1 to confirm that you do wish to cancel your appointment or
press 2 to return to the main menu and reselect your option.
</nomatch>
</menu>
<form id="confirmcancel">
<block>
<prompt bargein="false">
<voice name="millie">
Thank you for confirming that you wish to cancel your appointment. We are contacting the surgery now to pass the cancellation on.
<!--- <break time="1s"/> --->
</voice>
</prompt>
</block>
<block>
<assign name="status" expr="'cancelling'"/>
<assign name="callID" expr="1234"/>
</block>
<subdialog
name="postStatus"
src="http://www.appointmentm8.com/index.cfm? ... atusUpdate"
namelist="status callID"
method="post"
fetchtimeout="10s">
</subdialog>
<block>
<prompt bargein="false">
<voice name="millie">
Your cancellation has been accepted by the surgery.
<break time="1s"/>
</voice>
</prompt>
</block>
<block>
<goto next="#goodbye"/>
</block>
</form>
<form id="confirmnonecancel">
<block>
<prompt bargein="false">
<voice name="millie">
Your appointment has not, we repeat, not been cancelled and is still in place at the surgery.
</voice>
</prompt>
<goto next="#menuoptions"/>
</block>
</form>
<form id="repeat">
<block>
<prompt bargein="false">
<voice name="millie">
The date and time of the appointment is
</voice>
</prompt>
</block>
<subdialog name="result" src="#appdatetime"></subdialog>
</form>
<form id="goodbye">
<block>
<prompt bargein="false">
<voice name="millie">
Thank you for your time, goodbye.
</voice>
</prompt>
</block>
<block>
<assign name="status" expr="'goodbye'"/>
<assign name="callID" expr="1234"/>
</block>
<subdialog
name="postStatus"
src="http://www.appointmentm8.com/index.cfm? ... atusUpdate"
namelist="status callID"
method="post"
fetchtimeout="10s">
</subdialog>
<block>
</block>
</form>
</vxml>
I have a couple of queries regarding the following script.
1. If the user enters no response in the menu elements, the voice reverts back from the UK Female voice of Millie to the american male voice, can this be changed in anyway. I have tried a number of different options but they either error out or just use the male voice anyway.
2. A large number of calls that are answered by humans (as opposed to answering machines) end at the point where the date and time is first read out and they are not given the option to enter anything at the menu. The line just disconnects. As you can imagine, without the option to confirm attendance or cancellation the service is not working as it should be right now.
3. Currently I post information remotely to a server to tell me where a call is up to so taht ew can report information back to the surgery accordingly. Our web server does have the odd blip and I would like to know how to capture the bad.fetch error and retry the submission possibly with a message to the user to say 'please wait whilst we try again' or something like that.
4. The delay in detecting an answering machine sometimes leads to patients putting the phone down before the message is read out. Is there anyway to change this? Or would it be better to have the detection removed completely and just go straight into the call with a 'You have an information message from Hobs moat surgery, please press 1 to pick up the message' at which point the call waits for the number 1 to be pressed, if nothing is pressed the answering machine beep script is called and the appropriate message is played after the beep or as soon as the 1 button is pressed.
<?xml version="1.0"?>
<vxml version="2.0">
<var name="amt" expr="'0.00'" />
<form id="welcome">
<block>
<prompt bargein="false">
<voice name="millie">
Hello
<!--- <break time="1s"/> --->
This is an information call from the hobs moat appointment reminder service.
</voice>
</prompt>
</block>
<block>
<assign name="status" expr="'welcome'"/>
<assign name="callID" expr="1234"/>
</block>
<subdialog
name="postStatus"
src="http://www.appointmentm8.com/index.cfm? ... atusUpdate"
namelist="status callID"
method="post"
fetchtimeout="10s">
</subdialog>
<block>
<goto next="#purpose"/>
</block>
</form>
<form id="purpose">
<block>
<prompt bargein="false">
<voice name="millie">
Don't forget a member of your household has a medical appointment at
</voice>
</prompt>
</block>
<!--- <block>
<assign name="status" expr="'purpose'"/>
<assign name="callID" expr="1234"/>
</block>
<subdialog
name="postStatus"
src="http://www.appointmentm8.com/index.cfm? ... atusUpdate"
namelist="status callID"
method="post"
fetchtimeout="10s">
</subdialog>
<block>
</block> --->
<subdialog name="result" src="#appdatetime"></subdialog>
</form>
<form id="appdatetime">
<block>
<prompt bargein="false">
<voice name="millie">
<say-as type="time">4:35 pm</say-as> on Monday the <say-as type="number">27</say-as> of June 2007
</voice>
</prompt>
</block>
<block>
<assign name="status" expr="'date and time'"/>
<assign name="callID" expr="1234"/>
</block>
<subdialog
name="postStatus"
src="http://www.appointmentm8.com/index.cfm? ... atusUpdate"
namelist="status callID"
method="post"
fetchtimeout="10s">
</subdialog>
<block>
<goto next="#menuoptions"/>
</block>
</form>
<menu id="menuoptions" dtmf="true">
<property name="inputmodes" value="dtmf"/>
<prompt bargein="true">
<voice name="millie">
You may now perform one of the following options.
<break time="1s"/>
Press 1 to confirm you will be attending the appointment.
<break time="1s"/>
Press 2 to cancel your appointment, you will be asked to confirm your cancellation so do not hang up until the end of the call.
<break time="1s"/>
or Press 3 to repeat the date and time of the appointment.
</voice>
</prompt>
<choice next="#attending">
</choice>
<choice next="#cancel">
</choice>
<choice next="#repeat">
</choice>
<nomatch>
You must choose from:
Press 1 to confirm you will be attending the appointment.
Press 2 to cancel your appointment.
or, Press 3 to repeat the date and time of the appointment.
</nomatch>
</menu>
<form id="attending">
<block>
<prompt bargein="false">
<voice name="millie">
Thank you for confirming you will be attending your appointment.
</voice>
<!--- <break time="1s"/> --->
</prompt>
</block>
<block>
<assign name="status" expr="'attending'"/>
<assign name="callID" expr="1234"/>
</block>
<subdialog
name="postStatus"
src="http://www.appointmentm8.com/index.cfm? ... atusUpdate"
namelist="status callID"
method="post"
fetchtimeout="10s">
</subdialog>
<block>
<goto next="#goodbye"/>
</block>
</form>
<menu id="cancel" dtmf="true">
<property name="inputmodes" value="dtmf"/>
<prompt bargein="true">
<voice name="millie">
You have indicated that you wish to cancel your appointment.
<break time="1s"/>
Please press 1 to confirm that you do wish to cancel your appointment or
press 2 to return to the main menu and reselect your option.
</voice>
</prompt>
<choice next="#confirmcancel">
</choice>
<choice next="#confirmnonecancel">
</choice>
<nomatch>
You have indicated that you wish to cancel your appointment.
Please press 1 to confirm that you do wish to cancel your appointment or
press 2 to return to the main menu and reselect your option.
</nomatch>
</menu>
<form id="confirmcancel">
<block>
<prompt bargein="false">
<voice name="millie">
Thank you for confirming that you wish to cancel your appointment. We are contacting the surgery now to pass the cancellation on.
<!--- <break time="1s"/> --->
</voice>
</prompt>
</block>
<block>
<assign name="status" expr="'cancelling'"/>
<assign name="callID" expr="1234"/>
</block>
<subdialog
name="postStatus"
src="http://www.appointmentm8.com/index.cfm? ... atusUpdate"
namelist="status callID"
method="post"
fetchtimeout="10s">
</subdialog>
<block>
<prompt bargein="false">
<voice name="millie">
Your cancellation has been accepted by the surgery.
<break time="1s"/>
</voice>
</prompt>
</block>
<block>
<goto next="#goodbye"/>
</block>
</form>
<form id="confirmnonecancel">
<block>
<prompt bargein="false">
<voice name="millie">
Your appointment has not, we repeat, not been cancelled and is still in place at the surgery.
</voice>
</prompt>
<goto next="#menuoptions"/>
</block>
</form>
<form id="repeat">
<block>
<prompt bargein="false">
<voice name="millie">
The date and time of the appointment is
</voice>
</prompt>
</block>
<subdialog name="result" src="#appdatetime"></subdialog>
</form>
<form id="goodbye">
<block>
<prompt bargein="false">
<voice name="millie">
Thank you for your time, goodbye.
</voice>
</prompt>
</block>
<block>
<assign name="status" expr="'goodbye'"/>
<assign name="callID" expr="1234"/>
</block>
<subdialog
name="postStatus"
src="http://www.appointmentm8.com/index.cfm? ... atusUpdate"
namelist="status callID"
method="post"
fetchtimeout="10s">
</subdialog>
<block>
</block>
</form>
</vxml>