Skip Headers
Oracle® Voicemail & Fax Administrator's Guide
10g Release 1 (10.1.1)

Part Number B14496-03
Go to Documentation Home
Home
Go to Book List
Book List
Go to Table of Contents
Contents
Go to Index
Index
Go to Master Index
Master Index
Go to Feedback page
Contact Us

Go to previous page
Previous
Go to next page
Next
View PDF

11 Interactive Voice Response

An Interactive Voice Response (IVR) system automates interaction with telephone callers. The Oracle Voicemail & Fax IVR provides system administrators with the capability to customize a user interface for callers and includes auto-attendant features such as simple DTMF-based menus (Dual-Tone Multifrequency), call routing, voicemail, and directory integration features.

The following is an example of what a caller might hear when they call the central phone number for the Acme Corporation, a fictitious company.

"Thank you for calling the Acme Corporation. Please make a selection from the following menu. For our business hours, press 1. To speak to someone in Customer Support, press 2. If you know the extension of the person you wish to speak to, press 3. If you want to leave a message for a specific person, press 4. For general help, press 5 to leave a message, and someone will return your call."

Oracle Voicemail & Fax allows you to tailor the behavior of the IVR depending on the day and time that a call comes in. Therefore, if a caller calls during the hours that the Acme Corporation is closed for business, they hear a different message:

"Thank you for calling the Acme Corporation. Our office is now closed. Please call back during our regular business hours which are Monday through Friday, between 8:00 a.m. and 5:00 p.m."

Acme Corporation celebrates Martin Luther King's birthday as a holiday. On that day, callers hear the following message:

"Thank you for calling the Acme Corporation. Our office is closed today in celebration of Martin Luther King's birthday. Please call back tomorrow when we will resume normal business hours at 8:00 a.m."

One day during the winter, a snowstorm closed the offices of Acme Corporation. On that day, callers heard this recording:

"Thank you for calling the Acme Corporation. Our offices are closed today because of the snowstorm. We apologize for any inconvenience this closure has cause you. Please call our offices again tomorrow after 8:00 a.m."

When a call comes in, Oracle Voicemail & Fax goes through the following steps to initiate an IVR:

  1. A call comes in to the central phone number, (415) 292-6000, on Monday at 8:30 a.m.

  2. The call is forwarded to the hunt group phone number.

  3. Oracle Voicemail & Fax checks to see if it is a direct call or a forwarded call and determines that it is a forwarded call.

  4. For any forwarded call, Oracle Voicemail & Fax then checks to see if an IVR deployment is specified for the phone number. It determines that the Acme deployment is specified for this phone number.

  5. Oracle Voicemail & Fax checks to see what group this phone number is assigned to and determines that the phone number belongs to the acme.hq.com group.

  6. Oracle Voicemail & Fax checks the IVR Hours for the acme.hq.com group and determines that Monday, 8:30 a.m. corresponds to the Open time category.

  7. Oracle Voicemail & Fax checks the Open time category in the acme deployment.

  8. Oracle Voicemail & Fax executes the call flow specified for the Open time category.

Figure 11-1 is a flowchart of these steps. The numbers in the flowchart correspond to the steps.

Figure 11-1 Flow Chart of a Call Forwarded to an IVR Application

Description of Figure 11-1 follows
Description of "Figure 11-1 Flow Chart of a Call Forwarded to an IVR Application"

There is a relationship between a group, the phone numbers assigned to the group, the IVR hours specified for the group, and the IVR deployment assigned to a phone number. Figure 11-2 illustrates this relationship for the acme.hq.com group.

A group has two properties relevant to IVRs: Phone Numbers and IVR Hours. Phone Numbers are assigned to groups or sites. In this example, the central phone number (1 (415) 292-6000) is assigned to the acme.hq.com group. Secondly, the IVR Hours specify the open business hours, holidays, and any special mode days for a group. In this example, the hours are specified for acme.hq.com, the headquarters office of Acme Corporation. The Business Hours listed correspond to the Open time category. The hours of the Closed time category are the hours not included in the Open time category. Acme Corporation celebrates one holiday on January 17. Special Mode days are used to designate unusual circumstances such as an office closure due to a snowstorm in the example above.

The phone number ties the information about the group to the deployment. A deployment is specified for a particular phone number. In this example, the Acme deployment is specified for the phone number 14152926000. The deployment consists of call flows, sound file groups, and profiles for each of the time categories.

Figure 11-2 Relationship between Groups and Deployments

Description of Figure 11-2 follows
Description of "Figure 11-2 Relationship between Groups and Deployments"

Refer back to the flow chart in Figure 11-1. You can use Figure 11-3 to see how Oracle Voicemail & Fax uses the relationship between groups, phone numbers, IVR Hours, and deployments to execute an IVR application. The IVR application consists of the call flow, sound file group, and profile for a time category. The IVR application that gets executed in the example in Figure 11-1 uses the CallFlow1 call flow, the SFG1 sound file group, and the Profile1 profile that correspond to the Open time category. The numbers in Figure 11-3 correspond to steps 4-7 in the flow chart (Figure 11-1).

Figure 11-3 Mapping Flowchart Steps

Description of Figure 11-3 follows
Description of "Figure 11-3 Mapping Flowchart Steps"

Creating an IVR System

An Oracle Voicemail & Fax IVR system includes the following elements:

To create an IVR system, complete the following tasks:

Specifying the Hours of the IVR

The hours of the IVR are specified for a group or site. You can specify time categories, and by doing so, you can customize your deployment to behave differently depending on the time of day.

Business Hours are the hours that the business is open and correspond to the Open time category. Any days and times that the business is not open are the hours that it is closed. These hours are inferred from the Business Hours and correspond to the Closed time category. Any days and times specified as Holidays or Special Mode Days override the Business Hours and correspond, respectively, to the Holiday and Special time categories. Special Mode Days can be used to cover unusual circumstances such as an office closure due to a power outage or weather conditions.

Table 9-2 is an example of how the hours specified for the hq.acme.com site map to the time categories. Therefore, if a call comes in on Monday, February 15, 2005 at 10:00 a.m., this time falls within the hours that have been specified as open business hours and the IVR application corresponding to the Open time category is used.

Table 11-1 Relationship between IVR Hours Specified for a Group and Time Categories

IVR Hours Specified for the hq.acme.com Group Corresponding Time Category in IVR Deployment

Business Hours

Monday to Friday, 8:00 a.m. - 5:00 p.m.

Open


Monday to Friday, 5:00 p.m. - 11:59 p.m. 12:00 a.m. - 7:59 a.m., Saturday and Sunday 12:00 a.m. - 11:59 p.m.

Closed

Holiday

Monday, January 17

Holiday

Special Mode Days

None specified

Special


To specify the hours of the IVR:

  1. Navigate to the administration page for the Voicemail & Fax group.

  2. Click the Go To Task icon for the Groups and Sites task.

  3. In the Groups and Sites page, select the group to which the phone number belongs and click Edit.

  4. In the Interactive Voice Response (IVR) section of the page, enter the hours that your business is open in the Business Hours table.

    Screenshot of the Business Hours table
  5. Enter any holidays in the Holidays table.

    Screenshot of the Holidays and Special Mode Days tables

    Note:

    You can leave the Special Mode Days and Holidays sections blank.
  6. Click OK.

Creating an IVR Deployment

An IVR deployment consists of call flows, sound file groups, and profiles for each of the four time periods. For example, the following is the AcmeDemoDeployment:

Table 11-2 AcmeDemoDeployment

Time Category Call Flow Sound File Group Profile

Open

CallFlow1

SFG1

Profile1

Closed

CallFlow2

SFG2

Profile2

Holiday

CallFlow2

SFG3

Profile2

Special

CallFlow2

SFG4

Profile2


The following is an overview of the steps to creating an IVR deployment. As you go through the steps, fill in the worksheet in Appendix C. The information in this worksheet will be required when you get to the last step where you create the deployment.

Use the Interactive Voice Response Manager, a command-line tool, to create the call flows, sound file groups, profiles, and deployments for your IVR deployment. See Appendix E, "Interactive Voice Response Manager Commands" for more information about the commands.

Overview of the Steps to Creating an IVR Deployment

  1. Create a new call flow or edit an existing call flow for a time category. See "About Call Flows" for more information on call flows. Enter the name of the call flow for the appropriate time category in the worksheet.

  2. Identify the roles in your call flow and create a sound file for each role in your call flow. See"Creating Sound Files" for more information on creating sound files. Enter the name of each role, the sound file associated with the role, and coder type of each sound file in the worksheet.

  3. Create a new sound file group. See "About Sound File Groups" for more information about sound file groups. Enter the name of the sound file group in the worksheet.

  4. Identify the profile keys in your call flow. See "About Profiles" for more information about profiles. Enter the profile keys and their values in the worksheet.

  5. Create a new profile. Enter the name of the profile in the worksheet.

  6. Repeat Steps 1-5 for each time category.

  7. Create your deployment. See "Creating the IVR Deployment" for more information on creating the deployment.

In the sections that follow, we will use the AcmeDemoDeployment deployment as an example and focus on the call flow and related sound file group and profile for the Open time category.

Note:

Do not confuse the AcmeDemoDeployment with the sample deployment, ACME. The AcmeDemoDeployment is used as an example in this chapter, but the files required for the deployment are not provided as one of the sample deployments.

About Call Flows

A call flow is an XML file which is executed by the IVR Service. A call flow is a state machine. A call enters the call flow at the state defined as the start state, and it leaves the call flow through the state defined as the end state. Between these two states, there are a series of transition states. For each state there is one call flow action that defines a specific behavior. For example, the <menuAction> action provides a menu of options. Each action has associated with it, certain behavior, for example, the <menuAction> action allows callers to select menu options that are initiated with a key press. Certain conditions within the state must be met in order for the call to pass from its current state to another state. When a call flow completes running the state's action and it reaches the end state, the call flow completes its processing of the call and the IVR Service exits the application.

Besides the main body of the call flow, there are two other sections that set up the call flow. The configuration section of the call flow, <globalConfig>, defines the default behavior of the state machine. This default behavior applies to all states, but can be overridden locally within a specific state. The <declarations> section declares sound file roles and profiles that are referenced within the call flow.

An Example Call Flow

When a caller calls the main phone number of Acme Corporation during regular business hours, they hear the following recording:

"Thank you for calling the Acme Corporation. Please make a selection from the following menu. For our business hours, press 1. To speak to someone in Customer Support, press 2. If you know the extension of the person you wish to speak to, press 3. If you want to leave a message for a specific person, press 4. For general help, press 5 to leave a message, and someone will return your call."

If the caller presses 1, they hear a recording that gives them Acme's business hours. If the caller presses 2, they are transferred to the phone extension for Customer Support. If the caller presses 3, they are prompted to enter the phone extension of the person they are reaching, and after they enter the extension, they are transferred to that phone number. With option 4, the caller bypasses getting transferred to a user's extension and is transferred directly to the voicemail system where they can leave a message for a recipient that they specify. Option 5 transfers them to a general voicemail mailbox where they can leave a message.

This behavior is represented in the call flow document that follows (Example 11-1).

Note:

The line numbers in the example call flow are for reference only.

Example 11-1 CallFlow1.xml File

1    <?xml version="1.0" encoding="UTF-8"?>
2    <ivr:stateMachine xmlns:ivr="http://www.oracle.com/ovf/ivr/2003"
3                      xmlns="http://www.oracle.com/ovf/ivr/2003"
4                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
5    <declarations>
6      <profKeys>
7          <profKey>Customer Support extension</profKey>
8          <profKey>General Help mailbox</profKey>
                9           <profKey>Operator extension</profKey>
10       </profKeys>
11   
12       <sfRoles>
13         <sfRole>Main menu prompt</sfRole>
14         <sfRole>Business hours prompt</sfRole>
15         <sfRole>Extension entry prompt</sfRole>
16         <sfRole>Goodbye</sfRole>
17       </sfRoles>
18     </declarations>
19   
20     <startState>MainMenu</startState>
21     <endState>Finish</endState>
22     <globalConfig>
23     <allConfig>
24       <onMiscError>
25         <ivr:destinationState>Goodbye</ivr:destinationState>
26         </onMiscError>
27       </allConfig>
28       <menuConfig>
29         <keyPresses>
30           <menuItem key="0">
31             <destinationState>ToReachOperator</destinationState>
32           </menuItem>
33           <repeatOptions key="9"/>
34         </keyPresses>
35         <timeoutBehavior><retreat/></timeoutBehavior>
36       </menuConfig>
37   
38     </globalConfig>
39     <state name="MainMenu">
40       <menuAction>
41         <leadSoundFile><sfRoleRef>Main menu prompt</sfRoleRef></leadSoundFile>
42         <keyPresses>
43           <menuItem key="1">
44             <destinationState>ForBusinessHours</destinationState>
45           </menuItem>
46           <menuItem key="2">
47            <destinationState>ForCustomerSupport</destinationState>
48         </menuItem>
49           <menuItem key="3">
50             <destinationState>ToReachUser</destinationState>
51           </menuItem>
52           <menuItem key="4">
53             <destinationState>ToReachVoicemail</destinationState>
54           </menuItem>
55           <menuItem key="5">
56             <destinationState>GeneralHelpMailbox</destinationState>
57           </menuItem>
58         </keyPresses>
59   
60         <timeoutBehavior noResponseOk="false">
61           <onTimeout>
62             <destinationState>ToReachOperator</destinationState>
63           </onTimeout>
64         </timeoutBehavior>
65       </menuAction>
66     </state>
67   
68     <state name="ForBusinessHours">
69       <playInfoAction>
70         <soundFile><sfRoleRef>Business hours prompt</sfRoleRef></soundFile>
71         <onSuccess><destinationState>Finish</destinationState></onSuccess>
72         <keyInterrupt>false</keyInterrupt>
73         <keyFlush>true</keyFlush>
74       </playInfoAction>
75     </state>
76   
77     <state name="ForCustomerSupport">
78       <extensionTransferAction>
79         <extension><profKeyRef>Customer Support
80         extension</profKeyRef></extension>
81         <onSuccess><destinationState>Finish</destinationState></onSuccess>
82       </extensionTransferAction>
83     </state>
84   
85    <state name="ToReachUser">
86       <getExtAndTransferAction>
87         <leadSoundFile>
88           <sfRoleRef>Extension entry prompt</sfRoleRef>
89         </leadSoundFile>
90         <onSuccess><destinationState>Finish</destinationState></onSuccess>
91         <onCancel><destinationState>MainMenu</destinationState></onCancel>
92         <onTimeout><destinationState>MainMenu</destinationState></onTimeout>
93         <directoryAccess>true</directoryAccess>
94         <dialRestriction>SITE</dialRestriction>
95       </getExtAndTransferAction>
96     </state>
97   
98     <state name="ToReachVoicemail">
99       <passToServiceAction>
100        <id>Recording</id>
101        <waitForReturn>false</waitForReturn>
102        <destroyCallDetails>true</destroyCallDetails>
103       <onSuccess><destinationState>Finish</destinationState></onSuccess>
104      </passToServiceAction>
105    </state>
106
107    <state name="GeneralHelpMailbox">
108      <mailboxTransferAction>
109        <mailbox>
110          <profKeyRef>General Help mailbox</profKeyRef>
111        </mailbox>
112        <onSuccess><destinationState>Finish</destinationState></onSuccess>
113      </mailboxTransferAction>
114    </state>
115
116    <state name="ToReachOperator">
117      <extensionTransferAction>
118        <extension><profKeyRef>Operator
119        extension</profKeyRef></extension>
120        <onSuccess><destinationState>Finish</destinationState></onSuccess>
121      </extensionTransferAction>
121    </state>
123  
124    <state name="Goodbye">
125      <playInfoAction>
126        <soundFile><sfRoleRef>Goodbye</sfRoleRef></soundFile>
127      <onSuccess><destinationState>Finish</destinationState></onSuccess>
128        <keyInterrupt>false</keyInterrupt>
129        <keyFlush>true</keyFlush>
130      </playInfoAction>
131    </state>
132
133    <state name="Finish"/>
134
135  </ivr:stateMachine>

The following sections walk through CallFlow1 and describe how call flows work.

States and Actions

The state through which all calls enter the application is defined by the <startState> tag.

20     <startState>MainMenu</startState>

All calls enter the call flow through the MainMenu state.

39     <state name="MainMenu">

Each state has associated with it a call flow action. The call flow action for the MainMenu state is <menuAction>.

40       <menuAction>

A state can have only one call flow action. These call flow actions define behaviors that you typically find in an IVR—for example, providing a menu from which the caller can select a menu option, transferring a call to a telephone extension, transferring a call to a voicemail mailbox, and so on.

The <menuAction> action requires that a recorded message or sound file be played. The <leadSoundFile> tag indicates that a sound file is required. The sound file role, Main menu prompt, acts as a placeholder for this sound file.

41         <leadSoundFile><sfRoleRef>Main menu prompt</sfRoleRef></leadSoundFile>

All sound file roles must be declared in the <declarations> section of the call flow.

12       <sfRoles>
13       <sfRole>Main menu prompt</sfRole>

In this example, when the call enters the MainMenu state, the sound file associated with the Main menu prompt sound file role is played, and the caller hears the following:

"Thank you for calling the Acme Corporation. For our business hours, press 1. To speak to someone in Customer Support, press 2. If you know the extension of the person you wish to speak to, press 3. If you want to leave a message for a specific person, press 4. For general help, press 5 to leave a message, and someone will return your call."

The <menuAction> action requires that the caller select from a number of options by pressing a key.

42         <keyPresses>
43           <menuItem key="1">
44             <destinationState>ForBusinessHours</destinationState>
45           </menuItem>
46           <menuItem key="2">
47            <destinationState>ForCustomerSupport</destinationState>
48         </menuItem>
49           <menuItem key="3">
50             <destinationState>ToReachUser</destinationState>
51           </menuItem>
52           <menuItem key="4">
53             <destinationState>ToReachVoicemail</destinationState>
54           </menuItem>
55           <menuItem key="5">
56             <destinationState>GeneralHelpMailbox</destinationState>
57           </menuItem>
58         </keyPresses>

Note that each keypress is associated with a new state, specified by the <destinationState> tag. Each of these states, ForBusinessHours, ForCustomerSupport, ToReachUser, ToReachVoicemail, and GeneralHelpMailbox are transition states. When the caller presses keys 1, 2, 3, 4, or 5, the call is transferred to the specified destination state. If you look through the call flow, you will see each of these states:

68     <state name="ForBusinessHours">
...
77     <state name="ForCustomerSupport">
...
85    <state name="ToReachUser">
...
98     <state name="ToReachVoicemail">
...
107    <state name="GeneralHelpMailbox">

Play a Recorded Message

We will go through each of the destination states. When the caller presses 1, the call is transferred to the ForBusinessHours state. The caller hears a recording with the business hours of the Acme Corporation. The action associated with the ForBusinessHours state is <playInfoAction> which requires a sound file.

68     <state name="ForBusinessHours">
69       <playInfoAction>
70         <soundFile><sfRoleRef>Business hours prompt</sfRoleRef></soundFile>

The <sfRoleRef> tag specifies the sound file roles that act as a placeholder for these sound files. The sound file roles are declared in the <declarations> section of the call flow.

12       <sfRoles>
...
14         <sfRole>Business hours prompt</sfRole>
...
17       </sfRoles>

Transfer Call to a Pre-determined Extension

When the caller presses 2, the call is passed to the ForCustomerSupport state. The action associated with this state is <extensionTransferAction>.

77     <state name="ForCustomerSupport">
78       <extensionTransferAction>

This action transfers the call to the telephone number specified by a profile key. The profile key, Customer Support Extension, is identified with the <profKeyRef> tag.

79         <extension><profKeyRef>Customer Support
80         extension</profKeyRef></extension>

Profile keys must be declared in the <declarations> section of the call flow in the <profKeys> subsection.

5    <declarations>
6      <profKeys>
7          <profKey>Customer Support extension</profKey>

Transfer Call to Caller-Specified Extension

When the caller presses 3, the call is transferred to the ToReachUser state. The <getExtAndTransferAction> action requires a sound file as indicated by the <leadSoundFile> and <sfRoleRef> tags. The caller hears the following recording: "Enter the extension of the person you wish to speak to and press #." The <getExtAndTransferAction> action takes the user's input and transfers the call to the extension provided by the caller. The <Extension entry prompt> sound file role is declared in the <declarations> section of the call flow under the <sfRoles> section.

85    <state name="ToReachUser">
86       <getExtAndTransferAction>
87         <leadSoundFile>
88           <sfRoleRef>Extension entry prompt</sfRoleRef>
89         </leadSoundFile>

Send Call to Voicemail

When the caller presses 4, the call is transferred to the ToReachVoicemail state. The <passToServiceAction> passes the call to another IVR or to one of the Oracle Voicemail & Fax services. In this example, the call is passed to the Recording service as indicated by the <id> tag. Once the call is passed, the caller hears the Oracle Voicemail & Fax prompts to record a message and to enter the extension of the user to whom they want to send the message.

98     <state name="ToReachVoicemail">
99       <passToServiceAction>
100        <id>Recording</id>

When the caller presses 5, the call is transferred to the GeneralHelpMailbox state. The <mailboxTransferAction> action transfers the call to a voicemail mailbox specified by the General Help mailbox profile key.

107    <state name="GeneralHelpMailbox">
108      <mailboxTransferAction>
109        <mailbox>
110          <profKeyRef>General Help mailbox</profKeyRef>
111        </mailbox>

Both the <passToServiceAction> and <mailboxTransferAction> actions allow callers to leave a message. The difference is that the <passToServiceAction> prompts the caller for the extension of the person for whom they want to leave a message. And the <mailboxTransferAction> automatically sends them to a voicemail mailbox specified by the <mailbox><profKeyRef> tags.

Exiting the Application

For each state, once the action is successfully completed, the call is transferred to the Finish state. (See lines 71, 81, 90, 103, and 112.)

71         <onSuccess><destinationState>Finish</destinationState></onSuccess>

The Finish state is declared as the <endState> in the <declarations> section of the call flow.

21     <endState>Finish</endState>

Once the call reaches the Finish state, it exits the application.

133    <state name="Finish"/>

Global Call Flow Behavior

You can define general behavior that applies to all states in the call flow in the <globalConfig> section of the call flow using the <allconfig> tag.

22     <globalConfig>
23     <allConfig>

In this call flow, one behavior is defined. When an unexpected error occurs, the call is sent to the Goodbye state. The Goodbye state has a <playInfoAction> action associated with it. It plays a sound file associated with the profile called Goodbye. In this instance, the caller hears a recording that says, "Goodbye." The call flow then transitions the call to the Finish state, and the call exits the application.

24       <onMiscError>
25         <ivr:destinationState>Goodbye</ivr:destinationState>
26         </onMiscError>
...
124    <state name="Goodbye">
125      <playInfoAction>
126        <soundFile><sfRoleRef>Goodbye</sfRoleRef></soundFile>
127      <onSuccess><destinationState>Finish</destinationState></onSuccess>

There is another global configuration which sets a global key press for the <menuAction> action. At any time when a call is in a state whose action is <menuAction>, the caller can press 0 and he or she is transferred to an operator through the ToReachOperator state.

28       <menuConfig>
29         <keyPresses>
30           <menuItem key="0">
31             <destinationState>ToReachOperator</destinationState>
32           </menuItem>
...
116    <state name="ToReachOperator">
117      <extensionTransferAction>
118        <extension><profKeyRef>Operator
119        extension</profKeyRef></extension>

If the caller presses 9, then the menu options are repeated.

28       <menuConfig>
29         <keyPresses>
...
33           <repeatOptions key="9"/>

Other Actions

Besides the call flow actions that determine the behavior of a state, there are actions that apply to one or more states. These actions define behavior that can be used with the call flow actions. For example, the <onSuccess> tag, discussed earlier, defines the behavior when the state's action is successful. The <onTimeout> tag defines the behavior when the call times out in a particular state.

Header and Footer Information

Every call flow must begin with the following XML code. This identifies the file as an IVR to Oracle Voicemail & Fax. Do not change the code in these lines. Doing so will invalidate the file.

1    <?xml version="1.0" encoding="UTF-8"?>
2    <ivr:stateMachine xmlns:ivr="http://www.oracle.com/ovf/ivr/2003"
3                      xmlns="http://www.oracle.com/ovf/ivr/2003"
4                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

The following XML code must be the last line in the call flow.

135  </ivr:stateMachine>

Profile Keys

In this call flow, there were three profile keys. All profile keys must be declared in the <declarations> section of the call flow in the <profKeys> section.

6      <profKeys>
7          <profKey>Customer Support extension</profKey>
8          <profKey>General Help mailbox</profKey>
                9           <profKey>Operator extension</profKey>
10       </profKeys>

The Customer Support extension is the telephone extension for the Customer Service department. The General Help mailbox is the telephone extension that transfers callers to the voicemail mailbox for general help. The Operator extension is the telephone extension that transfers callers to the operator. When you put together your IVR, you will provide the values for these profile keys. By using profile keys instead of hardcoding the telephone numbers in the call flow, you can reuse the call flow in other time categories for the same deployment or in other deployments.

Sound File Roles

In this call flow there are four sound file roles. All sound file roles must be declared in the <declarations> section of the call flow in the <sfRoles> section.

5    <declarations>
...
12       <sfRoles>
13         <sfRole>Main menu prompt</sfRole>
14         <sfRole>Business hours prompt</sfRole>
15         <sfRole>Extension entry prompt</sfRole>
16         <sfRole>Goodbye</sfRole>
17       </sfRoles>

Each sound file role is a placeholder for a recorded message known as a sound file. When you create your IVR, you will associate a sound file with each role. Certain call flow actions require a sound file; these are: <menuAction>, <playInfoAction>, and <getExtAndTransferAction>. When the call flow is executed, it uses the sound file role to locate the correct sound file to play. Recording the prompts and information in discrete files makes it possible to reuse the files in different call flows and in different deployments.

Creating a Call Flow

Oracle Voicemail & Fax comes with sample IVR deployments including sample call flows. The sample call flows give examples of the behaviors that are possible in an IVR. Determine what you want your application to do and determine if one of the sample call flows includes an example of this behavior. Use an XML editor to edit the sample call flow and adapt it to your particular application. See "Sample Deployments" for more information on the sample call flows. See Appendix D, "IVR Call Flow XML" for more information on the XML tags used in the call flows.

After you have created the call flow, use the ivrman callflow add command to load the call flow into the Oracle directory server. You must provide the name of the call flow and the call flow file with the command. In other words, the name of the file can differ from the name of the call flow. See Appendix E, "Interactive Voice Response Manager Commands" for more information about this command.

Note:

You can use the same call flow for multiple time categories in a deployment. See "Reusing IVR Components" for more information on reusing call flows.

About Sound File Groups

A sound file is the recorded message for a role in a call flow. A sound file group associates sound files with roles for a specific call flow. Figure 11-4 illustrates this relationship for CallFlow1. In CallFlow1, there are four sound file roles: Main menu prompt, Business hours prompt, Extension entry prompt, and Goodbye. There is one sound file for each role. SoundFileGroup1 associates a sound file with each sound file role in CallFlow1.

Figure 11-4 Relationship of Call Flows, Sound File Roles, Sound File Groups, and Sound Files

Description of Figure 11-4 follows
Description of "Figure 11-4 Relationship of Call Flows, Sound File Roles, Sound File Groups, and Sound Files"

Creating Sound Files

Identify the roles in your call flow and create a sound file for each role. You can use the voicemail system to create your sound files. Log in to the voicemail system, and select option 4, record and send a new message, from the Main Menu. Record the message for a sound file role. For example, for the Main menu prompt sound file role, you would record the message shown in Table 11-3. Then follow the voicemail prompts to send the voicemail message to yourself. Retrieve the voicemail using an e-mail client. From your e-mail client, save the voicemail attachment in your e-mail message to your desktop. These files are in 64k8bitlinear WAVE format which is a supported coder type. Then repeat this process for each of the sound file roles. You should have one file for each sound file role in a call flow.

For CallFlow1, the following is an example of the transcript of the sound files for each declared sound file role.

Table 11-3 Transcript of Sound Files for the CallFlow1 Call Flow

Sound File Role Transcript of sound file

Main menu prompt

"Thank you for calling the Acme Corporation. Please make a selection from the following menu. For our business hours, press 1. To speak to someone in Customer Support, press 2. If you know the extension of the person you wish to speak to, press 3. If you want to leave a message for a specific person, press 4. For general help, press 5 to leave a message, and someone will return your call."

Business hours prompt

"Acme Corporation is open for business Monday through Friday, 8:00 a.m. to 5:00 p.m."

Extension entry prompt

"Please enter the extension of the person you wish to speak to or use the directory

Goodbye

"Thank you for calling Acme Corporation. Goodbye."


You will need to specify a sound file group for each time category. However, you will probably not be able to create a sound file for the Special time category which is used for special circumstances that may arise. Therefore, create an empty sound file to use as a placeholder in the deployment.

Creating a Sound File Group

After you have created all the sound files for a call flow, use the ivrman sfgroup add command to create a sound file group. When you execute the command, you specify the call flow for which the sound file group is being created. The tool checks the call flow to see what sound file roles are declared. If you execute the command in interactive mode, it prompts you with the name of the sound file role. You must specify the name of the file for that role and the coder type. If you execute the command in batch mode, you must provide a file specifying the role name, file name, and coder type. See Appendix E, "Interactive Voice Response Manager Commands" for more information about this command.

About Profiles

A profile contains the settings for the profile keys required for a particular call flow. The settings for each profile key in the call flow must be specified in the profile. Figure 11-5 illustrates this relationship for CallFlow1. There are three profile keys declared in CallFlow1: Customer Support extension, General Help mailbox, and Operator extension.

Figure 11-5 Relationship of Call Flows, Profile Keys, and Profiles

Description of Figure 11-5 follows
Description of "Figure 11-5 Relationship of Call Flows, Profile Keys, and Profiles"

Creating a Profile

Identify the profile keys in your call flow and the identify the values for each key. Enter this information in the worksheet. Use the ivrman profile add command to create the profile. When you execute the command, the tool checks the call flow to see what profile keys are declared. If you execute the command in interactive mode, it prompts you with the name of the profile key. You provide the correct value for this key. For example, for Customer Support extension, you would provide the telephone number for Customer Support. For General Help mailbox, you would provide the telephone number to the General Help voicemail mailbox. And for Operator extension, you would provide the telephone number that connects the caller to the Operator. If you use the command in batch mode, you provide a file with the format profile_key=value for each profile key. See Appendix E, "Interactive Voice Response Manager Commands" for more information about this command.

You will need to specify a profile for each time category. However, there may be call flows for which there are no profile keys. In these situations, create an empty profile to use as a placeholder in the deployment.

Creating the IVR Deployment

In this chapter, we have discussed CallFlow1 and its related sound file group and profile for the Open time category. When you create your deployment, you will need to create a call flow, sound file group, and profile for each time category: Open, Closed, Holiday, and Special. In this example, the same call flow (named CallFlow2 in Table 11-4) can be used for the remaining time categories because the behavior in each case is identical, that is, a recorded message is played. There are no profile keys for these call flows, so you create a dummy profile to act as a placeholder. A different message is recorded for each of the three time periods and a sound file group is created for each (SFGroup2, SFGroup3, and SFGroup4). Because the Special time category is often used for unexpected office closures, you will probably create a dummy sound file group to act as a placeholder in your deployment.

After you have created the call flows, sound file groups, and profiles for each of the time periods, you are now ready create the IVR deployment. Use the ivrman deployment add command to create the deployment. The command prompts you for the call flow, sound file group, and deployment for each time category. You must provide a value for each of these elements. See Appendix E, "Interactive Voice Response Manager Commands" for more information about this command.

The deployment and related call flows, sound file groups and profiles are stored in Oracle directory server.

Mapping the Phone Number to a Deployment

An IVR deployment is mapped to a phone number. For example, most companies will want to set up an IVR for the company's main phone number. In addition, if customers have direct access to different departments, you could assign an IVR to each department phone number.

An IVR deployment is associated with a particular phone number. This mapping is specified on the administration page of the PBX-Application Cluster for the PBX to which the phone number belongs.

To map a phone number to a deployment:

  1. Identify the PBX to which the phone number belongs and identify the PBX-Application Cluster for this PBX.

  2. Navigate to the administration page for the PBX-Application Cluster.

  3. In the Interactive Voice Response section of the page, enter the phone number in the International Phone Number Pattern column.

    Screenshot of the Interactive Voice Response table on the PBX-Application Cluster Administration page
  4. Enter the name of the deployment in the IVR Deployment Name column.

See "Interactive Voice Response (IVR) Parameters" for more information on mapping a phone number to a deployment.

Sample Deployments

The following example deployments are automatically provided when you install Oracle Voicemail & Fax:

Table 11-4 shows the sample deployments and the call flows associated with each deployment. For all deployments, except ACME, the same call flow is used for all time periods. You can use the sample call flows as the basis for the call flows in your IVR application. The call flow XML files can be found in %UM_HOME/sample/ivr. Use an XML editor or any text editor to view and edit these files.

Table 11-4 Same Deployments and Related Call Flows

Deployment Name Associated Call Flows

ToFax

ToFax

ToRetrieval

ToRetrieval

DormExtensions

DormExtensions

ACME

ACME (Open time period)

ACME

SendToMailbox (Closed time period)

ACME

Play Message (Holiday and Special time periods)

LanguageChoiceAutoAttendant

chooser

EnglishAutoAttendant

BasicAutoAttendant

FrenchAutoAttendant

BasicAutoAttendant

TransferToExtension

TransferToExtension

MailboxPicker

MailboxPicker


Using the Sample IVRs

You can deploy the sample IVRs to see how they work. You will need to set up a test phone number to use. Select the deployment you want to test and specify this deployment for the phone number. See "Mapping the Phone Number to a Deployment" for more information on how to map a phone number to a deployment.

The sample deployments use the same call flow is used for all time periods. Therefore, you do not need to specify the Business Hours, Holidays, or Special Mode Days for the PBX-Application Cluster. The only exception to this is the ACME Deployment.

You will need to edit any profile settings. Use the ivrman profile update command. See Appendix E, "Interactive Voice Response Manager Commands" for more information about this command.

Reusing IVR Components

The Oracle Voicemail & Fax implementation of IVR separates call flows, sound file groups, and profiles so that the same call flow can be reused for different time categories in the same deployment or in different deployments. By separating the sound file group from the call flow, you can use the same call flow and assign a sound file group with recordings in English in one deployment and assign a sound file group with recordings in French in another deployment. The EnglishAutoAttendant and the FrenchAutoAttendant use the same call flow, BasicAutoAttendant. However, the sound files for the EnglishAutoAttendant deployment are in English while the sound files for the FrenchAutoAttendant deployment are in French.

The same call flow can also be used in the same deployment. In the AcmeDemoDeployment deployment, the same call flow,CallFlow1, is used for three time periods, Closed, Holiday, and Special. The CallFlow2 call flow has only one call flow action, <playInfoAction>, which plays a message. You can use the same call flow and change the message that is played by assigning a different sound file group to the deployment items. The SFGroup2, SFGroup3, and SFGroup4 sound file groups have a different sound file associated with it, and each plays a different recorded message.

Likewise, by separating out the profile settings, the same call flow and sound group can be used, for example, in multiple office locations in the U.S. For example, with the ACME deployment, you could use the same call flow and sound file group, and provide a different profile for each regional office that contains the phone numbers for that office.