You are on page 1of 60

SAP Contact Center

IVR Development Guide

Creating IVRs with SAP Contact Center 7.0

COPYRIGHT
© Copyright 2008 SAP AG. All rights reserved.

No part of this publication may be reproduced or transmitted in any form or for any purpose without the express permission of SAP AG.
The information contained herein may be changed without prior notice.

Some software products marketed by SAP AG and its distributors contain proprietary software components of other software vendors.

Microsoft, Windows, Outlook, and PowerPoint are registered trademarks of Microsoft Corporation. IBM, DB2, DB2 Universal Database,
OS/2, Parallel Sysplex, MVS/ESA, AIX, S/390, AS/400, OS/390, OS/400, iSeries, pSeries, xSeries, zSeries, z/OS, AFP, Intelligent
Miner, WebSphere, Netfinity, Tivoli, Informix, i5/OS, POWER, POWER5, OpenPower and PowerPC are trademarks or registered
trademarks of IBM Corporation.

Adobe, the Adobe logo, Acrobat, PostScript, and Reader are either trademarks or registered trademarks of Adobe Systems Incorporated
in the United States and/or other countries.

Oracle is a registered trademark of Oracle Corporation.

UNIX, X/Open, OSF/1, and Motif are registered trademarks of the Open Group.

Citrix, ICA, Program Neighborhood, MetaFrame, WinFrame, VideoFrame, and MultiWin are trademarks or registered trademarks of
Citrix Systems, Inc.

HTML, XML, XHTML and W3C are trademarks or registered trademarks of W3C®, World Wide Web Consortium, Massachusetts
Institute of Technology.

Java is a registered trademark of Sun Microsystems, Inc.

JavaScript is a registered trademark of Sun Microsystems, Inc., used under license for technology invented and implemented by
Netscape.

MaxDB is a trademark of MySQL AB, Sweden.

SAP, R/3, mySAP, mySAP.com, xApps, xApp, SAP NetWeaver, and other SAP products and services mentioned herein as well as their
respective logos are trademarks or registered trademarks of SAP AG in Germany and in several other countries all over the world. All
other product and service names mentioned are the trademarks of their respective companies. Data contained in this document serves
informational purposes only. National product specifications may vary.

These materials are subject to change without notice. These materials are provided by SAP AG and its affiliated companies
("SAP Group") for informational purposes only, without representation or warranty of any kind, and SAP Group shall not be liable for
errors or omissions with respect to the materials. The only warranties for SAP Group products and services are those that are set forth in
the express warranty statements accompanying such products and services, if any. Nothing herein should be construed as constituting an
additional warranty.

SAP Contact Center software is abbreviated as SAP CCtr.

©SAP AG 2013
TABLE OF CONTENTS

1. Getting Started .........................................................................................................................3


2. Creating an IVR Application ......................................................................................................5
3. VoiceXML Features ..................................................................................................................8
4. Best Practice for IVR’s ............................................................................................................25
5. Troubleshooting ......................................................................................................................26
6. Python ....................................................................................................................................34
7. Python customizer sample ......................................................................................................38
8. SoapUI ...................................................................................................................................39
Appendix 1 .......................................................................................................................................50
Appendix 2 .......................................................................................................................................51
Appendix 3 .......................................................................................................................................52
Appendix 4 .......................................................................................................................................52
Glossary ...........................................................................................................................................54

©SAP AG 2013
1. Getting Started

1. Application Help

SAP Contact Center Application Help is component-based documentation for all functions and processes that are
supported by this product. IVR Management documentation can be found from System Configurator (SC)/IVR
Management -section. System Configurator documentation languages are English, German, Japanese, and
French.

Link to SAP Contact Center IVR Management Application Help:


http://help.sap.com/saphelp_bcm70/helpdata/en/05/f876ad3d4f4effb354c396b1836582/content.htm?framese
t=/en/2c/ce69b004ef40438f34a49d579d2508/frameset.htm

2. Personalizing SC

In larger installations you may want to change the maximum number of search results returned when especially
when you don’t enter a search term

©SAP AG 2013
3. User Rights

You must have rights to create, view and modify custom IVRs. To define the hosting CEM instances, you need
also modify rights for platform.

4. Configuring customized IVR prompts

Place your customized prompt file to any folder in the SAP Contact Center server. For example:
C:\SAP\ContactCenter\. Using System Configurator open Prompt Files and add a prompt file to SAP Contact
Center system. Use prompt type IVR Prompt. Select language English (US) because it is the default language. Wav
files for other languages can be added also. Browse the correct file from the folder:

Click “Save” and Pop-Up appear to create a prompt to which new prompt file is linked. Answer: “Yes and Open”.
Default options are used to create a prompt from the new prompt file. Accept new prompt of type “IVR Prompt”
by clicking Save (or Save and Close). After creating the prompt use “Refresh” to see the new prompt on the
“Queue Management: Prompts” -list.

©SAP AG 2013
NOTE: With abovementioned way IVR prompt files will be created as GUID to the system. Therefore prompts
cannot be transferred to another SAP Contact Center system as such, but steps mentioned above must be
repeated in the target SAP Contact Center system. Alternative way is to use prompt files as follows:

 Prompt path can be a local path or a


shared folder on a file server e.g.
\\SERVERNAME\prompts)

 Advantage of a shared folder is that you


don’t need to copy the prompts to each
server when a failover setup with
multiple servers is in use.

 You can create your own folders using


Windows Explorer under this folder (e.g.
ME_IVRPrompts) and then refer to this
Click Save when done
folder in your IVRs

2. Creating an IVR Application

1. Add New Application

Add: Name, Description, Enable Reporting, Early Queuing (Optional), IVR Number(s), Hosting CEM Instances
and Click “Add New” to start creating your new IVR:

©SAP AG 2013
2. IVR Editor

An IVR is made up of elements. Major elements must be given a unique name (block, callout, customstate,
form…). Elements can be added by: Clicking on the Add New button Right-clicking on an existing element:

SAP Contact Center 7.0 IVR file could be stored imported and exported in VoiceXML format. Internally SAP
Contact Center is compiling VoiceXML to Python programming language (version 2.5.2) and use Python
when IVR application is running. Therefore values and variables could be writen as Python statements. IVR
editor has also VXML and Python source code windows embedded:

3. Adding information to Elements

Elements on the left frame have their parameters on the right side. At least some of the fields must have a
value. If a value is missing a sign is displayed. This sign disappears when all the needed parameters have
been entered. Message shows what is missing:

©SAP AG 2013
4. Maximizing working area

You can maximise the working area of the IVR Editor by: Moving the divider between the SC menu and the

working area as far to the left as possible. Clicking on the to increase the height of the working area:

You can also expand the elements of the IVR Editor by clicking on the button

©SAP AG 2013
3. VoiceXML Features

1. Supported Elements

 If you import a VoiceXML application that includes other than supported elements, they are removed
during import. Import does not check if the VoiceXML is logically sound after removing those elements.

 The elements callout, connect, customstate, error, setlanguage, setpriority, setskills, soap and timeout
are SAP Contact Center-specific, they are extensions to the VoiceXML standard. Also other elements
may have SAP Contact Center-specific attributes. SAP Contact Center-specific elements and attributes
are marked in VoiceXML documents with the prefix SAP Contact Center:.

 Only block, callout, customstate, form, menu, noinput, nomatch, setextradata, setlanguage, setpriority,
setskills, soap, and var elements can be placed directly to the VoiceXML document, others can be child
elements to these parent elements, or their child elements, only. All parent and child elements are
listed in the table below. In the table, links in the element names provide with more specific information
about the element.

 For general instructions about element attributes, see Element Attributes from Application Help:

http://help.sap.com/saphelp_bcm70/helpdata/en/e8/4863de19d2465cbd07e2352302636a/content.htm

©SAP AG 2013
You can use only the supported VoiceXML elements and attributes. They are listed in the tables below:

NOTE: This list is based on SAP Contact Center 7.0 SP6 elements. For updated list see:

http://help.sap.com/saphelp_bcm70/helpdata/en/55/94bb16aa35402ab948c02339323dd1/content.htm?frameset=/en/1b/6b
8fd86f6945bd8625a2be443b20ee/frameset.htm

Element Description Attributes Parent Elements Child Elements


VXML refers to main level in

XML document

assign Assigns a value to a Target variable, Value block, error, -


variable. Expression, Value as filled, if,
Dictionary Data noinput,
SAP Contact Center: nomatch,
Description timeout

audio Plays audio files in the Prompt, Prompt block, choice, -


IVR application. Language, Audio File error, field,
Expression filled, if,
SAP Contact Center: menu, noinput,
Description, Terminating nomatch,
Digit, Audio File Path record,
timeout,
transfer

block A container element for Identifier, Condition form, vxml assign, audio,
executable content that SAP Contact Center: callout, clear,
executes if the Description customstate,
condition of the block disconnect, exit,
equals to true. goto, if, log,
prompt, setlanguage,
setpriority,
setskills, soap, var

callout Creates a new call to Identifier, Caller Number block, filled, error, timeout
SAP another destination, Expression, Destination, form, if,
Contact joining the original call Destination Expression, noinput,
Center- and the new call Destination Group, Call nomatch, vxml
specific together. Call control is Info Data Expression,
returned to the IVR Expect Result Data,
after the new call Connect Timeout,
terminates. Maximum Call Duration,
SAP Contact Center:
Description

choice Defines a menu item. DTMF, Target Element, menu -


Target Element
Expression
SAP Contact Center:
Description, Expression
for Answer Option in
Reporting

©SAP AG 2013
clear Sets any variable or element guard Elements to block, error, -
variable to an undefined value. Clear filled, if,
SAP Contact noinput,
Center: nomatch,
Description timeout

connect Connects the call. Used in early SAP Contact block, error, -
SAP Contact queuing IVRs. Center: filled,
Center- Description nomatch,
specific timeout

customstate Calls a Python customizer. To Identifier, block, error, error, timeout


SAP Contact manage customizers in the system, Method Name, form, if,
Center- see Managing Customizers for Parameter timeout, vxml
specific IVRs Values
SAP Contact
Center:
Description,
Use Timer,
Timeout

disconnect Disconnects the call. SAP Contact block, error, -


Center: filled,
Description, nomatch,
Cause Code, timeout
Reporting
Result

else Is used as the final logic SAP Contact if -


constructor in an array of Center:
conditional statements, and its Description
content is executed when all earlier
conditional statements evaluate to
false.

elseif Is used to specify additional content Condition if -


when all other conditional SAP Contact
statements in an array of Center:
conditional statements evaluate to Description
false. The application will execute
the first conditional statement that
evaluates to true.

error Is used with the soap and SAP Contact callout, assign, audio,
SAP Contact customstateelements. It allows Center: customstate, callout, clear,
Center- assigning event handlers when a Description soap customstate,
specific query fails with an error. disconnect, exit,
goto, if, log,
prompt,
setlanguage,
setpriority,
setskills, soap,
var

©SAP AG 2013
exit Exits the IVR application. SAP Contact Center: block, -
Description, Exit Cause Code, error,
Note Reporting Result filled, if,
Make sure the call knows noinput,
where to go after exiting, nomatch,
for example, in opt-in timeout
IVRs it returns to original
queue. To finish the call,
use the disconnect
element.
End of the note.

field Allows IVR applications to Identifier, Condition, Expression, form audio, filled, log,
collect information from SAP Contact Center: noinput, nomatch,
users. Description, Minimum Number of prompt
Digits, Maximum Number of
Digits, Valid Range, Repeats,
Timeout, Interrupt Audio with
DTMF Input, Expression for
Question in Reporting, Calculate
Average

filled Checks if there is caller Validation Mode, Required form, assign, audio,
input in field or record Fields, field, callout, clear,
elements. SAP Contact Center: Description record disconnect, exit,
goto, if, log,
prompt, setlanguage,
setpriority,
setskills, var

form Acts as a container for all Identifier, SAP Contact Center: vxml block, callout,
field items, and for all Description customstate, field,
control items. filled, noinput,
nomatch, record,
soap, transfer, var

goto Is used to transfer Target Element, Target Item, block, -


application execution to a Target Element Expression, error,
specific element in current Target Item Expression filled, if,
VXML document. noinput,
Note nomatch,
Use only one of the target timeout
attributes.
End of the note.

SAP Contact Center: Description

©SAP AG 2013
if Specifies conditional Condition block, error, assign, audio,
statements that allow SAP Contact Center: filled, if, callout, clear,
choosing different Description noinput, customstate, else,
options based on, for nomatch, elseif, exit, goto,
example, variable timeout if, log, prompt,
values. setlanguage,
setprioroty,
setskills, soap, var

log Allows writing messages Expression, Level block, error, -


to CEM log. SAP Contact Center: field,
Description filled, if,
nomatch,
timeout

menu Enables building a Identifier, Set DTMF vxml audio, choice,


DTMF controlled menu Numbers for Choices noinput, nomatch,
with a maximum of 12 Automatically prompt
menu items. SAP Contact Center:
Description, Repeats,
Timeout, Prevent DTMF
Input from Interrupting
Audio Playback,
Expression for Question in
Reporting, Calculate
Average

noinput Handles situations when Condition, Count field, form, assign, audio, clear,
the IVR application SAP Contact Center: menu, exit, goto, if
expects DTMF input Description, Reporting transfer,
from the caller, but has Condition, Expression for record, vxml
received none. Answer Option in
Reporting

nomatch Handles situations when Condition, Count field, form, assign, audio, clear,
the caller inputs a value SAP Contact Center: menu, disconnect, exit,
that is not recognized by Description, Reporting transfer, goto, if, log, var
the IVR application. Condition, Expression for vxml
Answer Option in
Reporting

prompt Enables building audio Condition, Language block, error, say-as


messages that include SAP Contact Center: field,
numerical information, Description filled, if,
such as cardinal and menu, record,
ordinal numbers, dates, timeout,
and times. Requires the transfer
say-as child element.

©SAP AG 2013
record Enables the audio recording of the Identifier, Condition, form audio,
call. Expression, Maximum filled,
Duration, Beep When noinput,
Recording Starts, End nomatch,
Recording with DTMF. prompt
SAP Contact Center:
Description, Terminating
Digit, Destination File
Name, Prefix File Name
with Call ID, Destination
Path, Record Mode

say-as Spells numerical information as Data Type, prompt value


string of numbers, cardinal SAP Contact Center:
numbers, ordinal numbers, dates, Description, Gender,
times, and date-times. Requires the Declension
value child element.

setextradata Allows attaching extra data to the Extra Data Name, Extra block, error, -
SAP Contact call. Typically it is used in opt-in Data Value if, noinput,
Center - IVRs to attach the survey IVR SAP Contact Center: nomatch,
specific number to the call and thus connect Description timeout, vxml
the call to the right survey.
Expression can be a Python
statement, or a number.

setlanguage Sets the call language, that is, Language, Language block, error, -
SAP Contact selects one of the supported SAP Expression filled, if,
Center - Contact Center languages and SAP Contact Center: nomatch,
specific passes this selection to a queue or Description noinput,
application where the call is timeout, vxml
transferred to. If the call language is
not set, the system language is
used.

setpriority Allows setting the call priority Call Priority Expression, block, error, -
SAP Contact expression. Expression can be a SAP Contact Center: filled, if,
Center - Python statement, or a number. Description noinput,
specific nomatch,
timeout, vxml

setskills Allows setting skill requirements for Skill Values, block, error, -
SAP Contact the call. SAP Contact Center: filled, if,
Center - Description noinput,
specific nomatch,
timeout, vxml

©SAP AG 2013
soap Is used to fetch data Identifier, Data Source block, error, error, timeout
SAP from external data Expression, Method Name, form, if,
Contact sources by using the Parameter Values, Query timeout, vxml
Center - SOAP protocol. Timeout; User Name,
specific Password, Certificate Name,
Certificate Issuer, Certificate
Store, Audio File
Expression, Interrupt Audio
Upon Completion, Repeat
Audio
SAP Contact Center:
Description, Audio File Path

timeout Is used with the soap SAP Contact Center: callout, assign, audio,
SAP and customstate Description customstate, callout, clear,
Contact elements. It allows soap customstate,
Center - assigning event disconnect, exit,
specific handlers when a goto, if, log,
SOAP query times prompt, setlanguage,
out. setpriority,
setskills, soap, var

transfer Transfers caller to Identifier, Condition, Caller form audio, filled,


another destination, Number Expression, noinput, nomatch,
such as a queue, or Destination, Destination prompt
another IVR Expression, Connect
application. Timeout, Call Attached
Data, Call Attached Data
Expression,
SAP Contact Center:
Description

value Defines the numerical Expression, say-as -


value used in the SAP Contact Center:
say-as element. Description

var Sets a VoiceXML Name, Initial Value block, error, -


variable within the Expression, Initial Value as filled, form,
scope specified by its Dictionary Data if, nomatch,
parent element. SAP Contact Center: timeout, vxml
Description

©SAP AG 2013
2. Commonly used Voice XML Elements

var
 The var element is used to store values during
the IVR execution
 You should declare all your variables at the
start of the vxml document. Variables declare
here can be accessed from all subsequent
elements
 Makes the IVR vxml document easier to read
 To declare variables for a specific element only,
declare it in that element, such as form.
 You can assign initial values to your variables or
use the assign element later on
 Values must be valid python data types

form
 The form element is used as a container for
other elements
 The form name is used in goto elements
 Commonly used child elements of a form are:
o block
o field
o transfer
o soap
o customstate
 If you define var elements, they can be used
within the form element only

©SAP AG 2013
Block
 The block element can be used as a container
 The block name is used in goto elements
 A block element is required for adding:
o assign
o audio
o prompt
o if
o log
o goto
 A block element can include a condition so
that it is only executed if the condition is met
(a simple if with no else if or else. In case
elseif and else is required Conditional Block
will add all elements at once).

Field
 The field element is used to to collect
information from callers.
 It can be used for simple menu types in
addition to collecting longer strings of digits
 Fields normally require the child elements
o audio
 Announces what is expected
from the caller
o filled
 Executed when the input
meets the minimum and maximum
number of digits specified in the field
element
o noinput
 Executed when the timeout
specified in the field element is
reached and there has been no input
at all
o nomatch
 Executed when the timeout
specified in the field element is
reached and there has been some
input but it does not meet the
minimum or maximum number of
digits.
 Not required when only 1
digit is expected (as in a simple menu)

©SAP AG 2013
transfer
 The transfer element is used to
transfer the call to another number.
This can be:
o Another IVR
o A queue
o A SAP Contact Center
extension
o Any valid external telephone
number
 Destination can be a variable – use
Destination Expression
 CAD is a string or variable populated
in a previous step
 For complex CAD strings, it is easier
to create this using a customstate

soap
 The soap element is used to fetch
data from external data sources
by using the SOAP protocol
 It relies on a SOAP or web service
defined in a target system such as
SAP ERP or SAP CRM
 In SAP ERP or SAP CRM, these
web-services can be a standard
ESoA service or a function
module exposed as a web-service
 An end-point needs to be created
in SOAPMANAGER for web-
services in SAP ERP or SAP CRM

©SAP AG 2013
customstate
 The customstate element is
used to execute a python
customizer
 If customized functions are
needed to a custom-made IVR,
they can be added to the
system as Python code. Only
one customizer can be active at
a time for each custom-made
IVR.
 To call the customizer from the
IVR application, use the
customstate element.

More information about customstate element see Application Help:

http://help.sap.com/saphelp_bcm70/helpdata/en/8e/c6b793136d459fbdcff8076fd6ec71/content.htm?frameset=/en
/c7/f11763bc804be8b5b7ececbc2dd90b/frameset.htm

When to use custom functions?


 Custom Functions should only be used if you cannot achieve the same outcome using VXML elements.
 You should be familiar with python before attempting to create your own custom functions
 Custom Functions can be used for:
o OBDC calls to external databases
o Doing several looping operations and condition tests to create a python list or dictionary
o SOAP queries if you wish to have the username and password as variables
 A Python customizer provides a powerful tool to manipulate the SAP Contact Center system, and therefore
you should only use customizers you can trust on. Never use customizers from unknown source, and test all
customizers in a test system before adapting them to a real production use .

NOTE: See sample Python customizer in appendix 1.

©SAP AG 2013
assign
 The assign element is used to assign a
value to a variable. It is recommended
to create all variables first.
 Values must be valid python data
types:
o String
o Number
o Dictionary
o List
 You can assign fixed values
 You can update existing values
o Increase a counter
o Add a value to a list

audio
 The audio element is used to
play audio files (also often
referred to as prompts but not
to be confused with the prompt
element) in the IVR application.
 You can select predefined IVR
type Prompt files from
dropdown menu. See
configuring customized IVR
prompts from “Getting Started”
section.

©SAP AG 2013
1. goto
 The goto element is used to transfer
application execution to a specific
element in current VXML document.
 You either transfer to element in the
VXML root (normally a form)
 Or you can transfer to an item within a
root element (normally a field or
block). Try to keep transfers using this
method within the current form so as
to make the VXML more readable.

if, elseif & else


 The if element is used to specify
conditional statements that allow
choosing different options based
on, for example, variable values.
 You need to specify at least one
subsequent element (assign, goto,
audio, prompt etc.)
 elseif and else are regarded as child
elements of if
 Subsequent elements of elseif and
else do not appear as child
elements but act in that way
 If possible, always try to design
your IVR so that a condition is
always matched (either if, elseif or
else)

©SAP AG 2013
prompt
 The prompt element is used to build
audio messages that include numerical
information, such as cardinal and
ordinal numbers, dates, and times.
 You need to specify the language that
will be used
 You need to add at least one say-as
child element
 In the say-as element, you need to
specify:
o Data Type (Digits, Number,
Ordinal, Date, Date and Time
or Time)
o Gender (Feminine or
Masculine)
o Declension (Nominative,
Genitive – only required for
certain languages e.g. Finnish)
o You need to add a value child
element to the say-as element
 Values must be valid python data types
or variables declare and assigned
earlier

©SAP AG 2013
3. Call attached data

 Call-attached data is nothing more than python dictionary (see later section on dictionaries)
 You can add any information gathered in the IVR to this dictionary
o {"Z_CADAlert": Caller selected Support – Account Inquiries, "Z_AccountNumber": 123456}
 The OII Integrations interface of SAP Contact Center converts this dictionary into an xml message using
the Application ID specified in the OII setup (default is SAP_BCM/OII)
o <ItemAttachedData><Application id="SAP_BCM/OII"><FirstBName>FE0CBDF0-FBB6-4FF3-8325-
C77322A15FAD </FirstBName><Z_CADAlert>Caller selected Support – Account
Inquiries</Z_CADAlert><Z_AccountNumber>123456
</Z_AccountNumber><BNumberName>9216C832-FF83-4DF8-8A1A-
333CD34FAF76</BNumberName>
<FirstANumber>15136023488</FirstANumber><OrigQueue>9216C832-FF83-4DF8-8A1A-
333CD34FAF76 </OrigQueue></Application></ItemAttachedData>
 If you integrate SAP Contact Center with SAP CRM, you may wish to send data to an additional
Application ID: CRM_IC/BUPA
o Account identification in SAP CRM IC WebClient is done using a phone number or GUID of a
Business Partner. This GUID has to be sent to the Application ID: CRM_IC/BUPA
o To automatically confirmed a Business Partner, an ‘X’ needs to be send using the key
BPCONFIRMED in the same Application ID
o All other information sent using this Application ID can be overwritten by SAP CRM and
therefore lost when the call is transferred.
 If you integrate SAP Contact Center with SAP CRM or SAP ERP using SAPphone, you may wish to send
data to an additional Application ID: SAPphone
o SAP Contact Center OII converts the XML data to send to SAPphone
 In order to use different Application IDs, you need to create your own xml string
 The customizer highlighted in the customstate section earlier does this for you
o <Application
id="CRM_IC/BUPA"><CURRENTCUSTOMER></CURRENTCUSTOMER><CURRENTCONTACT>
</CURRENTCONTACT><BPCONFIRMED></BPCONFIRMED></Application>
o <Application id="SAPphone"><Calldata obj="KEYVALUE" inst="0001"
key="Z_AccountNumber">123456</Calldata> </Application>

 CAD passed to your IVR from another IVR is


held in the dictionary "IVRInfo“
o To retrieve the value of
Z_AccountNumber you can use:

 self.CALL.GetExtraData().get(“IVRInfo”,{}).get(“Z_AccountNumber”)

©SAP AG 2013
4. Element Attributes

Element attributes must be defined before the IVR can be activated and used for the purpose it is planned
for. Some attributes are mandatory for an element, some elements do not have any attributes but
Description.

SAP Contact Center System Configurator does not support all VoiceXML standard attributes, and some
elements have attributes that are extensions to VoiceXML standard. Only the attributes displayed in IVR
Editor with the element, can be used.
 In the IVR Editor view, choose the element on the left, the user interface for
defining the corresponding attributes appears on the right. Most elements and
their attributes are introduced in chapters linked to the list of supported VoiceXML
elements.
 Depending on the attribute, define it by entering or choosing the value, or choosing
a data item.
 To save the element attributes, choose Save in the upper left corner of the
attribute window.

5. Data items and Queries

In IVR elements’ attributes, and when entering their values as key/value pairs, the following data items can
be selected from the drop-down lists. Depending on the item, either select it from the list as such, choose
the values for possible x and y from corresponding selection lists, or complete the statement with Python
code. Alternatively, enter the whole attribute with Python code.

NOTE: More detailed information available in the IVR Management Application Help:
http://help.sap.com/saphelp_bcm70/helpdata/en/1a/2c91dbb30947aeac3075079f25e99f/content.htm?frameset=/e
n/c7/f11763bc804be8b5b7ececbc2dd90b/frameset.htm

©SAP AG 2013
6. Element Blocks

In IVR Editor, blocks are combinations of child elements that form a functional entity in an IVR.
The blocks and their elements are listed in the table below.

Block Description Elements Attributes

Conditional Handles situations when certain IVR functions are executed only if, elseif, condition,
Block when a condition is true. In Conditional Block, the first if condition else expression,
is followed by elseif and else elements. condition

If Block Handles situations when certain IVR functions are executed only if condition,
when a condition is true. If Block includes just one If element. expression,
condition

Else Block Handles situations when certain IVR functions are executed only if, else condition,
when a condition is true. Else Block includes If and else elements. expression,
condition

No-Input Handles situations where the IVR application expects DTMF input audio, condition, count
Block from the caller but does not receive any. When the condition goto
fulfilled, the block plays an audio file and takes the call to another
target.

No-Match Handles situations when the caller inputs a value that is not audio, condition, count
Block recognized by the IVR application. When the condition fulfilled, Goto
the block plays an audio file and takes the call to another target.

©SAP AG 2013
4. Best Practice for IVR’s

 Declare as a variable any information you might want to change / use later
o Prompt files and collections of different prompt files
o Soap wsdl urls
o Valid keys to be selected in menus
o Counters
o Information to be sent as CAD
 Map a process into a form
o Asking the caller for input, checking the result
o Calling a Soap query and then checking the result
o Handling errors and asking the caller for the next step
o Preparing the CAD and transferring the call
 Use fields for all caller input
o Can be contained in a form (menu cannot)
o More flexible with checking for input and determining the next step

CEM could have also an access to internal databases directly. No connection details are
required – the existing SAP Contact Center database connections are used. These three
database functions are available:
 BCMAPI.CONF
 BCMAPI.OPER
 BCMAPI.OUTBOUND
Sample DB query customizer available in SAP Contact Center 7.0 IVR samples note:
1951158 SAP Contact Center 7.0 IVR Samples

Basic functions (ANumber, BNumber etc.)

 DirectoryService-API (See ANumber recognition IVR exercise from IVR repository to see how to use this
function).
 GetNumberInfo-method allows checking Agent status (See Appendix 2).
 GetCurrentPRSProfile-method is used to check agent profile status.
 AGENT.FIND-method can be used to search agent object based on address info or user GUID.
 Example of modified “Example_IVR_Conditional.xml” and usage of “Queue.Query” see appendix 3 and 4.
Sample file available in SAP Note 1951158
 QUEUE.QUERY – API is documented in SC application help (IVR Management > Using IVR Editor > Element
Attributes > Data Items and Queries):
http://help.sap.com/saphelp_bcm70/helpdata/en/1a/2c91dbb30947aeac3075079f25e99f/frameset.htm

©SAP AG 2013
5. Troubleshooting

1. BLV Log Viewer

TIP: Use only one Core while debugging IVR application. This way all events could be collected from single
log:

SAP Contact Center software package includes a BLV log viewer software which is customized for SAP
Contact Center log files (7.0.6.0\Tools And Utilities\blv) :

Turning Live mode on and off

©SAP AG 2013
l – Toggle between ‘Live’ and ‘historical’ mode. Using the up arrow in the file also turns off ‘Live’ mode. Note
the (L) appended to BLV in the Windows Title Bar

2. BLV Find dialog

 Find. Closes the dialog and jumps to the next occurrence of the pattern that is given in Find pattern field.
You can then quickly find next or previous match with f or F keys in the main screen.

 Tag all. Closes the dialog and tags all lines that match with the currently active Highlight / collapse rules.
Tagging is a way of marking lines permanently. In the main screen you can then jump between them easily
(with t and T keys) or filter the view to show only tagged lines (C key).

 Exclude rules. Meant to filter out noise from a view. If you press e key in main screen, all lines that contain
matches with the currently active Exclude rules, are hidden.

©SAP AG 2013
3. Turning Collapsed/Tagged-only mode on and off

between ‘Collapsed’ and ‘full’ mode – Note the (C) appended to BLV in the Windows Title Bar. Collapsed means
matching lines only view

C – toggle between ‘Tagged-only’ and ‘full’ mode – Note the (T) appended to BLV in the Windows Title Bar.
Tagged-only means tagged lines only view

Ctrl+Shift+T – Clear all tags

4. Changing the Font

o – Open the Font Dialog

©SAP AG 2013
5. F1 Help Commands

©SAP AG 2013
6. Debugging your IVR – Reading the CEM log

 Find the CEM logs – usually in the folder: drive:\SAP\ContactCenter\Logs\InstallationName_Core


 Take the latest CEM log: CEM_MachineName_InstallationName_Core_Date_Hour
 Note: Log files use UTC Date and Time regardless of your server time zone settings
 Tip: Sort the files using the Date Modified column in descending order to find the latest file

7. Set the CEM log levels to debug

Make sure the CEM log level is high enough to show the IVR detail. In Production do not leave the log levels as
Debug as the log file size will grow exponentially.

Open Registry Editor on the server and check the following values. Create any missing values:
 Debug = 7
 DebugSecure = 0
 LogLevel = debug
 LogModule.Cem.Level = inherited

©SAP AG 2013
8. Debugging your IVR – Reading the CEM log

Make a call to your IVR and search for the number you called (or called from). Search for the entry ‘CustomIvr_’
after this time. Your IVR has a unique GUID (in this case CustomIvr_7E4C9738C56B4A7A8FB307C88DC45ABA).
Add this to your search terms in BLV

BLV log viewer shows selected entries

©SAP AG 2013
Add Log entry in your IVR – ‘Hello World’. There no breakpoint feature in the IVR. By adding log entries to your
IVR, you can this entry in the CEM log and use it as a reference point. Unique log entries can be used to pin-point
each stage

Search results from Core log:

Add Log entry in your IVR – current value of a variable. You can add a log entry to show the current value of a
variable: in this case: Z_CallingHour and Expression = Z_CallingHour
By adding a unique text to the log entry, you can find this entry in the CEM log more easily. Expression = “Calling
Hour is : ” + str(Z_CallingHour)

©SAP AG 2013
Search results

©SAP AG 2013
6. Python

1. manipulating strings

Python term Description Example Values in Example Result

str String str(a) + str(b) a = "Hello ", b = "World" Hello World

lstrip() Remove a given a.lstrip("0") a ="000001" 1


character from the
left
split Split a string at a str(a).split(".") a = "1.00" ["1", "00"]
given character.
Produces a List

replace Replace a given a.replace(“o", "") a = "Hello World" Hell Wrld


character in string

isdigit() Checks if a string is a.isdigit() a = "Hello World" False


comprised of just b.Isdigit() b = “12345" True
digits

These functions can be combined: a.replace("#", "").isdigit() returns True when a = 12345#

Python Description Example Values in Example Result


term

len Length len(a) a = "Hello World" 11

Character at position b a[b] a = "Hello World", b = 1 e

Characters from b to c a[b:c] a = "Hello World", b = 1, c=3 el

Characters up to b a[:b] a = "Hello World", b = 3 Hel

All but characters up to b a[b:] a = "Hello World", b = 3 lo World

Last character a[-1] a = "Hello World" d

Last but one character a[-2] a = "Hello World” l

Last b characters a[-b:] a = "Hello World", b = 3 rld

All but the last b a[:-b] a = "Hello World", b = 3 Hello Wo


characters

©SAP AG 2013
2. Some other Python expressions used in IVR Editor

Python term Description Example Values in Example Result

int Integer int(a) a = 1.03 1

datetime.datetime.n Returns current date datetime.datetime.n 2012-01-18


ow() and time in datetime ow() 10:24:08.259000
format
datetime.datetime.s Formats a string using datetime.datetime.s a = "2012-04-22" 2012-04-22
trptime a given format in trptime(a, "%Y-%m- 00:00:00
datetime format %d")

 You can use datetime to check if a date is in the past


 datetime.datetime.strptime(a, "%Y-%m-%d") < datetime.datetime.now()

 For more python examples:


 http://docs.python.org/tutorial
 Google search: python term

3. Dictionaries, Lists and Tuples

Dictionaries {}
 A dictionary is an unordered set of key: value pairs, with the requirement that the keys are unique
(within one dictionary).
 Example: {‘First’:1,’Second’:2,’Third’:3,’Fourth’:4}

Lists []
 Lists are a list of values, each one numbered, starting from zero. The first one is numbered 0, the second
1, the third 2, etc. You can remove values from the list, and add new values to the end.
 Example: [‘First',‘Second',‘Third',‘Fourth’]

Tuples ()
 Tuples are just like lists, but you can't change their values. Again, each value is numbered starting from
zero, for easy reference
 Example: (’Sunday’,Monday,’,’Tuesday',‘Wednesday',‘Thursday',‘Friday',‘Saturday’)

©SAP AG 2013
4. Dictionaries, Lists and Tuples – Examples

A simple dictionary
 {'Multi': None, 'Meters': None, 'Blocked': 'X'}
A dictionary inside a dictionary
 {'Return': {'Type': 'E', 'Number': '016', 'Id': 'ZIVRMES‘}, 'Multi': None, 'Meters': None, 'Blocked':
'X'}
A dictionary inside a tuple
 ('item', {'Division': '51', 'Installation': '3000194370', 'Register': '001', 'Equipment':
'000000000040099113', 'Oldreading': '29165', 'Newreading': None, 'Meternumber':
'000000000008000104'})
A dictionary inside a tuple, inside a list, inside a dictionary
 {'Meters': [('item', {'Division': '51', 'Installation': '3000194370', 'Register': '001', 'Equipment':
'000000000040099113', 'Oldreading': '29165', 'Newreading': None, 'Meternumber':
'000000000008000104'}), ('item', {'Division': '52', 'Installation': '3000417096', 'Register': '001',
'Equipment': '000000000010117702', 'Oldreading': '5846', 'Newreading': None, 'Meternumber':
'000000080823161079'})], 'Blocked': None}

5. Accessing Data in Dictionaries

Elements of a dictionary can be accessed by key in three different ways


 mydict["somekey"] Throws a KeyError exception if mydict doesn’t contain somekey
 mydict.get("somekey") Returns None if mydict doesn’t contain somekey
 mydict.get("somekey",1) Returns a default value (1 in this case) if mydict doesn’t contain
somekey

In order to prevent a KeyError exception being thrown in the IVR, best practice is to use
mydict.get("somekey")
- mydict = {'Multi': None, 'Meters': None, 'Blocked': 'X'}
 mydict["Blocked"] Returns X
 mydict.get("Blocked") Returns X
 mydict["Single“] Throws a KeyError exception
 mydict.get("Single") Returns None

You can use a variable as the key:


- myvar = "Blocked"
 mydict.get(myvar) Returns X

©SAP AG 2013
6. Accessing Data in Dictionaries – Complex Example

Elements of a dictionary within a dictionary can be accessed:


 mydict = {'Return': {'Type': 'E', 'Number': '016', 'Id': 'ZIVRMES‘}, 'Multi': None, 'Blocked': 'X'}
 mydict["Return"]["Type"] Returns E
 mydict.get("Return",{}).get("Type") Returns E
 mydict["Return"]["Letter"] Throws a KeyError exception
 mydict.get("Return",{}).get("Letter") Returns None
 mydict["Result"]["Letter"] Throws a KeyError exception
 mydict.get("Result",{}).get("Letter") Returns None
Again, in order to prevent a KeyError exception being thrown in the IVR, best practice is to use
mydict.get("somekey1",{}).get("somekey2")
The first .get has to return a dictionary object in order to avoid a KeyError, so it returns a new empty one
(default value) in case there is no Result element available in mydict

7. Accessing Data in Lists and Tuples

Elements of a list or tuple can only be accessed using a zero based index. There is no .get method available
for lists and tuples
 mylist = ['foo','bar']
 mylist[0] Returns 'foo'
 mylist[1] Returns 'bar'
 mylist[-1] Returns the last element in the list; 'bar' in this case
 mylist[2] Throws an IndexError exception (list index out of range)

Use mylist.count("somevalue") to test if somevalue exists. 0 is returned if it doesn’t exist


 mylist.count(“foo") Returns 1
 mylist.count(“food") Returns 0
 mylist[mylist.index('foo')] Returns ‘foo’ but can be used only if ‘foo’ exists in the list or tuple
 len(mylist) Returns 2 – the number of items in the list

You can append items to a list


 mylist + [‘gaa’] Results in mylist = ['foo','bar‘,’gaa’]

©SAP AG 2013
7. Python customizer sample

Python customizers can be used for various purposes with SAP Contact Center 7.0 IVR application. This sample
describes how to make database query by using Python customizer. See further details about IVR structure and
sample python customizer file from “VIP IVR” sample (SAP NOTE 1951158). NOTE: Custom directory database table
is called “VipId” in this customizer sample.
Prerequisites for this sample are to create new table CustomerID to the SAP Contact Center directory database and
modify python customizer to access this table by using windows authentication.
Customstate element is used to invoke a Python customizer method call and store its results in a variable. See
further details about customstate configurations from SAP Contact Center Application help:
http://help.sap.com/saphelp_bcm70/helpdata/en/8e/c6b793136d459fbdcff8076fd6ec71/content.htm
required values are:
 (form) Identifier = FindCustomerFromDatabase (Parent element for customstate child element)
 This is an identifier (name) for parent element. The identifier appears in the ID column, and it is
used as an address when the call is transferred to this element.
 (customstate) Identifier = CustomerGUID
 This is an identifier (name) for child element. The identifier appears in the drop-down list of
expressions with the prefix customstate:, the results of the customized method are called with
that expression.
 (customstate) Method Name = getCustomerById
 This specifies the python customer method to call
 (customstate) Parameter Values (Key and Value pairs) = 'CustomerID' and CollectedCustomerId
 ‘CustomerId’ is custom method parameter name. Value of this parameter contains the customer
id that is used to search customer form database.
 CollectedCustomerId is an identifier of field element where given customer ID DTMF digits are
collected.
 (customstate) Parameter Values (Key and Value pairs) = 'DirectoryField' and 'GUID'
 'DirectoryField' is custom variable name to connect custom directory field to the appropriate GUID
for search purposes in python customizer.
 GUID is custom directory field GUID in SAP Contact Center directory database.

©SAP AG 2013
DB Query Customizer sample

DB Query Customizer provides a good example with comments on how to connect to Internal or external
Databases by using SAP Contact Center’s own ODBC API and use the results. You can find this customizer from
IVR Sample note: 1951158 SAP Contact Center 7.0 IVR Samples

8. SoapUI

SoapUI can be used to test your web-services and to show the structure of the input and output messages. By
testing your web-services first in SoapUI, you will eliminate errors resulting from the Soap query first which will
make it much easier to use your queries inside your IVR. By installing and running SoapUI from the server(s)
where the SAP Contact Center Core VU is installed, you can first test if there are any firewall issues. SoapUI is
freeware and is available from: http://www.soapui.org/

1. Test your web-services

Create a new project and insert your wsdl url.

©SAP AG 2013
Enter the user and password that will be used with the web-services (this assumes the web-service is set up
to use Basic Authentication)

Remove the SOAP1.2 interface – it is not required

©SAP AG 2013
Open Request 1 and enter the user and password that will be used with the web-services (this assumes the
web-service is set up to use Basic Authentication). This is your query structure. We are only interested in the
information in the Body.

Fill in the parameter and submit the request.

©SAP AG 2013
Now you should have your return structure. Again we are only interested in the information contained in the
Body. Running this query in the IVR returns the same structure but in a python format using dictionaries, lists
and tuples.

2. Using Soap elements inside SAP Contact Center IVR

 Using this example:


<urn:Bapizivrgetaccountbalance>
<Accountnumber>123456</Accountnumber>
</urn:Bapizivrgetaccountbalance>

©SAP AG 2013
 Give your soap element a unique name
 Enter the url of your wsdl file between quotes (so as a string) or use a variable defined earlier
o "http://mysapsystem.corp/myaccountbalancebapi.wsdl"
o str(Z_AccountBalance_wsdl)
 The method name is the name specified in the urn:
<urn:Bapizivrgetaccountbalance>
<Accountnumber>123456</Accountnumber>
</urn:Bapizivrgetaccountbalance>

 Add the input parameters your soap service is


expecting: xml child nodes of the urn node.
o The key is the name of the node
o The key needs to be within quotes to
stop it being evaluated as a python
variable.
 "Accountnumber"
o The value can be a string or a variable
 Click on the to add
your entry
 Don’t forget to click on save otherwise you
will lose your entry!

©SAP AG 2013
 Change the Query Timeout period if required
 You can assign a variable containing a prompt to be played during execution
 Enter the credentials as required.
o This depends how your Soap end-point was set up in the target SAP system in soamanager

 Don’t forget to add error and timeout handlers


 Timeout element is executed when the Query Timeout value defined earlier is reached

3. Add Log entry in your IVR – return value from a soap or custom state element

 You can add a log entry to show the return value from a soap or custom state – just add the name of the
element in the Expression
o Expression = SAPGet_Meter_Detail
 By adding a unique text to the log entry, you can find this entry in the CEM log more easily.
o Expression = " Soap element SAPGet_Meter_Details returned " + str(SAPGet_Meter_Details)
 You can then work out how to parse the result

©SAP AG 2013
Search Result - return value from a soap or custom state element

4. Evaluating the results of a Soap query

 In the CEM log, you will see the result of the Soap query when you run the IVR
 Examples:
o {'Country': BE, 'Number': 475334500, 'Return': X, 'ReturnMsg': None}
o {'Toocomplex': None, 'Balance': {'Accountnumber': '000101955090', 'Overduebalance': '0.00',
'Grossbalance': '4785.00-', 'Paymenttype': 'D', 'Netbalance': '4785.00-', 'Discountdate': '1900-01-01',
'Duedate': '2007-08-30'}, 'Return': {'Type': 'I', 'Number': '014', 'MessageV4': None, 'MessageV2': None,
'MessageV3': None, 'Message': 'Account Balance Obtained', 'MessageV1': None, 'LogMsgNo': '000000',
'Id': 'ZIVRMES', 'LogNo': None}}
o {'Return': {'Type': 'I', 'Number': '021', 'MessageV4': None, 'MessageV2': None, 'MessageV3': None,
'Message': 'Meters Returned', 'MessageV1': None, 'LogMsgNo': '000000', 'Id': 'ZIVRMES', 'LogNo': None},
'Multi': None, 'Meters': [('item', {'Division': '51', 'Installation': '3000194370', 'Register': '001',
'Equipment': '000000000040099113', 'Oldreading': '29165', 'Newreading': None, 'Meternumber':
'000000000008000104'}), ('item', {'Division': '52', 'Installation': '3000417096', 'Register': '001',
'Equipment': '000000000010117702', 'Oldreading': '5846', 'Newreading': None, 'Meternumber':
'000000080823161079'})], 'Blocked': None}

©SAP AG 2013
5. Use the python syntax of Dictionaries, Lists and Tuples

 {'Country': BE, 'Number': 475334500, 'Return': X, 'ReturnMsg': None}


o This is a simple python dictionary with 4 key-value pairs. Note that BE and X are not strings but can be
var or field.

 {'Toocomplex': None, 'Balance': {'Accountnumber': '000101955090', 'Overduebalance': '0.00',


'Grossbalance': '4785.00-', 'Paymenttype': 'D', 'Netbalance': '4785.00-', 'Discountdate': '1900-01-01',
'Duedate': '2007-08-30'}, 'Return': {'Type': 'I', 'Number': '014', 'MessageV4': None, 'MessageV2': None,
'MessageV3': None, 'Message': 'Account Balance Obtained', 'MessageV1': None, 'LogMsgNo': '000000', 'Id':
'ZIVRMES', 'LogNo': None}}
o This contains 2 dictionaries: Balance and Return inside a dictionary with 3 key-value pairs: Toocomplex,
Balance and Return
o Assuming your soap element is called mysoapquery
 To access the value of Toocomplex, you can use mysoapquery.get("Toocomplex")
 To access the value of Type, you can use mysoapquery.get("Return",{}).get("Type")

Complex Return structure

 {'Return': {'Type': 'I', 'Number': '021', 'MessageV4': None, 'MessageV2': None, 'MessageV3': None,
'Message': 'Meters Returned', 'MessageV1': None, 'LogMsgNo': '000000', 'Id': 'ZIVRMES', 'LogNo': None},
'Multi': None, 'Meters': [('item', {'Division': '51', 'Installation': '3000194370', 'Register': '001', 'Equipment':
'000000000040099113', 'Oldreading': '29165', 'Newreading': None, 'Meternumber':
'000000000008000104'}), ('item', {'Division': '52', 'Installation': '3000417096', 'Register': '001', 'Equipment':
'000000000010117702', 'Oldreading': '5846', 'Newreading': None, 'Meternumber':
'000000080823161079'})], 'Blocked': None}

 This can be broken down using mysoapquery.get(“Return") into:


 {'Type': 'I', 'Number': '021', 'MessageV4': None, 'MessageV2': None, 'MessageV3': None, 'Message': 'Meters
Returned', 'MessageV1': None, 'LogMsgNo': '000000', 'Id': 'ZIVRMES', 'LogNo': None}

 Using mysoapquery.get("Meters",{})[0] results in:


 ('item', {'Division': '51', 'Installation': '3000194370', 'Register': '001', 'Equipment': '000000000040099113',
'Oldreading': '29165', 'Newreading': None, 'Meternumber': '000000000008000104'})

 Using mysoapquery.get("Meters",{})[0][1].get("Division") results in:


 51

©SAP AG 2013
6. Using counters

 Using a variable as a counter, you can read each of the entries in Meters
o Assuming we use a variable mycounter and assign it an initial value of 0
o Using mysoapquery.get("Meters",{})[mycounter] results in:
 ('item', {'Division': '51', 'Installation': '3000194370', 'Register': '001', 'Equipment':
'000000000040099113', 'Oldreading': '29165', 'Newreading': None, 'Meternumber':
'000000000008000104'})

o Using mysoapquery.get("Meters",{})[mycounter][1].get("Division") results in:


 51

o Incrementing mycounter by 1 results in:


 ('item',{'Division': '52', 'Installation': '3000417096', 'Register': '001', 'Equipment':
'000000000010117702', 'Oldreading': '5846', 'Newreading': None, 'Meternumber':
'000000080823161079'})
 52

7. Using Soap elements with multiple input parameters

 Add all the input parameters your soap service is expecting: xml child nodes of the urn node.

<urn:Bapizivrccupdateacc>
<Accountnumber>?</Accountnumber>
<Cardnumber>?</Cardnumber>
<Cardtype>?</Cardtype>
<Expirydate>?</Expirydate>
<Mode>?</Mode>
</urn:Bapizivrccupdateacc>

©SAP AG 2013
8. Complex Query structure – how to add as parameters:
Mapping the xml structure to python elements

Syntax is quite flexible. For some constructs there are several ways to express them. For some others, you
have to use a specific syntax.

parameter-value value

value simple-value | complex-value

simple-value number | string | “None”

complex-value node-dictionary | node-list | node-tuple

node-dictionary “{“ node-name “:” value [ “,”… ] “}”

node-list “(“ complex-value [ “,” … ] “)”

node-tuple “(“ node-name [ “,” attributes [ “,” value ] ] “)”


attributes attribute-dictionary | “None”
attribute-dictionary “{“ attribute-name “:” simple-value [ “,” … ] “}”

node-name string

attribute-name string

9. Complex Query structure – how to add as parameters:


Mapping the xml structure to python syntax

Must use the list syntax for an element with sub-elements, if there are:
 Sub-elements with attributes. Attributes are specified as a dictionary within a list
<urn:somerequest>
<ids>
<id name="ID" value="Card">123</id>
</ids>
</urn:somerequest>


nd
Multiple instances of some sub-element. There are no attributes here so the 2 item in each list is
None
<urn:somerequest>
<ids>
<id>123</id>
<id>321</id>
</ids>
</urn:somerequest>

©SAP AG 2013
10. Complex Query structure – how to add as parameters:
Mapping the xml structure to python syntax (Continued)

In other cases, you can use the dictionary or list syntax for an element
<urn:somerequest>
<person>
<firstname>John</firstname>
<surname>Smith</surname>
</person>
</urn:somerequest>

Dictionary syntax:

List syntax:

Here we give the list of meters as a list of lists. Each list item in turn is then a tuple of three things: node name,
attributes and value.The value is just a dictionary specifying the sub-nodes.

<urn:Bapizivrmrupdate>

<Accountnumber>1234567890</Accountnumber>

<Meters>

<item>

<Installation>Inst A</Installation>

<Meternumber>Meter 1</Meternumber>

<Newreading>12345</Newreading>

</item>

<item>

<Installation>Inst B</Installation>

<Meternumber>Meter B</Meternumber>

<Newreading>54321</Newreading>

</item>

</Meters>

</urn:Bapizivrmrupdate>

©SAP AG 2013
Appendix 1

Python customizer sample


NOTE: Use text code editor such as Notepad++ when editing Python files

import VER
VER.VER(__file__,"","{Wicom_build}")
from Env import *
from ICustomize import *
from IVRUtil import *
import string
class IVR_Customize(ICustomize):
# ========================================================================
def __init__(self, AppConf):
ICustomize.__init__(self, AppConf)
# ============================================================== PrepareCAD.
def PrepareCAD(self, params):

RETURNARRAY = {}
try:
item = 0
CADDictionary = {}
CADXMLString = ''
while item < len(params):
if str(params.keys()[item]) == "Z_AccountNumber":
CADXMLString = CADXMLString + '<Application id="SAPphone"><Calldata obj="KEYVALUE" inst="0001" \
key="Z_ACCOUNTNUMBER">' + str(params.values()[item]) + '</Calldata></Application>'
CADDictionary[str(params.keys()[item])] = str(params.values()[item])
item = item + 1
CADXMLString = CADXMLString + '</ItemAttachedData>'
CADDictionary["XML"] = CADXMLString
RETURNARRAY["CADDictionary"] = CADDictionary

# === Return.
self.m_E.dbg("FILE=[IVR_Customize.py] CLASS=[IVR_Customize] METHOD=[PrepareCAD]: " + str(RETURNARRAY))
RETURNARRAY["PrepareCAD"] = "OK" # Notifying parent that the stored procedure went through without errors.
return("OK", RETURNARRAY)

except(Exception), err:
# === Show the error reason.
self.m_E.exc("FILE=[IVR_Customize.py] CLASS=[IVR_Customize] METHOD=[PrepareCAD]: Exception occurred (" + str(err) + \
"), returning ERROR.")
return("ERROR")

©SAP AG 2013
Appendix 2

Agent presence could be revealed with GetNumberInfo-function:

self.m_AppConf.GetNumberInfo('<agent extension number>')

Function returns Python-dictionary, where is information from User. Here are few samples from return values:

 Wrong Number:
{'Type': 'UNKNOWN', 'OrgNbr': '67676767', 'MappedNbr': '67676767'}

 Agent logged out:


{'IvrLanguage': 'ET', 'MappedNbr': '4401', 'Language': 'EN', 'MaxQue': 3, 'PBX': '',
'OrgNbr': '4401', 'FwdTo': '4555', 'Type': 'LoggedOut'}

 Agent logged in and free (Presence-profile, free):


{'Available': 1, 'IvrLanguage': 'ET', 'Slave': 0, 'MappedNbr': '4401', 'Language': 'EN',
'Calls': 0, 'UIStatus': 'StatusPaperWork', 'MaxQue': 3, 'PBX': '', 'Paused': 0, 'OrgNbr':
'4401', 'FwdTo': '4555', 'Outbound': 0, 'Type': 'LoggedIn'}

 Agent logged in and busy (Presence-profile, busy):


{'Available': 0, 'IvrLanguage': 'ET', 'Slave': 0, 'MappedNbr': '4401', 'Language': 'EN',
'Calls': 1, 'UIStatus': 'StatusPaperWork', 'MaxQue': 3, 'PBX': '', 'Paused': 0, 'OrgNbr':
'4401', 'FwdTo': '4555', 'Outbound': 0, 'Type': 'LoggedIn'}

 Agent logged in and free (Absence-profile, free)


{'Available': 0, 'IvrLanguage': 'ET', 'Slave': 0, 'MappedNbr': '4401', 'Language': 'EN',
'Calls': 0, 'UIStatus': 'StatusPause', 'MaxQue': 3, 'PBX': '', 'Paused': 1, 'OrgNbr':
'4401', 'FwdTo': '4555', 'Outbound': 0, 'Type': 'LoggedIn'}

Function could be called and used this way:

©SAP AG 2013
Appendix 3

QUEUE.QUERY sample 1

Task is to create an conditional IVR that forwards calls to secondary queue if average waiting time in primary queue
exceeds spesified time value. We modify the ready-made example, that checks if there are more calls waiting than is
defined to be the maximum number of waiting calls, so that average waiting time is used as a critical factor.
And instead of a customer parameter recommended in original sample, a variable is added.

Primary Queue = 2100 = DefaultQueue


Secondary Queue = 2101 = OverflowQueue
AverageWaiting = 5 = time in seconds

Steps to create:

1. Import the “Example_IVR_Conditional.xml” from the Examples and Templates folder.


2. Add Element <var> ID “AverageWaiting” Value “5” and <var> ID “OverflowQueue” Value”2101”
3. Modify DefaultQueue value to be “2100”
4. Modify Element <if> by selecting from the dropdown menu value “Queue Status Query: Average Waiting
Time” and edit the line to be like
QUEUE.QUERY(str(DefaultQueue), “Sta_AverageWaitingTime”) > int(AverageWaiting)
5. Modify Element <assign> Value to point to “OverflowQueue”
6. Modify attribute Descriptions accordingly as they are shown in the log files.

©SAP AG 2013
Appendix 4

QUEUE.QUERY sample 2

Task is to create an conditional IVR that forwards calls to secondary queue if estimated waiting time in primary queue
exceeds spesified time value. To verify functionality add counters to log printing.
Primary Queue = 2100 = DefaultQueue
Secondary Queue = 2101 = OverflowQueue
EstWaiting = 30 = Estimated Waiting Time in seconds
QueMaxWaitTime = 660 = Default value if not defined in SC “Queue Management”> “Max.Waiting Time”

Steps to create:

1. Import the “Example_IVR_Conditional.xml” from the Examples and Templates folder.


2. Add Element <var> ID “AverageWaiting” Value “5” and <var> ID “OverflowQueue” Value”2101”
3. Add <var> EstWaiting, Value 30 and <var>QueMAxWaitTime, Value 660 and Modify DefaultQueue value to
be “2100”
4. Modify Element <if> by selecting from the dropdown menu value “Queue Query: Estimated Waiting Time”
and edit the line to be like
QUEUE.QUERY(str(DefaultQueue), "Que_EstWaitTime") > int(EstWaiting)
5. Add Element <if> from the dropdown menu value “Queue Query: Estimated Waiting Time”:
QUEUE.QUERY(str(DefaultQueue), "Que_EstWaitTime") < int(QueMaxWaitTime)
6. Modify Element <assign> Value to point to “OverflowQueue”
7. Add New Child Element <log> by selecting froom dropdown and edit “Expression”:
"IvrApplication.logprint (CALL_ID= " + str({CALLID}) + " Average waiting time = " +
str(QUEUE.QUERY(str(DefaultQueue), "Sta_AverageWaitingTime"))
8. Add <log>with expression: "IvrApplication.logprint (CALL_ID= " + str({CALLID}) + " Got over estwait time
limit, FWD to OverflowQue, EstWait= " + str(QUEUE.QUERY(str(DefaultQueue), "Que_EstWaitTime"))
9. Modify attribute Descriptions accordingly as they are shown in the log files.

©SAP AG 2013
Glossary
Latest SAP Contact Center glossary available from here:

http://help.sap.com/saphelp_bcm70/helpdata/en/50/cdbd3f48b64e45bc9e6af4d27f0930/frameset.htm

A
A number
A number from which a call or a message comes.
abandoned
Calls that are hung up by customers before they are answered but after the false attempt time.
absence
A status in the system when a user is away or not available and cannot be reached.
Administration and Configuration Interface (ACI)
A server-to-server interface that provides access to the configuration data stored in SAP Contact Center databases.
afterwork
An agent status that indicates that the agent is temporarily not able to accept contacts from queues but is able to receive direct calls. This is a special
status
and agents cannot select it manually. After this status the application gives the Ready status automatically. The term in the SAP Contact Center 7.0
version is Wrap-Up but the term of the previous SAP Contact Center versions (Afterwork) is still used on the Reporting user interface.
agent
A person who handles inbound or outbound contacts (such as e-mails, calls, and chat requests) in a contact center.
Agent Server (AS)
A mandatory server component that carries out communication between SAP Contact Center components.
answered-on-time limit
In contact centers, time limit for service level calculation. Contacts (chats, e-mails, and calls) answered before that time are classified as answered on
time.
answering button
The button on a telephony application’s (such as Communication Desktop or Convergence) user interface that can be clicked to accept an incoming call.
application service provider (ASP)
A third-party entity that manages and distributes software-based services and solutions to customers across a wide area network (WAN) from a central
data center. Application Service Providers enable companies to outsource aspects of their information technology needs.
audio file
A recorded file that can be used to make prompt files and prompts.
auto-allocation
Queue mode where calls, chats, or e-mails from queues are automatically allocated to agents.

B
B number
A target of a call or a message.
bandwidth control
A way to reserve bandwidth for voice stream of a location.
bandwidth group
Part of a network defined by IP ranges, subnets, network elements, or specific user groups and which has a specific bandwidth dedicated for its
voice streams.
Barge-in
A supervisor-related function in the Communication Desktop (CDT) application that allows supervisors to participate in a call between an agent and
a customer. All parties can hear each other.
barring
A way to restrict outbound calls with predefined call rules, for example, blocking international calls.
barring group
A way to attach barring rules to users and user groups
base installation
The complete software package of a certain version. Each virtual unit is using the specified base installation, thus all software packages installed in
a virtual unit always use the same software version. Hotfixes (patches) are dedicated to a specific base installation, and the entire software is upgraded
by changing the base installation.
Batch Job Server (BJS)
A mandatory server component that handles directory rebuilt/synchronization, licence reporting, message/file/Outbound campaign cleaning and
database-related things.
blind transfer
A function in the toolbar that puts the caller on hold while an agent forwards the call to another agent's extension without first consulting with the
agent who is receiving the transferred call.
block
A functional entity in a VoiceXML document that consists of elements.
bridge
A module for connecting the registered terminal devices and the gateways to the SAP Contact Center core module, Call Dispatcher.
Two main types in use: H.323 and SIP.

C
C number
A target of a call that is transferred from the B number.
calendar
A set of days (either weeks, months, years, or specific dates every year) used to schedule when a service is available.
For example, the “Public Holiday” calendar includes all days of the year when the service is closed, and the corresponding schedule is “Closed 24h”.

©SAP AG 2013
Call Dispatcher (CD)
The core module for low-level call handling.
call out prefix
A set of numbers automatically added to the beginning of the displayed telephone number when making outbound calls.
call waiting tone
A file that is played to an agent when the agent has an inbound call waiting.
callback
A function in a contact center that allows customers to leave a request to call them back.
campaign
An outbound call campaign where the dialer calls customers and agents ask questions according to the script.
channel
Settings that define the e-mail, phone and chat channel behavior.
channel type
A way to define the media that a channel is using to pipeline contacts to a queue, for example, chat, e-mail, telephone, or fax. A queue can have more
than one channel defined.
Chat Portal Interface (CPI)
Defines the external API that the Internet chat client uses to communicate with SAP Contact Center.
Chat Portal Server
A server component that must be installed in the system if the chat channel is used.
Chat Server
A server component that must be installed in the system if the chat channel is used.
child element
A functional step in a VoiceXML document that is nested in a parent element or block.
ClientCOM
The communication interface between the client-level applications.
ClientCore
The communication interface provides access to the core of the SAP Contact Center software telephone.
codec
A device or computer program capable of encoding and decoding a digital data stream or a signal.
Communication Mobile Client (CMC)
An end-user application for mobile phone users.
conference
Indicates the availability of a user. The user is attending a conference call.
conference bridge
A service that connects callers to a conference call and monitors the call.
connect
To join calls together in telephony applications such as CDT.
Connection Server (CoS)
A mandatory server component that carries out communication to the end-user interfaces CDT and CMC via a TLS-secured connection.
Contact Event Manager (CEM)
The core module in the SAP Contact Center system that takes care of contact routing intelligence.
country code
In telephony applications, this means country calling code defined by ITU-T recommendations E.123 and E.164
also called IDD (International Direct Dialling) or ISD (International Subscriber Dialling) code.
critical time
The static time value for queuing.
customizer
Lines of code that are used to import a function to the system.
customizing file
A text file that contains customer-specific values.

D
dashboard
The runtime statistics of user’s own activities, such as inbound and outbound calls, and e-mail messages.
data item
XL Reporter: Data in the SAP Business One database that XL Reporter uses to specify a selection. Depending on their relationship to other data
in the database and the actions that XL Reporter can perform on them, data items can be of the three following categories:
- Dimensions
- Light Dimensions
- Measures
Data Collector (DC)
A server component that collects reporting and monitoring data. Required if the Reporting or Online Monitoring applications are used.
data staging area (DSArea)
One of the databases in DTE. Related to the Reporting application.
data transformation engineer (DTE)
A tool that runs the transformation process in the Reporting application.
data warehouse (DW)
Information organized in datamarts for effective online search. Related to the Reporting application.
desk phone
A complete device for performing telephonic tasks such as calling, answering, and transferring calls. In VOIP, this is an alternative for a soft phone that
is run as software on a PC or laptop with suitable audio devices connected. Was earlier referred to as a hard phone.
destination number
A number to which a call is made.
dial pad
A part of user interface of an telephony application that enables sending DTMF signals, that is, same numbers and characters as from
a traditional telephone.
dial pad button
A character on the dial pad. When that is clicked the character is sent as a DTMF signal.

©SAP AG 2013
dialing mode
A setting in the campaign management that defines the way the dialer handles a call campaign.
directory
A list containing contact information on persons and companies.
Directory and Availability Interface (DAI)
A server-to-server interface that provides directory data and presence information.
Directory Server (DS)
A mandatory server component that is used by CEM Server to show directory information to users.
divert
To redirect calls to another number in the Communication Mobile Client (CMC) application.
divert delay
Time before a call is redirected to another number, for example to voicemail.
document
A definition of an IVR application expressed in VoiceXML.
dual tone multi-frequency (DTMF)
The technical term describing touch-tone dialing on a telephone. It is essentially the combining of two tones: one low frequency and one high frequency.

E
early queuing
Queuing calls before they are connected. Can be used for toll-free queuing.
element
A functional step in VoiceXML document that is defined with appropriate attributes. For example, the audio element requires that the related
recorded voice file is defined.
Email Sender
A server component that can be used to send e-mail messages such as voicemail notifications and e-mail queue replies using the local SMTP server in
the operating system.
extension
An identifier of a user’s or queue’s account in the system, such as the unique internal phone number, or e-mail or chat address.
external agent
A user who is logged on to the software from an external number (mobile or fixed) and receives queue and personal calls to this external number.
external IVR interface (EII)
Enables that a SIP-enabled speech recognition IVR server can be integrated into a SAP Contact Center system.
External Terminal Controller
A core module that translates the protocol used with desk phones into a protocol used with softphones.

F
false attempt
An unanswered call that is hung up by a customer before the false- attempt limit (typically 5 seconds) is reached.
federation bridge
A core module for interconnecting several SAP Contact Center systems.
File Replication Server (FRS)
A server component that can be used, for example, to copy voicemail files between different locations.
forward
To redirect calls to, for example, voicemail or mobile phone.

G
gain
In Outbound campaigns the percentage of successful results of made calls. Can be calculated using all, handled, or reached customer contacts either
per campaign or per agent.
grammar
A definition of rules for certain functions used in VXML, for example DTMF recognition
grant
To allow users, user groups and roles to assign rights to other user roles and user groups.

H
H.323
A standard protocol for audio, video, data, internet phone, and VoIP transmissions.
hang-up time
The average duration of abandoned calls.
high availability controller
A service run on each physical server that constantly monitors and controls the services on the server and networks with other HAC instances on
other servers to ensure that if one of the servers fail the services are moved to another server.
hold
A function that puts a call on hold.
hunt group
Queue mode where the agents pick the call, chat, or e-mail from a queue.

I
IIS (Microsoft Internet Information Server)
A Microsoft server product used for various web-related tasks, such as managing services and sharing information.
immutable
An object whose state cannot be modified after it is created. For example in SAP Contact Center IA, some of the installation variables are immutable
and cannot be changed after they have been entered for the first time.
Infrastructure Administrator (IA)
An administration application for creating the system model, and starting and stopping all components of the system.
interactive voice response (IVR)
An automated system that accepts input from a user over the telephone and plays back audio responses.

©SAP AG 2013
intercept
To take a call from an agent and continue that call. One of the supervising functions.

internal range
An additional range to the system PSTN ranges (for example an IVR number)
IP (Internet protocol)
A network protocol that enables computers to communicate using various physical media. This protocol is used for the global Internet but can also
be used entirely separately as a communications protocol in any computer network.
L
License Reporting Inteface (LRI)
Provides an access to information related to the current and past provisioning situation and the usage of different functions in a SAP Contact Center
system.

M
mask
A method of hiding a source or destination number. For example, an agent’s individual number can be masked and the contact center queue number
is shown as a caller.
MCTABUFF
The core module required for ClientCOM integrations. This ActiveX component is installed on a client workstation.
mobile phone
A hand-held device used for wireless communication.
module
A software entity that performs certain functions.
monitoring
The process or application for collecting and displaying data and metrics from the system and its users’ performance.
MRS (Media Routing Server)
A core component in the SAP Contact Center system that plays prompts to a voice stream.
MTD (Multiterminal desktop)
Functions for defining multiple terminal devices for receiving inbound calls and for selecting which one of the devices is used when making
outbound calls.
multi-chat
Function that enables a contact center agent to have several active chat sessions simultaneously.

N
NAT location
Part of a network defined by IP ranges, subnets, network elements, or specific user groups that use NAT to route streams to other locations.
Network Address Translation
An IP address used in one network (the inside network) and translated to a different IP address known in another network (the outside network).
notification call
A way to inform a user about a new voicemail message
number range
Phone number extensions that can be selected in a SAP Contact Center system. A number range contains a PSTN range, an internal range, and a
subrange.

O
OLAP
Online analytical processing. Related to the Reporting application.
Online Interaction Interface (OII)
Provides methods for handling agent statuses and queue assignments, for performing telephony and other communication operations in
a SAP Contact Center system. OII is dedicated to communication with the SAP CRM system, but it is not limited to that.
OPTIONS ping
Function for checking if the neighboring device is willing or able to accept calls.
Outbound
An element in the Communication Desktop (CDT) application related to predefined outbound call campaigns.
outbound management
A way to manage campaigns in the system including dialers, settings, templates, filters, classifiers, call transfer lists, and call lists.

P
P-Asserted Identity (PAI)
A header in SIP message that enables conveying the caller identity within a trusted domain.
paperwork
An agent status that indicates that the agent is temporarily not able to accept contacts from queues but is able to receive direct calls.
The term in the SAP Contact Center 7.0 version is Not Ready but the term of the previous SAP Contact Center versions (Paperwork) is still used on the
Reporting user interface.
pattern
A certain combination of characters or numbers that routes the contact to a specific route, for example, the calls starting with a plus sign (+) are
recognized as international calls. It can also be used for barring calls to numbers starting with the same pattern.
paused
A status in which an agent has activated an absence profile.
PRACK
Provisional Response ACKnowledgement method
predictive
Dialing mode where the software makes calls automatically. When a customer answers a call, it is immediately connected to a free agent.
predictive dialing controller (PDC)
A CEM module that runs the outbound campaigns.
prerouting policy
Enables calls (and other contacts) to be routed to the Front End application instead of a call center queue in case of a congestion.

©SAP AG 2013
presence
A status in the system when a user is free and can be reached.
presence profile
An absence, a presence or a conference profile which defines how inbound calls are handled when a certain profile is selected.
Presence Synchronization Interface (PSI)
Enables synchronization of presence information between external systems, such as Microsoft Lync and SAP Contact Center.
preview
Dialing mode where an agent can view the customer data and possible scripts before making calls.
prewelcome message
An audio prompt type, either a prompt or a prompt file
prewelcome prompt
A customer-specific audio message played once after schedule processing but before the call enters a queue.
private branch exchange (PBX)
A traditional corporate telephone system which usually includes switchboard hardware.
progressive
Dialing mode where the software selects a new customer automatically and makes the new call immediately when an agent has finished the
wrap-up related to the previous call.
prompt
Audio or text-based messages that advise the user in the contact center interactions, for example, in an IVR or when waiting in a queue. Also an audio
or a text file that is used accordingly.
Examples: “You are in queue. Your call will be answered as soon as possible.” and “To select the option xxx, press 1.”
prompt file
A repository for language-specific audio files. In SAP Contact Center systems, a prompt file is defined for a prompt, and when this prompt file is used in
a certain language, the corresponding audio file is played in that language.
PSTN range
Phone extensions from the public switched telephone network

Q
Quality Monitoring Interface (QMI)
An integration interface provided by Quality Monitoring Server.
Quality Monitoring Server (QMS)
A server module that enables interface to third-party quality monitoring systems.
queue mode
A way to direct calls, e-mails, and chats from queues to agents. Administrators define whether agents serve in hunt group or auto-allocation mode.
queue watcher
A tool to monitor queues. It displays information about the number of contacts in queues, queue time, and the number of free agents and agents logged
on to the queues.

R
R number
The original external source number (A number) in the following special case: The system is configured to display the original number even if the call
has been forwarded within the system before it is finally forwarded to another external number. Normally the system displays the personal
extension number or the queue number as the source number.
recording
Function, or the result of it, where a telephone call is saved as a file and can be listened to later on.
redial
Scheduling a new call to a customer who could not be reached in an Outbound campaign.
redundancy
A duplication of system components with the intention of increasing availability.
redundant
Duplicating the function of another component in a system and providing a backup in the event of a component failure.
refresh
Function that updates the displayed view. Can be initiated manually, or happens automatically after defined intervals. Typically in use with views
where large amounts of collected information is displayed as updating those views after each change in any item is not reasonable.
Reporting Data Interface (RDI)
Provides methods for reading history information about calls and e-mail messages that have been handled in a SAP Contact Center system.
ringback
A reminder made in the SAP Contact Center system when the called person cannot be reached. When the person is available, the system indicates it.
ringing time
The time before the system starts to play an audio message to the caller.
route
A way to take a call to a specific destination. Typically includes settings for the priority, gateway equipment, codec used, masks, and prefixes.
routing
A procedure that determines the receiver of a call, an e-mail, an SMS, a short message, a chat request, or other contact.
RTP
A standardized packet format for delivering audio and video over the Internet.

S
saved searches
A saved search criterion list for items such as users and queues in the System Configurator application
schedule
A way to define the times when a service is available. Typically includes a related (audio) message that informs customers of the opening hours.
script
A step-by-step questionnaire that gives agents guidance during customer interactions. Agents use these scripts to guide them through each step of
a customer contact and enter the customer’s responses in the script. The customer’s response dictates the next step that the script displays. These steps
may include questions with predefined answers, business transactions, or other activities.
Secure RTP
A secure (encrypted) RTP signal used within the SAP Contact Center system for transmitting audio signal between terminal clients and the MRS
component.
©SAP AG 2013
service level
Percentage of calls answered on time including all arrived calls except false attempts. The answering time is defined with the answered-on-time limit
and the time for false attempts with false-attempt limit. Also the service level of other means of communication, such as chats and e-mails, is
monitored. Their service level is calculated from their specific limits.
serving
An agent status that indicates that the agent is free to accept direct calls and contacts from queues. The term in the SAP Contact Center 7.0 version is
Ready but the term of the previous SAP Contact Center versions (Serving) is still used on the Reporting user interface.
short message service (SMS)
The method for delivering short messages to mobile phones.
SIP
A signaling protocol used for setting up multimedia communication sessions, such as voice and video calls, over the Internet. Other feasible
application examples include video conferencing, streaming multimedia distribution, instant messaging, and presence information.
skill
A certain expertise that an agent has (for example language skills).
skill-based routing
A method to route a contact to the right agent, for example, based on a required language skill.
SOAP (Simple Object Access Protocol)
The method which allows an exchange of data between applications running on different platforms.
spare
A role of the system, or its part, that is inactive but will be started in case of a fault in the corresponding active part.
SQL (structured query language)
A programming language used for database queries and updates. May also refer to a database server or program.
standby
A role of the system, or its part, that is active but not handling requests. In case of a fault in the corresponding active part, it is able to handle
system requests on short notice.
subrange
A certain type of numbers within PSTN or internal ranges For example, in a system, queue numbers can be between 150-250 and voicemail
numbers between 300-350.
supervising restriction
A button on the user interface to prevent the supervision of an agent.
supervisor
A user with limited administration rights who can monitor other users.
suppressed
A state in the audio volume adjustment window.
switchboard operator
A person receiving incoming contacts, for example in a company, and connecting (or forwarding) them to the correct extensions.
switching
Low-level call handling, and delivering calls to different destinations. Should not be mixed with higher level intelligent routing.
switching route
A configuration for making and receiving external calls, and calls to the end points that are reached via a SIP bridge.
switching rule
A generic rule that applies to all users in a telephony system. For example, barring calls to expensive service numbers.
System Configurator (SC)
The administration and configuration application of SAP Contact Center.
system model
A model of the server system hosting customer services. System model describes a particular system of the infrastructure software and it includes
managed computer systems, software, access points, and redundancy settings.

T
talking time limit
A time an agent is allowed to talk in one call. Defined in the setting Handling Time Limit.
Task Management Interface (TMI)
Used for creating new tasks to a SAP Contact Center system and for reading task information from the system.
TCP/IP (Transmission Control Protocol/Internet Protocol)
A software protocol developed for communication between computers.
tear off
To drag and drop certain UI elements from a larger entity for creating a separate UI window.
tentative
Indicates the availability of a user. The user is free but not available for all contacts.
transfer
To put a caller through to someone else, for example, an agent can transfer a call to a colleague.
transfer on hold
A function in which the transferred call remains in the agent’s contact list so that it can be retrieved by the agent.

U
User Datagram Protocol (UDP)
A communications protocol that offers a limited amount of service when messages are exchanged between computers in a network that uses the
Internet Protocol (IP).
UTC (Coordinated Universal Time)
The standard time system used in the software. Times in different time zones are calculated in relation to the UTC time.

V
virtual phone
A telephone account not connected to the device. For example, a virtual phone with the SAP Contact Center extension number can be run on a mobile or
desk phone
(that has another number from the PSTN operator).
virtual unit
A logical group of technical services that are managed as a single unit.

©SAP AG 2013
voice menu
A list of selections with corresponding numbers that are played to callers in an IVR.
VoiceXML
A standard format of XML for specifying interactive voice dialogues between a human and a computer.
VoIP (Voice Over Internet Protocol)
A method for transferring voice signal over the Internet.

W
waiting time
Time that a contact event (such as a call, a chat, or an e-mail) is waiting after it has entered a service queue and before it is answered or transferred
to another queue or service, or before the caller hangs up.
waiting time learning
A process that also takes other defined queues into account when calculating the waiting time.
welcome message
An audio message played for a caller entering a call service, or a text displayed for a person entering a chat.
wrap-up
The time agents use for finishing up after a call, an e-mail, or a chat with a customer.

©SAP AG 2013

You might also like