Você está na página 1de 244

c

TELEVANTAGE DEVELOPER ’S GUIDE

TELEVANTAGE 7
COPYRIGHT
© 2005 Vertical Communications, Inc. All rights reserved. This manual and the software described in it are copyrighted
with all rights reserved. No part of this publication may be reproduced, transmitted, transcribed, stored in a retrieval
system or translated into any language in any form by any means without the written permission of Vertical
Communications, Inc.
Portions © 1999, Microsoft Corporation. All rights reserved.

TRADEMARKS
Vertical Communications and the Vertical Communications logo and combinations thereof are trademarks of Vertical
Communications, Inc. TeleVantage and the TeleVantage logo are registered trademarks of Vertical Communications,
Inc. Microsoft, Windows, and Windows NT are registered trademarks of Microsoft Corporation. SQL Server is a
trademark of Microsoft Corporation. Adobe and Acrobat are registered trademarks of Adobe Systems Incorporated.
Dialogic is a registered trademark of Intel Corporation. Other brand names, company names and product names are
trademarks or registered trademarks of their respective companies.

LIMITED WARRANTY ON SOFTWARE


Vertical warrants that (a) the Software will perform substantially in accordance with the accompanying written materials
for a period of (30) days from the date of receipt. Any implied warranties on the Software is limited to thirty (30) days.
Some states/jurisdictions do not allow limitations on duration of an implied warranty, so the above information may not
apply to you.
CUSTOMER REMEDIES: Vertical’s and its suppliers’ entire liability and your exclusive remedy shall be, at Vertical’s
option, either (a) return of the price paid, or (b) repair or replacement of the Software that does not meet Vertical’s
Limited Warranty and which is returned to Vertical with a copy of your receipt. This Limited Warranty is void if failure
of the Software has resulted from accident, abuse, or misapplication. Any replacement Software will be warranted for
the remainder of the original warranty period or thirty (30) days, whichever is longer.
VERTICAL AND ITS SUPPLIERS DISCLAIM ALL OTHER WARRANTIES, REPRESENTATIONS, PROMISES
AND GUARANTEES, EXPRESS OR IMPLIED, STATUTORY OR OTHERWISE, ON THE SOFTWARE, MEDIA,
DOCUMENTATION OR RELATED TECHNICAL SUPPORT INCLUDING, WITHOUT LIMITATION, THE
IMPLIED WARRANTIES OF MERCHANTABILITY, PERFORMANCE AND FITNESS FOR A PARTICULAR
PURPOSE. Vertical WILL NOT BE LIABLE FOR ANY BUG, ERROR, OMISSION, DEFECT, DEFICIENCY OR
NONCONFORMITY IN ANY SOFTWARE. AS A RESULT, THE SOFTWARE AND DOCUMENTATION IS
LICENSED “AS IS”, AND THE PURCHASER ASSUMES THE ENTIRE RISK AS TO ITS QUALITY AND
PERFORMANCE.
IN NO EVENT WILL VERTICAL OR ITS SUPPLIERS BE LIABLE FOR INDIRECT, SPECIAL, INCIDENTAL,
CONTINGENT, CONSEQUENTIAL OR SIMILAR DAMAGES OF ANY KIND RESULTING FROM ANY
DEFECT IN THE SOFTWARE OR DOCUMENTATION, INCLUDING, WITHOUT LIMITATION, ANY LOST
PROFITS OR SAVINGS, DAMAGES FROM BUSINESS INTERRUPTION, LOSS OF OR TO DATA, COMPUTER
PROGRAMS, BUSINESS, DOWNTIME, GOODWILL, DAMAGE TO OR REPLACEMENT OF EQUIPMENT OR
PROPERTY, OR ANY COSTS OF RECOVERING, REPROGRAMMING OR REPRODUCING ANY PROGRAM
OR DATA USED IN CONJUNCTION WITH THE PRODUCTS, EVEN IF Vertical, ITS SUPPLIERS OR ANYONE
ELSE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. YOU AGREE THAT Vertical’S AND
ITS SUPPLIERS’ LIABILITY ARISING OUT OF CONTRACT, NEGLIGENCE, STRICT LIABILITY IN TORT OR
WARRANTY SHALL NOT EXCEED THE AMOUNT PAID BY YOU FOR THIS PRODUCT. ANY WRITTEN OR
ORAL INFORMATION OR ADVICE GIVEN BY Vertical DEALERS, DISTRIBUTORS, AGENTS OR
EMPLOYEES WILL IN NO WAY INCREASE THE SCOPE OF THIS WARRANTY, NOR MAY YOU RELY ON
ANY SUCH WRITTEN OR ORAL COMMUNICATION. Some jurisdictions do not allow the limitation or exclusion
of implied warranties or liability for incidental or consequential damages, and some jurisdictions have special statutory
consumer protection provisions which may supersede this limitation, so the above limitation or exclusion may not apply
to you. This warranty gives you specific legal rights, and you may also have other rights which vary from jurisdiction
to jurisdiction.
Vertical Communications, Inc.
One Memorial Drive
Cambridge, MA 02142

#95-0000 Edition 7
TABLE OF CONTENTS

Chapter 1. Introduction
About the TeleVantage SDK........................................................................................................................1-2
Technical Support for the TeleVantage SDK...............................................................................................1-2
Development tools and terms ......................................................................................................................1-3
Installing the SDK APIs................................................................................................................................1-3
Installing the Device Status API and IVR Plug-in API................................................................................1-3
Installing the Client API and Add-in API.....................................................................................................1-3
Installing custom applications that use TeleVantage APIs ..........................................................................1-4
Checking the TeleVantage Version Number .............................................................................................1-4

Chapter 2. The Client API


About the TeleVantage Client API ...............................................................................................................2-2
Client API object structures .........................................................................................................................2-2
Connecting to the Client API........................................................................................................................2-3
Structure of a session ..................................................................................................................................2-4
The System object .......................................................................................................................................2-5
The User object ...........................................................................................................................................2-6
How folders are used...................................................................................................................................2-7
The Folder object........................................................................................................................................2-8
Default Folder structure..............................................................................................................................2-9
Other object structures ..............................................................................................................................2-10
Agent objects............................................................................................................................................2-11
Call objects ...............................................................................................................................................2-12
CallHistory objects....................................................................................................................................2-12
CallRule objects........................................................................................................................................2-13
Contact objects.........................................................................................................................................2-13
Dialing Service objects .............................................................................................................................2-14
Greeting objects .......................................................................................................................................2-15
Message objects ......................................................................................................................................2-15
Notification objects ...................................................................................................................................2-16
PersonalStatus objects.............................................................................................................................2-16
RoutingList objects ...................................................................................................................................2-17
Schedule objects ......................................................................................................................................2-18
Shortcut objects........................................................................................................................................2-18
Station objects ..........................................................................................................................................2-19
StationFeature objects .............................................................................................................................2-19
Workgroup objects ...................................................................................................................................2-20
Starting a new Client API project in Visual Basic.......................................................................................2-20
Programming tips and examples ...............................................................................................................2-21

Chapter 3. The Add-In API


About the TeleVantage Add-In API..............................................................................................................3-2
How Add-Ins work........................................................................................................................................3-2
Add-In API Reference..................................................................................................................................3-5

Chapter 4. The IVR Plug-in API


About the TeleVantage IVR Plug-in API ......................................................................................................4-2
Using a 3rd party IVR toolkit with the IVR Plug-in API...............................................................................4-2
IVR Plug-in API component and sample applications ...............................................................................4-2
How the IVR Plug-in components work .......................................................................................................4-3
Monitoring standard and custom call data .................................................................................................4-3
IVR Plug-in licensing ..................................................................................................................................4-4
Registering and configuring IVR Plug-ins ..................................................................................................4-4
Using the Customer ID IVR Plug-in .............................................................................................................4-6
Managing the Customer ID database ........................................................................................................4-7
Working with the Customer ID sample code..............................................................................................4-8
Running an IVR Plug-in that has a GUI .....................................................................................................4-8
Debugging IVR Plug-ins in Visual Basic ....................................................................................................4-8
IVR Plug-in API quick reference ..................................................................................................................4-9

Chapter 5. The Device Status API


About the TeleVantage Device Status API ..................................................................................................5-2
How the Device Status components work ...................................................................................................5-2
Using the Device Status components..........................................................................................................5-3
Sample Device Status Application .............................................................................................................5-4
Required runtime files ................................................................................................................................5-4
Device Status API quick reference ..............................................................................................................5-5

Chapter 6. Using In-band Signaling


About in-band signaling with TeleVantage ..................................................................................................6-2
TeleVantage telephone commands .............................................................................................................6-3
Call handling menu.....................................................................................................................................6-3
Quick call menu ..........................................................................................................................................6-4
Voice mail/Account menu commands........................................................................................................6-5
Quick commands for call center agents.....................................................................................................6-6

Chapter 7. The TeleVantage TAPI Service Provider


About the TeleVantage TAPI Service Provider............................................................................................7-2
TeleVantage TAPI Service Provider capabilities .........................................................................................7-2
Supported TAPI functions ..........................................................................................................................7-2
Supported bearer modes ...........................................................................................................................7-3
Call states...................................................................................................................................................7-3
Exported TSP functions..............................................................................................................................7-3
TAPI and TeleVantage custom call data .....................................................................................................7-3

Appendix A. IVR Plug-in API Reference


Overview..................................................................................................................................................... A-2
PluginApplication interface ......................................................................................................................... A-2
CallOffering method (PluginApplication interface) .................................................................................... A-2
CallPlaced method (PluginApplication interface)...................................................................................... A-2
CallTerminated method (PluginApplication interface)............................................................................... A-3
PluginCaller interface.................................................................................................................................. A-3
AssociateCalledCallerID method (PluginCaller interface) ........................................................................ A-4
AssociateCalledExtension method (PluginCaller interface) ..................................................................... A-5
AssociateCallerID method (PluginCaller interface)................................................................................... A-5
AssociateExtension method (PluginCaller interface)................................................................................ A-6
AssociateExtensionEx method (PluginCaller interface) ........................................................................... A-6
CallDone method (PluginCaller interface)................................................................................................. A-7
Delete method (PluginCaller interface) ..................................................................................................... A-8
DeviceName property (PluginCaller interface).......................................................................................... A-8
Exists method (PluginCaller interface)...................................................................................................... A-8
Get method (PluginCaller interface).......................................................................................................... A-9
GetDevice method (PluginCaller interface)............................................................................................. A-11
GetMedia method (PluginCaller interface).............................................................................................. A-11
GetXmitTimeslot method (PluginCaller interface)................................................................................... A-12
Listen method (PluginCaller interface).................................................................................................... A-12
Ping method (PluginCaller interface) ...................................................................................................... A-12
PlugInComments property (PluginCaller interface) ................................................................................ A-13
PlugInDID property (PluginCaller interface)............................................................................................ A-13
PlugInExtension property (PluginCaller interface) .................................................................................. A-13
PlugInName property (PluginCaller interface) ........................................................................................ A-14
PlugInVariable property (PluginCaller interface)..................................................................................... A-14
ReleaseDevice method (PluginCaller interface) ..................................................................................... A-14
Set method (PluginCaller interface) ........................................................................................................ A-14
SetStatus method (PluginCaller interface).............................................................................................. A-16
PluginCallee interface............................................................................................................................... A-16
Exists method (PluginCallee interface) ................................................................................................... A-16
Get method (PluginCallee interface)....................................................................................................... A-17
PluginServer interface .............................................................................................................................. A-18
PlaceCall method (PluginServer interface) ............................................................................................. A-18
PluginMedia interface ............................................................................................................................... A-20
Dial method (PluginMedia interface)....................................................................................................... A-20
FlushDigitBuffer method (PluginMedia interface) ................................................................................... A-21
GetCallProgress method (PluginMedia interface) .................................................................................. A-21
GetDigits method (PluginMedia interface) .............................................................................................. A-22
GetXmitTimeslot method (PluginMedia interface) .................................................................................. A-23
Listen method (PluginMedia interface) ................................................................................................... A-23
PlayFile method (PluginMedia interface) ................................................................................................ A-24
PlayString method (PluginMedia interface)............................................................................................. A-25
PlayTone method (PluginMedia interface).............................................................................................. A-28
RecordFile method (PluginMedia interface)............................................................................................ A-29
SetRate method (PluginMedia interface) ................................................................................................ A-30
SetVolume method (PluginMedia interface) ........................................................................................... A-30
Stop method (PluginMedia interface)...................................................................................................... A-30
PluginApplicationOutbound interface........................................................................................................ A-31
PluginOutOfBandCallProgressEvents interface ....................................................................................... A-31
CallProgressIndication method (PluginOutOfBandCallProgressEvents interface) ................................ A-31
PluginOutOfBandCallProgressMonitor interface ...................................................................................... A-32
GetDisconnectReason method (PluginOutOfBandCallProgressEvents interface ................................. A-33
MonitorCallProgress method (PluginMedia interface) ............................................................................ A-33
WaitForAudio method (PluginMedia interface) ....................................................................................... A-34

Appendix B. Migrating Older IVR Plug-in Applications


Overview..................................................................................................................................................... B-2
IVRPlugInNotify2 interface.......................................................................................................................... B-2
CallOffering method (IVRPlugInNotify2 interface) .................................................................................... B-2
CallPlaced method (IVRPlugInNotify2 interface) ...................................................................................... B-3
CallTerminated method (IVRPlugInNotify2 interface)............................................................................... B-4
IVRPlugIn2 object ....................................................................................................................................... B-4
CallDone method (IVRPlugIn2 object) ...................................................................................................... B-5
GetCustomPartyData method (IVRPlugIn2 object) .................................................................................. B-5
GetPartyData method (IVRPlugIn2 object)............................................................................................... B-6
GetXmitTimeslot method (IVRPlugIn2 object) .......................................................................................... B-7
Listen method (IVRPlugIn2 object) ........................................................................................................... B-7
Ping method (IVRPlugIn2 object).............................................................................................................. B-7
PlaceCall method (IVRPlugIn2 object)...................................................................................................... B-8
Register method (IVRPlugIn2 object) ....................................................................................................... B-9
SetCustomPartyData method (IVRPlugIn2 object)................................................................................. B-10
SetPartyData method (IVRPlugIn2 object) ............................................................................................. B-10
SetStatus method (IVRPlugIn2 object) ................................................................................................... B-11
Extension Property (IVRPlugIn2 object) ................................................................................................ B-11
DID Property (IVRPlugIn2 object) ........................................................................................................... B-11
Name Property (IVRPlugIn2 object)........................................................................................................ B-12
Comments Property (IVRPlugIn2 object)................................................................................................ B-12
CustomVariableName Property (IVRPlugIn2 object).............................................................................. B-12
CustomVariableValue Property (IVRPlugIn2 object) .............................................................................. B-12
................................................................................................................................................................. B-12

Appendix C. Device Status API Reference


Overview..................................................................................................................................................... C-2
Server object............................................................................................................................................... C-2
Connect method (Server object) ............................................................................................................... C-2
Disconnect method (Server object)........................................................................................................... C-2
Devices Property (Server object) .............................................................................................................. C-2
DeviceStateChanged Event (Server object) ............................................................................................. C-3
Device object .............................................................................................................................................. C-3
Refresh method (Device object)................................................................................................................ C-3
AssignedExtensions Property (Device object).......................................................................................... C-3
Class Property (Device object).................................................................................................................. C-3
ConnectedDevices Property (Device object) ............................................................................................ C-3
CurrentExtension Property (Device object)............................................................................................... C-4
DefaultExtension Property (Device object) ............................................................................................... C-4
HookState Property (Device object).......................................................................................................... C-4
Name Property (Device object) ................................................................................................................. C-4
Number Property (Device object).............................................................................................................. C-4
Status Property (Device object) ................................................................................................................ C-5
Extension object ......................................................................................................................................... C-6
Refresh method (Extension object)........................................................................................................... C-6
ACDDoNotDisturb Property (Extension object) ........................................................................................ C-6
DoNotDisturb Property (Extension object) ................................................................................................ C-6
Extension Property (Extension object)...................................................................................................... C-6
FirstName Property (Extension object) ..................................................................................................... C-7
LastName Property (Extension object) ..................................................................................................... C-7
Party object................................................................................................................................................. C-7
CallerIDName Property (Party object) ...................................................................................................... C-7
CallerIDNumber Property (Party object) ................................................................................................... C-7
CallerIDNumberType Property (Party object) ........................................................................................... C-7
FirstName Property (Party object)............................................................................................................. C-7
LastName Property (Party object)............................................................................................................. C-7

Appendix D. Client API Object Reference


Addresses object ........................................................................................................................................ D-4
Address object ............................................................................................................................................ D-4
Agent object................................................................................................................................................ D-5
Agents object .............................................................................................................................................. D-6
AgentStat object ......................................................................................................................................... D-6
AudioClip object.......................................................................................................................................... D-7
Call object ................................................................................................................................................... D-8
CallActivity object...................................................................................................................................... D-11
CallActivityHistory object .......................................................................................................................... D-11
CallHistory object...................................................................................................................................... D-12
CallRule object.......................................................................................................................................... D-13
Column object........................................................................................................................................... D-13
Columns object ......................................................................................................................................... D-14
Contact object........................................................................................................................................... D-14
Error object ............................................................................................................................................... D-15
Field object ............................................................................................................................................... D-15
Fields object.............................................................................................................................................. D-16
Folder object ............................................................................................................................................. D-16
Folders object ........................................................................................................................................... D-17
Greeting object ......................................................................................................................................... D-18
IAssociate object....................................................................................................................................... D-18
ICOMSecurity object................................................................................................................................. D-19
IDialingService object ............................................................................................................................... D-19
IItem object ............................................................................................................................................... D-19
InternetService object ............................................................................................................................... D-20
IPhoneService object................................................................................................................................ D-21
Items object .............................................................................................................................................. D-21
Locale object............................................................................................................................................. D-22
IWindowsSecurity object........................................................................................................................... D-22
LocaleCodes object .................................................................................................................................. D-23
LogonAddressInfo object .......................................................................................................................... D-23
Message object......................................................................................................................................... D-23
LocaleCode object .................................................................................................................................... D-23
NotifyScheduleItem object ........................................................................................................................ D-25
NotifyScheduleItems object ...................................................................................................................... D-25
Notification object ..................................................................................................................................... D-25
Parties object ............................................................................................................................................ D-26
Party object............................................................................................................................................... D-26
PartyHistories object................................................................................................................................. D-27
PartyHistory object.................................................................................................................................... D-27
Permission object ..................................................................................................................................... D-28
Permissions object.................................................................................................................................... D-28
PersonalStatus object............................................................................................................................... D-29
PhoneGatewayService object................................................................................................................... D-30
QueueByPeriodStat object ....................................................................................................................... D-31
PhoneService object................................................................................................................................. D-31
QueueByShiftStat object........................................................................................................................... D-32
QueueStat object ...................................................................................................................................... D-33
Recipients object ...................................................................................................................................... D-34
Role object................................................................................................................................................ D-34
RoutingList object ..................................................................................................................................... D-35
Roles object .............................................................................................................................................. D-35
RoutingListAction object ........................................................................................................................... D-36
RoutingListActions object ......................................................................................................................... D-36
RoutingListFinalAction object ................................................................................................................... D-37
RoutingService object............................................................................................................................... D-37
Schedule object ........................................................................................................................................ D-38
ScheduledDate object............................................................................................................................... D-38
ScheduledDates object............................................................................................................................. D-38
ScheduledDay object................................................................................................................................ D-39
ScheduledDays object .............................................................................................................................. D-39
Schedules object ...................................................................................................................................... D-40
Session object .......................................................................................................................................... D-40
Shortcut object.......................................................................................................................................... D-47
ShortcutGroup object................................................................................................................................ D-47
ShortcutGroups object .............................................................................................................................. D-47
Shortcuts object ........................................................................................................................................ D-48
SIPAccounts object................................................................................................................................... D-49
SIPAccount object .................................................................................................................................... D-49
SIPServer object....................................................................................................................................... D-50
SIPPhoneGatewayService object............................................................................................................. D-50
SIPServers object ..................................................................................................................................... D-51
SIPService object ..................................................................................................................................... D-51
SIPSpan object ......................................................................................................................................... D-52
SIPSpans object ....................................................................................................................................... D-52
SIPSwitchGatewayService object............................................................................................................. D-52
SkillDefinition object.................................................................................................................................. D-53
SkillDefinitions object................................................................................................................................ D-53
Station object ............................................................................................................................................ D-54
StationButton object.................................................................................................................................. D-55
StationButtons object................................................................................................................................ D-55
StationFeatures object.............................................................................................................................. D-56
StationParameter object ........................................................................................................................... D-56
StationFeature object................................................................................................................................ D-56
StationType object .................................................................................................................................... D-57
StationTypes object .................................................................................................................................. D-57
StationParameters object ......................................................................................................................... D-57
SwitchService object................................................................................................................................. D-58
SwitchGatewayService object .................................................................................................................. D-58
System object ........................................................................................................................................... D-59
SystemSetting object ................................................................................................................................ D-60
SystemSettings object .............................................................................................................................. D-60
SystemTarget object................................................................................................................................. D-61
User object................................................................................................................................................ D-62
View object ............................................................................................................................................... D-64
Views object.............................................................................................................................................. D-65
Workgroup object...................................................................................................................................... D-65
WorkgroupMember object ........................................................................................................................ D-66
WorkgroupMembers object....................................................................................................................... D-66

Appendix E. Client API Enumerations


TVAddressCategory .................................................................................................................................. E-1
TVAddressError ......................................................................................................................................... E-1
TVAddressFieldValidation ......................................................................................................................... E-1
TVAddressPhoneComponent .................................................................................................................... E-2
TVAddressSubType................................................................................................................................... E-2
TVAddressType ......................................................................................................................................... E-2
TVAddressUsageType............................................................................................................................... E-2
TVAgentStatisticInterval ............................................................................................................................ E-3
TVAgentStatus........................................................................................................................................... E-3
TVApplicationType..................................................................................................................................... E-3
TVAssociatedPersonType ......................................................................................................................... E-3
TVAudioDeviceType .................................................................................................................................. E-3
TVAudioState............................................................................................................................................. E-3
TVAudioStateChangeReason.................................................................................................................... E-4
TVAudioType ............................................................................................................................................. E-4
TVAudioVOXFormat .................................................................................................................................. E-4
TVCallAnnounceType................................................................................................................................ E-4
TVCallDeclineMode ................................................................................................................................... E-4
TVCallDirection.......................................................................................................................................... E-4
TVCallerIDFormat...................................................................................................................................... E-4
TVCallFeature............................................................................................................................................ E-5
TVCallFieldValidation ................................................................................................................................ E-5
TVCallGrabAndHoldAudioType ................................................................................................................. E-5
TVCallHistoryError..................................................................................................................................... E-6
TVCallHistoryFieldValidation ..................................................................................................................... E-6
TVCallHistoryResult................................................................................................................................... E-6
TVCallRecordFormat ................................................................................................................................. E-6
TVCallRecordStatus .................................................................................................................................. E-6
TVCallRuleCallerTypeCondition ................................................................................................................ E-6
TVCallRuleError......................................................................................................................................... E-7
TVCallRuleFieldValidation ......................................................................................................................... E-7
TVCallRuleRingOverride ........................................................................................................................... E-7
TVCallRuleScheduleType.......................................................................................................................... E-7
TVCallType ................................................................................................................................................ E-7
TVColumnsError ........................................................................................................................................ E-7
TVContactAssociateFlags ......................................................................................................................... E-8
TVContactError.......................................................................................................................................... E-8
TVContactFieldValidation .......................................................................................................................... E-8
TVDefaultFolders....................................................................................................................................... E-9
TVDeleteMode........................................................................................................................................... E-9
TVDeviceHookState .................................................................................................................................. E-9
TVDirectorySearchMode ........................................................................................................................... E-9
TVError .................................................................................................................................................... E-10
TVExportFormatType .............................................................................................................................. E-13
TVExportType.......................................................................................................................................... E-13
TVExtensionDialByNameAction .............................................................................................................. E-13
TVFieldDataType..................................................................................................................................... E-13
TVFilterOperator ...................................................................................................................................... E-14
TVFinalActionError .................................................................................................................................. E-14
TVFolderError .......................................................................................................................................... E-14
TVFolderFieldValidation .......................................................................................................................... E-14
TVFoldersError ........................................................................................................................................ E-14
TVGreetingError ...................................................................................................................................... E-14
TVGreetingFieldValidation....................................................................................................................... E-14
TVImportContactField.............................................................................................................................. E-15
TVImportHeaderPosition ......................................................................................................................... E-15
TVImportOptions...................................................................................................................................... E-15
TVInterface .............................................................................................................................................. E-16
TVItemChangedBy .................................................................................................................................. E-16
TVItemStatus ........................................................................................................................................... E-16
TVLicenseStatus...................................................................................................................................... E-16
TVLicenseType........................................................................................................................................ E-16
TVLocaleCallerIDFormat ......................................................................................................................... E-16
TVLocaleDateTimeFormat....................................................................................................................... E-17
TVLocalePictureFormat ........................................................................................................................... E-17
TVLogCallsLevel...................................................................................................................................... E-17
TVMessageAssociatedPersonType......................................................................................................... E-17
TVMessageError...................................................................................................................................... E-17
TVMessageFieldValidation ...................................................................................................................... E-17
TVMessageStatus ................................................................................................................................... E-18
TVMessageType...................................................................................................................................... E-18
TVNameFormat ....................................................................................................................................... E-18
TVNotificationError .................................................................................................................................. E-18
TVNotificationFieldValidation................................................................................................................... E-18
TVNotificationLevel.................................................................................................................................. E-18
TVNotificationMessageAction.................................................................................................................. E-18
TVNotificationType .................................................................................................................................. E-18
TVObjectClass......................................................................................................................................... E-19
TVObjectDialingServiceClass.................................................................................................................. E-20
TVObjectItemClass.................................................................................................................................. E-21
TVOutboundCallerIDName...................................................................................................................... E-21
TVOutboundCallerIDPresentation ........................................................................................................... E-21
TVPartyDirection...................................................................................................................................... E-21
TVPartyFeature ....................................................................................................................................... E-22
TVPartyHistoryResult .............................................................................................................................. E-22
TVPartyRole ............................................................................................................................................ E-22
TVPartyStatus.......................................................................................................................................... E-23
TVPermissionAccessLevel ...................................................................................................................... E-23
TVPermissionType .................................................................................................................................. E-23
TVPersonalStatusCallForwarding............................................................................................................ E-23
TVPersonalStatusError............................................................................................................................ E-24
TVPersonalStatusFieldValidation ............................................................................................................ E-24
TVPersonalStatusType............................................................................................................................ E-24
TVPhoneType.......................................................................................................................................... E-24
TVRecipientError ..................................................................................................................................... E-24
TVRegistryDataType ............................................................................................................................... E-24
TVRegistryLocation ................................................................................................................................. E-25
TVRoutingListActionError ........................................................................................................................ E-25
TVRoutingListActionType ........................................................................................................................ E-25
TVRoutingListError .................................................................................................................................. E-25
TVRoutingListFieldValidation................................................................................................................... E-25
TVRoutingListFinalActionType ................................................................................................................ E-25
TVRoutingListPlayGreetingType ............................................................................................................. E-26
TVRoutingListPromptCallerType ............................................................................................................. E-26
TVScheduledDaysWeekday .................................................................................................................... E-26
TVScheduleItemFieldValidation............................................................................................................... E-26
TVScheduleItemType .............................................................................................................................. E-26
TVSchedulesError ................................................................................................................................... E-26
TVSearchType......................................................................................................................................... E-26
TVServerConnectionLevel....................................................................................................................... E-26
TVServerStatus ....................................................................................................................................... E-27
TVSessionStatus ..................................................................................................................................... E-27
TVSessionValidateLogonResult .............................................................................................................. E-27
TVShortcutError....................................................................................................................................... E-27
TVShortcutFieldValidation ....................................................................................................................... E-27
TVShortcutGroupFieldValidation ............................................................................................................. E-27
TVShortcutGroupIconType ...................................................................................................................... E-27
TVSIPAccountError ................................................................................................................................. E-28
TVSIPAccountFieldValidation.................................................................................................................. E-28
TVSIPAccountType ................................................................................................................................. E-28
TVSIPServerAddressFormat ................................................................................................................... E-28
TVSortOrder ............................................................................................................................................ E-28
TVSpecialUsers ....................................................................................................................................... E-28
TVStationAnalogPhoneType ................................................................................................................... E-28
TVStationButtonFieldValidation ............................................................................................................... E-28
TVStationError ......................................................................................................................................... E-29
TVStationExternalPhoneDestination ....................................................................................................... E-29
TVStationFeatureParameterType............................................................................................................ E-29
TVStationFieldValidation ......................................................................................................................... E-29
TVStationIdentificationOptions ................................................................................................................ E-29
TVStationPadCharacter........................................................................................................................... E-30
TVStationPadExtension........................................................................................................................... E-30
TVStationPhoneFeatures ........................................................................................................................ E-30
TVStationTransferMode........................................................................................................................... E-30
TVStationUsage....................................................................................................................................... E-30
TVStoreHistoryType ................................................................................................................................ E-30
TVSystemTargetAvailability..................................................................................................................... E-31
TVSystemTargetCallForwardingType...................................................................................................... E-31
TVSystemTargetError.............................................................................................................................. E-31
TVSystemTargetFeature ......................................................................................................................... E-31
TVSystemTargetType.............................................................................................................................. E-31
TVUserAccountCodeBehavior................................................................................................................. E-31
TVUserAnnounceCallBehavior ................................................................................................................ E-31
TVUserCallWaiting .................................................................................................................................. E-32
TVUserCategory ...................................................................................................................................... E-32
TVUserDefaultContactAction................................................................................................................... E-32
TVUserEmptyDeletedBehavior................................................................................................................ E-32
TVUserError............................................................................................................................................. E-32
TVUserExternalCallTypes ....................................................................................................................... E-32
TVUserFieldValidation ............................................................................................................................. E-33
TVUserInboundCallBehavior ................................................................................................................... E-33
TVUserMessageOrder............................................................................................................................. E-33
TVUserNameFormat................................................................................................................................ E-33
TVUserOutboundCallBehavior ................................................................................................................ E-34
TVUserPromptCallerForName................................................................................................................. E-34
TVUserRemotePhoneType...................................................................................................................... E-34
TVUserRingPattern.................................................................................................................................. E-34
TVUserSendDigitsBehavior ..................................................................................................................... E-34
TVUserStrataRingPattern ........................................................................................................................ E-34
TVViewError ............................................................................................................................................ E-35
TVViewFieldValidation............................................................................................................................. E-35
TVWindowsFirewallScope ....................................................................................................................... E-35
TVWorkgroupErrors................................................................................................................................. E-35
TVWorkgroupFieldValidation ................................................................................................................... E-35
TVWorkgroupMembersError.................................................................................................................... E-35
TVWorkgroupRoutingType ...................................................................................................................... E-35
CHAPTER 1
CHAPTER 1

INTRODUCTION
CHAPTER CONTENTS
About the TeleVantage SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-2
Technical Support for the TeleVantage SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-2
Development tools and terms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-3
Installing the SDK APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-3
Installing custom applications that use TeleVantage APIs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-4
TELEVANTAGE DEVELOPER ’S GUIDE

About the TeleVantage SDK ________________________________________


The TeleVantage Software Development Kit (SDK) is a collection of COM-based components and interfaces that can
be incorporated into your custom applications. See the following chapters for detailed descriptions of the TeleVantage
SDK application programming interfaces (APIs):
Q Chapter 2, “The Client API”, describes the API used by TeleVantage ViewPoint for all its communication
with the TeleVantage Server and database. The Client API is a set of software components that gives custom
applications the ability to access all functions found in the TeleVantage ViewPoint. This chapter also provides
an example of a simple program that uses the API to retrieve and display information from the TeleVantage
Server.
Q Chapter 3,“The Add-In API” , describes the API used by custom applications to extend TeleVantage
ViewPoint with enhanced functionality. These applications, called Add-Ins, are loaded by TeleVantage
Viewpoint and extend it with new menus, tool bar options, and automatic processing of calls and other data. The
Add-In API also exposes a reference to the Client API so an Add-In can easily manage and change data for the
currently logged in ViewPoint user.
Q Chapter 4, “The IVR Plug-in API”, describes features that tightly integrate a custom application with the
TeleVantage Server to perform basic call handling or voice processing tasks such as order entry, customer
service, e-mail readers, and so forth. The application (called an IVR Plug-in) is a “virtual extension” on the
TeleVantage Server. The IVR Plug-in can be dialed from a phone or auto attendant, called from an Internet
trunk, or have calls forwarded or transferred to it, just like a regular extension assigned to a user.
Q Chapter 5, “The Device Status API”, describes features that your application can use to monitor the status
of all devices on the TeleVantage Server. For example, it could monitor current users on the system, obtain the
name of a user currently logged in at a station, or identify the trunk to which a station is connected. The
application could generate custom reports concerning the calls handled by TeleVantage.

In some cases, the TeleVantage SDK may not be the simplest way to implement a specific function. See the following
chapter for some alternatives:
Q Chapter 6, “Using In-band Signaling”, discusses methods for extending TeleVantage using in-band
signaling.

Technical Support for the TeleVantage SDK


Using your web browser you can access the TeleVantage SDK webboard at http://webboard.Vertical.com/~SDK to
ask TeleVantage programming questions, learn how others did similar programming tasks, download sample projects,
and check for any updates to this documentation. You can receive feedback from the entire TeleVantage
community—users, TeleVantage consultants, VARs, and Vertical developers. The TeleVantage SDK webboard can
only be used to post TeleVantage questions regarding software development with the TeleVantage SDK. TeleVantage
questions that do not involve software development and the TeleVantage SDK should be directed to your TeleVantage
provider.
Important: The TeleVantage SDK webboard is unofficially moderated by Vertical employees. That is, Vertical will
attempt to answer most questions within a 24 hour period, but Vertical can not guarantee that all questions will be
answered. Vertical also can not guarantee the quality of the answers from any non-Vertical conference participants.

CHAPTER 1. INTRODUCTION 1-2


TELEVANTAGE DEVELOPER ’S GUIDE

Development tools and terms ______________________________________


Extensions to TeleVantage can be developed using most COM-compliant Windows programming tools, such as Visual
Basic, Visual C++, Delphi, and so forth. The following terms will be used frequently in this guide:
Q COM (Component Object Model) is an object-oriented programming convention that allows different software
components to work together as a single application, even when each component is written without any internal
information about the others. The TeleVantage Client API is a collection of COM-based components.
Q A component is a COM programming structure containing code and data that can be accessed only through a
specific set of methods and properties. A component consists of a class and one or more interfaces, defined as
follows:
Q A class is the program code that determines what the component can do. The class implements a
component’s methods and properties.
Q An interface defines the set of class methods and properties that can be accessed by an application
containing the component.
Q An object is an instance of a class within a running program. For example, the buttons in a program’s graphical
interface could be objects created as instances of a button class.
Q A module is a .DLL or .EXE file containing one or more components.

Q Type libraries contain descriptions of component interfaces and properties, which can be viewed with object
browsers such as the one included in Visual Basic. Type libraries can be part of a module, or they can be separate
files with a .TLB extension.
Q An API (Application Programming Interface) is a package of components, type libraries, and other tools that
provide your application with a relatively simple way to access some of the functionality in complex software
such as TeleVantage.

Installing the SDK APIs____________________________________________


Installing the Device Status API and IVR Plug-in API
The IVR Plug-in API is automatically installed on your TeleVantage Server, but if you do not have a test server for
development, you can still install the IVR Plug-in API on any other PC. The TeleVantage SDK installation installs the
Device Status API, IVR Plug-in API, and sample applications to the directory you specify. The Device Status API
requires that the PC also have TeleVantage ViewPoint, Administrator or Device Monitor installed. While you can
develop IVR Plug-in applications on any PC, you can only test and run them on a TeleVantage Server. Note that
installing the SDK on your TeleVantage Server may require a restart of the TeleVantage Server, so you should only
perform an installation at a time when you can shut the Server down without interrupting users.
To install the TeleVantage SDK
1. Run the TVSDK.exe program located in \Server on the TeleVantage Master CD.
2. Follow the instructions in the TeleVantage SDK Setup window.

Installing the Client API and Add-in API


When you install TeleVantage ViewPoint, the Client API and Add-in API are installed automatically. Your
development environment must then be configured to use the API. This process is described for Visual Basic in “Starting
a new Client API project in Visual Basic” on page 2-20. If you are not using Visual Basic, see your environment’s
documentation for instructions on adding COM components or type libraries.
When you write your TeleVantage Add-In's installer program, you may need to check for a particular version of
TeleVantage to be installed if using the Client API, Device API or IVR Plug-in API.

CHAPTER 1. INTRODUCTION 1-3


TELEVANTAGE DEVELOPER ’S GUIDE

Installing custom applications that use TeleVantage APIs


Custom IVR Plug-ins must be installed on the TeleVantage Server and must be manually registered using the
TeleVantage Administrator. Applications that use the Client API, Add-In API, Device Status API or TAPI must have
run the TeleVantage Workstation Application installer, as described in Installing TeleVantage.

Checking the TeleVantage Version Number


When you install any application that uses the TeleVantage APIs, you should check to make sure your application is not
installed on a TeleVantage system using an older version of the corresponding API. API backward compatibility is
maintained for newer versions of TeleVantage. The version number of all TeleVantage components is stored in the
Windows registry under the “Version” key in the following registry locations:
For the TeleVantage Server (IVR Plug-In API)
HKLM\Software\Artisoft\TeleVantage\Server\Setup

For TeleVantage ViewPoint (Client API, Add-In API, TAPI and Device Status API)
HKLM\Software\Artisoft\TeleVantage\Client\Setup

CHAPTER 1. INTRODUCTION 1-4


CHAPTER 2
CHAPTER 2

THE CLIENT API


CHAPTER CONTENTS
About the TeleVantage Client API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-2
Client API object structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-2
Connecting to the Client API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-3
Structure of a session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-4
The System object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-5
The User object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-6
How folders are used . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-7
Other object structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-10
Starting a new Client API project in Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-20
Programming tips and examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-21
TELEVANTAGE DEVELOPER ’S GUIDE

About the TeleVantage Client API


The Client API contains the core objects used to create TeleVantage ViewPoint, and makes it possible for your
application to do anything that ViewPoint can do. To develop your application, you can use any development
environment that uses standard Windows COM components, for example Visual Basic, Visual Basic for Applications
(VBA), VBScript, JavaScript, C++, C#, Delphi, and so forth. Using the Client API you can create stand alone
applications, extend existing applications such as Outlook, Goldmine, Seibel, and Onyx. By using the Add-In API with
the Client API you can even extend TeleVantage ViewPoint itself with additional functionality. See “The Add-In API”
for more information.
The following lists some ideas of possible example Client API applications. Using the Client API you can also embed
this example functionality in other applications:
Q Your own custom ViewPoint GUI. Your application could do everything TeleVantage ViewPoint does and
display it in a different way, or you could choose a subset of ViewPoint functions that fit your specialized needs.
Q A specialized operator's console designed to maximize an operator’s ability to supervise the phone system.

Q A GUI representing a TeleVantage phone, that looks and operates just like a real phone.

Q An application to display a list of people who are currently available to answer calls.

Q A small application to change your greeting every day, for friends, or for everyone.

Q An application that performs wake up calls or reminder calls at scheduled times.

Q A call tracking application that sends you notification of every call made and makes it easy to track calls in a
way that fits your specialized needs.
Q An application to synchronize your TeleVantage contacts with contact databases.

Q A small utility that resides in the system tray and that allows you to change you TeleVantage personal status.

Q A small, lightweight, skinable call monitor that resides in the system tray.

Client API object structures ________________________________________


Objects in the Client API are all members of logical groups or object structures. This chapter summarizes the structure
and function of these groups.
The following sections describe the following top-level Client API object structures:
Q Session. See “Structure of a session” on page 2-4.
Q System. See “The System object” on page 2-5.
Q User. See “The User object” on page 2-6.
Q Folder. See “How folders are used” on page 2-7.

Some of the other major object structures used by the Client API are described in “Other object structures” starting on
page 2-10. For a complete reference, see Appendix D.

CHAPTER 2. THE CLIENT API 2-2


TELEVANTAGE DEVELOPER ’S GUIDE

Key to object group diagrams


The discussion of each group is accompanied by a diagram that uses the following conventions:

Connecting to the Client API _______________________________________


You connect to the Client API on a per-user basis by logging in with a valid user name and password. To be able to view
information belonging to more than one user, do either of the following:
Q Use sharing to view the other user’s voice mailbox, Call Log, Call Monitor, and so forth. For information about
sharing, see Using TeleVantage.
Q Log on to the Client API multiple times by creating multiple Session objects. You must provide a valid user
name and password for each session. You cannot bypass entering a password when logging on to the Client API.

If your Client API application will be running as a Windows service


If your Client API application will be running as a Windows service, the service must log on using a domain or local
account that is a member of the local Administrators group. You cannot use the LocalSystem account, because this
account does not have adequate networking privileges.
To assign a logon account to a Windows service:
1. Right-click My Computer, and then click Manage.
2. Expand Services and Applications and then click Services.
3. Locate your service and double-click it to open its Properties dialog box.
4. On the Log On tab, select This account.
5. Enter the account name and password to use, and confirm the password.Click OK to save your changes.

CHAPTER 2. THE CLIENT API 2-3


TELEVANTAGE DEVELOPER ’S GUIDE

Structure of a session_____________________________________________
The Session object is the root of the Client API. It contains methods for logging on and off a TeleVantage Server, and
its properties include System and User objects. When the Session logs on to a Server, the System and User objects are
automatically populated with information about the current system and the Session’s user profile.
All other information is accessed from the Session’s Folders object. By default, the Folders object contains three Folder
objects that cannot be deleted, and these Folder objects have a default Folder structure that is discussed in detail starting
on page 2-9.

This structure uses the following objects:


Q Session object (see page D-40).
Q Folders object (see page D-17). A collection of Folder objects. See “Folder types” on page 2-10 for a
description of the various folder types.
Q System object (see page D-59). Represents the system as a whole. See “The System object” on page 2-5 for a
detailed description of System object structure.
Q User object (see page D-62). Represents the currently logged in end user. See “The User object” on page 2-6
for a detailed description of User object structure.

CHAPTER 2. THE CLIENT API 2-4


TELEVANTAGE DEVELOPER ’S GUIDE

The System object _______________________________________________


The System object represents the system as a whole. It serves as the main interface between the Client API and the
Server. It contains all system-wide settings and licenses, and handles all operations that affect the system as a whole.
Operations performed through the System object will affect the entire system. Typically, only Administrator operations
will use the System object.
The System object has the structure shown below:

This structure uses the following objects:


Q LocaleCodes object (see page D-23). A collection of LocaleCode objects. Used only by the System object.
Q LocaleCode object (see page D-23). Contains a locale code identifying a TeleVantage language locale setting.
Q Schedules object (see page D-40). A collection of Schedule objects. Used only by the System object.
Q Schedule object (see page D-38). Contains a record of the times when pager and e-mail message notifications
should be sent. See “Schedule objects” on page 2-18 for a detailed description of Schedule object structure.
Q PhoneService object (see page D-31). A dialing service object containing information for dialing a number
over a standard phone line. See “Dialing Service objects” on page 2-14 for a list of all dialing service objects.
Q InternetService object (see page D-20). A dialing service object containing information for dialing a number
over the Internet. See “Dialing Service objects” on page 2-14 for a list of all dialing service objects.
Q StationTypes object (see page D-57). A collection of StationType objects. Used only by the System object.
Q StationType object (see page D-57). Contains a list of features used by a specific type of feature phone.
Q StationFeatures object (see page D-56). A collection of StationFeature objects. Used only by the StationType
object.
Q StationFeature object (see page D-56). Provides access to feature assigned to a StationButton object. See
“StationFeature objects” on page 2-19 for a detailed description of StationFeature object structure.

CHAPTER 2. THE CLIENT API 2-5


TELEVANTAGE DEVELOPER ’S GUIDE

The User object __________________________________________________


The Session’s User object represents the currently logged in end user. Depending on Permission settings, a Session User
may have permission to modify its own settings, but may still be restricted from reading or modifying the settings of
other Users. Two variations of User have been introduced to resolve this conflict — Normal and Current. The difference
between the two variations lies in how properties are read and written, and how methods are executed. Both User
variations may be in use in any given instance of a Session object. The Session will always have a Current User object.
There also may be Folders farther down in the Session structure that contain Normal Users.
The User object has the structure shown below:

This structure uses the following objects:


Q Addresses object (see page D-4). A collection of Address objects.
Q Address object (see page D-4). Contains address information.
Q Agents object (see page D-6). A collection of Agent objects. Used only by the User object.
Q Agent object (see page D-5). Provides access to Call Center agent. See “Agent objects” on page 2-11 for a
detailed description of Agent object structure.
Q Schedule object (see page D-38). Contains a record of the times when pager and e-mail message notifications
should be sent. See “Schedule objects” on page 2-18 for a detailed description of Schedule object structure.
Q SystemTarget object (see page D-61).

CHAPTER 2. THE CLIENT API 2-6


TELEVANTAGE DEVELOPER ’S GUIDE

Q Notification object (see page D-25). Contains address and schedule information for sending pager or e-mail
message notifications to the user. See “Notification objects” on page 2-16 for a detailed description of
Notification object structure. Used only by the User object.
Q AudioClip object (see page D-7). Used to create or manipulate an audio file.
Q PersonalStatus object (see page D-29). Contains a record of a personal status, as displayed in ViewPoint’s
Personal Status view. See “PersonalStatus objects” on page 2-16for a detailed description of PersonalStatus
object structure.
Q Permissions object (see page D-28). A collection of Permission objects. The Agent and User objects use this
collection to define permissions granted to a specific agent or user. A Folder object contains a collection of the
permissions required to access the folder.
Q Permission object (see page D-28). Contains a record of a permission needed for a specific feature.
Q LocaleCode object (see page D-23). Contains a locale code identifying a TeleVantage language locale setting.
Q Station object (see page D-54). Contains configuration information about a station. See “Station objects” on
page 2-19 for a detailed description of Station object structure.

How folders are used _____________________________________________


The Client API’s Folder structure corresponds to the structure displayed by TeleVantage ViewPoint. For example, the
following illustration shows ViewPoint’s Call Monitor folder.

You can see all ViewPoint (and Client API) folders on the left side of the ViewPoint window.
Selecting any folder on the left displays items of a particular type, in this case calls. The Client API encapsulates these
folders using a tree-like Folder object structure.

CHAPTER 2. THE CLIENT API 2-7


TELEVANTAGE DEVELOPER ’S GUIDE

The Folder object


A Folder object contains the following collections of objects:

Q Folders. Each Folder object contains a Folders collection object, which in turn can contain more Folder objects.
Messages and contacts can contain as many levels as you wish.
Q Items. A collection of some specific type of object. For example, the Greetings folder in the example above
would contain a set of Greeting objects. Each Greeting object would contain all of the information required for
a specific greeting. For a list of Folder types, see “Folder types” on page 2-10.
Q Views, Columns, and Fields. These collections provide you with information that you can use if you want to
duplicate some of the predefined views used by TeleVantage ViewPoint. Your program’s user interface does not
need to use these collections.
Q Permissions. A collection of Permission objects that specify how this Folder can be accessed.

CHAPTER 2. THE CLIENT API 2-8


TELEVANTAGE DEVELOPER ’S GUIDE

Default Folder structure


The Folder objects diagrammed below are always present after a Session object logs on to a Server. They are system
defaults, and they cannot be deleted. Note that some of these folders may not be present due to User permissions set by
the Administrator.

CHAPTER 2. THE CLIENT API 2-9


TELEVANTAGE DEVELOPER ’S GUIDE

Folder types
To access a default folder, you call the Session object’s GetDefaultFolder method with the appropriate folder constant
as the parameter. For example:
Set AgentFolder = Session.GetDefaultFolder(tvFolderAgents)
Valid default folder constants are specified in the enumeration “TVDefaultFolders” on page E-9. The following default
folders are available:

Folder name Folder constant Object collected (object structure description)


Agents tvFolderAgents Agent object (see page 2-11)
Agent Statistics tvFolderAgentStats AgentStat object
History tvFolderCallHistory CallHistory object (see page 2-12)
Call Rules tvFolderCallRules CallRule object (see page 2-13)
Calls tvFolderCalls Call object (see page 2-12)
Contacts tvFolderContacts Contact object (see page 2-13)
Empty root-level folder. Only used to access a user’s
Current User tvFolderCurrentUser
personal folders.
Deleted tvFolderDeleted Message object that has been deleted by the user.
Greetings tvFolderGreetings Greeting object (see page 2-15)
Message tvFolderMessages Message object (see page 2-15)
Personal Status tvFolderPersonalStatus PersonalStatus object (see page 2-16)
Queue Statistics tvFolderQueueStats QueueStat object
Routing Lists tvFolderRoutingLists RoutingList object (see page 2-17)
Services tvFolderServices all “Dialing Service” objects (see page 2-14)
System Targets tvFolderSystemTarget
Users tvFolderUsers User object (see page 2-6)
Workgroups tvFolderWorkgroups Workgroup object (see page 2-20)

Other object structures____________________________________________


Previous sections in this chapter describe the following top-level Client API object structures:
Q Session. (“Structure of a session” on page 2-4)
Q System. (“The System object” on page 2-5)
Q User. (“The User object” on page 2-6)
Q Folder. (“How folders are used” on page 2-7)

This section discusses some of the other major object structures used by the Client API. Most of these structures have
their own Folder type (as described in “Folder types” on page 2-10). The following structures are described:
Q Agent object (see page 2-11). Provides access to Call Center agent. Used only in the User object structure.
Q Call object (see page 2-12). Provides access to a call and methods to manipulate the call, including real time
information as the call changes state, just like it is displayed in the TeleVantage ViewPoint Call Monitor view.
Created by the Session object when a call is received or placed.

CHAPTER 2. THE CLIENT API 2-10


TELEVANTAGE DEVELOPER ’S GUIDE

Q CallHistory object (see page 2-12). Provides access to call history details for when a call has been completed
or disconnected, just like what is displayed in the ViewPoint Call Log view.
Q CallRule object (see page 2-13). Provides access to a call rule, similar to what is displayed in the ViewPoint
Call Rules view.
Q Contact object (see page 2-13). Provides access to a contact, similar to what is displayed in the ViewPoint
Contacts view.
Q Dialing Service objects (see page 2-14). Contains information about the dialing services defined for the
system.
Q Greeting object (see page 2-15). Provides access to a greeting, similar to what is displayed in the ViewPoint
Greetings view. Used in the CallRule, PersonalStatus, and RoutingList object structures.
Q Message object (see page 2-15). Describes a voice message and related information.
Q Notification object (see page 2-16). Describes address and schedule information for sending pager or e-mail
message notifications to the user. Used only in the User object.
Q PersonalStatus object (see page 2-16). Describes a record of a personal status, as displayed in the ViewPoint
Personal Status view. Used in the CallRule and User objects.
Q RoutingList object (see page 2-17). Provides access to a routing list, similar to what is displayed in the
ViewPoint Routing Lists view. Used in the CallRule and PersonalStatus objects.
Q Schedule object (see page 2-18). Describes a record of the times when pager and e-mail message notifications
should be sent. Used in the CallRule, Notification, System, and User object structures.
Q Shortcut object (see page 2-18). Describes information that can be used to locate and access a specific Folder
object.
Q Station object (see page 2-19). Describes configuration information about a station. Used in the Session and
User objects.
Q StationFeature object (see page 2-19). Describes access to feature assigned to a StationButton object. Used in
the Station and System object structures.
Q Workgroup object (see page 2-20). Describes access to workgroup, similar to what is displayed in the
ViewPoint Workgroups view.

For a complete reference, see Appendix D.

Agent objects
Agent objects contain information about a Call Center agent.

Agent objects can be collected in an Agents object or in a folder of type tvFolderAgents. This structure uses the
following objects:
Q Agent object (see page D-5).
Q Agents object (see page D-6). A collection of Agent objects. Used only by the User object.
Q Permission object (see page D-28). Contains a record of a permission needed to access a specific folder.
Permission objects can be collected in a Permissions object. Used only by the Permissions object.

CHAPTER 2. THE CLIENT API 2-11


TELEVANTAGE DEVELOPER ’S GUIDE

Q Permissions object (see page D-28). A collection of Permission objects. The Agent and User objects use this
collection to define permissions granted to a specific agent or user. A Folder object contains a collection of the
permissions required to access the folder.

Call objects
Provides access to a call’s real-time status and methods to manipulate the call, as displayed in the ViewPoint Call
Monitor view. Created by the Session object when a call is received.

Call objects can be collected in a folder of type tvFolderCalls. This structure uses the following objects:
Q Call object (see page D-8).
Q Address object (see page D-4). Contains address information for a contact.
Q Party object (see page D-26). Contains information about one of the parties involved in a call, such as the
caller, the recipient, a member of a conference, and so forth. Party objects can be collected in a Parties object..
Q Parties object (see page D-26). A collection of Party objects.

CallHistory objects
Provides access to call, similar to what is displayed in the ViewPoint Call Log view.

CallHistory objects can be collected in a folder of type tvFolderHistory. This structure uses the following objects:
Q CallHistory object (see page D-12).
Q PartyHistory object (see page D-27). Contains information concerning one party in a call.
Q PartyHistories object (see page D-27). A collection of PartyHistory objects. Used only by the CallHistory
object.

CHAPTER 2. THE CLIENT API 2-12


TELEVANTAGE DEVELOPER ’S GUIDE

CallRule objects
Provides access to call rule, similar to what is displayed in the ViewPoint Call Rules view.

CallRule objects can be collected in a folder of type tvFolderCallRules. This structure uses the following objects:
Q CallRule object (see page D-13).
Q Greeting object (see page D-18). Provides access to a greeting, similar to what is displayed in the ViewPoint
Greetings view. See “Greeting objects” on page 2-15 for a detailed description of Greeting object structure.
Q PersonalStatus object (see page D-29). Contains a record of a personal status, as displayed in ViewPoint
Personal Status view. See “PersonalStatus objects” on page 2-16 for a detailed description of PersonalStatus
object structure.
Q RoutingList object (see page D-35). Provides access to a routing list, similar to what is displayed in ViewPoint
Routing Lists view. See “RoutingList objects” on page 2-17 for a detailed description of RoutingList object
structure.
Q Schedule object (see page D-38). Contains a record of the times when pager and e-mail message notifications
should be sent. See “Schedule objects” on page 2-18 for a detailed description of Schedule object structure.

Contact objects
Contains information about contacts, similar to what is displayed in the ViewPoint Contacts view. Used by the Address
object and the Call, CallHistory, and Message object structures.

CHAPTER 2. THE CLIENT API 2-13


TELEVANTAGE DEVELOPER ’S GUIDE

Contact objects can be collected in a folder of type tvFolderContacts or in a set of WorkgroupMembers objects (see
“Workgroup objects” on page 2-20 for a detailed description of Workgroup object structure). This structure uses the
following objects:
Q Contact object (see page D-14).
Q Addresses object (see page D-4). A collection of Address objects.
Q Address object (see page D-4). Contains address information for a contact.
Q LocaleCode object (see page D-23). Contains a locale code identifying a TeleVantage language locale setting.
Q AudioClip object (see page D-7). Used to create or manipulate an audio file.

Dialing Service objects


Dialing service objects contain information about the dialing services defined for a user. See “Dialing Service types” in
Administering TeleVantage for a detailed description of each service.

Dialing Service objects are collected in a Folder of type tvFolderServices. This structure uses the following objects:
Q InternetService object (see page D-20). A dialing service object containing information for dialing a number
over the Internet.
Q PhoneGatewayService object (see page D-30). A dialing service object containing information for dialing a
number over an IP Gateway.
Q PhoneService object (see page D-31). A dialing service object containing information for dialing a number
over a standard phone line.
Q RoutingService object (see page D-37). Contains information used to select the dialing service based on the
number dialed.
Q SwitchGatewayService object (see page D-58). A dialing service object containing information for dialing a
number over an IP Gateway that connects to a remote Server and then dials the number from that Server.
Q SwitchService object (see page D-58). A dialing service object containing information for dialing a Centrex or
PBX extension or other custom numbers over analog and digital trunks that may be connected to external
switches.
Q IDialingService object (see page D-19). A generic interface used to communicate with any of the dialing
service objects.
Q IPhoneService object (see page D-21). A generic interface used to communicate with PhoneService,
PhoneGatewayService, and RoutingService objects.

CHAPTER 2. THE CLIENT API 2-14


TELEVANTAGE DEVELOPER ’S GUIDE

Greeting objects
Provides access to a greeting, similar to what is displayed in ViewPoint Greetings view. Used by the CallRule,
PersonalStatus, RoutingList object structures.

Greeting objects can be collected in a folder of type tvFolderGreetings. This structure uses the following objects:
Q Greeting object (see page D-18).
Q AudioClip object (see page D-7). Used to create or manipulate an audio file.

Message objects
Contains a voice message and related information. Used in the CallHistory object structure.

Message objects can be collected in a folder of type tvFolderMessages. This structure uses the following objects:
Q Message object (see page D-23).
Q Recipients object (see page D-34). Collection object containing a list of Contact and Workgroup items.
Q AudioClip object (see page D-7). Used to create or manipulate an audio file.
Q Address object (see page D-4). Contains address information for a contact.

CHAPTER 2. THE CLIENT API 2-15


TELEVANTAGE DEVELOPER ’S GUIDE

Notification objects
Contains address and schedule information for sending pager or e-mail message notifications to the user. Used only in
the User object.

Notification objects are used by the User and Queue objects, but are not collected by any collection object or default
Folder type. This structure uses the following objects:
Q Notification object (see page D-25).
Q Address object (see page D-4). Contains address information for a contact.
Q NotifyScheduleItems object (see page D-25). A collection of NotifyScheduleItem objects. Used only by the
Notification object.
Q NotifyScheduleItem object (see page D-25). Contains a record of when pager or e-mail notifications should be
sent. Used only by the NotifyScheduleItems object.
Q Schedule object (see page D-38). Contains a record of the times when pager and e-mail message notifications
should be sent. See “Schedule objects” on page 2-18 for a detailed description of Schedule object structure.

PersonalStatus objects
Contains a record of a personal status, as displayed in the ViewPoint Personal Status view. Used by the CallRule and
User objects.

CHAPTER 2. THE CLIENT API 2-16


TELEVANTAGE DEVELOPER ’S GUIDE

PersonalStatus objects can be collected in a folder of type tvFolderPersonalStatus. This structure uses the following
objects:
Q PersonalStatus object (see page D-29).
Q Address object (see page D-4). Contains address information for a contact.
Q Greeting object (see page D-18). Provides access to greeting, similar to what is displayed in the ViewPoint
Greetings view. See “Greeting objects” on page 2-15 for a detailed description of Greeting object structure.
Q RoutingList object (see page D-35). Provides access to routing list, similar to what is displayed in the
ViewPoint Routing Lists view. See “RoutingList objects” on page 2-17 for a detailed description of RoutingList
object structure.
Q AudioClip object (see page D-7). Used to create or manipulate an audio file.

RoutingList objects
Provides access to a routing list, similar to what is displayed in the ViewPoint Routing Lists view. Used by the CallRule
and PersonalStatus objects.

RoutingList objects can be collected in a folder of type tvFolderRoutingLists. This structure uses the following objects:
Q RoutingList object (see page D-35).
Q RoutingListActions object (see page D-36). A collection of RoutingListAction objects.
Q RoutingListAction object (see page D-36). Contains a record of a single routing list action.
Q RoutingListFinalAction object (see page D-37). Contains a record of the final action in a routing list.
Q Address object (see page D-4). Contains address information for a contact.
Q Greeting object (see page D-18). Provides access to greeting, similar to what is displayed in the ViewPoint
Greetings view. See “Greeting objects” on page 2-15 for a detailed description of Greeting object structure.

CHAPTER 2. THE CLIENT API 2-17


TELEVANTAGE DEVELOPER ’S GUIDE

Schedule objects
Contains a record of the times when pager and e-mail message notifications should be sent. Used by the CallRule,
NotifyScheduleItem, and User objects.

Schedule objects can be collected in the Schedules object. Schedule objects do not have a default Folder type. This
structure uses the following objects:
Q Schedule object (see page D-38).
Q Schedules object (see page D-40). A collection of Schedule objects. Used only by the System object.
Q ScheduledDates object (see page D-38). A collection of ScheduledDate objects.
Q ScheduledDate object (see page D-38). Contains a record of a date and time when pager and e-mail message
notifications should be sent.
Q ScheduledDays object (see page D-39). A collection of ScheduledDay objects.
Q ScheduledDay object (see page D-39). Contains a record of times on specific days of the week when pager and
e-mail message notifications should be sent.

Shortcut objects
Contains information that can be used to locate and access a specific Folder object. Used by the Session objects.

Shortcut objects can be collected in the Shortcuts object. This structure uses the following objects:
Q Shortcut object (see page D-47).
Q Shortcuts object (see page D-48). A collection of Shortcut objects.
Q ShortcutGroup object (see page D-47). Provides access to a group of shortcuts, for example, the General and
Advanced shortcut groups displayed in the ViewPoint view bar. ShortcutGroup objects can be collected in the
ShortcutGroups object.
Q ShortcutGroups object (see page D-47). A collection of ShortcutGroup objects.

CHAPTER 2. THE CLIENT API 2-18


TELEVANTAGE DEVELOPER ’S GUIDE

Station objects
Contains configuration information about a station. Used by the Session and User objects.

Station objects do not have a default Folder type. This structure uses the following objects:
Q Station object (see page D-54).
Q StationButtons object (see page D-55). A collection of StationButton objects.
Q StationButton object (see page D-55). Provides access to specialized button on a feature phone.
Q Address object (see page D-4). Contains address information for a contact.
Q SystemTarget object (see page D-61).
Q StationFeature object (see page D-56). Provides access to feature assigned to a StationButton object. See
“StationFeature objects” on page 2-19 for a detailed description of StationFeature object structure.

StationFeature objects
Provides access to feature assigned to a StationButton object.

StationFeature objects are used by the User object and are collected in the StationFeatures object (which is used only in
the System object). StationFeature objects do not have a default Folder type. This structure uses the following objects:
Q StationFeature object (see page D-56).
Q StationFeatures object (see page D-56). A collection of StationFeature objects. Used only by the StationType
object in the System object structure.
Q StationParameters object (see page D-57). A collection of StationParameter objects.
Q StationParameter object (see page D-56). Contains a parameter required by a StationFeature object.

CHAPTER 2. THE CLIENT API 2-19


TELEVANTAGE DEVELOPER ’S GUIDE

Workgroup objects
Provides access to a workgroup, similar to what is displayed in the ViewPoint Workgroups view.

Workgroup objects can be collected in a folder of type tvFolderWorkgroups, or in a set of WorkgroupMember objects.
Each Workgroup object contains a WorkgroupMembers collection. The WorkgroupMember objects in a
WorkgroupMembers collection can contain either Contact objects or Workgroup objects. This structure uses the
following objects:
Q Workgroup object (see page D-65).
Q WorkgroupMembers object (see page D-66). A collection of WorkgroupMember objects.
Q WorkgroupMember object (see page D-66). Contains either a Contact object or a Workgroup object.
Q Contact object (see page D-14). Contains information about contacts, similar to what is displayed in the
ViewPoint Contacts view. See “Contact objects” on page 2-13 for a detailed description of Contact object
structure.

Starting a new Client API project in Visual Basic _______________________


The following procedure creates a Visual Basic project and adds the Client API to it. At that point you can start
developing your own Client API application.
To start a new Client API project
1. Start Visual Basic and open a new Standard EXE project.

CHAPTER 2. THE CLIENT API 2-20


TELEVANTAGE DEVELOPER ’S GUIDE

2. In the VB main menu, choose Project > References. In the References window, select the checkbox for
TeleVantage 7.0 Object Library.

Programming tips and examples____________________________________


This section contains tips and examples that demonstrate how to perform some common tasks via the TeleVantage
Client API.
Q “How do I log in and start a new session with various phones?” See page 2-22.

Q “How do I get events for any item?” See page 2-23.

Q “How do I export a list of voice messages?” See page 2-23.

Q “How do I create a TeleVantage contact?” See page 2-23.

Q “How do I create a TeleVantage user?” See page 2-24.

Q “How do I create a call?” See page 2-25.

Q “How do I answer an incoming call?” See page 2-26.

Q “How do I hold and retrieve a call?” See page 2-27.

Q “How do I identify who owns a call?” See page 2-27.

Q “How do I find who is assigned to extension 102?” See page 2-28.

Q “How do I locate a dialing service by its access code?” See page 2-28.

Q “How do I find a specific Call object” See page 2-28.

Q “How do I check the availability of a user (extension)?” See page 2-29.

Q “How do I check the status of a user?” See page 2-29.

Q “How do I check the status of a call center agent?” See page 2-29.

Q “How do I sign a call center agent in and out?” See page 2-30.

Q “How do I record conversations between call center agents and external callers?” See page 2-31.

Q “How do I check the status of an ACD workgroup agent?” See page 2-31.

Q “How do I change personal status?” See page 2-32.

Q “How do I store data with a party in a call?” See page 2-33.

CHAPTER 2. THE CLIENT API 2-21


TELEVANTAGE DEVELOPER ’S GUIDE

How do I log in and start a new session with various phones?

Typical log on
Dim oSession As TeleVantage.Session
Set oSession = New TeleVantage.Session

’ Log on to the TeleVantage Server.


’ "32402" is a unique number used to identify the application using this Session object.
oSession.Logon "Server_Name", "Joe User", "****", 2, tvApplicationTypeClient, "32402", , False

Logging on to another user’s station (hot desking)


Dim oSession As TeleVantage.Session
Dim eStationUsage As TeleVantage.TVStationUsage
Set oSession = New TeleVantage.Session

’ Set eStationUsage to tvStationUsageVisitor, to place and answer calls as the current user
’ associated with Station 4
’ Set eStationUsage to tvStationUsageOwner, to place and answer calls as Joe User on Station 4
’ Set eStationUsage to tvStationUsageOwnerAndForwardCalls, to place and answer calls as Joe User
’ on Station 4, and forward Joe User’s calls to Station 4
eStationUsage = tvStationUsageOwner

’ Log on to the TeleVantage Server.


’ "32402" is a unique number used to identify the application using this Session object.
oSession.Logon "Server_Name", "Joe User", "****", 4, tvApplicationTypeClient, "32402", , False,
eStationUsage

Logging on to a remote number


Dim oSession As TeleVantage.Session
Dim tLogonAddressInfo As TeleVantage.TVLogonAddressInfo
Set oSession = New TeleVantage.Session

’ The AccessCode specifies which dialing service to use. "" will use the default
’ dialing service for the address type specified.
tLogonAddressInfo.AccessCode = ""

’ The AddressType specifies the type of remote number. Only tvAddressTypePhoneNumber,


’ tvAddressTypeIP, and tvAddressTypeCustom are valid
tLogonAddressInfo.AddressType = tvAddressTypePhoneNumber
tLogonAddressInfo.StationUsage = tvStationUsageOwner
tLogonAddressInfo.Value = "6175551234"

’ Log on to the TeleVantage Server.


’ "32402" is a unique number used to identify the application using this Session object.
oSession.Logon_v6 "Server_Name", "Joe User", "****", tLogonAddressInfo, tvApplicationTypeClient,
"32402", , False

CHAPTER 2. THE CLIENT API 2-22


TELEVANTAGE DEVELOPER ’S GUIDE

How do I get events for any item?


This code is specific for calls, but you can do the same with call history (new call log entries) voice messages or any
other item in any type of folder that you want to get events.

Dim oCallFolder As TeleVantage.Folder


Dim oCallItems As TeleVantage.Items

’ Assuming oSession was created and is already logged-in as shown earlier


’ Get the default folder of the desired type of item (in this case calls)
Set oCallFolder = oSession.GetDefaultFolder(tvFolderCalls)

’ Get the items collection from the folder to register for events for this type of item
’ (in this case calls)
Set oCallItems = oCallFolder.Items

How do I export a list of voice messages?


The following sample code exports a list of voice messages and then plays one over the phone via the API.
Dim oAudioClip As TeleVantage.AudioClip
Dim oFile As Object
Dim oFileSystemObject As Object
Dim oMessage As TeleVantage.Message
Dim oMessageFolder As TeleVantage.Folder
Dim oMessageView As TeleVantage.View
Dim sExportString As String
Dim sMessageID As String

’ Assuming oSession was created and is already logged-in


’ Get the Messages Folder.
Set oMessageFolder = oSession.GetDefaultFolder(tvFolderMessages)

’ Get the Messages View and export (as XML) the column data.
Set oMessageView = oMessageFolder.Views.Item(1)
sExportString = oMessageView.Export(tvExportTypeData)

’ Write the exported data to an XML file.


Set oFileSystemObject = CreateObject("Scripting.FileSystemObject")
Set oFile = oFileSystemObject.CreateTextFile(App.Path & "\" & "MessageData.xml", True)
oFile.write sExportString
oFile.Close

’ Assuming we parsed the XML file for the object ID of a message (and stored it ’in sMessageID)
’ Get the actual message object from the system and play it over the handset.
Set oMessage = oSession.GetItem(sMessageID)
Set oAudioClip = oMessage.AudioClip
oAudioClip.DeviceType = tvAudioDevicePhone
oAudioClip.Play

How do I create a TeleVantage contact?


’ This sample code creates a TeleVantage contact.
Dim oAddress As Address
Dim oContact As Contact
Dim oContactsFolder As Folder

CHAPTER 2. THE CLIENT API 2-23


TELEVANTAGE DEVELOPER ’S GUIDE

’ Assuming oSession was created and is already logged-in


’ Get the Contacts Folder.
Set oContactsFolder = oSession.GetDefaultFolder(tvFolderContacts)

’ Create a new Contact object.


Set oContact = oContactsFolder.Items.Add(tvClassContact)

’ Set the Contact properties.


oContact.FirstName = "Jim"
oContact.LastName = "Williams"
oContact.PIN = "123"

’ Add a new Address object to the Contact.


Set oAddress = oContact.Addresses.Add()

’ Set the Address properties for the new Contact.


oAddress.AddressType = tvAddressTypePhoneNumber
oAddress.Category = tvAddressCategoryHome
oAddress.Description = "Jim’s home number"
oAddress.Value = "6175551234"

’ Make sure the address uses the dialing rules defined in the Dialing Service
oAddress.AddressSubType = tvAddressSubTypeUseRules
oAddress.Default = True ’ This will make this the default address for this contact

’ Call the Validate method so that all assigned fields can be checked.
oAddress.Validate True

’ Save the new Contact.


oContact.Save

How do I create a TeleVantage user?


’ This sample code creates a user.
Dim oAddress As TeleVantage.Address
Dim oSession As TeleVantage.Session
Dim oUser As TeleVantage.User
Dim oUsersFolder As TeleVantage.Folder
Set oSession = New TeleVantage.Session

’ Log on to the TeleVantage Server as a user that has privileges to create users on the Server.
’ "32402" is a unique number used to identify the application using this Session object.
oSession.Logon "Server_Name", "Admin", "100", 2, tvApplicationTypeClient, "32402", , False

’ Get the Users Folder.


Set oUsersFolder = oSession.GetDefaultFolder(tvFolderUsers)

’ Create a new User object.


Set oUser = oUsersFolder.Items.Add(tvClassUser)

’ Set the User properties.


oUser.FirstName = "Joe"
oUser.LastName = "Smith"
oUser.Extension = "117"
oUser.Company = "Joe’s Stuff, Inc."
oUser.VoiceTitle.Import "c:\voice titles\JoeVoiceTitle.wav"

CHAPTER 2. THE CLIENT API 2-24


TELEVANTAGE DEVELOPER ’S GUIDE

’ Add a new Address object to the User.


Set oAddress = oUser.Addresses.Add()

’ Set the Address properties for the new User.


oAddress.AddressType = tvAddressTypeStation
oAddress.Category = tvAddressCategoryNone
oAddress.Description = "Address for Joe Smith"
oAddress.Value = 2 ’station 2
oAddress.Default = True ’this will make station 2 Joe’s default address

’ Call the Validate method so that all assigned fields can be checked for correctness.
oAddress.Validate True

’ Save the new User.


oUser.Save

How do I create a call?

Creating a personal call to a user


’ This sample code creates a call to a user.
Dim oAddress As TeleVantage.Address
Dim oCall As TeleVantage.Call
Dim oSystemTargetFolder As TeleVantage.Folder
Dim oTarget As TeleVantage.SystemTarget ’ System Targets are items that appear in the extension view

’ Assuming oSession was created and is already logged-in


’ Get the user’s ID and set the address type to tvAddressTypeUser.
Set oSystemTargetFolder = oSession.GetDefaultFolder(tvFolderSystemTarget)
Set oTarget = oSystemTargetFolder.Items("Sally Jones", tvSearchKey)
Set oAddress = oSession.CreateAddress(oTarget.ID, tvAddressTypeUser)

’ Start the call. The station used in the Logon method of this session should ring.
Set oCall = oSession.CreateCall(oAddress)

Creating a personal call to an external number


’ This sample code creates a call to an external number.
Dim oAddress As TeleVantage.Address
Dim oCall As TeleVantage.Call

’ Assuming oSession was created and is already logged-in


’ Create an Address object that contains the information necessary to make a call.
Set oAddress = oSession.CreateAddress("617-555-1212", tvAddressTypePhoneNumber, _
tvAddressSubTypeUseRules, oSession.System.DefaultPhoneService)

’ Start the call. The station used in the Logon method of this session should ring.
Set oCall = oSession.CreateCall(oAddress)

CHAPTER 2. THE CLIENT API 2-25


TELEVANTAGE DEVELOPER ’S GUIDE

Creating a queue call ’


’ This sample code creates a queue call to an external number.
Dim oAddress As TeleVantage.Address
Dim oCall As TeleVantage.Call

’ Assuming oSession was created and is already logged-in


’ Create an Address object that contains the information necessary to make a call.
Set oAddress = oSession.CreateAddress("617-555-1212", tvAddressTypePhoneNumber, _
tvAddressSubTypeUseRules, oSession.System.DefaultPhoneService)

’ Start the call. The station used in the Logon method of this session should ring.
Set oCall = oSession.CreateCallAs(oAddress, oSession.User.Agents.Item(1).QueueID)

How do I answer an incoming call?


’ This sample code answers an incoming call.

’ Global Variables
Private WithEvents oSession As Session
Private sCurrentCallID As String
Private bCurrentlyInACall As Boolean
Private oCurrentCall As TeleVantage.Call

Private Sub RegisterForCallEvents()

' This MUST be executed before you will get call events.
Dim oCallFolder As TeleVantage.Folder
Dim oCallItems As TeleVantage.Items

' Assuming oSession was created and is already logged-in


' Get the default folder of the desired type of item (in this case calls)
Set oCallFolder = oSession.GetDefaultFolder(tvFolderCalls)

' Get the items collection from the folder to register for events for this type of item (again in this
case calls)
Set oCallItems = oCallFolder.Items
End Sub

Private Sub oSession_CallStatusChange(ByVal ID As String, ByVal Status As TeleVantage.TVPartySta-


tus, ByVal OldStatus As TeleVantage.TVPartyStatus)

' We get this event anytime the status of any Call object changes.
' The value of ID is a unique identifier for each instance of a Call object.
' We can use OldStatus and Status to see what the actual transition was.
' For example, you could check to see if a particular call went from Ringing to Active.
' In this very basic example, we will answer a call only if its status is "Ringing" and
' ignore any other incoming calls until the first one hangs up.

CHAPTER 2. THE CLIENT API 2-26


TELEVANTAGE DEVELOPER ’S GUIDE

’ Helpful debug statements


Debug.Print "START oSession_CallStatusChange"
Debug.Print "Call: " & ID
Debug.Print "Old Status: " & OldStatus
Debug.Print "New Status: " & Status

’ Since this event can be raised for any number of concurrent calls, check the unique ID to make sure
’ we are dealing with the same Call object. Ignore any other call objects for the time being.
If (sCurrentCallID <> ID) Then
Debug.Print "New Call!"
sCurrentCallID = ID

’ Get the actual Call object based on the ID.


Set oCurrentCall = oSession.GetItem(sCurrentCallID)
Else
Debug.Print "Existing Call!"
End If

’ Make sure that


’ 1) the caller did not hang up between the beginning of this event and now, and
’ 2) we are not currently in a call.
If (oCurrentCall.Status <> tvPartyStatusDisconnected) And (Not bCurrentlyInACall) Then

’ Answer the call if the status of the Call object is "Ringing".


If (oCurrentCall.Status = tvPartyStatusRinging) Then
 oCurrentCall.Answer
bCurrentlyInACall = True ’ Ignore any other incoming calls for now
End If
End If

’ If the call we are in gets disconnected, clear out the ID variable and
’ set bProcessingCall to False so we can process the next call.
If (bCurrentlyInACall) And (oCurrentCall.Status = tvPartyStatusDisconnected) Then
sCurrentCallID = ""
bCurrentlyInACall = False ’ Now we can allow another incoming call
End If

Debug.Print "END oSession_CallStatusChange"


End Sub

How do I hold and retrieve a call?


Call.Hold puts a call on hold. Call.Answer will take it back (see “Call object” on page D-8).

How do I identify who owns a call?


Call.OwnerParty identifies who owns a call. This is useful when looking at a shared Call Monitor or a call center queue
to identify which user TeleVantage is targeting for the call (by ringing that user’s phone) or which user has answered.

CHAPTER 2. THE CLIENT API 2-27


TELEVANTAGE DEVELOPER ’S GUIDE

How do I find who is assigned to extension 102?


Dim oTarget As TeleVantage.SystemTarget
Dim oTargetFolder As TeleVantage.Folder

’ Assuming oSession was created and is already logged-in

Set oTargetFolder = oSession.GetDefaultFolder(tvFolderSystemTarget)

’ Get the name of the SystemTarget with an extension of "102"


For Each oTarget In oTargetFolder.Items
If (oTarget.Extension = "102") Then
sName = oTarget.Name

Exit For
End If
Next

How do I locate a dialing service by its access code?


The Service folder contains information on all dialing services. You can look at the AccessCode property of each service.
’ This sample code loops through the Service folder and matches the AccessCode.
Dim oServiceFolder As Folder

Set oServiceFolder = oSession.GetDefaultFolder(tvFolderServices)


For Each oService In oServiceFolder.Items
If (oService.AccessCode = "9") Then
Exit For
End If
Next

How do I find a specific Call object


When dealing with inbound calls, you can use the Session ItemAdd, ItemChange, ItemRemove, or CallStatusChange
events to get the ID of each call. You can then pass the ID to Session.GetItem(), which will return the Call object. To
determine which folder the call is in, use Call.Parent.
The can be multiple call folders. In ViewPoint, each call folder maps to the tabs at the bottom of the Call Monitor
window (though there is no “all calls” folder in the Client API). For example, Queue calls that haven't yet been routed
to your logged-in user would be in the Queue's call folder. If you know which folder you want to work with, you can
loop through the calls in that folder, as shown in the following example.
’ This sample code loops through a Calls folder so we can work with a specific call.
Set fCall = oSession.GetDefaultFolder(tvFolderCalls)
For Each oCall In fCall.Items

’ <do something with the call>


Next

CHAPTER 2. THE CLIENT API 2-28


TELEVANTAGE DEVELOPER ’S GUIDE

How do I check the availability of a user (extension)?


’ This sample code determines the availability of a user (extension).
Dim eAvailability As TeleVantage.TVSystemTargetAvailability
Dim oTarget As TeleVantage.SystemTarget
Dim oTargetFolder As TeleVantage.Folder

’ Assuming oSession was created and is already logged-in

' Get the user from the system target’s folder


Set oTargetFolder = oSession.GetDefaultFolder(tvFolderSystemTarget)
Set oTarget = oTargetFolder.Items.Item("Jane User", tvSearchKey)
eAvailability = oTarget.Availability

How do I check the status of a user?


To check the personal status of the currently signed in user, check Session.User.LastAppliedStatus. To check other
users’ statuses, you need read permission to the User folder. Loop through the folder until you find the appropriate user
and check the User.LastAppliedStatus.

How do I check the status of a call center agent?


This code sample can also be used to find a call center agent given a user name and queue name.
Dim oAgentStat As TeleVantage.AgentStat
Dim oFolder As TeleVantage.Folder
Dim oTargetQueue As TeleVantage.SystemTarget
Dim oTargetUser As TeleVantage.SystemTarget
Dim eStatus As TeleVantage.TVAgentStatus
Dim sQueueID As String
Dim sUserID As String

' Assuming oSession was created and is already logged-in


Set oFolder = oSession.GetDefaultFolder(tvFolderSystemTarget)

' Get the SystemTarget object for the Queue.


Set oTargetQueue = oFolder.Items("Queue 1", tvSearchKey)

' Get the ID of the Queue, we must strip the first character off to get the Queue ID.
sQueueID = Mid$(oTargetQueue.ID, 2)

' Get the SystemTarget object for the Queue.


Set oTargetUser = oFolder.Items("Jane Agent", tvSearchKey)

' Get the ID of the User, we must strip the first character off to get the User ID.
sUserID = Mid$(oTargetUser.ID, 2)

Set oFolder = oSession.GetDefaultFolder(tvFolderAgentStats)

CHAPTER 2. THE CLIENT API 2-29


TELEVANTAGE DEVELOPER ’S GUIDE

’ Find the AgentStat object for the agent, by matching QueueID and UserID.
For Each oAgentStat In oFolder.Items
If (oAgentStat.QueueID = sQueueID And oAgentStat.UserID = sUserID) Then
’ Get the status of the agent.
eStatus = oAgentStat.Status

Exit For
End If

How do I sign a call center agent in and out?


Dim oAgentStat As TeleVantage.AgentStat
Dim oFolder As TeleVantage.Folder
Dim oTargetQueue As TeleVantage.SystemTarget
Dim oTargetUser As TeleVantage.SystemTarget
Dim eStatus As TeleVantage.TVAgentStatus
Dim sQueueID As String
Dim sUserID As String

’ Assuming oSession was created and is already logged-in

Set oFolder = oSession.GetDefaultFolder(tvFolderSystemTarget)

’ Get the SystemTarget object for the Queue.


Set oTargetQueue = oFolder.Items("Queue 1", tvSearchKey)

’ Get the ID of the Queue, we must strip the first character off to get the Queue ID.
sQueueID = Mid$(oTargetQueue.ID, 2)

’ Get the SystemTarget object for the Queue.


Set oTargetUser = oFolder.Items("Jane Agent", tvSearchKey)

’ Get the ID of the User, we must strip the first character off to get the User ID.
sUserID = Mid$(oTargetUser.ID, 2)

Set oFolder = oSession.GetDefaultFolder(tvFolderAgentStats)

’ Find the AgentStat object for the agent, by matching QueueID and UserID.
For Each oAgentStat In oFolder.Items
If (oAgentStat.QueueID = sQueueID And oAgentStat.UserID = sUserID) Then

CHAPTER 2. THE CLIENT API 2-30


TELEVANTAGE DEVELOPER ’S GUIDE

’ If the agent is an observer (i.e. not signed in), sign them in, otherwise sign them out.
If (oAgentStat.Observer) Then
Call oAgentStat.SignIn
Else
Call oAgentStat.SignOut
End If

Exit For
End If
Next

How do I record conversations between call center agents and external callers?
Call.RecordStart, Call.RecordStop, Call.RecordPause, and Call.RecordResume allow you to record both queue
and non-queue calls.
In the following example, Target specifies which user’s inbox to which the recording will be sent. The time stamp and
name of the person who did the recording are included as well. All recordings are sent to the user’s inbox; you cannot
send recordings to a different folder. If you do not modify the default TimeOut parameter, the recording will not stop
until some outside event occurs such as a RecordStop. TermDigits allows you to specify a key (for example, #) that
stops the recording when the key is pressed on the keypad.
RecordStart(Target, [Format], [TimeOut], [TermDigits], [Beep])
Target as SystemTarget object.
Format as TVCallRecordFormat. Optional. Default value is 3 (tvCallRecordFormatPCM8K).
TimeOut as Long. Optional. Default value is -1.
TermDigits as String. Optional. Default value is "".
Beep as Boolean. Optional. Default value is 0 (false).
RecordStop()

Note: This example uses the default call recording format tvCallRecordFormatPCM8K. If you use a different call
recording format, playback of the recording from ViewPoint or converting the recording to a .WAV file in order to forward
it via e-mail it will not work. You can use one of the non-default call recording formats if your application manages playback
itself.

How do I check the status of an ACD workgroup agent?


If you are interested in the status of an ACD workgroup agent, check to see if the user is a member of the appropriate
workgroup, and check the User.ACDDoNotDisturb property.

CHAPTER 2. THE CLIENT API 2-31


TELEVANTAGE DEVELOPER ’S GUIDE

How do I change personal status?


This example shows how to change personal status via the API. One way to use this technique is to integrate this code
with a program written using the Microsoft Outlook API that monitors scheduled events in Outlook. Whenever a
scheduled meeting starts, the program automatically changes personal status to “In a Meeting”. When the meeting
completes, the program then changes personal status back to “Available”.
’ This sample code changes Personal Status to "In a Meeting"

Private WithEvents oSession As Session


Private Sub Command1_Click()

’ Session and User object variables


Dim oSession As New Session
Dim oUser As User

’ Variables to hold the collection of Personal Status objects for user


Dim oPersonalStatusFolder As Folder
Dim oPersonalStatus As TeleVantage.PersonalStatus

’ Log on to the TeleVantage Server.


’ “32402” is a unique number used to identify the application using this Session object.
oSession.Logon "Server_Name", "Joe Smith", "****", 2, tvApplicationTypeClient, "32402", , False

’ Get the User object


Set oUser = oSession.User

’ Get the Personal Status Folder


Set oPersonalStatusFolder = oSession.GetDefaultFolder(tvFolderPersonalStatus)

’ Look at each Personal status object in the folder until we find "*In A Meeting"
’ Note that the Name field of statuses are prefixed with "*"
For Each oPersonalStatus In oPersonalStatusFolder.Items
If oPersonalStatus.Name = "*In A Meeting" Then

’ Use the ApplyStatus method with our "*In A Meeting" Personal status object
oUser.ApplyStatus oPersonalStatus
End If
Next

’ Destroy objects and log off Server


Set oUser = Nothing
Set oPersonalStatusFolder = Nothing
Set oPersonalStatus = Nothing
oSession.LogOff

End Sub

CHAPTER 2. THE CLIENT API 2-32


TELEVANTAGE DEVELOPER ’S GUIDE

How do I store data with a party in a call?


Call.SetCustomData/Party.SetCustomData allow for custom data storage on a party in the call. For a conference call,
Call.SetCustomData is a shortcut to store the custom data on the owner party, and in a 2 party call it is a shortcut to
store the custom data on the “other” party in the call.
Once the custom data has been set, it can be retrieved using Call.CustomData/Party.CustomData. For a conference
call, Call.CustomData is a shortcut to get the custom data from the owner party, and in a 2 party call it is a shortcut to
get the custom data from the “other” party in the call. Also note that data will not be immediately available after being
set until the next Change event is received for the call.

Storing custom data:

Dim oCall As TeleVantage.Call


Dim oParty As TeleVantage.Party
Dim oCallFolder As TeleVantage.Folder

’ Assuming oSession was created and is already logged-in


Set oCallFolder = oSession.GetDefaultFolder(tvFolderCalls)

’ Assuming there is at least 1 call in this folder.


Set oCall = oCallFolder.Items(1)

’ Set some custom data on the call.


’ If this call is a 2 party call then data will be stored on the "other" party,
’ otherwise it will be stored on the owner party.
oCall.SetCustomData "DataName 1", "DataValue 1"

’ Set some custom data on the owner party in the call.


oCall.OwnerParty.SetCustomData "DataName 2", "DataValue 2"

Retrieving custom data:

Dim oCall As TeleVantage.Call


Dim oParty As TeleVantage.Party
Dim oCallFolder As TeleVantage.Folder
Dim sData1 As String
Dim sData2 As String

’ Assuming oSession was created and is already logged-in

Set oCallFolder = oSession.GetDefaultFolder(tvFolderCalls)

’ Assuming there is at least 1 call in this folder.


Set oCall = oCallFolder.Items(1)

’ Get our custom data from the call.


’ If this call is a 2 party call then data will be retrieved from the "other" party,
’ otherwise it will be retrieved from the owner party.
sData1 = oCall.CustomData("DataName 1")

’ Get our custom data from the owner party in the call.
sData2 = oCall.OwnerParty.CustomData("DataName 2")

CHAPTER 2. THE CLIENT API 2-33


CHAPTER 3
CHAPTER 3

THE ADD-IN API


CHAPTER CONTENTS
About the TeleVantage Add-In API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-2
How Add-Ins work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-2
Add-In API Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-5
TELEVANTAGE DEVELOPER ’S GUIDE

About the TeleVantage Add-In API___________________________________


The Add-In application programming interface (API) allows you to develop custom applications that extend
TeleVantage ViewPoint with enhanced functionality. These applications, called Add-Ins, are loaded by TeleVantage
ViewPoint and extend it with new menus, toolbar options, and automatic processing of calls and other data. The Add-In
API also exposes a reference to ViewPoint’s Session object so an Add-In can easily manage and change data for the
currently logged in ViewPoint user using the Client API. For more information on the Client API, see Chapter 2.
For example, using the Add-In API you can extend ViewPoint so:
Q users can right click on a Contact or extension number and click an Instant message or E-mail menu choice to
send the contact or user an instant message or E-mail message using any available instant messaging or E-mail
APIs.
Q whenever a TeleVantage contact calls a user, the contact’s picture is displayed.

Q users can click on a custom toolbar icon to launch another Windows application.

Q agents can click to have their supervisor coach them in a difficult call

Q users can click a menu choice to look up data on the caller in the Call Monitor, Call Log, or Voice Messages
view.
Q users can click a custom “Export to Excel” menu on ViewPoint’s Tools menu to export the contents of the
current ViewPoint view to an Excel spreadsheet.

The Reverse Phone Number Lookup Sample Add-In


The TeleVantage SDK includes Visual Basic 6 source code for a sample Add-In called Reverse Phone Number Lookup.
This Add-In displays a web page (e.g. Google) to look up the phone number for a call, contact, voice message or call
log entry when a user right clicks on a ViewPoint item and selects the Reverse Phone Number Lookup menu choice.
The SDK installer (TVSDK.EXE) copies the source code to TVReversePhoneLookup.DLL to
the..\samples\addins\ReversePhoneLookup subdirectory. The fastest way to learn how to develop your own Add-In
is to open and browse through this ReversePhoneLookup commented sample source code, or modify it to suit your own
needs.
See Using TeleVantage for information on using the TeleVantage ViewPoint Add-In Manager and the compiled
Reverse Phone Number Lookup Add-In (TVReversePhoneLookup.DLL), which is automatically installed to the
Server’s \NetSetup directory.

How Add-Ins work________________________________________________


Overview
Add-Ins are software components you can develop that communicate with TVClient.exe, the executable for the
TeleVantage ViewPoint application. TVClient.exe exposes a COM object called TVClient which includes several
interfaces that make up the Add-In API. The primary TVCLient interface is IAddIn. The IAddIn interface must be
implemented in your application for it to be recognized by ViewPoint as an Add-In. The methods exposed by IAddIn
notify your Add-In application of changes in a ViewPoint session (e.g. when ViewPoint is loaded, when folders are
changed, when menus are clicked, etc.) The IAddIn interface also allows Add-Ins to effect a ViewPoint session by
adding new choices on ViewPoint menus, right click menus, or toolbar buttons, as well as change text on the ViewPoint
status bar and more. Most importantly, the IAddIn interface provides a reference to the Client API Session object used
by the user logged into ViewPoint so Add-Ins can get notification of all call and Server data, and receive the same events
that ViewPoint receives. This allows Add-Ins to do anything a Client API application can do, without the need to log in
or consume additional memory since they share the ViewPoint Session object. Unlike regular Client API applications,
Add-Ins have the advantage of knowing exactly what the user is doing in ViewPoint. Add-Ins are the most integrated
way to add functionality to ViewPoint.

CHAPTER 3. THE ADD-IN API 3-2


TELEVANTAGE DEVELOPER ’S GUIDE

Installing Add-Ins with the ViewPoint Add-In Manager


When a user attempts to add a new Add-In using the Add-In Manager, ViewPoint opens a dialog to browse for Add-Ins
located in the \NetSetup folder of the TeleVantage Server. Once the Add-In is selected, ViewPoint copies the Add-In
file to the user’s PC and registers it.

In this way, Add-Ins that require only one file (the compiled Add-In DLL or EXE) to locally exist on the TeleVantage
ViewPoint PC can be distributed without any installation program. If you want your single file Add-In to be accessible
by every TeleVantage User, all you need to do is copy the file to the Server’s NetSetup directory and inform the users
to select it via the Add-In manager.
Add-Ins that require multiple files to be installed on the users PC must be installed using an installation program you
develop yourself, which you can also copy to the \NetSetup folder for them to run using Windows Explorer.
Once an Add-In is added by the Add-In manager ViewPoint loads the Add-In software component into memory. Once
added, the Add-In is automatically loaded every time ViewPoint is started until expressly removed or disabled using the
Add-In manager. Using the Add-In Manager to disable or remove the Add-In causes the Add-In to be terminated as
described below.

Add-In Initialization
As soon as ViewPoint loads an Add-In, the IAddIn.Initialize method is invoked which will cause your Add-In’s class
to initialize -- assuming you have implemented the IAddIn interface in your Add-In application. The IAddIn.Initialize
method passes to your application a reference to the same Session and Application object ViewPoint is using, allowing
you to immediately get at the same data ViewPoint has access to. There is no need to log on to the Client API to obtain
a Session object, since the user has already logged into ViewPoint (and hence the Client API) before the Add-In was
loaded.
Once initialized, the IAddIn.GetAddInInfo method is invoked to allow your Add-In to describe itself to the Add-In
manager so the user can understand its purpose and set up any custom Add-In properties (e.g. options) you provide. You
can set the Add-In’s display name, Author, Description, Version, and indicate if there are any custom Add-In properties
that can be set by the user. If there are Add-In properties the user can click the Add-In Manager’s Options button to
display the properties. Clicking options will invoke the IAddIn_ShowProperties method so your Add-In can display
a form where the user can specify the Add-In options. Typically the results of these options should be persisted by your
Add-In in the Windows registry, file or a database you maintain.

Folder Changes
After the Add-In is initialized, the IAddIn_FolderChanged method is invoked which passes a reference to the currently
visible Folder, Pane and Explorer. An example ViewPoint Folder is the voice messages inbox. An example Pane is the
Call Monitor’s Extensions Pane (so you can see Extensions and calls at the same time). The ViewPoint application
window (the entire window you see when you start ViewPoint) is the main Explorer, and each time a user right-clicks
a folder and chooses “Open in a New Window” a new ViewPoint Explorer window is created, which can be separately
resized and minimized from the main ViewPoint explorer.

CHAPTER 3. THE ADD-IN API 3-3


TELEVANTAGE DEVELOPER ’S GUIDE

Armed with this information provided by the IAddIn_FolderChanged method your Add-In can do whatever processing
it needs on the active folder in the current Explorer. In addition, when the IAddIn_FolderChanged is invoked the Add-In
should store the active folder in a variable. Later when ViewPoint executes methods to add menu choices or toolbar
buttons (which can occur as late as when someone clicks a menu choice), you can refer to the active folder you stored
to quickly add the folder’s corresponding custom menu choices and toolbar buttons that are required by your Add-In
(see below).
Every time the user changes the active ViewPoint folder, or makes a pane visible or invisible, or opens a new Explorer,
the TVClient IAddIn_FolderChanged method is invoked for all Add-Ins loaded by ViewPoint.

Adding Custom Menu Choices and Toolbar Buttons


After the active folder changes, the IAddIn_AddCommand method is invoked to set up any custom toolbar buttons at
the end of the active folder’s toolbar. By changing the values passed in by the IAddIn_AddCommand method you can
optionally specify the toolbar button’s caption, tool-tip, and picture. You also can indicate if you want to keep adding
additional buttons to the toolbar or not.
In addition, the IAddIn_AddCommand method is invoked whenever a user selects ViewPoint’s Tools or Actions menu.
The Actions menu is the one that changes contents to match the current folder, e.g. for the Call Monitor, the Actions
menu has menu choices to take calls, transfer, conference, etc. The IAddIn_AddCommand method is also invoked
whenever a user right clicks on the empty space in a folder’s view (the Add menu) or right clicks on an item in a folder’s
view (the Edit menu). Just like toolbar buttons, by changing the values passed in by the IAddIn_AddCommand method
you can optionally specify a new menu choice’s caption, tool-tip, picture and also if it is checked or not or enabled. You
also can indicate if you want to keep adding additional menus to the pull-down or pop up menu or not. You can of course
also add separators to toolbars or menu choices. You can also add keyboard short cuts to the toolbar.
For every toolbar button or menu choice you add, the IAddIn_AddCommand method provides unique CommandID so
you later can identify which button or menu is clicked and respond appropriately (see below). Even if you add the same
command to different ViewPoint explorer windows or folders, you will have a different CommandID for each menu
choice.
If you want, you can enabled, disable, and remove menu choices every time a menu is clicked since ViewPoint menus
are built on the fly as the menu is displayed. You can’t remove toolbar buttons from a folder until the folder is changed.
Responding to Users Clicking Custom Menus and Toolbar Buttons
When the user clicks an Add-In’s custom toolbar button or menu choice, the IAddIn_CommandClicked method is
invoked providing the CommandID to identify which command was clicked, and also provides the selected item in the
view. If multiple items were selected the Add-In can access those items as well. Armed with all of this information an
Add-In can query the Client API’s Session object and the rest of the Client API to get complete details on the selected
item(s). For example you could obtain the name of the selected user in the Extensions view, or the selected contact’s
business phone number. Then with that information you could send it to someone as an instant message or E-mail using
various other APIs.
Add-In Termination
The IAddIn_Disposing method is invoked to let you know your Add-In will be unloaded by user request. The method
also lets you know the reason your Add-In is being unloaded. Add-Ins can be unloaded by the Add-In Manager,
ViewPoint shutting down, or when Windows shuts down.
If unloading at this time is not appropriate (e.g. your Add-In is performing a database update) you are given the
opportunity to Cancel unloading which will also cancel whatever operation caused the unloading in the first place.
Immediately before your Add-In is unloaded, the IAddIn_Disposed method is invoked allowing you to perform any
final clean up (close database connections, etc.) before the Add-In is unloaded.

Other Add-In Capabilities


Add-Ins have additional capabilities. For more information, see the Reverse Phone Number Lookup sample Add-In, the
Add-In reference below, the Client API, and browse the TVClient object and its IAddIn interface as exposed by
TVClient.EXE in any object browser (press F2 in Visual Basic if the SDK’s sample Reverse Phone Number Lookup
project is loaded).

CHAPTER 3. THE ADD-IN API 3-4


TELEVANTAGE DEVELOPER ’S GUIDE

Add-In API Reference _____________________________________________


The Add-In API is a COM object called TVClient that is exposed by a reference to TVClient.EXE, which is the
TeleVantage ViewPoint application. From Visual Basic add the “TeleVantage 7.0 Client” as a reference for the project.
The Add-In library is contained in the ViewPoint application itself, tvclient.exe. To develop an Add-In the
application must implement a reference to the IAddIn Interface. For example in Visual Basic, you would specify the
following line of code in your AddIn class:
Implements TVClient.IAddIn

IAddIn Interface

Initialize Method
Sub Initialize(Application As Application, Session As Session)
This method is called immediately after an Add-In is created - ViewPoint passes an Application object with information
about ViewPoint and the Client API session object it is using.

GetAddInInfo Method
Function GetAddInInfo() As AddInInfo
This method is called whenever information about an Add-In is required. The Add-In should fill in and return the
AddInInfo structure with the following data:
Name, Author, Description, HasProperties, AddInVersion, Version, Major, Minor, Build
The HasProperties value is a boolean that determines whether the Add-In has a options page which tells the Add-In
manager dialog whether or not to enable the options button.
The AddInVersion value specifies which version of ViewPoint Add-In model the Add-In was written against - this
should be set to 1 since this is the first version. Later versions of ViewPoint can use this value to know which callbacks
should be fired.

FolderChanged Method
Sub FolderChanged(ExplorerKey As String, Pane As Pane, FolderID As String)
This method is called whenever a folder changes in either the main or secondary client pane. The FolderID will be blank
if there is no folder - for example if the secondary pane is turned off.
The ExplorerKey specifies which explorer instance (ViewPoint window - generally only one unless someone uses “open
in a new window”) and the Pane (PaneNone, PanePrimary or PaneSecondary).

SelectionChanged Method
Sub SelectionChanged(ExplorerKey As String, Pane As Pane, SelectedID As String, MultipleSelection As
Boolean)
This method is called whenever the selection changes. The ExplorerKey and Pane tell you which explorer and pane had
the change. The SelectedID will be blank if there is no selection - otherwise it will be the ID of the main selected item.
If there is more than one selected item the MultipleSelection parameter will be set to true.

AddCommand Method
Sub AddCommand(ExplorerKey As String, Pane As Pane, Location As CommandLocation, CommandNumber As
Long, ID As Long, Caption As String, ToolTip As String, Picture As StdPicture, Enabled As Boolean,
Checked As Boolean, AddAnotherCommand As Boolean, ShortCut as String)
This method is called whenever a menu or toolbar is created. A menu is created whenever an item is right clicked or
whenever a menu is dropped down from the menu bar. The toolbar is created whenever there is a folder switch.

CHAPTER 3. THE ADD-IN API 3-5


TELEVANTAGE DEVELOPER ’S GUIDE

The Location parameter tells you where the commands are to be added - the options are:
CommandLocationActionsMenu, CommandLocationContextMenuNew (Right click menu in a blank area of the grid),
CommandLocationContextMenuOpen (Right click menu for a selected item), CommandLocationToolbar and
CommandLocationToolsMenu.
This method is called repeatedly per Add-In as long as the AddAnotherCommand value is set to true. When an Add-In
is done adding commands for a menu it should be set to false.
The CommandNumber value indicates which command is being added - 1 for the first, 2 for the second, etc. so an
Add-In can figure out which command it needs to add.
If the Add-In returns a blank Caption that means no command should be added, a dash “-” will add a separator, and
anything else will add that as a caption.
If ShortCut is specified and the Location parameter is set to Tools menu, then the corresponding keyboard shortcut will
cause the command to trigger. Note that ShortCuts cannot be added to other CommandLocations (like menus) since
menus are built on the fly when the menu is clicked. Toolbars are loaded when the folder changes which allows them
to be used as short cuts. You can use “Alt”, “Control” and “Shift” in the string to specify the <Alt>, <Control> and
<Shift> keys respectively. You must spell out the words “Control” and “Shift”. The shortcut must be specified in Alt,
Control, Shift order. Entering “Control+Alt+N” will generate an error. There cannot by any spaces within the string.
CommandClicked Method
Sub CommandClicked(ID As Long, SelectedID As String, MultipleSelection As Boolean)
This method is called whenever a command has been clicked. The ID from the previous AddCommand is supplied along
with selection parameters that work the same as the SelectionChanged method.
ExplorerResized Method
Sub ExplorerResized(ExplorerKey As String)
This method is called whenever an explorer is resized, minimized, maximized, or restored.

Disposing Method
Sub Disposing(Reason As DisposeReason, Cancel As Boolean)
This method is called before an Add-In is unloaded - the reason values are:
DisposeReasonAddInDisabled, DisposeReasonAddInUnloaded, DisposeReasonClientClosing or
DisposeReasonWindowsShutdown
The Add-In has the ability to cancel the ViewPoint shutdown - if any Add-In wants to cancel, the shutdown will be
canceled.

Disposed Method
Sub Disposed()
This method is called immediately before the Add-In is unloaded. Any final clean up should be done here by your
Add-In.

ShowProperties Method
Sub ShowProperties()
This method is called whenever someone clicks on the Options button of the Add-In manager dialog. An Add-In should
then display its own options dialog.

CHAPTER 3. THE ADD-IN API 3-6


TELEVANTAGE DEVELOPER ’S GUIDE

Application object
The Application object exposes the following:
Name-The title of the application
Version-Major, minor, and build numbers
Session-ViewPoint’s session object
Explorers-A object that manages the list of open explorers
Explorer object
Each Explorer object exposes the following:
Caption-Caption of the explorer window (read only)
CloseExplorer-Method to close the explorer
FolderID-ID of the current folder - blank if none (read only)
Height-Height of the explorer
hWnd-Window handle of the explorer (read only)
Key-The key of this explorer in the collection (read only)
Left-Left position of the explorer
SelectedItems-Collection of selected IDs for this explorer - you can specify which pane (read only)
StatusText-Set/Get the status bar text for the explorer - stays until something else changes it
Top-Top position of the explorer
Width-Width of the explorer
WindowState-Window state (tvMaximized, tvMinimized, tvNormalWindow) of the explorer
.

CHAPTER 3. THE ADD-IN API 3-7


CHAPTER 4
CHAPTER 4

THE IVR PLUG-IN API


CHAPTER CONTENTS
About the TeleVantage IVR Plug-in API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-2
How the IVR Plug-in components work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-3
Using the Customer ID IVR Plug-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-6
IVR Plug-in API quick reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-9
TELEVANTAGE DEVELOPER ’S GUIDE

About the TeleVantage IVR Plug-in API_______________________________


The IVR Plug-in API enables one or more custom IVR or call processing applications to run on the same PC as the
TeleVantage Server. These applications, called IVR Plug-ins, appear to Administrators and Users just like regular
TeleVantage extensions. IVR Plug-Ins can process incoming calls from trunks or stations, and also place outbound calls.
The TeleVantage IVR Plug-in API provides native support for basic IVR functions (Play, Record, Get Digits, Play Tone,
Play Numbers, Play Dollar Amounts, etc.) without requiring a 3rd-party IVR toolkit. You can use the IVR Plug-in API
to perform operations such as the following:
Q Place calls to extensions or external numbers and perform basic call progress analysis

Q Get notification of new calls from the TeleVantage Server

Q Retrieve Caller ID, DID, or other call data

Q Change or add standard or custom call data to the call

Q Get digits from the caller or play digits

Q Play or record audio prompts

Q Speak numbers, dates, times, characters, ordinals, and money amounts in any language supported by the Server

Q Perform database lookups

Q Hang up or transfer the call back to any TeleVantage extension, auto attendant, voice mail box, or even another
IVR Plug-in.

IVR Plug-ins must be installed and run on the TeleVantage Server as they require the access to the TeleVantage Server’s
telephony hardware. They cannot connect be run on a non-TeleVantage Server PC networked to the TeleVantage
Server. You must register your IVR Plug-in and assign it an extension using the IVR Plug-in view in the TeleVantage
Administrator before it can be used.

Using a 3rd party IVR toolkit with the IVR Plug-in API
While the TeleVantage IVR Plug-in API provides the most common IVR functions, if you need to perform voice
recognition, speech synthesis, or PerfectCall™ call progress analysis you may want to use a voice processing toolkit
such as Intel NetMerge™ CT Application Development Environment (Intel NetMerge CT ADE.) As of this printing,
the TeleVantage IVR Plug-in API is tested to be compatible with Intel NetMerge CT ADE version 8.2 so that CT ADE
applications developed with the IVR Plug-in API can run on the TeleVantage Server and share the Server’s telephony
hardware resources.
Note: The IVR Plug-in API does not work with applications developed using the CT ADE Application Development
Language (ADL, formerly known as VOS.) If you wan to use Intel’s CT ADE with the IVR Plug-In API you must use
the CT ADE’s Application Development ActiveX* Objects (ADX, formerly known as Call Suite.)

IVR Plug-in API component and sample applications


The IVR Plug-in API is exposed to your applications through a TeleVantage software component. The library is
contained in tvivr.tlb, which is located in the \Program Files\Common Files\Vertical\TeleVantage directory when
you install the TeleVantage Server or the TeleVantage SDK. See “IVR Plug-in API quick reference” on page 4-9 for
more information.
Several sample IVR Plug-ins written in Visual Basic 6.0 are installed with the TeleVantage SDK including one written
in C# and VB.NET. Other samples are posted to http://webboard.Vertical.com/~SDK. The samples provided when
installing the TeleVantage SDK come in two versions: PlugInMedia samples that use the IVR Plug-in API’s built-in
voice processing capabilities and CT ADE samples that require the CT ADE ActiveX objects. By default, samples are
located in \Program Files\TeleVantage SDK\TeleVantage or \Program Files\TeleVantage
SDK\TeleVantage\CallSuite, respectively. You must have Visual Basic 6.0 to use the sample programs as is, or modify
them to meet your needs.

CHAPTER 4. THE IVR PLUG-IN API 4-2


TELEVANTAGE DEVELOPER ’S GUIDE

The following Visual Basic 6 samples are provided:


Q First. . This small IVR Plug-in demonstrates the most basic layout and design of an IVR Plug-in. It answers a
call, plays a voice file, and then returns the caller to the active routing list.
Q CustID. This IVR Plug-in demonstrates how to transfer customers to different agents automatically, based on
the customer’s area code obtained from their Caller ID or their customer record. It also includes a CustomerID
database manager to maintain the Customer and Agent database tables accessed by the CustomerID IVR Plug-in.
The program can be used to customize the customer and agent data for your location.
Q OutBound. This sample includes two IVR Plug-ins (PlaceCall and ReceiveCall) that demonstrate how an IVR
Plug-in (PlaceCall) can place outbound calls that are handled by the ReceiveCall Plug-in. It then plays a voice
prompt, and then transfer the calls to a TeleVantage user.
Q OrderStatus. This IVR Plug-in answers calls, prompts the caller for their 5 digit order number, searches a
Orders database for a matching record and then reads back the order status, e.g. Your order number [12345] was
shipped on [December 31, 2002] and totalled [$123.56]

How the IVR Plug-in components work ______________________________


IVR Plug-ins are, in Microsoft component object model (COM) terms, ActiveX EXEs, or that you can develop using
Visual Basic, Visual C++, Visual Studio .NET or any other Windows development tool that supports the COM
requirements of the IVR-plug in interface. Every time the extension of an IVR Plug-in extension is called the
TeleVantage Server creates a separate instance of the IVR Plug-in that runs in its own thread of execution (in COM
terms an apartment). IVR Plug-ins can then query standard call data such as Caller ID or DID and custom data such as
customer ID, and use the facilities provided by Visual Basic or Visual C++ perform any processing such database
queries or updates. IVR Plug-ins are network-independent so you do not need to know if the call originated on an IP,
T1, E1, analog trunk, or even a phone station. IVR Plug-ins can also update standard or custom call data. All call data
follows the call after the IVR Plug-in is finished and can be displayed in the TeleVantage Client’s Call Monitor, Call
Log and Voice Messages view if properly configured.
IVR Plug-ins can optionally perform voice processing tasks (e.g. Please enter your order number followed by the # key)
by borrowing a voice resource from the TeleVantage Server. Use the IVR Plug-in GetMedia method to obtain a Media
object to perform basic voice processing such as collecting touchtone digits, playing and recording voice files, speaking
numbers, money, dates/times, and playing tones. For advanced voice processing that exceed the Media object’s
capabilities such as voice recognition, speech synthesis, or faxing you must purchase a 3rd party telephony toolkit such
as Intel’s CT ADE or use the low level Dialogic C API. You then use the IVR-Plug-in GetDevice method to borrow a
voice resource from the TeleVantage Server so the 3rd party telephony toolkit can perform voice processing on the call.
When the IVR Plug-in finishes processing the call, you use the IVR Plug-in CallDone method to hang up, transfer to
any extension or phone number, or send the call to any voice mail box.
If the caller hangs up before the IVR Plug-in finished processing the call, TeleVantage will notify the IVR Plug-in so it
can stop processing and perform any necessary clean up before the IVR Plug-in is terminated. If the IVR Plug-in
borrowed a voice resource the TeleVantage Server reclaims the resource at that time. Unresponsive IVR Plug-ins that
do not call any IVR Plug-in methods within a 4 minute period (configurable) are also terminated to reclaim voice
resources and memory.

Monitoring standard and custom call data


IVR Plug-ins have access to all basic call data such as Caller ID, and can change this call data while processing the call.
IVR Plug-ins can also set and change any custom call data you need such as social security number, customer ID,
address, and so on. All call data are attached to the party in the call, and if the party is transferred, the call data follows
them.
To display a list of all the custom call data associated with a call in the Client’s Call Monitor, Call Log or Voice
Messages view, click Tools > Columns for each view, and make sure the Custom Data column is displayed.

CHAPTER 4. THE IVR PLUG-IN API 4-3


TELEVANTAGE DEVELOPER ’S GUIDE

Additionally, the Call Monitor supports adding a unique custom column for each custom data field you want to view.
To see a custom column in the Call Monitor click Tools > Columns, then click Custom Columns. Add a custom
column with the same name as the key in your IVR Plug-in that you want to display.
Note: You cannot change custom call data from the Call Monitor, but you can from IVR Plug-ins, Auto Attendants,
Queues and various TeleVantage add-ons, including the Call Classifier.

IVR Plug-in licensing


IVR Plug-ins are licensed at runtime and count against your station licenses. Your system may be configured to support
an unlimited number of IVR Plug-ins, but each simultaneous call to an IVR Plug-in will consume one station license.
The station license will be released after the IVR Plug-in calls the CallDone method, or if TeleVantage terminates the
IVR Plug-in because it is unresponsive or the caller has hung up. Note if your IVR Plug-In is only using the PlugInServer
Interface (and no other IVR Plug-In interfaces at all) no station license is used.
For example, if you have a system with 16 station licenses, and 15 of those stations are assigned to users, you have one
free station license that can be applied to calling an IVR Plug-in. If one person makes a call to an IVR Plug-in, and a
second person makes a call to the same or a different IVR Plug-in, the second person will hear a message that the
extension is not available, an error will be logged to the TeleVantage Server’s Windows Event Log saying that the
station license count has been exceeded. Finally, the call to the IVR Plug-in will either be disconnected, or transferred
to the extension you specified in the IVR Plug-in’s definition in the Administrator.
Note: If you decide to use CallSuite or another voice processing toolkit in conjunction with an IVR Plug-in be aware that
third party toolkits often impose additional per port licensing fees beyond the station license requirement for any IVR
Pug-in. See your telephony toolkit’s documentation for details. The IVR Plug-In’s PlugInMedia interface performs basic
voice processing without requiring additional per-port fees beyond the usual station license requirement.

Reserving Station Licenses for IVR Plug-ins


You can reserve a pool of TeleVantage station licenses for IVR Plug-ins so you can know the exact number of
simultaneous calls to IVR Plug-Ins supported by your system. You cannot reserve more station licenses for a particular
IVR Plug-In, as reserved station licenses can be used by any IVR Plug-In installed on the Server. Reserved station
licenses can not be used by an Administrator when assigning station IDs to TeleVantage Users. To specify the number
of station licenses to reserve, select Tools > System Settings > Licenses > Reserved from the Administrator.

Registering and configuring IVR Plug-ins


Before you can use an IVR Plug-in you need to copy and register it on the TeleVantage Server and configure it using
the TeleVantage Administrator:
1. If you have compiled your IVR Plug-in to an EXE (using Visual Basic or another tool) on the TeleVantage
Server, you can skip to step 3. Otherwise, copy the IVR Plug-in’s EXE (e.g. CustID.exe) to any directory on
the TeleVantage Server. If applicable, also copy any other files required by the IVR Plug-in such as supporting
software components or database files.
2. To register your IVR Plug-in’s EXE, open a command prompt and change to the directory where you copied
the IVR Plug-in. Then, enter the following command:
{IVR Plug-in EXE name} /regserver
For example:
CustID.exe /regserver

CHAPTER 4. THE IVR PLUG-IN API 4-4


TELEVANTAGE DEVELOPER ’S GUIDE

3. Using the TeleVantage Administrator, switch to the IVR Plug-ins view.

4. Choose IVR Plug-Ins > New IVR Plug-In. The IVR Plug-in dialog box opens:

5. Enter the following information:


Q Name. Name of the IVR Plug-in, for example, “Customer ID”. This name appears in the Extensions list and
the Place Call and Transfer To dialog boxes in the TeleVantage Client.
Q Extension. Extension assigned to the IVR Plug-in. Any available extension will work. See “Assigning an
Extension” in Administering TeleVantage for restrictions and recommendations when entering extensions.
See the Dial Plan view to see which extensions are available.
Q DID number. When TeleVantage recognizes this number as the final digits on an inbound call, the caller is
automatically connected to this IVR plug-in, bypassing the main auto attendant. To assign multiple DID
numbers to an IVR Plug-in, separate each one with a comma (,).
Q Program ID. The program ID of the IVR Plug-in application. For Visual Basic applications, the format is
“ActiveXname.Classname”, where ActiveXname is the name of the project (in Visual Basic 6.0 see Project
> Properties), and Classname is the name of the class that TeleVantage will instantiate. For example, the
TeleVantage Customer ID sample application’s program ID is CustID.Media1.

CHAPTER 4. THE IVR PLUG-IN API 4-5


TELEVANTAGE DEVELOPER ’S GUIDE

6. To record a voice title for the IVR Plug-in, use the audio controls. The voice title is used in many call-screening
features, for example, when an auto attendant transfers a call. The audio controls and how to use them are
described in Administering TeleVantage.
7. To eliminate startup time when the first call comes in for the IVR Plug-in, select the Start one instance when
the server is started checkbox.
Note: Startup time depends on the size and complexity of the IVR Plug-in. Most small applications start
quickly. If the application takes longer to start, select this option.

8. If you want calls to this IVR Plug-in to be logged to a particular tenant or organization, check Organization
and select the desired organization from the drop-down list, or click to create a new organization.
9. Click Hang up or Transfer To to specify how TeleVantage will handle calls to this IVR Plug-in if there are not
enough station licenses for the IVR Plug-in, the Program ID is invalid, or there was a problem creating the IVR
Plug-in. If you select Transfer To, specify where TeleVantage should transfer the caller in the list of extensions.
10. To initialize a custom data variable each time the IVR Plug-in gets a call, select the Set custom data when
this IVR Plug-in is called checkbox. Select the Variable name from the drop-down list, or click to create
a new variable. Enter the initial Variable value in the text box.
Note: .

11. Click OK to save the IVR Plug-in.

Using the Customer ID IVR Plug-in __________________________________


The IVR Plug-in API includes a sample IVR Plug-in named Customer ID, located in the \Program Files\TeleVantage
SDK\TeleVantage\CustID directory. The sample identifies customers via Caller ID and the transfers them to the agent
that handles their area code. The sample also attaches to the call some data about the caller that it retrieves from a
customer database so the agent is prepared for the call before they answer
Specifically the Customer ID IVR Plug-in checks to see if the Caller ID matches a record in a Microsoft Access customer
database, and if so searches an agent table for the agent that handles the caller’s area code. It then attaches custom data
to the call for the customer’s city, state and customer ID before transferring the call to appropriate agent.
If there is no matching Caller ID, the Customer ID IVR Plug-in prompts the caller for a Social Security Number (SSN)
and matching Personal Identification Number (PIN). If the customer does not have a PIN, they are allowed to enter one.
Once identified the customer is handled just as if their Caller ID had been identified. If the sample cannot identify the
caller via Caller ID, or SSN/PIN, the call is transferred to the operator.
To run the Customer ID sample:
1. Configure the Customer ID sample as described above in “Registering and configuring IVR Plug-ins” on
page 4-4.
2. Make sure your Server has a user assigned to an extension number that is in the agent database. The sample
database already contains an entry for extension number 102. If necessary, you can use the sample database
manager to change the extension assignments and customer data in the database (see “Managing the Customer
ID database” on page 4-7).
3. Start the TeleVantage Client for the user logged in and assigned to extension 102. To display all the custom
data in a single column in the Call Monitor view, choose View > Current View > Show Columns, and make
sure the Custom Data field is added to the list of columns that will be shown.
If you prefer to display each field in separate columns, using the TeleVantage Administrator select Tools >
Custom Data, click Add and specify a string variable called CustomerID, then repeat the process to add
another for City, and State. The custom column names are case sensitive, so be sure to enter them exactly as
shown. Then you can add those custom columns to the Call Monitor view by choosing View > Current View
> Show Columns, and add the Customer ID, City and State columns to the list of columns that will be shown.

CHAPTER 4. THE IVR PLUG-IN API 4-6


TELEVANTAGE DEVELOPER ’S GUIDE

4. To call the sample IVR Plug-in application, call the extension you assigned to it in the previous steps. If you
hear the IVR Plug-in answer the call, skip to step 5.
If you do not hear it answer with an audio prompt, try the following:
Q Check the Windows Event Log for any errors generated by the IVR Plug-in

Q Check the Device Monitor for the station or trunk you are using to make the call, to view any custom
status messages that the IVR Plug-in is reporting.
Q Make sure you have installed and configured the IVR Plug-in properly as previously described. A
common problem is entering the wrong Program ID.
5. Since your call probably does not have a Caller ID that matches any customer record in the sample database,
you will be prompted to enter a valid social security number. The sample database already contains a customer
record with the social security number 000000000, which you can enter at the prompt.
6. When prompted, press 5656, which is the customer’s four-digit PIN number.
7. The call should be transferred to extension 102.
The Call Monitor for extension 102 should show the Customer ID, City and State for the customer, either in
the Custom Data column or the CustomerID, City, and State columns, depending how you configured your
Call Monitor in step 3.
8. Manually transfer the call to another extension. The same custom data will appear in that user’s Call Monitor,
as long as their Call Monitor is also properly configured to view the custom data. The data also will follow the
call to the Call Log and the voice messages view if a message was left.

Managing the Customer ID database


To change or add records to the Customer ID sample IVR Plug-in database, including your own Caller ID numbers and
list of agents:
1. Run CustIDAdmin.exe, located in the \Program Files\TeleVantage SDK\TeleVantage\CustID directory.
2. Change any of the customer data in the Caller Information window.

3. Change any of the agent extension and area code data in the Area Codes window.

CHAPTER 4. THE IVR PLUG-IN API 4-7


TELEVANTAGE DEVELOPER ’S GUIDE

Working with the Customer ID sample code


To modify, change or extend the sample application, you must have Microsoft’s Visual Basic 6.0 installed, preferably
with Service Pack 5 or higher. However, if you just want to view the sample code, Notepad or any text editor will work.
Q With Visual Basic 6, open the CustID.VBP project located in the \Program Files\TeleVantage
SDK\TeleVantage\CustID directory. Modify the code as needed and compile the IVR Plug-in to change its
behavior.
The Customer ID database program can also be modified using Visual Basic 6 and opening the
CustIDAdmin.VBP project.
Q Without Visual Basic 6, you can see the code and how it works by opening Media1.cls in any text editor such
as Notepad.Running an IVR Plug-in that has a GUI

Running an IVR Plug-in that has a GUI


The following steps are required for any IVR Plug-in that has a GUI:
1. On the TeleVantage Server, go to the Windows Control Panel, and select Services. On some versions of
Windows, Services is located in the Administrative Tools group.
2. Right-click the TeleVantage Server service and click Properties.
3. On the Log On tab, select the Allow service to interact with desktop checkbox.
4. Click OK to save your change.

Debugging IVR Plug-ins in Visual Basic


Visual Basic 6.0 cannot debug applications started by Windows services. Since TeleVantage is a Windows service that
starts your IVR Plug-in, you need to force TeleVantage to run as a standard executable before you can debug an IVR
Plug-in with Visual Basic. These procedures do not have to be performed for IVR Plug-ins written in Visual C++ or
other development tools that can debug applications started from Windows services.
To debug an IVR-Plug-in Visual Basic
1. Perform the steps in “Running an IVR Plug-in that has a GUI” mentioned above.
2. Stop the TeleVantage Server.
3. To make the TeleVantage Server run as an executable rather than a Windows service, start the TeleVantage
Server using the /regserver option, for example:
C:\Program Files\TeleVantage Server>tvserver /regserver
4. When TeleVantage is not run as a Windows service, the following debugging window appears:

Note: You cannot start the Server through the TeleVantage Device Monitor or Administrator when
TeleVantage is set up to run as a standard executable rather than a Windows service. However, you can still
run these applications to manage your TeleVantage Server.

CHAPTER 4. THE IVR PLUG-IN API 4-8


TELEVANTAGE DEVELOPER ’S GUIDE

5. Open the IVR Plug-in’s Visual Basic project and put a break point wherever needed, for example on the line
after the CallOffering method.
6. Start the Visual Basic debugger in any of the following ways:
Q Select Run > Start.

Q Click Play on the toolbar.

Q Press F5.

7. Call your IVR Plug-in’s extension. TeleVantage will launch your IVR Plug-in inside Visual Basic and allow
you to debug it at the line you set the breakpoint.

When you are finished debugging, shut down the TeleVantage Server by closing the TeleVantage Server’s debugging
window. To reconfigure TeleVantage as a Windows service, perform step 3 again but this time use the /service option,
for example:
C:\Program Files\TeleVantage Server>tvserver /service
Now TeleVantage Server will start as a normal Windows service.

IVR Plug-in API quick reference_____________________________________


This section provides a brief description of each method and property in the IVR Plug-in API. Page numbers refer to the
full “IVR Plug-in API Reference” in Appendix A.
Note: For backward compatibility, previous versions of the IVR Plug-in API are supported, and existing IVR Plug-in
applications will continue to run. See Appendix B for information on how to migrate TeleVantage 4.x and earlier IVR
Plug-in applications to use the current IVR Plug-in API.

PluginCaller interface
A-6 AssociateCalledCallerId Attempts to associate the caller’s called ID with a personal or public
method contact.
A-5 AssociateCalledExtensio Attempts to associate the caller’s called ID with a system target based on
n method extension.
A-5 AssociateCallerId method Attempts to associate the Caller ID with a personal or public contact.
A-6 AssociateExtension Attempts to associate the Caller ID with a system target based on
method extension.
A-6 AssociateExtensionEx Attempts to associate the Caller ID with a system target based on
method extension and also allows the caller to be turned into an authenticated
user so they can be transferred into the voice mail account menu.
A-7 CallDone method Returns control of the call to the Server with instructions on how it should
continue processing the call.
A-8 Delete method Deletes the specified custom data property from the party in the call.
A-8 DeviceName property The name of the allocated raw voice resource, if any.
A-8 Exists method Returns true if the specified property exists.
A-9 Get method Gets a standard or custom party attribute from the party in the call, for
example, ppCallerIDNumber or CustomerID
A-11 GetDevice method Allocates a raw voice resource from the Server’s device pool so that you
can pass it to a third party voice processing toolkit.
A-11 GetMedia method Allocates a voice resource and returns a PluginMedia object associated
with it.

CHAPTER 4. THE IVR PLUG-IN API 4-9


TELEVANTAGE DEVELOPER ’S GUIDE

A-12 GetXmitTimeslot method Returns the TDM bus transmit timeslot of the caller’s device.
A-12 Listen method Performs a half duplex route of the media stream, such that the caller’s
device listens to the specified TDM bus timeslot.
A-12 Ping method Calling this method tells the Server the IVR Plug-in is still running
properly. The Server will terminate IVR Plug-in's which fail to call this or
any PluginCaller method for a period of time.
A-13 PluginComments property The comments for the called IVR Plug-in as defined in the Administrator.
A-13 PluginDID property The DID number of the called IVR Plug-in as defined in the Administrator.
A-13 PluginExtension property The extension of the called IVR Plug-in as defined in the Administrator
A-14 PluginName property The name of the called IVR Plug-in as defined in the Administrator.
A-14 PluginVariable property The custom data variable name of the called IVR Plug-in as defined in
the Administrator.
A-14 ReleaseDevice method Returns a raw voice resource to the Server’s device pool.
A-14 Set method Sets a custom or standard party attribute for the party in the call, for
example, CustomerID or ppAccountCode.
A-16 SetStatus method Sets the status string displayed in the Device Monitor.

PluginCallee interface
A-16 Exists Method Returns true if the specified Callee property exists
A-17 Get Method Gets a standard or custom party attribute from the IVR Plug-in's party in the
call.

PluginApplication interface
A-2 CallOffering Invoked when the IVR Plug-in’s extension is called and the call is offered to
the IVR Plug-in.
A-2 CallPlaced Invoked to notify the IVR Plug-in when an outbound call has been dialed
using the PlaceCall method.
A-3 CallTerminated Invoked when the Server wants to terminate the IVR Plug-in, for example
when the Server detects that the caller has hung up.

PluginServer interface
A-18 PlaceCall method Allows the IVR Plug-in to make a call to an external number or extension.

PluginMedia interface
A-20 Dial method Plays DTMF or MF digits.
A-21 FlushDigitBuffer Returns all digits currently in the digit buffer, and leaves the digit buffer
method empty.
A-21 GetCallProgress Performs in-band call progress analysis.
method
A-22 GetDigits method Returns a string of digits from the digit buffer based on various criteria
including number of digits, time outs and terminating digits.
A-23 GetXmitTimeslot Returns the TDM bus transmit timeslot of the voice resource.
method

CHAPTER 4. THE IVR PLUG-IN API 4-10


TELEVANTAGE DEVELOPER ’S GUIDE

A-23 Listen method Performs a half duplex route such that the voice resource listens to the
specified TDM bus timeslot.
A-24 PlayFile method Plays a pre-recorded audio file.
A-25 PlayString method Plays a voice string, which is a collection of one or more values played
smoothly together using various methods (money, date/time, number,
characters, or ordinals).
A-28 PlayTone method Plays a pre-defined tone such as dial tone or a busy signal.
A-29 RecordFile method Records a voice file.
A-30 SetRate method Set audio rate for the next or current playback operation.
A-30 SetVolume method Set audio volume for the next or current playback operation.
A-30 Stop method Stops all voice activity.

PlugInApplicationOutbound interface
If this interface is implemented by the IVR Plug-In, the behavior of the PlaceCall and CallPlaced methods is changed
to provide more fine grain control for outbound dialing applications - especially useful for those that use ISDN lines and
need to monitor the ISDN call progress events.

PluginOutOfBandCallProgressEvents interface
A-31 CallProgressIndication Returns the current state (Alerting, Proceesing and Disconnected, etc.) of
Method out of band call progress detection used on ISDN or Internet trunks.

PluginOutOfBandCallProgressMonitor interface
A-33 GetDisconnectReason Returns the disconnection reason for an unsuccessful call
Method
A-33 MonitorCallProgress Returns an interface to a PluginOutOfBandCallProgressEvents object for
Method receiving out-of-band call progress events
A-34 WaitForAudio Method Waits the specified interval (in ms) for audio to be available in the call.

CHAPTER 4. THE IVR PLUG-IN API 4-11


CHAPTER 5
CHAPTER 5

THE DEVICE STATUS API


CHAPTER CONTENTS
About the TeleVantage Device Status API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-2
How the Device Status components work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-2
Using the Device Status components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-3
Device Status API quick reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-5
TELEVANTAGE DEVELOPER ’S GUIDE

About the TeleVantage Device Status API_____________________________


The Device Status application programming interface (API) is a set of COM components that allow your application to
monitor the status of all devices (stations and trunks) on a TeleVantage Server. For example, you could perform any of
the following procedures:
Q Monitor current users on the system

Q Monitor the caller on every trunk or station including their caller ID

Q Monitor which trunks or stations are connected, e.g. the callers in a conference call

Q Obtain a current list of users permanently assigned to a station

Q Obtain the name of a user currently logged in at a station

Q Identify which trunk a phone line is connected to

The Device Status Sample project


The TVStatusviewer.vbp project is a useful Device Monitor application that uses the Device Status components and
three listview controls to display the status information described above.

How the Device Status components work ____________________________


Device information is organized in a simple hierarchy. In a program that uses the Device Status components, a Server
object maintains contact with a specified Server and contains a collection of Device objects representing all devices
on the Server. Each Device object in turn contains a collection of Extension objects representing all extensions
assigned to that device. Each Device object also stores a collection of the connected devices. The resulting hierarchy
might resemble the following diagram:

Server objects
At the top of the hierarchy is the Server object, which uses its Connect and Disconnect methods to control a connection
to a specified TeleVantage Server. Its DeviceStateChanged event is raised whenever the state of a device changes. The
Server object also contains the Devices property, which is a collection of Device objects representing all stations and
trunks on the specified Server.

CHAPTER 5. THE DEVICE STATUS API 5-2


TELEVANTAGE DEVELOPER ’S GUIDE

Device objects
Each Device object contains the following read-only properties:
Q Class. station or trunk
Q ConnectedDevices. A collection of all of the other device object that are connected in a live call with this device
(e.g. there will be one entry for a two party call, and 2 entries for a 3 party conference.)
Q HookState. on-hook, off-hook, or unknown
Q Name. name of the trunk, or blank if it’s a station
Q Number. positive for stations and negative for trunks
Q Party. Contains a reference to a Party object which shows the active party’s name, and caller ID name and
number (if any). If there is no active Party, this is Null.
Q Status. a number indicating the device's current activity

The Refresh method updates a Device object’s information.


The Device object also contains an Extension object for each extension assigned to the device.
Q The AssignedExtensions property is a collection that contains one Extension object for each assigned
extension. The CurrentExtension property is an object representing the extension currently logged in to the
device.
Q The DefaultExtension property is an object representing the device's default extension.

Extension objects
Each Extension object contains the following read-only properties:
Q The DoNotDisturb and ACDDoNotDisturb properties indicate whether or not the extension is in a Do Not
Disturb state for regular or ACD calls.
Q The Extension, FirstName, and LastName properties identify the name and extension number for the user on
this extension.
The Refresh method updates an Extension object’s information.

Party objects
Each Party object contains the following read-only properties:
Q The CallerIDName, CallerIDNumber, and CallerIDNumberType properties display any caller ID information
for the active party, if any is present.
Q The FirstName, and LastName properties identify the name and extension number for the user on this trunk or
station.

Using the Device Status components


To use the Device Status components:
1. From Visual Basic add the “TeleVantage 7.0 Device Status Library” as a reference for the project. The Device
Status library is contained in TvStatus.dll.
2. Create an instance of the Server component. Alternatively, Visual Basic’s CreateObject function could be used
to create the Server object.

CHAPTER 5. THE DEVICE STATUS API 5-3


TELEVANTAGE DEVELOPER ’S GUIDE

3. Once the Server object is created, it needs to be initialized by calling the Connect method with the name of the
Server to connect to. If the Server machine is unavailable or the TeleVantage Server is not started, the Connect
method will fail and raise a trappable error.
At this point everything is initialized and ready to be used. The Server object’s Devices collection contains a
Device object for each device on the system. Each Device object has a AssignedExtensions collection
containing an Extension object for each extension assigned to the device.
The device status information (hook state, status, and currently logged in user) will be updated automatically
as changes happen, and the DeviceStateChanged event will be raised immediately. Extension information
(which comes from the Server database) will only be updated when the device Refresh or extension Refresh
methods are called.
4. To terminate the application, call the Disconnect method of the Server object, which will release all existing
Device Status objects. The Disconnect method will be called automatically if the Server object goes out of
scope while it is connected.

Sample Device Status Application


The TVStatusviewer.vbp project is a useful Device Monitor application that uses the Device Status components and
three listview controls to display the status information described above.

Required runtime files


The Device Status API has a number of dependencies that must be satisfied in order for it to run correctly:
Microsoft Visual Basic 6.0 Runtime:
msvbvm60.dll asycfilt.dll

oleaut32.dll stdole2.tlb

olepro32.dll comcat.dll

Microsoft Active Data Objects (ADO):


Run the MDAC installer

TeleVantage Client API installed with TeleVantage ViewPoint:


The easiest way to get all of these components is to install the TeleVantage Administrator, ViewPoint, or TAPI Service
Provider on the machine in question.

CHAPTER 5. THE DEVICE STATUS API 5-4


TELEVANTAGE DEVELOPER ’S GUIDE

Device Status API quick reference __________________________________


This section provides a brief description of each method in the Device Status API. Page numbers refer to the full “Device
Status API Reference” in Appendix C.

Server object
C-2 Connect method Connects to the specified Server and initializes the Server
object.
C-2 Disconnect method Disconnects from the Server.
C-2 Devices property Read only. Returns a collection of Device objects representing
all devices on the current Server.
C-3 DeviceStateChanged Raised whenever the state of the device changes.
event

Device object
C-3 Refresh method Refreshes information about the extensions on the device.
C-3 AssignedExtensions Read only. Returns a collection of Extension objects
property representing all extensions assigned to this device.
C-3 Class property Read only. Returns the device’s class (station or trunk).
C-3 ConnectedDevices Read only. Returns a collection of connected Devices if this
property device is in a call or conference.
C-4 CurrentExtension Read only. Returns the Extension object currently logged in to
property the device.
C-4 DefaultExtension Read only. Returns the Extension object that is the default for
property the device.
C-4 HookState property Read only. Returns the hook state of the device.
C-4 Name property Read only. Returns the name of the device (blank for stations
and the trunk name for trunks).
C-4 Number property Read only. Returns the number of the device (positive for
stations and negative for trunks).
C-5 Status property Read only. Returns a status code indicating the device’s
current activity.

Extension object
C-6 Refresh method Refreshes information about this extension.
C-6 ACDDoNotDisturb Read only. Returns a boolean value indicating whether or not
property the extension is in ACD Do Not Disturb state.
C-6 DoNotDisturb property Read only. Returns a boolean value indicating whether or not
the extension is in Do Not Disturb state.
C-6 Extension property Read only. Returns the extension number for this user.
C-7 FirstName property Read only. Returns the first name of the user on this
extension.
C-7 LastName property Read only. Returns the last name of the user on this extension.

CHAPTER 5. THE DEVICE STATUS API 5-5


TELEVANTAGE DEVELOPER ’S GUIDE

Party object
C-6 CallerIDName Refreshes information about this extension.
property
C-6 CallerIDNumber Read only. Returns a boolean value indicating whether or not
property the extension is in ACD Do Not Disturb state.
C-6 CallerIDNumberType Read only. Returns a boolean value indicating whether or not
property the extension is in Do Not Disturb state.
C-6 FirstName property Read only. Returns the extension number for this user.
C-7 LastName property Read only. Returns the first name of the user on this extension.

CHAPTER 5. THE DEVICE STATUS API 5-6


CHAPTER 6
CHAPTER 6

USING IN-BAND SIGNALING


CHAPTER CONTENTS
About in-band signaling with TeleVantage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6-2
TeleVantage telephone commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6-3
TELEVANTAGE DEVELOPER ’S GUIDE

About in-band signaling with TeleVantage ____________________________


In some cases, the TeleVantage SDK may not be the simplest way to implement extended functionality. If you just need
a simple way to make calls or perform call control on a PC networked to the TeleVantage Server, and your application
does not need to access digits or perform voice processing, you can use in-band signaling.
A human caller can send commands to any PBX, such as TeleVantage, by generating a flash (quickly pressing and
releasing the hang up button on a telephone handset cradle). This signals the PBX that special instructions will follow,
such as placing a call on hold or transferring a call to another extension. For example, a TeleVantage user would generate
a flash and then press 1 to transfer a call.
This method of sending instructions is called “in-band signaling” because it travels over the same channel that voice is
transmitted, in-band. Many telephony applications use this same method, communicating with PBX or Centrex systems
through flash hook commands.
Most PBXs use their own proprietary sets of flash hook commands. An application that uses in-band signaling will
usually provide you with a way to configure it for a specific set of flash hook commands, such as those used by
TeleVantage. For example, &3 (a flash followed by a 3) is the flash hook command that TeleVantage uses to disconnect
from a call, so you would configure the in-band signaling application to use &3 as its disconnect command. Other
commands are listed below in “TeleVantage telephone commands” on page 6-3.
IVR applications connected this way still have access to Caller ID and DID, if the station is configured appropriately.
Both options are set in the Administrator’s Users view, under the Phone tab.
This approach requires the IVR application to use dedicated voice board resources that can either be in the TeleVantage
Server or in a separate server. If the IVR application will be on the same TeleVantage Server, the voice board resources
must be dedicated to the IVR application, unlike IVR Plug-ins where voice resources are dynamically shared.
Regardless of whether the IVR application runs on the TeleVantage Server or a separate server, the voice board’s ports
must be connected to one or more TeleVantage stations. This requires a TeleVantage station license and MSI hardware
port to support a phone line for each TeleVantage station that is to be connected to the IVR application’s voice board’s
ports.
To dedicate the voice board resources to your IVR application’s needs, the Dialogic devices must be reserved (see
“Reserving Dialogic Devices” in Appendix J in Installing Intel Telephony Components). This allows an application that
is running on the same server to obtain full control over these devices.

CHAPTER 6. USING IN-BAND SIGNALING 6-2


TELEVANTAGE DEVELOPER ’S GUIDE

TeleVantage telephone commands __________________________________


The commands listed below can be used to send in-band signaling commands to the TeleVantage Server. It is useful to
try these commands manually before attempting to code them. See chapters 3 through 6 in Using TeleVantage for details.
Note: From within any Telephone Commands menu, you can press * to return to the higher level menu.

Call screening menu


If you have verbal call screening turned on, you are offered the following options when you answer an incoming call,
either by picking up the phone or pressing Flash after hearing the call waiting beep.

Call screening menu

1 Connect to the caller.

2 Send the caller to your voice mail.


Send the caller to voice mail and monitor the message being left. Press Flash 1 to pick up
3 the call in mid-message.

4 In call waiting situations, create a conference call with your current call and the new one.
Send the caller to the next step on your routing list. Unless you have changed your routing
Hang up list, the next step is your voice mail, so hanging up is the same as pressing 2.

Call handling menu


As soon as you press Flash to put a call on hold, you will hear a context-sensitive menu of call handling options. The
caller does not hear these menu prompts. At any time while listening to the prompts, you can press Flash again to
reconnect to the caller.

Call Handling Commands


With a call on the line, press Flash, then...

1 Transfer the call

2 Send the call to voice mail

3 Disconnect from the call

4 Reconnect to the call

5 Create a conference call

6 Park the call

7 Silent hold (stops menu until next keypress)

8 Send a Flash to Centrex/PBX service beyond TeleVantage

# Get a dial tone (start another call)

Flash Reconnect to the call

CHAPTER 6. USING IN-BAND SIGNALING 6-3


TELEVANTAGE DEVELOPER ’S GUIDE

Quick call menu


When you press * from a dial tone, you are offered a menu of quick call commands for placing and answering calls. You
can also press * plus the command directly:

Quick call commands

*0 Hear your phone’s station ID and extension.

*10 Enable and disable hands-free answering.

*11 Enter an account code for the current call or the call you are about to dial.

*55 Hear real-time call center statistics for the queue of your choice.

*66 Redial the last call you placed.

*69 Dial the phone number of your last incoming call.

*70 Disable call waiting for the next call.

*91 Answer another ringing phone. Enter the extension of the phone to answer.

*92 Retrieve a parked call.

*93 Dial a TeleVantage user by name.

*95 Manage your calls on hold.


Log off from remote session. Only available at a dial tone when logged in from a remote
*96 phone.

*99 Answer another ringing phone within your workgroup. See *91 also.

CHAPTER 6. USING IN-BAND SIGNALING 6-4


TELEVANTAGE DEVELOPER ’S GUIDE

Voice mail/Account menu commands


The Voice Mail/Account menu lets you listen to your voice mail, send messages to other users’ voice mail, and change
your TeleVantage account settings. You need to log in to access this menu.
To log in to a Voice Mail/Account menu, enter:
# <extension number> # <password> #
If the voice mailbox is almost full when you log in, you are given the option to empty your Deleted folder.

Summary of Voice Mail/Account Menu Commands

1 Voice messages (Inbox folder)

2 Voice messages (Saved folder)


1 Replay
2 Next message
3 Delete/Undelete message
41 Reply
42 Forward
43 Call back
5 Previous message
6 Save
7 Rewind
8 Undelete all
9 Fast Forward
# Skip message preamble; skip rest of message

3 Send voice message


1 Send
2 Review
3 Re-record
4 Append
5 Mark Urgent
6 Mark Private
* Cancel

4 Manage greetings
1 Replay
2 Next greeting
3 Make active
4 Re-record
5 Revert
6 Record new greeting
7 Delete

5 Call forwarding
1 To this ext.
2 To internal
3 To external
4 Cancel forwarding
5 Query forwarding
6 Toggle standard call rules

CHAPTER 6. USING IN-BAND SIGNALING 6-5


TELEVANTAGE DEVELOPER ’S GUIDE

Summary of Voice Mail/Account Menu Commands

6 Account preferences
1 Do Not Disturb
2 Record voice title
3 Change password

7 Have TeleVantage hang up

# Dial tone to start another call

Note: Option 7 is only available when logging in from an outside line.

Quick commands for call center agents


The following commands are available only for agents in a call center queue.

Quick call commands for call center agents

*14 Mark the identity of all subsequent outbound calls during your shift, to keep track of which outbound
calls are queue-related.
To mark all your subsequent outbound calls as being from the queue, press *14<queue’s
extension>#.
To mark all your subsequent outbound calls as being from yourself, press *14#.

*51 Sign in. The call center queues begin sending you calls. This command changes your personal
status to Available (Queue Only).
When you sign in with *51, only queue calls ring your phone. Non-queue calls are sent directly to
your voice mail. To have all your calls ring your phone, sign in by choosing the personal status
Available.
Note: To receive queue calls, you must be on call with a queue and you must be signed in. Your
TeleVantage system administrator can tell you the queues for which you are on call.

*52 Sign out. The call center queues stop sending you calls. This command changes your personal
status to Available (Non-Queue).
After you sign out, non-queue calls continue to ring your phone. To prevent all calls from ringing
your phone, use the Do Not Disturb personal status.

*53 Go on break. The call center queues stop sending you calls, but you are still considered to be
signed in for statistical purposes. This command changes your personal status to On Break.
While you are on break, non-queue calls continue to ring your phone.

*54 End wrap-up. This command terminates the wrap-up time that follows a queue call. During wrap-up
time the queue does not you send calls. Ending wrap-up makes you available to receive queue
calls again.

*55 Hear real-time call center statistics for a queue. To use *55, you must have been given permission
to do so by your TeleVantage system administrator.

CHAPTER 6. USING IN-BAND SIGNALING 6-6


CHAPTER 7
CHAPTER 7

THE TELEVANTAGE TAPI SERVICE PROVIDER


CHAPTER CONTENTS
About the TeleVantage TAPI Service Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-2
TeleVantage TAPI Service Provider capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-2
TAPI and TeleVantage custom call data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-3
TELEVANTAGE DEVELOPER ’S GUIDE

About the TeleVantage TAPI Service Provider _________________________


TAPI support makes it possible to integrate an existing TAPI application with the TeleVantage Server, and to use TAPI
to make calls or perform call control on a PC networked to the TeleVantage Server.
You can use the TeleVantage TAPI Service Provider (TSP) to integrate your custom TAPI applications with the
TeleVantage Server. Unlike IVR Plug-ins, which must run on the Server, TAPI applications run on any PC that has the
TeleVantage TSP installed and is networked to the Server.
You install the TSP by running the Setup program in the Netsetup folder on the TeleVantage Server. (See Installing
TeleVantage for details.) As part of the installation, the TeleVantage TAPI Configuration wizard prompts you to specify
which TeleVantage station the TSP will monitor for incoming calls. After the TSP is installed, you can change the
station at any time by choosing Start > Programs > Artisoft TeleVantage > TAPI Configuration. If you need to work
with the station ID programmatically, refer to the description of ..\Client\TSP\Logon in Appendix J in Installing Intel
Telephony Components.
Whenever a call is transferred to the station being monitored by the TeleVantage TSP, the TSP notifies the
TAPI-compatible applications of the call. Once your TAPI application gets the call, it can get Caller ID or DID, transfer
the call, put it on hold, park it, or hang up. TAPI applications can also place new calls, unpark calls, and set or get
TeleVantage custom data. See “TAPI and TeleVantage custom call data” on page 7-3 for more information.
TeleVantage TSP can be used to build custom screen pop, dialing and call control applications. For example, you could
pop up a window whenever an important caller rings. Or you could use the TSP to place calls from a database of
numbers.

TeleVantage TAPI Service Provider capabilities ________________________


This section is intended for experienced TAPI developers who want to integrate their TAPI applications with
TeleVantage. It assumes knowledge of Microsoft TAPI.
The TeleVantage TAPI Service Provider (TSP) is a TAPI 2.1-compliant TSP that provides basic and supplementary call
control services on any Windows 98, ME, NT, 2000, or XP computer. The TeleVantage Client does not need to be
installed on the computer.
The TSP does not expose programmable media services, which means that your TAPI application can not (among other
things) perform voice processing or collect digits from the caller. If your application needs media services, we
recommend that you use the IVR Plug-in interface.
The TSP requires, as a minimum, a running TeleVantage Server and a single TeleVantage MSI station. With this basic
setup it can provide most of its call control functionality. The TSP exposes a single line which represents the configured
TeleVantage station. It translates the various TAPI first person-call control requests (primarily TSPI_lineMakeCall) into
a format that the TeleVantage Server understands. To the TeleVantage Server, the TSP appears as a normal TeleVantage
Client. Call handling is therefore subject to the same dialing restrictions as the configured user.

Supported TAPI functions


The TSP supports the functions MakeCall, Dial, Drop, Hold, Unhold, SwapHold, Park, Supervised Transfer, and Blind
Transfer. The TSP supports MakeCall using basic dial strings in standard TAPI dialable address format. It does not
currently support IP addresses or any LINECALLPARAMS so if you need to call an IP address, call an extension that
is routed to an IP address instead.
In order for outbound dialing on trunks to work properly, the appropriate TAPI dialing prefixes must be configured for
the current Windows Telephony location. Each prefix must correspond to an access code for a TeleVantage Dialing
Service or the call attempt will fail. The TSP Configuration Wizard attempts to validate these prefixes against the Server
and warns of possible problems in this area.

CHAPTER 7. THE TELEVANTAGE TAPI SERVICE PROVIDER 7-2


TELEVANTAGE DEVELOPER ’S GUIDE

Supported bearer modes


The TSP reports support for LINEBEARERMODE_INTERACTIVEVOICE and
LINEBEARERMODE_DATAMODEM. Artisoft recommends that TAPI applications that open the TeleVantage line
use INTERACTIVEVOICE.

Call states
The TSP may report any of the following TAPI call states:
IDLE RINGBACK ONHOLDPENDTRANSFER
OFFERING CONNECTED PROCEEDING
ACCEPTED BUSY DISCONNECTED
DIALTONE ONHOLD UNKNOWN
DIALING

Exported TSP functions


The following list contains all TSPI_xxx functions exposed by the TeleVantage TSP to TAPI:
TSPI_lineAnswer TSPI_linePark
TSPI_lineBlindTransfer TSPI_lineSetCallData
TSPI_lineClose TSPI_lineSetDefaultMediaDetection
TSPI_lineCloseCall TSPI_lineSetStatusMessages
TSPI_lineCompleteTransfer TSPI_lineSetupTransfer
TSPI_lineConditionalMediaDetection TSPI_lineSwapHold
TSPI_lineDial TSPI_lineUnhold
TSPI_lineDrop TSPI_lineUnpark
TSPI_lineGetAddressCaps TSPI_providerConfig
TSPI_lineGetAddressStatus TSPI_providerInit
TSPI_lineGetCallAddressID TSPI_providerInstall
TSPI_lineGetCallInfo TSPI_providerRemove
TSPI_lineGetCallStatus TSPI_providerShutdown
TSPI_lineGetDevCaps TSPI_providerEnumDevices
TSPI_lineGetID TSPI_providerGenericDialogData
TSPI_lineGetLineDevStatus TSPI_providerUIIdentify
TSPI_lineGetNumAddressIDs
TSPI_lineHold TUISPI_lineConfigDialog
TSPI_lineMakeCall TUISPI_providerConfig
TSPI_lineNegotiateTSPIVersion TUISPI_providerInstall
TSPI_lineOpen TUISPI_providerRemove

TAPI and TeleVantage custom call data ______________________________


TeleVantage provides two COM interfaces to access TeleVantage custom call data: ITvTapiCustomData and
ITvCallProperties.
Note: Even though the TSP implements TSPI_lineGetCallInfo and TSPI_lineSetCallData, you should not use these
functions to access TeleVantage custom call data because they are used internally by the TSP. The ITvTapiCustomData
and ITvCallProperties interfaces that you should use are part of the TSP itself. You do not need to install any additional
components to support custom data through TAPI.

For example, in a Visual Basic TAPI application you would create a reference to the TeleVantage TAPI Type Library
C:\WINNT\SYSTEM32\TVCLIENT.TSP. Once you have a valid TAPI call handle, you can put and get custom data as
needed. Just like the IVR Plug-in custom data interface, this data is exposed to other TAPI clients if you transfer the call,
other IVR Plug-ins and also the Client’s Call Monitor if configured as described in “IVR Plug-ins and call data”.

CHAPTER 7. THE TELEVANTAGE TAPI SERVICE PROVIDER 7-3


Appendixes
APPENDIX A
APPENDIX A

IVR PLUG-IN API REFERENCE


CHAPTER CONTENTS
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-2
PluginApplication interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-2
PluginCaller interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-3
PluginCallee interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-16
PluginServer interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-18
PluginMedia interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-20
PluginApplicationOutbound interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-31
PluginOutOfBandCallProgressEvents interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-31
PluginOutOfBandCallProgressMonitor interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-32
TELEVANTAGE DEVELOPER ’S GUIDE

Overview _______________________________________________________
This appendix describes the interfaces, methods, properties, and events that make up the TeleVantage IVR Plug-in API.
For more information about using the IVR Plug-in API, see Chapter 4.
The IVR Plug-in API consists of the following interfaces:
Q PluginApplication interface. See page A-2.
Q PluginCaller interface. See page A-3.
Q PluginCallee interface. See page A-16.
Q PluginServer interface. See page A-18.
Q PluginMedia interface. QSee page A-20.
Q PluginApplicationOutbound Interface. See page A-31
Q PluginOutOfBandCallProgressEvents interface. See page A-31
Q PluginOutOfBandCallProgressMonitor interface. See page A-32

Note: For backward compatibility, previous versions of the IVR Plug-in API are supported, and existing IVR Plug-in
applications will continue to run. See Appendix B for information on how to migrate TeleVantage 4.x or earlier IVR Plug-in
applications to use the current IVR Plug-in API.

PluginApplication interface ________________________________________


The PluginApplication interface is the main entry point for an IVR Plug-In and consists of the following methods:
Q CallOffering method. Invoked when the call is offered to the Plug-in. See page A-2.
Q CallPlaced method. Invoked by the Server to notify the Plug-in when an outbound call has been dialed. See
page A-2.
Q CallTerminated method. Invoked when TeleVantage wants to terminate the Plug-in, for example when
TeleVantage detects that the caller has hung up. See page A-3.

CallOffering method (PluginApplication interface)


Description Invoked when the call is offered to the Plug-in.
Declaration Private Sub PluginApplication_CallOffering(Caller as PluginCaller)
Inputs Argument Description
Caller A PlugInCaller object that contains the details of the party calling. See the
PlugInCaller object reference for more information.
Remarks Before CallOffering is invoked, TeleVantage creates an instance of the Plug-in’s class via its
program ID. The program ID is specified in the Administrator’s IVR Plug-ins view.

CallPlaced method (PluginApplication interface)


Description Invoked by the Server to notify the Plug-in when an outbound call has been dialed.
Declaration Private Sub PluginApplication_CallPlaced(Caller as PluginCaller, CPType CallProgress)
Inputs Argument Description
Caller A PlugInCaller object that contains the details of the party calling. See
the PlugInCaller object reference for more information.
CallProgress CPType value. See the CPType enumeration for more information.

APPENDIX A. IVR PLUG-IN API REFERENCE A-2


TELEVANTAGE DEVELOPER ’S GUIDE

Remarks TeleVantage does not do any call progress analysis before invoking this method. The number has
been dialed on the first available trunk specified by the access code in the PlaceCall method. See
also the PluginApplicationOutbound interface for additional ways to manage outbound calls that
are more applicable to ISDN lines.

It is the responsibility of the Plug-in to initiate call progress analysis if required using the
GetCallProgress method, the PluginOutOfBandCallProgressMonitor interface or a 3rd party
telephony toolkit. Refer to the ReceiveCall and PlaceCall Visual Basic sample projects in the
OutBoundCall directory.

To retrieve the PlaceCallInitialData as String


CallersCustomerID = mPlugInCaller.Get "TVIVRInitialData", "N/A"
mPlugInCaller.SetStatus "The Caller’s customer ID is " & CallersCustomerID

CallTerminated method (PluginApplication interface)


Description Invoked when TeleVantage wants to terminate the Plug-in, for example when TeleVantage detects
that the caller has hung up.
Declaration Private Sub PluginApplication_CallTerminated()
Remarks This method is invoked when the caller hangs up or if the Plug-in becomes unresponsive for 4
minutes.

In this method you should make sure you stop any voice processing (e.g. if using the Media object
you should call the Stop method) and perform any necessary clean up. After CallTerminated is
invoked, TeleVantage removes its reference to the ActiveX EXE’s class, which in Visual Basic will
then invoke the Class_Terminate subroutine.

CallTerminated is not invoked after the IVR Plug-In CallDone method.

PluginCaller interface _____________________________________________


The PluginCaller interface is provided by the CallOffering and CallPlaced methods in the PlugInApplication interface.
The PluginCaller interface consists of the following methods and properties:
Q AssociateCalledCallerID method. Attempts to associate the called ID with a personal or public contact. See
page A-4.
Q AssociateCalledExtension method. Attempts to associate the called ID with a system target based on
extension. See page A-5.
Q AssociateCallerID method. Attempts to associate the Caller ID with a personal or public contact. See page A-5.
Q AssociateExtension method. Attempts to associate the Caller ID with a system target based on extension. See
page A-6.
Q AssociateExtensionEx method. Attempts to associate the Caller ID with a system target based on extension
and also allows authenticating the caller as a logged in User. See page A-6.
Q CallDone method. Returns control of the call to the Server with instructions on how it should continue
processing the call. See page A-7.
Q Delete method. Deletes the specified custom data property from the party in the call. See page A-8.
Q DeviceName property. Returns the name of the allocated raw voice resource, if any. See page A-8.
Q Exists method. Returns True if the specified custom data property exists on the party in the call. See page A-8.
Q Get method. Gets a standard or custom party attribute from the party in the call, for example, CallerID or
CustomerID. See page A-9.

APPENDIX A. IVR PLUG-IN API REFERENCE A-3


TELEVANTAGE DEVELOPER ’S GUIDE

Q GetDevice method. Allocates a raw voice resource from the TeleVantage Server’s device pool so that you can
pass it to a third party voice processing toolkit. See page A-11.
Q GetMedia method. Allocates a voice resource and returns a PluginMedia object associated with it. See page
A-11.
Q GetXmitTimeslot method. Returns the TDM bus transmit timeslot of the caller’s device. See page A-12.
Q Listen method. Performs a half duplex route of the media stream, such that the caller’s device listens to the
specified TDM bus timeslot. See page A-12.
Q Ping method. Calling this method tells the Server the IVR Plug-in is still running properly. See page A-12.
Q PlugInComments property. The comments for the called IVR Plug-in as defined in the Administrator. See page
A-13.
Q PlugInDID property. The DID number of the called IVR Plug-in as defined in the Administrator. See page A-13.
Q PlugInExtension property. The extension of the called IVR Plug-in as defined in the Administrator. See page
A-13.
Q PlugInName property. The name of the called IVR Plug-in as defined in the Administrator. See page A-14.
Q PlugInVariable property. The custom data variable name of the called IVR Plug-in as defined in the
Administrator. See page A-14.
Q ReleaseDevice method. Returns a raw voice resource to the TeleVantage Server’s device pool. See page A-14.
Q Set method. Sets a custom or standard party attribute for the party in the call, for example, CustomerID or
AccountCode. See page A-14.
Q SetStatus method. Sets the status string displayed in the Device Monitor on the TeleVantage Server or in the
Administrator. See page A-16.

AssociateCalledCallerID method (PluginCaller interface)


Description Attempts to associate the called ID with a personal or public contact.
Syntax [Associated] = Object.AssociateCalledCallerID(CallerIdNumber, CallerIdName, ExtensionContext)
Arguments Name Data Type Description
Optional. The phone number of a TeleVantage contact you want
CallerIdNumber String to associate with. If this argument is not specified you must
specify the CallerIDName argument. Default is “”.
Optional. The name of a TeleVantage contact you want to
CallerIdName String associate with. If this argument is not specified you must specify
the CallerIDNumber argument. Default is “”.
Optional. Leave blank to match against TeleVantage public
ExtensionContext String contacts or specify a user’s extension number to match against
the user’s TeleVantage contacts. Default is “”.
Returns True if the method resulted in a matching contact and
Returns Associated Boolean
the association completed successfully.
Remarks When a call is created to an external number, the Server searches the user’s personal TeleVantage
contacts, and if a match is not found, the Server’s public contacts. This method allows an IVR Plug-in to
change that information to a TeleVantage personal or public contact based on Caller ID name or
number.
Example

APPENDIX A. IVR PLUG-IN API REFERENCE A-4


TELEVANTAGE DEVELOPER ’S GUIDE

AssociateCalledExtension method (PluginCaller interface)


Description Attempts to associate caller’s called ID with a system target based on extension.
Syntax [Associated] = Object.AssociateCalledExtension(Extension)
Arguments Name Data Type Description
The extension number of any system target that exists in the
Extension String
TeleVantage Server.
Returns True if the extension specified was a valid system target
Returns Associated String
and the association completed successfully.
Remarks When a call is created, the Server records the system target (User, Auto Attendant, Queue, IVR Plug-in,
etc.) that was initially called. This method allows an IVR Plug-in to change that information to a different
system target.
Example

AssociateCallerID method (PluginCaller interface)


Description Attempts to associate the Caller with a personal or public contact.
Syntax [Associated] = Object.AssociateCallerID(CallerIdNumber, CallerIdName, ExtensionContext)
Arguments Name Data Type Description
Optional. The Caller ID number that matches the Caller ID
stored with the TeleVantage contact you want to associate with.
CallerIdNumber String
If this argument is not specified you must specify the
CallerIDName argument. Default is “”.
Optional. The Caller ID name that matches the Caller ID name
stored with the TeleVantage contact you want to associate with.
CallerIdName String
If this argument is not specified you must specify the
CallerIDNumber argument. Default is “”.
Optional. Leave blank to match against TeleVantage public
ExtensionContext String contacts or specify a user’s extension number to match against
the user’s TeleVantage contacts. Default is “”.
Returns True if the method resulted in a matching contact and
Returns Associated Boolean
the association completed successfully.
Remarks This method associates a TeleVantage contact with the caller allowing IVR Plug-ins to perform their own
contact identification. You can use this method to change calls that previously appeared as from
Unknown to be from a TeleVantage personal or public contact.
Example

APPENDIX A. IVR PLUG-IN API REFERENCE A-5


TELEVANTAGE DEVELOPER ’S GUIDE

AssociateExtension method (PluginCaller interface)


Description Attempts to associate the Caller ID with a system target based on extension.
Syntax [Associated] = Object.AssociateExtension(Extension)
Arguments Name Data Type Description
The extension number of any system target that exists in the
Extension String
TeleVantage Server.
Returns True if the extension specified was a valid system target
Associated String
and the association completed successfully.
Remarks This method associates a TeleVantage system target (User, Auto Attendant, Queue, IVR Plug-in, etc.)
with the caller, effectively changing who the call appears to be from. You can use this method to change
calls that previously appeared as from a user to be from a different user.
Example

AssociateExtensionEx method (PluginCaller interface)


Description Attempts to associate the caller with a system target based on extension.
Syntax [Associated] = Object.AssociateExtensionEx(Extension, MarkAuthenticated)
Arguments Name Data Type Description
The extension number of any system target that exists in the
Extension String
TeleVantage Server.
If set to True, the caller is marked as an "authenticated" user,
MarkAuthenticated Boolean which allows subsequent transfer to access voice mail/account
settings without having to enter password.
Returns True if the extension specified was a valid system target
Returns Associated String
and the association completed successfully.
Remarks When PluginCaller.CallDone is invoked with NextAction argument set to naTransferToNumber and
AddressType argument set to atAccountLogin, the Number argument can be set to "auto". In this case,
the server will use the current credentials when going through account logon. This means that if Plugin-
Caller.AssociateExtensionEx has been previously invoked with MarkAuthenticated argument set to
"True", the account logon prompts will by bypassed altogether.
Example Here is the example implementation of CallOffering that transfers to voice mail access of user "104" and
tells the server to bypass account logon prompts.
>
Private Sub PluginApplication_CallOffering(ByVal Caller As TVIVRLib.PluginCaller)
Caller.AssociateExtensionEx "104", True
Caller.CallDone naTransferToNumber, "auto", atAccountLogin
End Sub

APPENDIX A. IVR PLUG-IN API REFERENCE A-6


TELEVANTAGE DEVELOPER ’S GUIDE

CallDone method (PluginCaller interface)


Description Returns control of the call to the Server with instructions on how it should continue processing the call.
Syntax Object.CallDone Action, Number, Type, AccessCode, SubType
Arguments Name Data Type Description
Specifies the next step the TeleVantage Server should take to
Action NextAction
process the call.
Enumerations
Constant Value Description
naHangup 0 Hang up call.
naTransferToNumber 1 Transfer call to the extension or
phone number specified in
DialString, as if it was dialed from
dialtone.
naTransferToVoiceMail 2 Transfer call to voice mailbox of the
extension specified in DialString.
naReturnToRoutingList 3 Continue with next step in routing
list.
naError 4 Perform Error Action specified in by
the IVR Plug-In Transfer To/Hang
Up settings in the TeleVantage
Administrator.
Optional. Extension or phone number required if the Action
Number String argument is naTransferToNumber or naTransferToVoiceMail. The
default is “”.
Optional. The type of address specified in the Number argument.
The default is atExtension. Use atTelephone for phone numbers.
Type AddressType
See the section AddressType Enumerations for a complete list,
including account login.
Optional. Only used if the Type argument is atTelephone,
atExtension (for PBX/Centrex dialing services) or for atInternet.
AccessCode String Specify the Dialing Service access code (e.g. “9”) to dial the number
specified in the Number argument. The default is “”, which will use
the default phone number dialing service.
Optional. Only used if the Type argument is atTelephone, specify
astUseServiceRules if the number should be dialed using the
SubType Long Server’s dialing rules or specify astUnknown to dial the number
exactly as specified in the Number argument. The default is
astUnknown.
Remarks When this method finishes, the IVR Plug-in is no longer processing the call and any voice resources
used are reclaimed by the Server. This is the last operation an IVR Plug-in can perform before it is
terminated, so after calling this method, do not call any additional IVR Plug-in methods.
Examples Transfer the caller to the voice mailbox at extension 102:
mPlugInCaller.CallDone naTransferToVoiceMail, “102”
Transfer the caller to the external number 6175551212:
mPlugInCaller.CallDone naTransferToNumber, “6175551212”, atTelephone, “”, astUseServiceRules

APPENDIX A. IVR PLUG-IN API REFERENCE A-7


TELEVANTAGE DEVELOPER ’S GUIDE

Delete method (PluginCaller interface)


Description Deletes the specified custom data property from the party in the call.
Syntax Object.Delete PropertyName
Arguments Name Data Type Description
The name of a custom data variable that you want to remove
PropertyName String
from the party in the call.
Remarks If the party in the call has a custom data variable such as CustomerID, you can use this method to
remove it.
Example mPlugInCaller.Delete “CustomerID”

DeviceName property (PluginCaller interface)


Description Returns the name of the allocated raw voice resource, if any.
Syntax [DeviceName] = Object.DeviceName
Returns DeviceName String Returns the name of the allocated raw voice resource, if any
Remarks This property is only filled in if using the GetDevice method and is not filled in if using the GetMedia
method
Example mPlugInCaller.SetStatus “The voice resource being used is “& mPlugInCaller.DeviceName

Exists method (PluginCaller interface)


Description Returns True if the specified custom data property exists on the party in the call.
Syntax [Exists] = Object.Exists(PropertyName)
Arguments Name Data Type Description
PropertyName String The name of a custom data variable.
Returns True if the specified custom data property exists on the
Returns Exists Boolean
party in the call.
Remarks
Example If mPlugInCaller.Exists “CustomerID” then
mPlugInCaller.SetStatus “The caller has a CustomerID variable”
End If

APPENDIX A. IVR PLUG-IN API REFERENCE A-8


TELEVANTAGE DEVELOPER ’S GUIDE

Get method (PluginCaller interface)


Description Gets a standard or custom party attribute from the Caller’s party in the call, for example, CallerID or
CustomerID.
Syntax [Value] = Object.Get(Keyname, DefaultValue)
Arguments Name Data Type Description
The name of a custom data variable or the name of a
Keyname String
standard party attribute from the table below.
Optional. If the Keyname specified does not exist on the
DefaultValue String party, the Value returned will beset to the DefaultValue
argument. Default is “”
Returns Value String Returns the value of the Keyname specified.
Remarks Use this method to obtain the value of any standard or custom data item attached to the party in the call.
To set a standard or custom data value see the Set method. The names of all custom data variables are
defined in the Administrator. The names of all standard party attributes are listed below.
Standard Property Description
The account code associated with the party. Account code validation is
ppAccountCode
ignored when writing to this property.
The party’s callback address. This is the Caller ID number for inbound
ppCallbackNumber telephone calls. CallerIDNumberType indicates if it will be a phone number,
extension, or IP address.
ppCallbackNumberAccess The access code of the Dialing Service used by the party’s callback
Code address, if applicable.
Only used if xxxNumberType is atTelephone. astUseServiceRules indicates
ppCallbackNumberSubTyp
the number was dialed using the Server’s dialing rules. astUnknown
e
indicates the number was dialed exactly as specified in xxxNumber.
The type of the party’s callback address. See the AddressType
ppCallbackNumberType
enumeration for possible values.
Suggested display name for the called party, a combination of FirstName
ppCalledDisplayName
and LastName.
The extension of the called party. Use one of the AssociateXXX methods to
ppCalledExtension
change this value
ppCalledFirstName The called party’s last name.
The ID of the called party that can be passed to the client API. Use one of
ppCalledID
the AssociateXXX methods to change this value.
ppCalledLastName The called party’s first name.
The called party’s address. This is the Caller ID number for inbound
ppCalledNumber telephone calls. CallerIDNumberType indicates if it will be a phone number,
extension, or IP address.
ppCalledNumberAccessCo The access code of the Dialing Service used by the called party’s address,
de if applicable.
Only used if xxxNumberType is atTelephone. astUseServiceRules indicates
ppCalledNumberSubType the number was dialed using the Server’s dialing rules. astUnknown
indicates the number was dialed exactly as specified in xxxNumber.

APPENDIX A. IVR PLUG-IN API REFERENCE A-9


TELEVANTAGE DEVELOPER ’S GUIDE

The type of the called party’s address. See the AddressType enumeration
ppCalledNumberType
for possible values.
ppCallerIDName Caller ID name supplied by the party owner or the telephone company.
The party’s address. This is the Caller ID number for inbound telephone
ppCallerIDNumber calls. CallerIDNumberType indicates if it will be a phone number, extension,
or IP address.
ppCallerIDNumberAccessC The access code of the Dialing Service used by the party’s address, if
ode applicable.
Only used if xxxNumberType is atTelephone. astUseServiceRules indicates
ppCallerIDNumberSubType the number was dialed using the Server’s dialing rules. astUnknown
indicates the number was dialed exactly as specified in xxxNumber.
The type of the party’s address. See the AddressType enumeration for
ppCallerIDNumberType
possible values.
The device number that the party is on. Positive numbers are stations,
ppDeviceNumber
negative numbers are trunks.
ppDirection The direction of the party, either inbound or outbound.
Suggested display name for the party, a combination of FirstName and
ppDisplayName
LastName.
The extension of the party. Use one of the AssociateXXX methods to
ppExtension
change this value
ppFirstName The party’s first name.
ppHandle The handle of the party
Suggested display name for the of the party whom handled the call (placed
ppHandlerDisplayName
by or answered by), a combination of FirstName and LastName.
The extension of the party whom handled the call (placed by or answered
ppHandlerExtension
by). Use one of the AssociateXXX methods to change this value
The last name of the party whom handled the call (placed by or answered
ppHandlerFirstName
by).
The ID of the party whom handled the call (placed by or answered by) that
ppHandlerID can be passed to the client API. Use one of the AssociateXXX methods to
change this value.
The first name of the party whom handled the call (placed by or answered
ppHandlerLastName
by).
The ID of the party that can be passed to the client API. Use one of the
ppID
AssociateXXX methods to change this value.
ppLastName The party’s last name.
ppLineAppearanceDevice The device number which owns the line appearance.
ppLineAppearanceNumber Line appearance number
ppLocaleCode The current locale of the caller’s telephone prompts
ppNotes Notes about the party.
ppQueueWaitTime Total time in seconds that party has waited in call center queues.
ppStartTime Time the party entered the current call

APPENDIX A. IVR PLUG-IN API REFERENCE A-10


TELEVANTAGE DEVELOPER ’S GUIDE

Server local path and file name of the party’s recorded voice title. A
ppVoiceTitleFile
non-empty path does not guarantee that the file actually exists.
Examples ’ Get a standard party property from the caller
Dim CallerIDName as String
CallerIDName = mPlugInCaller.Get ppCallerIDName
mPlugInCaller.SetStatus "The Caller’s Caller ID Name is " & CallerIDName

’ Get a custom data variable that may have been set by an auto attendant, queue
’ or another plug-in. If the customer ID is not set on the caller, use "N/A" as a default
Dim CallersCustomerID as String
CallersCustomerID = mPlugInCaller.Get "CustomerID", "N/A"
mPlugInCaller.SetStatus "The Caller’s customer ID is " & CallersCustomerID

GetDevice method (PluginCaller interface)


Description Allocates a raw voice resource from the TeleVantage Server’s device pool so that you can pass it to a
third party voice processing toolkit.
Syntax [DeviceName] = Object.GetDevice(ExtraInfo)
Arguments Name Data Type Description
ExtraInfo String Optional. Reserved for future use.
Returns Returns the raw voice resource device name for advanced voice
DeviceName String
processing by a 3rd party telephony toolkit.
Remarks Use this method if you need to use a 3rd party telephony toolkit such as Intel’s CallSuite or the low level
Dialogic C API to perform voice processing commands that exceed the capabilities of the IVR Plug-in
API’s media object. 3rd party telephony toolkits will require the name of the raw voice processing device
in order to perform any media processing.

It is possible to use both a media object and a 3rd party telephony toolkit in the same IVR Plug-in, but
not at the same time. If you previously called the GetMedia method to obtain a media object you must
first destroy the Media object before calling this method and using the 3rd party telephony toolkit.
Likewise after calling the GetDevice method, you must call the ReleaseDevice method before calling
the GetMedia method to use the media object’s voice processing methods.
Example Dim DeviceName as String
DeviceName = mPlugInCaller.GetDevice

GetMedia method (PluginCaller interface)


Description Allocates a voice resource and returns a PluginMedia object associated with it.
Syntax [Media] = Object.GetMedia(ExtraInfo)
Arguments Name Data Type Description
ExtraInfo String Optional. Reserved for future use.
Returns Media PluginMedia Returns a PlugInMedia object for basic voice processing.

APPENDIX A. IVR PLUG-IN API REFERENCE A-11


TELEVANTAGE DEVELOPER ’S GUIDE

Remarks With a PlugInMedia object you can perform basic voice processing tasks such as play and record files,
get digits, play tones, and speak numbers, dates, times, and more. See the PlugInMedia interface for
more information.

See the GetDevice method if you need to perform advanced voice processing tasks with a 3rd party
telephony toolkit.
Example Dim mTVMedia as PluginMedia
mTVMedia = mPlugInCaller.GetMedia
mTVMedia.PlayFile "Hello.vox"

GetXmitTimeslot method (PluginCaller interface)


Description Returns the TDM bus transmit timeslot of the caller’s device.
Syntax Timeslot = Object.GetXmitTimeslot
Name Data Type Description
Returns Timeslot Long Returns the TDM bus transmit timeslot of the caller’s device.
Remarks Use this method if you need access to the TDM bus transmit timeslot of the caller’s device so you could
later route another TDM device to listen to the caller’s transmitting audio. For example, have a fax
device listen to the transmitting audio of a fax call.
Example

Listen method (PluginCaller interface)


Description Performs a half duplex route of the media stream, such that the caller’s device listens to the specified
TDM bus timeslot.
Syntax Object.Listen Timeslot
Arguments Name Data Type Description
The TDM bus timeslot number you want the calling party to
Timeslot Long
listen to.
Remarks
Example

Ping method (PluginCaller interface)


Description Calling this method tells the Server the IVR Plug-in is still running properly.

Syntax Object.Ping
Remarks Calling any method on PluginCaller interface executes an implicit Ping. The Server will terminate IVR
Plug-in's which fail to call this method or any PluginCaller method for a 4 minutes. The 4 minute time
period can be changed via a setting on the Server.

APPENDIX A. IVR PLUG-IN API REFERENCE A-12


TELEVANTAGE DEVELOPER ’S GUIDE

Example Do
’perform some time consuming processing, such as a database query
’Ping the Server so it doesn’t terminate the Plug-in while this processing is happening.
mPlugInCaller.Ping
Until TheProcessingIsDone

PlugInComments property (PluginCaller interface)


Description The comments for the called IVR Plug-in as defined in the Administrator.
Syntax [Comments] = Object.PlugInComments
The comments for the called IVR Plug-in as defined in the
Comments String
Administrator.
Remarks Allows you to retrieve the comments specified for the current IVR Plug-in as defined in the
Administrator’s IVR Plug-in view.
Example Dim MyPlugInsComments as String
MyPlugInsComments = mPlugInCaller.PlugInComments

PlugInDID property (PluginCaller interface)


Description The DID number of the called IVR Plug-in as defined in the Administrator.
Syntax [DID] = Object.PlugInDID
The DID number of the called IVR Plug-in as defined in the
DID String
Administrator.
Remarks Allows you to retrieve the DID number specified for the current IVR Plug-in as defined in the
Administrator’s IVR Plug-in view.
Example Dim MyPlugInsDIDNumber as String
MyPlugInsDIDNumber = mPlugInCaller.PlugInDID

PlugInExtension property (PluginCaller interface)


Description The extension of the called IVR Plug-in as defined in the Administrator.
Syntax [Extension] = Object.PlugInExtension
Returns The extension of the called IVR Plug-in as defined in the
Extension String
Administrator.
Remarks Allows you to retrieve the extension number specified for the current IVR Plug-in as defined in the
Administrator’s IVR Plug-in view.
Example Dim MyPlugInsExtension as String
MyPlugInsExtension = mPlugInCaller.PlugInExtension

APPENDIX A. IVR PLUG-IN API REFERENCE A-13


TELEVANTAGE DEVELOPER ’S GUIDE

PlugInName property (PluginCaller interface)


Description The name of the called IVR Plug-in as defined in the Administrator.
Syntax [Name] = Object.PlugInName
The name of the called IVR Plug-in as defined in the
Name String
Administrator.
Remarks Allows you to retrieve the Name specified for the current IVR Plug-in as defined in the Administrator’s
IVR Plug-in view.
Example Dim MyPlugInsName as String
MyPlugInsName = mPlugInCaller.PlugInName

PlugInVariable property (PluginCaller interface)


Description The custom data variable name of the called IVR Plug-in as defined in the Administrator.
Syntax [VarName] = Object.PlugInVariable
The custom data variable name of the called IVR Plug-in as
VarName String
defined in the Administrator.
Remarks This method allows you to retrieve the custom data variable name specified for the current IVR Plug-in
as defined in the Administrator’s IVR Plug-in view.
Example Dim MyPlugInsVariable as String
MyPlugInsVariable = mPlugInCaller.PlugInVariable

ReleaseDevice method (PluginCaller interface)


Description Returns a raw voice resource to the TeleVantage Server’s device pool.
Syntax Object.ReleaseDevice DeviceName
Arguments Name Data Type Description
DeviceName String Device name voice resource to release.
Remarks See the GetDevice method
Example

Set method (PluginCaller interface)


Description Sets a custom or standard party attribute for the party in the call, for example, CustomerID or
AccountCode.
Syntax Object.Set KeyName, Value
Arguments Name Data Type Description
The name of a custom data variable or the name of a
Keyname String
standard party attribute from the table below.
Value String The new value of the Keyname specified.

APPENDIX A. IVR PLUG-IN API REFERENCE A-14


TELEVANTAGE DEVELOPER ’S GUIDE

Remarks Use this method to set the value of many standard or any custom data item attached to the party in the
call. To get a standard or custom data value see the get method. The names of all custom data
variables are defined in the Administrator. The names of all writable standard party attributes are listed
below.
Standard Property Description
The account code associated with the party. Account code validation is
ppAccountCode
ignored when writing to this property.
The party’s callback address. This is the Caller ID number for inbound
ppCallbackNumber telephone calls. CallerIDNumberType indicates if it will be a phone
number, extension, or IP address.
The access code of the Dialing Service used by the party’s callback
ppCallbackNumberAccessCode
address, if applicable.
Only used if xxxNumberType is atTelephone. astUseServiceRules
indicates the number was dialed using the Server’s dialing rules.
ppCallbackNumberSubType
astUnknown indicates the number was dialed exactly as specified in
xxxNumber.
The type of the party’s callback address. See the AddressType
ppCallbackNumberType
enumeration for possible values.
The called party’s address. This is the Caller ID number for inbound
ppCalledNumber telephone calls. CallerIDNumberType indicates if it will be a phone
number, extension, or IP address.
The access code of the Dialing Service used by the called party’s
ppCalledNumberAccessCode
address, if applicable.
Only used if xxxNumberType is atTelephone. astUseServiceRules
indicates the number was dialed using the Server’s dialing rules.
ppCalledNumberSubType
astUnknown indicates the number was dialed exactly as specified in
xxxNumber.
The type of the called party’s address. See the AddressType
ppCalledNumberType
enumeration for possible values.
ppCallerIDName Caller ID name supplied by the party owner or the telephone company.
The party’s address. This is the Caller ID number for inbound
ppCallerIDNumber telephone calls. CallerIDNumberType indicates if it will be a phone
number, extension, or IP address.
The access code of the Dialing Service used by the party’s address, if
ppCallerIDNumberAccessCode
applicable.
Only used if xxxNumberType is atTelephone. astUseServiceRules
indicates the number was dialed using the Server’s dialing rules.
ppCallerIDNumberSubType
astUnknown indicates the number was dialed exactly as specified in
xxxNumber.
ppNotes Notes about the party.
Examples ’ Set a standard party property
mPlugInCaller.Set ppCallerIDName, "John Doe"

’ Set a custom data variable so it can be displayed in the call monitor


mPlugInCaller.Set "CustomerID", "3057392"

APPENDIX A. IVR PLUG-IN API REFERENCE A-15


TELEVANTAGE DEVELOPER ’S GUIDE

SetStatus method (PluginCaller interface)


Description Sets the status string displayed in the Device Monitor on the TeleVantage Server or in the
Administrator.
Syntax Object.SetStatus Status
Arguments Name Data Type Description
Text to be displayed in the Device Monitor’s status column for
Status String
the trunk or station currently connected to the IVR Plug-in.
Remarks Using SetStatus, you can visually monitor a Plug-in’s activity. The Device Monitor shows the
current status of every trunk and station in the Server. When a caller is connected to an IVR
Plug-in, calls to the SetStatus method change the status displayed for the trunk or station on which
the IVR Plug-in is operating. With this information Administrators or developers can monitor its
activity even though they are not on the call. Each call to SetStatus changes the current status to
the new status.
Example mPlugInCaller.SetStatus "Asking the caller for the customer ID number"
mPlugInMedia.PlayFile "Please enter your customer id.vox"
mPlugInCaller.SetStatus "Waiting for the caller to enter their customer ID"
CustomerID = mPlugInMedia.GetDigits 5

PluginCallee interface_____________________________________________
The PluginCallee interface consists of the following methods and properties:
Q Exists Method. Returns true if the specified Callee property exists.
Q Get Method. Gets a standard or custom party attribute from the User’s

Exists method (PluginCallee interface)


Description Returns True if the specified custom data property exists on the callee. The callee is the IVR Plug-In if
called directly. If the IVR Plug-In is called indirectly, the callee is the User who had a routing list that
called the IVR Plug-In
Syntax [Exists] = Object.Exists(PropertyName)
Arguments Name Data Type Description
PropertyName String The name of a custom data variable.
Returns True if the specified custom data property exists on the
Returns Exists Boolean
party in the callee.
Remarks
Example If mPlugInCallee.Exists “CustomerID” then
mPlugInCaller.SetStatus “The caller has a CustomerID variable”
End If

APPENDIX A. IVR PLUG-IN API REFERENCE A-16


TELEVANTAGE DEVELOPER ’S GUIDE

Get method (PluginCallee interface)


Description Gets a standard or custom party attribute from the IVR Plug-In’s party in the call. The callee is the IVR
Plug-In if called directly. If the IVR Plug-In is called indirectly, the callee is the User who had a routing
list that called the IVR Plug-In
Syntax [Value] = Object.Get(Keyname, DefaultValue)
Arguments Name Data Type Description
The name of a custom data variable or the name of a standard
Keyname String
party attribute from the table below.
Optional. If the Keyname specified does not exist on the party,
DefaultValue String the Value returned will beset to the DefaultValue argument.
Default is “”
Returns Value String Returns the value of the Keyname specified.
Remarks Use this method to obtain the value of any standard or custom data item attached to the callee. The
callee is the IVR Plug-In if called directly. If the IVR Plug-In is called indirectly, the callee is the User who
had a routing list that called the IVR Plug-In. The names of all custom data variables are defined in the
Administrator. The names of all standard party attributes that apply to the Callee are listed below.
Standard Property Description
ppCallerIDName Caller ID name supplied by the party owner.
ppCallerIDNumber The party’s address, which is the extension.
ppCallerIDNumberA
The access code of the Dialing Service used by the party’s address, if applicable.
ccessCode
ppCallerIDNumberTy
The type of the party’s address, which will always be an extension
pe
Suggested display name for the party, a combination of FirstName and
ppDisplayName
LastName.
ppExtension The extension of the party.
ppFirstName The party’s first name.
ppHandle The handle of the party
ppHandlerDisplayNa
The name of the Plug-In.
me
ppHandlerExtension The extension of the Plug-In
ppHandlerID The ID of the IVR Plug-In.
The ID of the party that can be passed to the client API. Use one of the
ppID
AssociateXXX methods to change this value.
ppLastName The party’s last name.
ppStartTime Time the IVR Plug-In entered the current call
Server local path and file name of the party’s recorded voice title. A non-empty
ppVoiceTitleFile
path does not guarantee that the file actually exists.
Examples Dim oPluginCallee As TVIVRLib.PluginCallee
Set oPluginCallee = Caller
Dim sExtension
sExtension = oPluginCallee.Get(ppExtension)

APPENDIX A. IVR PLUG-IN API REFERENCE A-17


TELEVANTAGE DEVELOPER ’S GUIDE

PluginServer interface ____________________________________________


The PluginServer interface consists of the PlaceCall method.

PlaceCall method (PluginServer interface)


Description Allows the IVR Plug-in to make an call to an extension or external number on behalf of another
extension, attach some data to the call, and return control back to the TeleVantage Server.
Syntax [TvDevId] = Object.PlaceCall(AccessCode, DialString, Extension, Subtype, InitialData)
Arguments Name Data Type Description
AccessCode String Specifies if you are making an external call over a Dialing Service, an
internal call to an extension, or an external call over a particular trunk.
Specify an access code for the dialing service used to make an
external call. If calling an extension, specify "" (empty string). If you
need to call an external number using a particular trunk, then specify
the Select a Trunk access code (e.g. 88) followed by a the trunk
number exactly as you would dial it from dial tone, e.g. "881" for trunk
1.
DialString String Phone number or extension the TeleVantage Server will dial. The
format of the number dialed depends on the selected Subtype,
described below.
Extension String The extension number to transfer the call to after dialing is complete.
If you want to perform voice processing on the call, use the extension
number of an IVR Plug-in.
Subtype AddressSubtype Address subtype for the outbound call. This is ignored for calls to
extensions. Unless you want to dial the number exactly as written,
you should specify astUseServiceRules. See the AddressSubtype
enumeration for more information.
InitialData String User-defined string to pass to the target if an IVR Plug-in’s extension
is specified in the Extension argument. The IVR Plug-In launched at
that extension can retrieve the InitialData string by calling
PlugInCaller.Get("TVIVRInitialData")
Returns TvDevId Long The TeleVantage Device ID that the call was placed on. Negative
numbers correspond to a trunk number, positive numbers correspond
to a station ID.
Remarks See the remarks on the next page

APPENDIX A. IVR PLUG-IN API REFERENCE A-18


TELEVANTAGE DEVELOPER ’S GUIDE

Remarks See the PlaceCall and ReceiveCall sample for an example of on how to use this method.

See the CallProgress method and the PluginApplicationOutbound interface for information on
performing call progress.

If the PlaceCall method’s DialString argument specifies an extension, the following issues apply.
Q Unlike calls to external numbers, the PlaceCall method doesn't return until the extension’s default
station answer, and the CallPlaced event is not fired. Therefore, when the CallPlaced method is
invoked for a call to an extension, you know that callee has answered the ringing station and is
listening to the call. The PlaceCall method will only ring the station for the duration defined in the
user’s “Ring phone for __ seconds” setting before it times out.
Q The DialString argument cannot specify an extension for a Queue, Auto Attendant, or IVR Plug-In.
If the PlaceCall method’s DialString argument does not specify a valid extension, or the user at
this extension doesn't have an default station as defined in the Administrator, the PlaceCall()
method will fail with an error of TVIVR_E_INVALID_ARGUMENT.
Q The extension’s Call Forwarding settings are ignored. For example if user at extension 101
forwards their calls to an external number or another extension, extension 101’s default station
(or external station) will be rung, not the call forwarding number.
Q The extension’s Do not Disturb setting and the Taking Calls attribute of other Personal Statuses
or Call Rules are ignored.
Q The extension’s Call screening and announcement preferences are ignored. Call offering is not
played to the callee who answers their station.
Example1 The following code creates an external call and passes data to another IVR Plug-In at extension 333:
Dim TrunkNumber As Long
Dim mServer As PluginServer
Set mServer = New IVRPlugin
TrunkNumber = ABS(mServer.PlaceCall("9", "16173540600", "333", astUseServiceRules,
"MyInitialDataString"))

In you have an IVR Plug-In at extension 333, it can retrieve the InitiaData using the following
code.

PlaceCallInitialData as String
PlaceCallInitialData = mPlugInCaller.Get "TVIVRInitialData", "N/A"
mPlugInCaller.SetStatus "The initial data set via PlaceCall is " & PlaceCallInitialData
Example2 The following code creates a call between extension 102 and extension 333:
Dim StationID As Long
Dim mServer As PluginServer
Set mServer = New IVRPlugin
StationID = mServer.PlaceCall("", "102", "333", , )

APPENDIX A. IVR PLUG-IN API REFERENCE A-19


TELEVANTAGE DEVELOPER ’S GUIDE

PluginMedia interface _____________________________________________


The PluginMedia interface consists of the following methods:
Q Dial method. Plays DTMF or MF digits. See page A-20.
Q FlushDigitBuffer method. Returns a string representing all digits currently in the voice resource’s digit buffer,
and leaves the digit buffer empty. See page A-21.
Q GetCallProgress method. Performs inbound call progress analysis. See page A-21.
Q GetDigits method. Returns a string of digits from the digit buffer representing a number of touchtone digits, or
a series of digits ending with a terminating digit. See page A-22.
Q GetXmitTimeslot method. Returns the TDM bus transmit timeslot of the voice resource. See page A-23.
Q Listen method. Performs a half duplex route such that the voice resource listens to the specified TDM bus
timeslot. See page A-23.
Q PlayFile method. Plays a pre-recorded audio file. See page A-24.
Q PlayString method. Plays a voice string. See page A-25.
Q PlayTone method. Plays a pre-defined tone such as dial tone or a busy signal. See page A-28.
Q RecordFile method. Records a voice file. See page A-29.
Q SetRate method. Set audio rate for the next or current playback operation. See page A-30.
Q SetVolume method. Set audio volume for the next or current playback operation. See page A-30.
Q Stop method. Stops all voice activity. See page A-30.

All PluginMedia methods are synchronous. All timeouts and durations are in milliseconds.

Dial method (PluginMedia interface)


Description Plays DTMF or MF digits.
Syntax Object.Dial DialString
Arguments Name Data Type Description
DialString String Digits to dial.
Remarks Use the PlaceCall method to call numbers. Use this method to play DTMF digits to the caller. A
common use is to play sequences of DTMF digits to another IVR application.
Example mTVMedia.Dial "102#928472#*"

APPENDIX A. IVR PLUG-IN API REFERENCE A-20


TELEVANTAGE DEVELOPER ’S GUIDE

FlushDigitBuffer method (PluginMedia interface)


Description Returns a string representing all digits currently in the voice resource’s digit buffer, and leaves the digit
buffer empty.
Syntax [DigitBuffer]= Object.FlushDigitBuffer
Name Data Type Description
Returns DigitBuffer String String of digits retrieved from the voice resource’s digit buffer.
Remarks The voice resource's digit buffer collects and stores digits detected over the line. The FlushDigitBuffer
method retrieves all the digits already in the digit buffer without waiting for any conditions. The digit
buffer is empty after this method completes.
The FlushDigitBuffer method is similar to the GetDigits method. However, the GetDigits method
waits for conditions before retrieving digits (see page A-22.)
Example The following code retrieves all the digits in the digit buffer and places them in the Choice variable:
Choice = mTVMedia.FlushDigitBuffer

GetCallProgress method (PluginMedia interface)


Description Performs call progress analysis.
Syntax [ActionResult] = Object.GetCallProgress(CallTimeout, ConnectLength, ConnectType)
Argument Data Type Description
Optional. Milliseconds to wait for call progress detection to
CallTimeOut Long
complete. Default is 20,000 (20 seconds).
Optional return value that if connected, provides the length of
the greeting salutation in milliseconds (e.g. "Hello" is about 1000
milliseconds long). Using this parameter it is possible to
ConnectLength Long
determine if you have reached an answering machine or a
person, since answering machine greetings are much longer
than live people.
Optional return value that returns the type of connection
ConnectTypeCo
ConnectType detected, if a connection was made. See
nstants
ConnectTypeConstants enumeration for more information.
See the ActionResult enumeration for a complete list of possible
Returns ActionResult ActionResult
results for this method.
Remarks A CallTimeOut of 0 seconds is no timeout at all and the method will immediately return. A CallTimeOut
of -1 is an indefinite timeout.
Example If mTVMedia.GetCallProgress(30000) = arBusy then
mPlugInCaller.CallDone naHangUp
Else
mTVMedia.PlayFile "Hello.vox"
End If

APPENDIX A. IVR PLUG-IN API REFERENCE A-21


TELEVANTAGE DEVELOPER ’S GUIDE

GetDigits method (PluginMedia interface)


Description Returns a string of digits from the digit buffer representing a number of touchtone digits, or a series of
digits ending with a terminating digit. This method waits indefinitely (by default 15 seconds) until one of
the conditions in the input list is met.
Syntax [DigitsBuffer] = Object.GetDigits(MaxDigits, TermDigits, DigitsTimeOut, InterDigitTimeOut,
InterDigitStart, Result)
Arguments Name Data Type Description
MaxDigits Integer Optional. Maximum number of digits to collect. Default is 1.
Optional. String indicating any digits that will terminate the
TermDigits String method. To automatically strip off the terminating digit, add a ”-“
to the end of the string. Default is “”.
DigitsTimeOut Long Optional. Maximum number of milliseconds the method will wait
before returning. Default is 15000 milliseconds (15 seconds).
InterDigitTimeOut Long Optional. Maximum number of milliseconds this method will wait
between digits before returning. Default is 0, no timeout set.
InterDigitStart Long Optional. Set to 1 to delay the InterDigitTimeout until after the
first digit is collected. Default is 0.
Result ActionResult Optional returned value. See the ActionResult enumeration for
more information.
Returns DigitBuffer String Returns a string of digits retrieved from the voice resource’s digit
buffer.
Remarks A voice resource has a digit buffer that collects and stores digits detected over the phone line, such as
touchtone digits. The GetDigits method retrieves digits from the digit buffer according to certain
conditions. The following conditions can cause the GetDigits method to terminate:
The number of digits received is equal to the MaxDigits argument.
One of the digits in the TermDigits argument is detected. You can add a "-" to the end of the
TermDigits argument to remove the terminating digit.
The time elapsed exceeds the DigitsTimeOut argument.
The time elapsed since the last digit was detected exceeds the InterDigitTimeOut argument.
The Stop method is executed.
The caller hangs up.
The digits retrieved by this method are removed from the digit buffer after this method executes. Any
extra digits remain in the digit buffer for later retrieval, for example if 5 digits are in the digit buffer, but
the MaxDigits argument was set to 4.

A InterDigitTimeOut or DigitsTimeOut of 0 is no timeout at all and the method will immediately return. A
timeout of -1 is an indefinite timeout.
The GetDigits method is similar to the FlushDigitBuffer method. However, the FlushDigitBuffer
method does not wait for conditions before retrieving digits (see page A-21.)
Example 1 The following code retrieves 10 digits and places them into the Choice variable, unless the caller
presses # to terminate input or waits 20 seconds. If the caller presses #, the digits up to and including
the # are returned. if the caller waits 20 seconds, no digits are returned, even if 9 digits were pressed.
Choice = mTVMedia.GetDigits(10, "#", 20000)
Example 2 The following code plays a voice file that prompts callers for their PIN number, and then retrieves it.

APPENDIX A. IVR PLUG-IN API REFERENCE A-22


TELEVANTAGE DEVELOPER ’S GUIDE

’Please enter your PIN Code followed by the pound sign


mTVMedia.PlayFile "ENTRPIN.VOX"
’specifying a 0 for MaxDigits allows a variable number of ’digits to be entered
’# terminates digit retrieval’- strips off the terminating digit
CustomerPIN = mTVMedia.GetDigits(0, "#-")
Example 3 The following code illustrates how digits are collected and removed from the digit buffer, while the
remaining digits stay in the buffer awaiting a subsequent GetDigits method.
’Caller presses 12345
nowChoice = mTVMedia.GetDigits(2)
’nowChoice is now "12"
"NextChoice = mTVMedia.GetDigits(2)
’NextChoice is now "34"
LastChoice = mTVMedia.GetDigits(2)
The line above waits for the second digit to be pressed because only 1 digit (a "5") is in the digit buffer
when the code executes. It waits as long as the default specified in the DigitsTimeOut argument. If no
digit is pressed within that period of time, LastChoice is set to "" and the "5" remains in the digit buffer. It
could be retrieved by the next GetDigits method; however, if we assume that the caller presses 678
before the timeout, LastChoice is now "56".
ReallyLastChoice = mTVMedia.GetDigits(2)
ReallyLastChoice is now "78" and no digits remain in the buffer.

GetXmitTimeslot method (PluginMedia interface)


Description Returns the TDM bus transmit timeslot of the voice resource.
Syntax [Timeslot] = Object.GetXmitTimeslot
Arguments Name Data Type Description
Returns Timeslot Long Returns the TDM bus transmit timeslot of the voice resource.
Remarks
Example

Listen method (PluginMedia interface)


Description Performs a half duplex route such that the voice resource listens to the specified TDM bus timeslot.
Syntax Object.Listen Timeslot
Arguments Name Data Type Description
Timeslot Long TDM bus timeslot to listen to.
Remarks
Example

APPENDIX A. IVR PLUG-IN API REFERENCE A-23


TELEVANTAGE DEVELOPER ’S GUIDE

PlayFile method (PluginMedia interface)


Description Plays a pre-recorded audio file.
Syntax [Result] = Object.PlayFile(FileName, TermDigits, StartPosition, EndPosition, ClearDigitBuffer,
Format)
Arguments Name Data Type Description
FileName String File name to be played.
TermDigits String Optional. Terminating digit mask. Default is “@” – all digits will
terminate playback.
StartPosition Long Optional. Position within the file in bytes to start playing. Default is 0.
EndPosition Long Optional returned value. Position within the file in bytes where
playback stopped.
ClearDigitBuffer Boolean Optional. If True, clears the digit buffer before playback. Default is -1
(True).
Format FileFormat Optional. File format of the audio file. FileFormat can be
any of the following. The default format is 3, or 8KHz PCM.
Enumerations:
Constant Value Description
ffVOX_ADPCM_6K 0 6KHz VOX ADPCM format.
ffVOX_ADPCM_8K 1 8KHz VOX ADPCM format.
ffVOX_PCM_6K 2 6KHz VOX PCM format.
ffVOX_PCM_8K 3 8KHz VOX PCM format.
ffWAV_PCM_9K 6 6KHz WAV PCM format.
ffWAV_PCM_8K 7 8KHz WAV PCM format.
11KHz WAV PCM format. (See
ffWAV_PCM_11K 8
Important Note in Remarks.)
All file formats are 1 channel (mono). See Remarks for more
information about each format.
Returns Result ActionResult Returns information on how the method completed. See the
ActionResult enumeration for more information
Remarks This method clears the digit buffer before playing if the ClearDigitBuffer argument is set to -1 (the
default value). Play always begins at the start of the voice file unless the StartPosition argument
contains a valid non-zero value.
Play can be interrupted by any of the following conditions:
A valid terminating digit specified in the TermDigits argument is pressed (or is already in the digit
buffer if ClearDigitBuffer is set to 0, False).
The caller hangs up.
The Stop method is invoked.
The FileFormat argument specifies the format for the file to be played. The following table lists some
additional metrics for each file format:
FileFormat Kbps Minutes/MB Bytes/Second
6KHz VOX ADPCM format 24 5.83 3000

APPENDIX A. IVR PLUG-IN API REFERENCE A-24


TELEVANTAGE DEVELOPER ’S GUIDE

8KHz VOX ADPCM format 32 4.37 4000


6KHz VOX PCM format 48 2.91 6000
8KHz VOX PCM format 64 2.18 8000
6KHz WAV PCM format 48 2.91 6000
8KHz WAV PCM format 64 2.18 8000
11KHz WAV PCM format 88 1.59 11000
Important: The enumeration ffWAV_PCM_11K is not supported and will fail on Intel Dialogic DM3
telephony boards.

PlayString method (PluginMedia interface)


Description Plays a voice string. A voice string is a collection of one or more voice files played smoothly together
using various play methods. Voice files can be prompts, numbers, dates, times, characters or ordinal
numbers, for example, "Order number [54321] was shipped on [Tuesday, October 2]."
Syntax [Result] = Object.PlayString(Value, TermDigits, ClearDigitBuffer, Format, LanguageParams,
DateFormat, NumericPrecision)
Arguments Name Data Type Description
Value String String value to be played. See below for the exact format required
by this argument,
TermDigits String Optional. Terminating digit mask. Default is “@” – all digits will
terminate playback.
ClearDigitBuffer Boolean Optional. Clear the digit buffer before playback. Default is 1, clear
digit buffer.
Format FileFormat Optional. File format of the audio file. For a list of valid file formats,
see the Format enumerations for the PlayFile method on page
A-24. The default format is 3, 8KHz PCM VOX format.
LanguageParams String Optional. parameter to specify a different spoken locale or special
language processing. See below for details. LanguageParams is
specified in the format of
[tvlocale=<localecode>;]<LanguageDLLParams> . Default value is
"tvlocale=System;"
DateFormat String Optional. See below for the exact format required by this
argument,
NumericPrecision Integer Optional. Precision on numbers to be played back.
Returns Returns information on how the method completed. See the
Result ActionResult
ActionResult enumeration for more information.
Remarks This method plays the voice string specified by the Value argument. A voice string is specified in the
following manner:
"item1[, item2]...[, itemN]"
where N is a maximum of 128 items and the format of an item is:
value|element type[|format]
Each item consists of three parts:
Part Description

APPENDIX A. IVR PLUG-IN API REFERENCE A-25


TELEVANTAGE DEVELOPER ’S GUIDE

Value Value to be played (for example, "Hello.vox" or "123"). Value can be any valid value
for the given element type. Note that for dates, the date value must be in the format
of
w mm dd hh:nn:ss yyyy
e.g. In Visual Basic’s format function you can convert a time value such as Now() to
the proper format for the PluginMedia interface as in:
Format$(Now(), "w mm dd hh:nn:ss yyyy"
Which could return:
15 02 08 05:30:00 2001
Element type How the file should be played, for example, as a number, or as a currency amount.
You can abbreviate any element type by using its first letter The following element
types are available:
Element type Abbreviation Description
CHARACTER C Speaks the value.
DATE D Plays the value as a date and/or time in the
specified format.
FILE F Plays the voice file specified by value.
INDEXEDFILE I Plays a phrase from an indexed voice file.
Only one indexed file can be referenced in
the string (see below). The indexed file
name is specified by the value and the
phrase number is specified in the format.
MONEY M Plays the value as a currency amount
(dollars and cents) to the decimal precision
specified in the format.
NUMBER N Plays the value as a number to the decimal
precision specified in the format.
ORDINAL O Plays the value as an ordinal number (1st,
2nd, 3rd, etc.).
Format Optional. Depending on the element type, format can be any valid date or file format,
or precision. Refer to the format table below for valid formats. You only need to
specify a format for date, file, indexed file, money, and number element types. The
following formats are available:
Element type Format
DATE A valid date format string to specify how the date is
spoken. For example, “15 02 08 05:30:00
2001|D|mm/dd/yyy” plays just the month day and year of a
date/time value. To create date values properly, see the
value part description above.
FILE A valid file format. For example, “Greeting.vox|F|3”.
INDEXEDFILE Either an index number or a text string to specify which
phrase to play in the indexed file. Text strings must be
enclosed in single quotes, for example, “PHRASES.VAP|I|5”
or “PHRASES.VAP|I|'Hello'”. Refer to the PlayIndexedFile
method for more information.

APPENDIX A. IVR PLUG-IN API REFERENCE A-26


TELEVANTAGE DEVELOPER ’S GUIDE

MONEY An integer describing decimal precision. For example,


“123.50|M|0” will play the money value without any cents.
NUMBER An integer describing decimal precision. For example,
“12.345|N|3” will play the number to all 3 decimal places.
If an error occurs during the playing of any string element, the string halts playing
and any remaining elements are not played. Refer to the PlayFile method for an
explanation of how to terminate this method.
When two or more sets of International system prompts (locales) are installed on the TeleVantage
Server, the LanguageParams argument can specify the locale the IVR Plug-In’s PlayString method
uses to speak numbers, characters, and dates. For example from English to Spanish. The format of the
LanguageParams argument is [tvlocale=<localecode>;]<LanguageDLLParams> A system’s installed
localecodes can be found in the TeleVantage Client API's Session.System.LocaleCodes collection.
PlayString supports a special locale code "system" which corresponds to the current system's default
locale code as set by TvAdmin in the SystemSettings dialog. If the locale is not provided or is empty
then PlayString will use the system locale. If the specified locale is not installed on the Server then
PlayString returns an invalid argument error. The default value of the LanguageParams parameter is
"tvlocale=System;". The "tvlocale" tag and the locale code are case insensitive.

To determine the current language used by the caller, use the PluginCaller.Get and PluginCaller.Exists
method with "ppLocaleCode". Users and contacts have a "TelephonePromptLanguage" property which
sets the default ppLocaleCode, and the system provides a default value for all other callers. Queues
and Auto Attendants may override these defaults before transferring a call to an IVR Plug-in. IVR
plug-ins that support multiple locales may use this property to select the caller’s preferred locale. A
call’s ppLocaleCode cannot be set or changed by an IVR Plug-in.

Example 1 The following code plays the string, "Order number 123."
MTVMedia.PlayString “ordernum.vox|F,123|C“
Example 2 The following code plays the string, “Transferring to...” [John Doe], where the person's name is
recorded in a file name stored in the variable Person:
MTVMedia.PlayString “transfer.vox|F,“ & Person & “|F“
Example 3 Since only one indexed file can be referenced in the string, so the following syntax would not play both
indexed file phrases correctly:
MTVMedia.PlayString "file1.vap|I|2, file2.vap|I|2"
To work around this limitation, use two PlayString methods:
MTVMedia.PlayString "file1.vap|I|2"
MTVMedia.PlayString "file2.vap|I|2"
Example 4 Play a time
MTVMedia.PlayString Now() & "|D|hh:nn am/pm"
Or some development tools require you to first format the date/time value like follows:
MTVMedia.PlayString Format$(Now(), "w mm dd hh:nn:ss yyyy") & "|D|hh:nn am/pm"
Example 5 Play the number one using different languages and genders. This requires that you install the
TeleVantage Server with Spanish language support. Every language has it’s own language parameters,
and for Spanish an "f" or "m" means speak it using female or mail gender.

APPENDIX A. IVR PLUG-IN API REFERENCE A-27


TELEVANTAGE DEVELOPER ’S GUIDE

oMedia.PlayString "1|n", , , , "tvlocale=ES00;f" ’ play Spanish, female gender "una"


oMedia.PlayString "1|n", LanguageParams:="tvlocale=ES00;" ’ "un" Spanish male gender
oMedia.PlayString "1|n", LanguageParams:="tvlocale=EN00" ’ "one" English
oMedia.PlayString "1|n", LanguageParams:="tvlocale=system" ’ "one" System default
oMedia.PlayString "1|n" ’ "one" Systen default
Dim sLocale As String
sLocale = Caller.Get(ppLocaleCode)
oMedia.PlayString "1|n", LanguageParams:=sLocale ’ "one" System default

PlayTone method (PluginMedia interface)


Description Plays a pre-defined tone such as dial tone or a busy signal.
Syntax [Result] = Object.PlayTone Tone, TermDigits, ToneTimeOut)
Arguments Name Data Type Description
Tone ToneID Tone to be played:
Enumerations
Constant Value Description
tidDialtone 1 Dialtone
tidReorder 2 Reorder
tidBust 3 Busy
tidRingback1 4 Ringback 1
tidRingback2 5 Ringback 2
tidRingback1CallWait 6 Ringback1 Call Waiting
tidRingback2CallWait 7 Ringback 2 Call Waiting
tidRecallDial 8 Recall dial
tidIntercept 9 Intercept
tidCallWait1 10 Call Waiting 1
tidCallWait2 11 Call Waiting 2
tidBusyVerifyA 12 Busy Verify 1
tidBusyVerifyB 13 Busy Verify 2
tidExecOverride 14 Executive override
tidFeatureConfirm 15 Feature confirmation
tidStutterDialtone 16 Stutter dialtone
Optional. Terminating digit mask. Default is “@” – all digits will
TermDigits String
terminate playback.
Optional. The number of milliseconds before the tone times out.
ToneTimeOut Long
The default is -1 for no timeout until a digit is pressed.
Returns information on how the method completed. See the
Returns Result ActionResult
ActionResult enumeration for more information

APPENDIX A. IVR PLUG-IN API REFERENCE A-28


TELEVANTAGE DEVELOPER ’S GUIDE

RecordFile method (PluginMedia interface)


Description Records a voice file, using the specified file format.
Syntax [Result] = Object.RecordFile(FileName, TermDigits, RecordTimeOut, StartPosition, EndPosition,
ClearDigitBuffer, RecordBeep, Format, MaxSilence, MaxNonSilence)
Arguments Name Data Type Description
FileName String File name to be recorded.
Optional. Terminating digit mask. Default is “@” – all digits will
TermDigits String
terminate recording.
Optional. Maximum number of milliseconds to record. Default is
RecordTimeOut Long
60000 (1 minute).
Optional. Position in bytes within the file to start recording.
StartPosition Long
Default is 0.
Optional returned value. Position in bytes within the file where
EndPosition Long
recording stopped.
Optional. Clear the digit buffer before playback. Default is -1,
ClearDigitBuffer Boolean
clear digit buffer.
Optional. Specifies whether a beep will be played prior to
RecordBeep Boolean
recording. Default is -1 (True).
Optional. File format of the audio file. For a list of valid file
Format FileFormat formats, see the Format enumerations for the PlayFile method
on page A-24. The default format is 3, 8KHz PCM VOX format.
Optional. Maximum number of milliseconds of silence to record
MaxSilence Long
before terminating. Default is -1 or no timeout.
Optional. Maximum number of milliseconds of non silence to
MaxNonSilence Long
record before terminating. Default is -1 or no timeout
Returns Returns information on how the method completed. See the
Result ActionResult
ActionResult enumeration for more information
Remarks If the RecordBeep argument is set to True, a "beep" tone is played immediately before recording
begins. This method clears the digit buffer before recording unless the AutoClearDigits argument is set
to False.
Any of the following conditions can cause the RecordFile method to terminate:
A valid terminating digit specified in the TermDigits argument is pressed (or is already in the digit
buffer if the AutoClearDigits argument is set to False).
The recording time exceeds the RecordTimeOut argument.
A pause exceeding the MaxSilence argument is detected
A constant sound exceeding the MaxNonSilence argument is detected.
The Stop method is invoked.
The caller hangs up.
Example The following example records for up to 20 seconds:
mTVMedia.RecordFile "message.vox", , 20000

APPENDIX A. IVR PLUG-IN API REFERENCE A-29


TELEVANTAGE DEVELOPER ’S GUIDE

SetRate method (PluginMedia interface)


Description Sets the audio playback rate for the next or current playfile operation.
Syntax Object.SetRate Rate
Arguments Name Data Type Description
Specify a value from -10 to 10 to slow down or speed up voice
Rate Integer
file playback.
Remarks -10 is the slowest speed, and 10 is the fasted speed. 0 is normal speed.
Example

SetVolume method (PluginMedia interface)


Description Sets the audio volume for the next or current playfile operation.
Syntax Object.SetVolume Volume
Arguments Name Data Type Description
Specify a value from -10 to 10 to slow down or speed up voice
Volume Integer
file playback.
Remarks -10 is the quietest, and 10 is the loudest. 0 is normal volume.
Example

Stop method (PluginMedia interface)


Description Stops all voice processing activity, including PlayFile, PlayString, PlayTone, RecordFile, and GetDigits.
Syntax Object.Stop
Remarks Call this method in the CallTerminated method to be sure all voice processing has completed
Example

APPENDIX A. IVR PLUG-IN API REFERENCE A-30


TELEVANTAGE DEVELOPER ’S GUIDE

PluginApplicationOutbound interface________________________________
The PluginApplicationOutbound interface does not have any methods - instead acts as ’tag’ interface to change the
behavior of the CallPlaced and PlaceCall methods.
If an IVR Plug-In application implements this interface, the PlaceCall method will invoke the CallPlaced() method
immediately after a trunk has been seized and the call has been placed on the trunk. In other words, if the
PluginServer.PlaceCall() method succeeds (and returns a valid DeviceID of the seized trunk), PlugInApplication is
guaranteed to receive CallPlaced().
If an IVR Plug-in does not implement the PluginApplicationOutbound interface, TeleVantage will invoke CallPlaced()
method only when audio is available in the call (either in-band call progress, or remote party answered.) which is the
default behavior.
In addition, if the IVR Plug-In implements the PluginApplicationOutbound interface, until audio is available in the call,
several methods of PluginCaller will not be able to be executed. Executing those methods before audio is available will
result in an error TVIVR_E_UNEXPECTED = 0x80040236 (’Unexpected action requested for current state’). The
methods are PluginCaller.GetMedia, PluginCaller.GetXmitSlot, and PluginCaller.Listen. In addition, while audio is not
available, the PluginCaller.CallDone() can only be called with a NextAction argument of naHangup. In order to find out
when audio becomes available in the call (so that the IVR Plug-in can start using these disallowed methods), the IVR
Plug-In needs to use the PluginOutOfBandCallProgressMonitor interface.

PluginOutOfBandCallProgressEvents interface________________________
This interface and it’s methods are meant to be used with the PluginApplicationOutbound interface and
PluginOutOfBandCallProgressMonitor interface so you can monitor out of band call progress before audio is connected.
The PluginOutOfBandCallProgressEvents interface consists of the following methods:
Q CallProgressIndication method. Returns the current state (Alerting, Processing and Disconnected,
etc.) of out of band call progress detection used on ISDN or Internet trunks.

CallProgressIndication method (PluginOutOfBandCallProgressEvents interface)


Description Returns the current state (Alerting, Processing and Disconnected, etc.) of out of band call progress
detection used on ISDN or Internet trunks.
Syntax Object.CallProgressIndication(CallProgressState As OutOfBandCallProgress, ExtraData)
Arguments Name Data Type Description
OutOfBandCall Returns the ISDN or Internet out of band call progress state as
CallProgressState
Progress describe in the enumeration below:
Enumerations
Constant Value Description
oobcpInitiated 0 Call has been initiated.
oobcpProceeding 1 Call is proceeding
oobcpAlerting 2 Remote party ringing
oobcpConnected 3 Remote party answered
Remote party didn’t answer due
oobcpDisconnected 4 to one of the reasons described
in the ExtraData argument
If the CallProgressState argument returns oobcpDisconnected,
ExtraData Integer the value of ExtraData will be one of the CallDisconnectReason
constants as described in enumeration below

APPENDIX A. IVR PLUG-IN API REFERENCE A-31


TELEVANTAGE DEVELOPER ’S GUIDE

Enumerations
Constant Value Description
cdrUnknown 0 Unknown disconnect reason
cdrBusy 1 Remote party was busy
Destination number was out of
cdrDestOutOfOrder 2
order
cdrUnassignedNumber 3 Number is not unassigned
Network congestion prevented
cdrNetworkCongestion 3
the call
The call was rejected by the
cdrRejected 4
remote party
The designating was
cdrDestIncompatible 5
incompatible with the call type
The remote party did not
cdrNoAnswer 6
answer

PluginOutOfBandCallProgressMonitor interface _______________________


This interface and it’s methods are meant to be used with the PluginApplicationOutbound interface so you can monitor
out of band call progress before audio is connected. The PluginOutOfBandCallProgressMonitor interface consists of the
following methods:
Q GetDisconnectReason method. Returns the disconnection reason for an unsuccessful call.
Q MonitorCallProgress method. Returns an interface to a PluginOutOfBandCallProgressEvents object
for receiving out-of-band call progress events
Q WaitForAudio method. Waits the specified interval (in ms) for audio to be available in the call-

APPENDIX A. IVR PLUG-IN API REFERENCE A-32


TELEVANTAGE DEVELOPER ’S GUIDE

GetDisconnectReason method (PluginOutOfBandCallProgressEvents interface


Description Returns the disconnection reason for an unsuccessful call.
Syntax [Reason] = Object.GetDisconnectReason
Name Data Type Description
Returns CallDisconnect The CallDisconnectReason constants as described in
Reason
Reason enumeration below
Enumerations
Constant Value Description
cdrUnknown 0 Unknown disconnect reason
cdrBusy 1 Remote party was busy
Destination number was out of
cdrDestOutOfOrder 2
order
cdrUnassignedNumber 3 Number is not unassigned
Network congestion prevented
cdrNetworkCongestion 4
the call
The call was rejected by the
cdrRejected 5
remote party
The designating was
cdrDestIncompatible 6
incompatible with the call type
The remote party did not
cdrNoAnswer 7
answer

MonitorCallProgress method (PluginMedia interface)


Description This method hooks up an event interface to receive notifications on out of band call progress.
Syntax Object.MonitorCallProgress(PluginOutOfBandCallProgressEvents as Object)
Arguments Name Data Type Description
PluginOutOfBandCal An object that implements the
Object
lProgressEvents. PluginOutOfBandCallProgressEvents interface

APPENDIX A. IVR PLUG-IN API REFERENCE A-33


TELEVANTAGE DEVELOPER ’S GUIDE

WaitForAudio method (PluginMedia interface)


Description Waits the specified interval (in ms) for audio to be available in the call
Syntax [Result] = Object.WaitForAudio TimeoutInMilliseconds
Arguments Name Data Type Description
TimeoutInMillisecond
Long The number of milliseconds to wait for audio
s
Returns WaitForAudioR The WaitForAudioResult constants as described in enumeration
Result
esult below
Enumerations
Constant Value Description
Timeout specified by
WaitForAudioResult was
wfarTimeout 0
exceeded while waiting for
audio in the call
In band call progress available
in the call. The Plug-In can use
wfarInbandCp 1
the PlugInMedia CallProgress
method.
wfarConnected 2 Remote party answered
Call disconnected. Plug-in
application can use
GetDisconnectReason()
wfarDisconnected 3 method of
PluginOutOfBandCallProgress
Monitor to find out the reason
for failure.
Local party terminated the call,
wfarLocalDisconnect 4 for example the IVR Plug-in
called the CallDone method

APPENDIX A. IVR PLUG-IN API REFERENCE A-34


APPENDIX B
APPENDIX B

MIGRATING OLDER IVR PLUG-IN APPLICATIONS


CHAPTER CONTENTS
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-2
IVRPlugInNotify2 interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-2
IVRPlugIn2 object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-4
TELEVANTAGE DEVELOPER ’S GUIDE

Overview _______________________________________________________
IVR Plug-in applications written using previous versions of the TeleVantage IVR Plug-in API will continue to run.
However we recommend you convert your applications to the current IVR Plug-in interface. This appendix contains a
reference to the IVRPlugInNotify2 interface and IVRPlugIn2 object, which have been replaced by the current IVR
Plug-in API, described in detail in Appendix A.

IVRPlugInNotify2 interface _________________________________________


The TeleVantage Server invokes the methods of a Notify object to offer calls to the IVR Plug-in or to terminate the IVR
Plug-in when the call ends.
Note: The earlier IVRPlugInNotify interface has also been retained for backward compatibility. It is identical to
IVRPlugInNotify2 except that it does not include the CallPlaced method.

The IVRPlugInNotify2 interface consists of the following methods:


Q CallOffering method. See page B-2.
Q CallPlaced method. See page B-3.
Q CallTerminated method. See page B-5.

CallOffering method (IVRPlugInNotify2 interface)


Part of IVRPlugInNotify2Interface
Description Invoked when the phone call is offered to the Plug-in. If performing voice processing on the call,
you can use the Line argument to allocate the Dialogic voice resource that TeleVantage used to
handle the call.
Declaration Private Sub IVRPlugInNotify2_CallOffering( _
hParty as Integer, _
Line as Integer)

Inputs Argument Description


hParty Integer value. TeleVantage handle that references the party in this call.
Line Integer value. Line number which corresponds to the Dialogic voice resource
that TeleVantage used to handle this call.
Returns none

APPENDIX B. MIGRATING OLDER IVR PLUG-IN APPLICATIONS B-2


TELEVANTAGE DEVELOPER ’S GUIDE

Remarks Before CallOffering is invoked, TeleVantage creates an instance of the Plug-in’s class via its
program ID. The program ID is specified in the Administrator’s IVR Plug-ins view.
You can convert the Line parameter to a standard Dialogic device name using the following
pseudo code to calculate the Dialogic board and channel number:

Dim c, bb as Integer
Dim DialogicDeviceName as string
If Line Mod 4 = 0 then
bb = Line \ 4
Else
bb = Line \ 4 + 1
End If

If Line < 4 then


c = Line
Else
If Line \ 4 = 0 then
c = 4
Else
c = Line Mod 4
End If
End If

DialogicDeviceName = "DXXXB" + bb +"C" + c

CallPlaced method (IVRPlugInNotify2 interface)


Description Invoked by the Server to notify the Plug-in when an outbound call has been dialed.
Declaration Private Sub IVRPlugInNotify2_CallPlaced( _
ByVal hParty As Integer, _
ByVal Line As Integer, _
ByVal CallProgress As TVIVRLib.CPType)

Inputs Argument Description


hParty Integer value. TeleVantage handle that references the party in this call.
Line Integer value. Line number, which corresponds to the Dialogic voice
resource that TeleVantage used to handle this call.
CallProgress CPType value. For future use. Currently, this parameter always returns
CPDialed.
Returns none
Remarks TeleVantage does not do any call progress analysis before invoking this method. The number has
been dialed on the first available trunk specified by the access code in the PlaceCall method. It is
the responsibility of the Plug-in to initiate call progress analysis if required by the Plug-in. Refer to
the ReceiveCall and PlaceCall Visual Basic sample projects in the OutBoundCall directory.

APPENDIX B. MIGRATING OLDER IVR PLUG-IN APPLICATIONS B-3


TELEVANTAGE DEVELOPER ’S GUIDE

CallTerminated method (IVRPlugInNotify2 interface)


Description Invoked when TeleVantage wants to terminate the Plug-in, for example when TeleVantage detects
that the caller has hung up.
Declaration Private Sub IVRPlugInNotify2_CallTerminated( _
hParty as Integer, _
Line as Integer)

Inputs Argument Description


hParty Integer value. TeleVantage handle that references the party in this call.
Line Integer value. Line number, which corresponds to the Dialogic voice
resource that TeleVantage used to handle this call.
See CallOffering (page B-2) for more information.
Returns none
Remarks CallTerminated is not invoked after the IVRPlugIn CallDone method. After CallTerminated is
invoked, TeleVantage removes its reference to the ActiveX EXE’s class, which in Visual Basic will
then invoke the Class_Terminate subroutine.

IVRPlugIn2 object ________________________________________________


The IVR Plug-in application invokes the methods of an IVRPlugIn2 object to exchange call data with the TeleVantage
Server, and then to inform the Server when it has finished processing the call.
Note: The earlier IVRPlugIn interface to this component has also been retained for backward compatibility. It is identical
to IVRPlugIn2 except that it does not include the PlaceCall and Register methods.

The IVRPlugIn2 object consists of the following methods and properties:


Q CallDone method. See page B-5.
Q GetCustomPartyData method. See page B-5.
Q GetPartyData method. See page B-6.
Q Get XmitTimeslot method. See page B-7.
Q Listen method. See page B-7.
Q Ping method. See page B-7.
Q PlaceCall method. See page B-8.
Q Register method. See page B-9.
Q SetCustomPartyData method. See page B-10.
Q SetCustomData method. See page B-10.
Q SetStatus method. See page B-11.
Q Extension property. See page .B-11
Q DID property. See page B-11.
Q Name property. See page B-12.
Q Comments property. See page B-12.
Q CustomVariableName property. See page .B-12
Q CustomVariableValue property. See page B-12.

APPENDIX B. MIGRATING OLDER IVR PLUG-IN APPLICATIONS B-4


TELEVANTAGE DEVELOPER ’S GUIDE

CallDone method (IVRPlugIn2 object)


Description Returns control of the call to TeleVantage with instructions on how it should continue processing
the call.
Syntax object.CallDone(hParty, NextActionConstants, DialString)

Inputs Argument Description


hParty Integer value. TeleVantage handle that references the party in
this call.
NextActionConstants NextAction value. Specifies action TeleVantage should take on
the call via any of the NextAction enumeration constants.
DialString String value specifying the extension or number that should be
used by the NextAction constants NaTransferToNumber and
NaTransferToVoiceMail.
Returns none
Enumerations NextAction Enumeration
Constant Description

NaHangUp Hangs up the call


NaTransferToNumber Transfers the call to the extension or external number specified
in DialString as if it was dialed from dial tone.
NaTransferToVoiceMail Transfers the call to the voice mail box at the extension
specified in DialString.
NaReturnToRoutingList Returns the call to be processed by the routing list it came from,
if applicable. For example a user’s routing list may be set up to
ring extension 102, then call a Plug-in, and then ring extension
103. After the Plug-in accepts the call, performs its processing
and calls CallDone with NaReturnToRoutingList, the call will go
to extension 103.
Remarks When this method finishes, the IVR Plug-in is no longer processing the call and the Line argument
of the CallOffering method is no longer valid. Also, TeleVantage removes its reference to the
ActiveX EXE’s class, which in Visual Basic will then invoke the Class_Terminate subroutine.
CallTerminated is not invoked after CallDone.
Example ’Send the caller to the voice mail box at x102
MTVPlugIn.CallDone(hParty, 2, "102")

GetCustomPartyData method (IVRPlugIn2 object)


Description Gets the custom party data from the party in the TeleVantage call. The data that will be retrieved is
specified in KeyName. By default calls do not have any custom party data unless an IVR Plug-in
has set custom data using the SetCustomPartyData method. The value is returned from the
method as a string.
Syntax PartyData_Str = object.GetCustomPartyData(hParty, KeyName)

Inputs Argument Description


hParty Integer value. TeleVantage handle that references the party in this
call.

APPENDIX B. MIGRATING OLDER IVR PLUG-IN APPLICATIONS B-5


TELEVANTAGE DEVELOPER ’S GUIDE

KeyName String value specifying what custom data should be retrieved. The
KeyName must match exactly a custom data key that was set
previously by SetCustomPartyData. If the key does not exist for the
party, an empty string “” is returned.
Returns Function result is a string containing the custom party data.
Remarks none
Example ’get the caller’s CustomerID that was previously set by
’SetCustomPartyData
CustomerID = MTVPlugIn.GetCustomPartyData(hParty, "CustomerID")

GetPartyData method (IVRPlugIn2 object)


Description Gets the standard party data from the party in the TeleVantage call.
Syntax PartyData_Str = object.GetPartyData(hParty StandardKeyConstants)

Inputs Argument Description


hParty Integer value. TeleVantage handle that references the party in this
call.
StandardKeyConstants KeyType value. Specifies what data should be retrieved from the
TeleVantage party via any of the following constants. Note the
values may be blank for everything except pdDeviceNumber.
Returns Function result is a string containing the standard party data for the specified party.
Enumerations KeyType Enumeration
Constant Description
pdCallerIDNumber The Caller ID number
pdCallerIDName The Caller ID name
pdDIDNumber The DID number
pdDeviceNumber If the returned value is negative, the call came in on that trunk
number (for example, -5 is trunk #5). If the returned value is
positive, the call came in on that internal station number (for
example, 5 is station ID 5).
pdLoggedInUserExt The extension of the logged in user. If blank ““, then the caller the
Plug-in is handling is not a logged in user. This is useful for security
purposes.
pdCallbackAccessCode Dialing service access code for a voice message callback number.
pdCallbackAddressType Dialing service address for a voice message callback number.
pdCallbackAddressSubType Dialing service subaddress for a voice message callback number.
pdCallbackNumber Callback number for a voice message.
Remarks The data that is retrieved is specified in StandardKeyConstants. The value is returned from the
method as a string.
Example ’get the caller’s Caller ID number
CallerIDNumber = MTVPlugIn.GetPartyData(hParty, 0)

APPENDIX B. MIGRATING OLDER IVR PLUG-IN APPLICATIONS B-6


TELEVANTAGE DEVELOPER ’S GUIDE

GetXmitTimeslot method (IVRPlugIn2 object)


Description Allows the Plug-in to retrieve the SCbus transmit timeslot of the incoming network or station device
(MSI, LSI, DTI, or IP). This can be useful to connect a trunk to a GammaLink fax device, Aculab
network card or some other device that transmits on a SCbus timeslot.
Syntax Timeslot = object.GetXmitTimeslot(hParty)

Inputs Argument Description


hParty Integer value. TeleVantage handle that references the party in this call.
Returns Function result is a Long value containing the transmit timeslot.
Remarks See the Listen method to force TeleVantage to listen to a SCbus timeslot.
Example ’Get the SCBus timeslot that the TeleVantage network or
’station device is transmitting to.
TransmitTimeSlot = MTVPlugIn.GetXmitTimeSlot(hParty)

Listen method (IVRPlugIn2 object)


Description Allows the Plug-in to have the originating Dialogic network or station device (for example, LSI,
MSI, DTI, or IP) listen to a specified SCbus timeslot. This can be useful to connect a trunk to a
GammaLink fax device, Aculab network card or some other device that transmits on a SCbus
timeslot.
Syntax object.Listen(hParty, Timeslot)

Inputs Argument Description


hParty Integer value. TeleVantage handle that references the party in this call.
Timeslot Long value. SCbus timeslot that the TeleVantage device should listen to.
Returns none
Remarks See the GetXmitTimeslot function to get the SCbus timeslot that the TeleVantage network or
station device is transmitting to.
Example ’Have the network device listen to SCbus timeslot 5
MTVPlugIn.Listen(hParty, 5)

Ping method (IVRPlugIn2 object)


Description Allows the Plug-in to periodically inform the TeleVantage Server that it is still alive and processing.
If the TeleVantage Server does not receive a ping notification after a predefined interval, it will
assume that the Plug-in is no longer processing and will reclaim all Dialogic devices associated
with it.
Syntax object.Ping(hParty)

Inputs Argument Description


hParty Integer value. The TeleVantage handle that references the party in this call.
Returns none

APPENDIX B. MIGRATING OLDER IVR PLUG-IN APPLICATIONS B-7


TELEVANTAGE DEVELOPER ’S GUIDE

Remarks Ping should be called by the Plug-in every PingInterval minutes, where PingInterval is 2 minutes
by default. This allows the Plug-in to periodically inform the TeleVantage Server that it is still alive
and processing. If the TeleVantage Server does not receive a ping notification for 2 intervals (by
default 4 minutes), TeleVantage will assume that the Plug-in is no longer processing and will
reclaim all Dialogic devices associated with it.
You can change the PingInterval to be a different value than 2 minutes by adding a PingInterval
registry key under the following section:

HKEY_LOCAL_MACHINE\SOFTWARE\Artisoft\TeleVantage\Server\Settings

It is recommended that you do not Ping in a timer in your Plug-in. Your code may be in an infinite
loop, but your timer will continue to fire, telling the TeleVantage Server everything is OK when it is
not. Instead spread several “Pings throughout your code whenever lengthy processing occurs
such as database access, or prompting the caller for information.
Example ’Ping the TeleVantage Server
MTVPlugIn.Ping(hParty)

PlaceCall method (IVRPlugIn2 object)


Description Allows the Plug-in to place outbound calls, send data, and return control back to the Server.
Syntax Result% = object.PlaceCall(AccessCode, DialString, _
Extension, Subtype, InitialData, CallProgress)

Inputs Argument Description


AccessCode String value specifying access code for the dialing service used to make
the outbound call.
DialString String value specifying phone number that Server will dial. The format of
the number dialed depends on the selected Subtype. See the Subtype
enumeration below for examples.
Extension String value specifying user extension or IVR Plug-in extension to transfer
to after dialing is complete.
Subtype AddressSubType value. Address Subtype for the outbound call. Specify
astUseServiceRules to apply dialing service rules to the outbound call.
InitialData String value specifying a user-defined string to pass to the target Plug-in
specified in the Extension parameter above. The string can be retrieved
by a Plug-in that handles the call using the GetCustomPartyData method
and the “TVIVRInitialData” keyname.
CallProgress Integer value. Reserved for future use. Currently unused.
Returns Integer value indicating Device ID of the device on which the call was placed.
Enumerations AddressSubType Enumeration
Constant Description
astUnknown Dials the number “as is”
astInternational Reserved for future use
astNational Reserved for future use
astNetwork Reserved for future use
astSubscriber Reserved for future use

APPENDIX B. MIGRATING OLDER IVR PLUG-IN APPLICATIONS B-8


TELEVANTAGE DEVELOPER ’S GUIDE

astAbbreviated Reserved for future use


astReserved Reserved for future use
astUseServiceRules Sends the number through dialing service for processing by dialing
rules. The number must be formatted according to one of the
following conventions:

Option 1
Format:
+{country code}{area code and number}

Examples:
+44 181 5551212 (UK)
+1 617 5551212 (US)

Option 2
Format:
{area code and number}

Example:
6175551212
Remarks none
Example See the PlaceCall and ReceiveCall sample Visual Basic projects in the OutboundCall SDK sample
for details on how to use the PlaceCall method. The following Visual Basic code initiates an
outbound call:

Dim devid As Integer


Dim mServer As IVRPlugIn2
Set mServer = New IVRPlugIn
devid = mServer.PlaceCall("9", “16173540600”, "333", 0, _
"MyInitialDataString", 0)

Register method (IVRPlugIn2 object)


Description Allows the Plug-in to register with the Server in order to get Server information (Server-side
properties) about the Plug-in.
Syntax object.Register(ProgramId)

Inputs Argument Description


ProgramId String value indicating the Plug-in to be registered.
Returns Sets values of the Extension, DID, Name, Comments, CustomVariableName, and
CustomVariableValue properties.
Remarks When the Register method is invoked, the properties listed above are populated.
Example 'Register the CustomerID sample program.
MTVPlugIn.Register"CustID.CTVCustID"

APPENDIX B. MIGRATING OLDER IVR PLUG-IN APPLICATIONS B-9


TELEVANTAGE DEVELOPER ’S GUIDE

SetCustomPartyData method (IVRPlugIn2 object)


Description Sets the custom party data for the party in the TeleVantage call. The data that will be set is
specified in KeyName.
Syntax object.SetCustomPartyData(hParty, KeyName, Value)

Inputs Argument Description


hParty Integer value. TeleVantage handle that references the party in this call.
KeyName String value specifying what custom data should be set. The KeyName will be
used later by GetCustomPartyData to retrieve the value from the call. This
KeyName is also what must be specified in the Tools-Columns window of the
Client’s Call Monitor to see the data as a custom column.
Value String value specifying the value for the custom data specified by the KeyName
argument.
Returns none
Remarks none
Example ’set the caller’s CustomerID to 1234567
MTVPlugIn.SetCustomPartyData(hParty, "CustomerID", "1234567")

SetPartyData method (IVRPlugIn2 object)


Description Sets the standard party data for the party in the TeleVantage call.
Syntax object.SetPartyData(hParty, StandardKeyConstants, Value)

Inputs Argument Description


hParty Integer value. TeleVantage handle that references the party in
this call.
StandardKeyConstants KeyType value. Specifies what data should be set via the
KeyType constants pdCallerIDNumber, pdCallerIDName, or
pdDIDNumber (note that the pdDeviceNumber constant cannot
be used here).
Value String value specifying the value for the party data specified by
the StandardKeyConstants argument.
Returns none
Enumerations KeyType Enumeration
Constant Description
pdCallerIDNumber The Caller ID number
pdCallerIDName The Caller ID name
pdDIDNumber The DID number
pdLoggedInUserExt The extension of the logged in user. If blank ““, then the caller
the Plug-in is handling is not a logged in user. This is useful for
security purposes.
pdCallbackAccessCode Dialing service access code for a voice message callback
number.
pdCallbackAddressType Dialing service address for a voice message callback number.

APPENDIX B. MIGRATING OLDER IVR PLUG-IN APPLICATIONS B-10


TELEVANTAGE DEVELOPER ’S GUIDE

pdCallbackAddressSubType Dialing service subaddress for a voice message callback


number.
pdCallbackNumber Callback number for a voice message.
Remarks none
Example ’set the caller’s Caller ID number
MTVPlugIn.SetPartyData(hParty, 0, "6175551212")

SetStatus method (IVRPlugIn2 object)


Description Sends a string to be displayed in the TeleVantage Device Monitor’s status column for the trunk or
station that the IVR Plug-in is operating on. Using SetStatus, you can visually monitor a Plug-in’s
activity. Each call to SetStatus changes the current status to the new status and the old status
disappears.
Syntax object.SetStatus(hParty as Integer, Status as String)

Inputs Argument Description


hParty Integer value. TeleVantage handle that references the party in this call.
Status String value specifying the new status for the device.
Returns none
Remarks none
Example ’set the Device Monitor’s status for this device
’to the string "Processing caller"
MTVPlugIn.SetStatus(hParty, "Processing caller")

Extension Property (IVRPlugIn2 object)


Description Read-only. Extension number associated with the Plug-in on the Server.
Syntax Reg_Ext_Str = object.Extension

Data type string


Remarks Value is set by the Register method.
Example

DID Property (IVRPlugIn2 object)


Description Read-only. DID number associated with the Plug-in on the Server.
Syntax Reg_DID_Str = object.DID

Data type string


Remarks Value is set by the Register method.
Example

APPENDIX B. MIGRATING OLDER IVR PLUG-IN APPLICATIONS B-11


TELEVANTAGE DEVELOPER ’S GUIDE

Name Property (IVRPlugIn2 object)


Description Read-only. Name of the Plug-in on the Server.
Syntax Reg_Name_Str = object.Name

Data type string


Remarks Value is set by the Register method.
Example

Comments Property (IVRPlugIn2 object)


Description Read-only. Comments associated with the Plug-in on the Server.
Syntax Reg_Comments_Str = object.Comments

Data type string


Remarks Value is set by the Register method.
Example

CustomVariableName Property (IVRPlugIn2 object)


Description Read-only. User-defined variable name associated with the Plug-in on the Server.
Syntax Reg_VarName_Str = object.CustomVariableName

Data type string


Remarks Value is set by the Register method.
Example

CustomVariableValue Property (IVRPlugIn2 object)


Description Read-only. User-defined variable value for the variable name associated with the Plug-in on the
Server.
Syntax Reg_VarVal_Str = object.CustomVariableValue

Data type string


Remarks Value is set by the Register method.
Example

APPENDIX B. MIGRATING OLDER IVR PLUG-IN APPLICATIONS B-12


APPENDIX C
APPENDIX C

DEVICE STATUS API REFERENCE


CHAPTER CONTENTS

Server object
Connect method (Server object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-2
Disconnect method (Server object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-2
Devices Property (Server object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-2
DeviceStateChanged Event (Server object). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-3

Device object
Refresh method (Device object). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-3
AssignedExtensions Property (Device object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-3
Class Property (Device object). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-3
CurrentExtension Property (Device object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-4
DefaultExtension Property (Device object). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-4
HookState Property (Device object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-4
Name Property (Device object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-4
Number Property (Device object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-4
Status Property (Device object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-5

Extension object
Refresh method (Extension object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-6
ACDDoNotDisturb Property (Extension object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-6
DoNotDisturb Property (Extension object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-6
Extension Property (Extension object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-6
FirstName Property (Extension object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-7
LastName Property (Extension object). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-7

Party object
CallerIDName Property (Party object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-7
CallerIDNumber Property (Party object). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-7
CallerIDNumberType Property (Party object). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-7
FirstName Property (Party object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-7
LastName Property (Party object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-7
TELEVANTAGE DEVELOPER ’S GUIDE

Overview _______________________________________________________
This appendix describes the methods, properties, and events that make up the TeleVantage Device Status API. For more
information about using the Device Status API, see Chapter 5 and the DeviceStatusSample project for example code.

Server object ____________________________________________________


Connect method (Server object)
Description Connects to the specified Server and initializes the Server object.
Syntax GoodConnect = object.Connect(ServerName)

Inputs Argument Description


ServerName The name of the Server to connect to.
Returns Boolean value indicating if the connection was successful.

Disconnect method (Server object)


Description Disconnects from the Server.
Syntax object.Disconnect()

Devices Property (Server object)


Description Read only. Returns a collection of Device objects representing all devices on the current Server.
Syntax DeviceList = object.Devices

Data type Collection of Device objects

APPENDIX C. DEVICE STATUS API REFERENCE C-2


TELEVANTAGE DEVELOPER ’S GUIDE

DeviceStateChanged Event (Server object)


Description Raised whenever the state of the device changes.
Syntax DeviceStateChanged(Device As Device)

Inputs none
Returns Argument Description
Device The Device object that changed.

Device object____________________________________________________
Refresh method (Device object)
Description Refreshes information about the extensions on the device.
Syntax object.Refresh()

AssignedExtensions Property (Device object)


Description Read only. Returns a collection of Extension objects representing all extensions assigned to this
device.
Syntax ExtensionList = object.AssignedExtensions

Data type Collection of Extension objects

Class Property (Device object)


Description Read only. Returns the device’s class (station or trunk).
Syntax TVObjectDeviceClass = object.Class

Data type TVObjectDeviceClass enumeration


Enumerations TVObjectDeviceClass Enumeration
Constant Description

tvDeviceClassTrunk Device is a trunk.


tvDeviceClassStation Device is a station.

ConnectedDevices Property (Device object)


Description Read only. Returns a collection of Device objects that are connected to the Device in an active
call.
Syntax Extension = object.ConnectedDevices

Data type Collection object


Remarks ConnectedDevices.Count will contain 0 if the Device is not in a call. ConnectedDevices.Count will
be 1 if the Device is in a two party call, and 2 or more for conferences.

APPENDIX C. DEVICE STATUS API REFERENCE C-3


TELEVANTAGE DEVELOPER ’S GUIDE

CurrentExtension Property (Device object)


Description Read only. Returns the Extension object currently logged in to the device.
Syntax Extension = object.CurrentExtension

Data type Extension object


Remarks Returns Nothing if there is no current extension.

DefaultExtension Property (Device object)


Description Read only. Returns the Extension object that is the default for the device.
Syntax Extension = object.DefaultExtension

Data type Extension object


Remarks Returns Nothing if there is no default extension.

HookState Property (Device object)


Description Read only. Returns the hook state of the device.
Syntax TVDeviceHookState = object.HookState

Data type TVDeviceHookState enumeration


Enumerations TVDeviceHookState Enumeration
Constant Description

tvDeviceHookStateOn Device is on-hook.


tvDeviceHookStateOff Device is off-hook.
tvDeviceHookStateUnknown Device’s hook state can’t be determined.

Name Property (Device object)


Description Read only. Returns the name of the device (blank for stations and the trunk name for trunks).
Syntax NameString = object.Name

Data type String


Remarks none

Number Property (Device object)


Description Read only. Returns the number of the device (positive for stations and negative for trunks).
Syntax DevNumber = object.Number

Data type Long

APPENDIX C. DEVICE STATUS API REFERENCE C-4


TELEVANTAGE DEVELOPER ’S GUIDE

Status Property (Device object)


Description Read only. Returns a status code indicating the device’s current activity.
Syntax TVDeviceStatus = object.Status

Data type Long (TVDeviceStatus enumeration)


Enumerations TVDeviceStatus Enumeration
Constant Description

tvDeviceStatusAudioCtl Station is playing/recording audio for the Client.


tvDeviceStatusCallingStation Station or trunk is waiting while TeleVantage rings a station.
tvDeviceStatusDatabaseBypass Database is being bypassed in case of failure.
tvDeviceStatusDialogNode Station or trunk is navigating an auto-attendant or routing list.
tvDeviceStatusDisabled Station or trunk is disabled
tvDeviceStatusExternalDialing Trunk is dialing an external number.
tvDeviceStatusHandsFreel Station is in hands-free dialing mode.
tvDeviceStatusHoldRecall Station is calling back after a hold timed out.
tvDeviceStatusIdle Station or trunk is idle.
tvDeviceStatusInCall Station or trunk has a call in progress.
tvDeviceStatusIncomingCall Station or trunk is receiving an incoming call.
tvDeviceStatusInternalDialing Station is dialing an internal number.
tvDeviceStatusListenCall Station or trunk is screening a message.
tvDeviceStatusLoggingIn Station or trunk is logging into the TUI.
tvDeviceStatusNoLC Trunk does not have loop current.
tvDeviceStatusOfferingCall Station or trunk is offering a call.
tvDeviceStatusOutboundDialing Station or trunk is dialing an external number.
tvDeviceStatusOutOfService Station or trunk has been taken out of service.
tvDeviceStatusPlayingHoldMusic Station is playing hold music.
tvDeviceStatusPlugIn Station or trunk is connected to an IVR Plug-In
tvDeviceStatusPreIdle Station or trunk is in a pre-idle state.
tvDeviceStatusReorder Station has been left off-hook too long, or trunk is in an error
condition.
tvDeviceStatusStartup Station or trunk is waiting while the TeleVantage system starts
up.
tvDeviceStatusTakingMessage Station or trunk is taking a message.
tvDeviceStatusTui Station or trunk is navigating the TUI. User is listening to the
auto-attendant menu.
tvDeviceStatusUnknown Station or trunk is not responding to device status queries.
Remarks none

APPENDIX C. DEVICE STATUS API REFERENCE C-5


TELEVANTAGE DEVELOPER ’S GUIDE

Extension object _________________________________________________


Refresh method (Extension object)
Description Refreshes information about this extension.
Syntax object.Refresh()

ACDDoNotDisturb Property (Extension object)


Description Read only. Returns a boolean value indicating whether or not the extension is in taking ACD
Workgroup calls.
Syntax UserACD_DND = object.ACDDoNotDisturb

Data type Boolean


Setting Description
True Extension is in ACD Do Not Disturb state.
False Extension is not in ACD Do Not Disturb state.

DoNotDisturb Property (Extension object)


Description Read only. Returns a boolean value indicating whether or not the extension is in Do Not Disturb
state.
Syntax UserDND = object.DoNotDisturb

Data type Boolean


Setting Description
True Extension is in Do Not Disturb state.
False Extension is not in Do Not Disturb state.

Extension Property (Extension object)


Description Read only. Returns the extension number for this user.
Syntax UserExtensionString = object.Extension

Data type String

APPENDIX C. DEVICE STATUS API REFERENCE C-6


TELEVANTAGE DEVELOPER ’S GUIDE

FirstName Property (Extension object)


Description Read only. Returns the first name of the user on this extension.
Syntax UserFirstNameString = object.FirstName

Data type String

LastName Property (Extension object)


Description Read only. Returns the last name of the user on this extension.
Syntax UserLastNameString = object.LastName

Data type String

Party object _____________________________________________________


CallerIDName Property (Party object)
Description Read only. Returns the CallerID Name of the party, if available.
Syntax NameString = object.CallerIDName

CallerIDNumber Property (Party object)


Description Read only. Returns the CallerID Number of the party, if available.
Syntax NumberString = object.AssignedExtensions

CallerIDNumberType Property (Party object)


Description Read only. Returns the type of Caller ID Number (user, phone number, etc.), if available.
Syntax TVAddressType = object.CallerIDNumberType

Remarks See the TVAddressType enumeration

FirstName Property (Party object)


Description Read only. Returns the First Name of the party, if applicable.
Syntax NameString = object.FirstName

LastName Property (Party object)


Description Read only. Returns the Last Name of the party, if applicable.
Syntax NameString = object.LastName

APPENDIX C. DEVICE STATUS API REFERENCE C-7


APPENDIX D
APPENDIX D

CLIENT API OBJECT REFERENCE


CHAPTER CONTENTS
Address object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-4
Addresses object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-4
Agent object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-5
Agents object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-6
AgentStat object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-6
AudioClip object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-7
Call object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-8
CallActivity object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-11
CallActivityHistory object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-11
CallHistory object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-12
CallRule object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-13
Column object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-13
Columns object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-14
Contact object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-14
Error object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-15
Field object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-15
Fields object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-16
Folder object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-16
Folders object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-17
Greeting object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-18
IAssociate object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-18
ICOMSecurity object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-19
IDialingService object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-19
IItem object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-19
InternetService object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-20
IPhoneService object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-21
Items object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-21
IWindowsSecurity object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-22
Locale object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-22
LocaleCode object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-23
LocaleCodes object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-23
LogonAddressInfo object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-23
Message object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-23
Notification object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-25
NotifyScheduleItem object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-25
NotifyScheduleItems object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-25
Parties object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-26
Party object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-26
PartyHistories object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-27
PartyHistory object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-27
Permission object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-28
TELEVANTAGE DEVELOPER ’S GUIDE

Permissions object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-28


PersonalStatus object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-29
PhoneGatewayService object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-30
PhoneService object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-31
QueueByPeriodStat object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-31
QueueByShiftStat object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-32
QueueStat object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-33
Recipients object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-34
Role object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-34
Roles object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-35
RoutingList object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-35
RoutingListAction object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-36
RoutingListActions object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-36
RoutingListFinalAction object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-37
RoutingService object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-37
Schedule object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-38
ScheduledDate object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-38
ScheduledDates object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-38
ScheduledDay object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-39
ScheduledDays object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-39
Schedules object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-40
Session object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-40
Shortcut object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-47
ShortcutGroup object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-47
ShortcutGroups object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-47
Shortcuts object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-48
SIPAccount object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-49
SIPAccounts object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-49
SIPPhoneGatewayService object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-50
SIPServer object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-50
SIPServers object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-51
SIPService object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-51
SIPSpan object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-52
SIPSpans object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-52
SIPSwitchGatewayService object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-52
SkillDefinition object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-53
SkillDefinitions object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-53
Station object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-54
StationButton object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-55
StationButtons object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-55
StationFeature object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-56
StationFeatures object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-56
StationParameter object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-56
StationParameters object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-57
StationType object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-57
StationTypes object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-57
SwitchGatewayService object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-58
SwitchService object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-58

APPENDIX D. CLIENT API OBJECT REFERENCE D-2


TELEVANTAGE DEVELOPER ’S GUIDE

System object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-59


SystemSetting object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-60
SystemSettings object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-60
SystemTarget object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-61
User object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-62
View object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-64
Views object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-65
Workgroup object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-65
WorkgroupMember object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-66
WorkgroupMembers object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D-66

APPENDIX D. CLIENT API OBJECT REFERENCE D-3


TELEVANTAGE DEVELOPER ’S GUIDE

Address object
Contains address information for a contact. Address objects can be collected in an Addresses object.

Methods:
GetCallerIDMatch([AddressID]) as Contact object (see p.D-14)
AddressID as String. Optional. Default value is "".
GetPhoneNumberComponent(Component) as Variant
Component as TVAddressPhoneComponent (see p.E-2).
GuessAddressType(AddressString) as TVAddressType (see p.E-2)
AddressString as String.
Validate([AllowOverride]) as TVAddressError (see p.E-1)
AllowOverride as Boolean. Optional. Default value is 0 (false).

Properties:
AccountCode as String.
AddressSubType as TVAddressSubType.
AddressType as TVAddressType.
AssociatedPersonID as String.
Category as TVAddressCategory.
Default as Boolean.
Description as String.
ID as String.
IsPager as Boolean.
Parent as IDispatch.
Service as IDialingService.
Session as Session.
Tag as Variant.
Usage as TVAddressUsageType.
UseRules as Boolean.
UnformattedValue as String.
Value as String.
IsPublic as Boolean.
Class as TVObjectClass.
SIPSpan as SIPSpan.
SIPUserInfo as String.
ServiceAccessCode as String.

Addresses object
A collection of Address objects.

Methods:
Add([Value], [AddressType], [AddressSubType], [Service], [Category]) as Address object (see p.D-4)
Value as String. Optional.
AddressType as TVAddressType (see p.E-2). Optional. Default value is 1 (tvAddressTypePhoneNumber).
AddressSubType as TVAddressSubType (see p.E-2). Optional.
Service as IDialingService object (see p.D-19). Optional.
Category as TVAddressCategory (see p.E-1). Optional.
Discard()
Exists(Index, [SearchType]) as Boolean

APPENDIX D. CLIENT API OBJECT REFERENCE D-4


TELEVANTAGE DEVELOPER ’S GUIDE

Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as Address object (see p.D-4)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Remove(Index, [SearchType])
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Restrict(Category, [CreateIfNecessary], [Value], [AddressType], [AddressSubType], [Service]) as Addresses
object (see p.D-4)
Category as TVAddressCategory (see p.E-1).
CreateIfNecessary as Boolean. Optional. Default value is 0 (false).
Value as String. Optional.
AddressType as TVAddressType (see p.E-2). Optional. Default value is 1 (tvAddressTypePhoneNumber).
AddressSubType as TVAddressSubType (see p.E-2). Optional.
Service as IDialingService object (see p.D-19). Optional.
Save()
Restrict_v6(Filter) as Addresses object (see p.D-4)
Filter as String.
Sort(SortString)
SortString as String.

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as IDispatch.
Session as Session.
Tag as Variant.

Agent object
Contains information about a Call Center agent. Agent objects can be collected in an Agents object or in a
folder of type tvFolderAgents (see “Folder types” on page 2-10). See “Agent objects” on page 2-11 for a
detailed description of Agent object structure.

Methods:
Discard()
EndWrapUp()
SetObserver(Observer)
Observer as Boolean.
SignIn()
SignOut()

Properties:
Class as TVObjectClass.
HiddenObserver as Boolean.
ID as String.
Name as String.
Observer as Boolean.
Parent as IDispatch.
Permissions as Permissions.

APPENDIX D. CLIENT API OBJECT REFERENCE D-5


TELEVANTAGE DEVELOPER ’S GUIDE

QueueID as String.
Session as Session.
Synchronized as Boolean.
Tag as Variant.

Agents object
A collection of Agent objects.

Methods:
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as Agent object (see p.D-5)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as IDispatch.
Session as Session.
Tag as Variant.

AgentStat object
Contains information concerning a Call Center agent’s activity. AgentStat objects can be collected in a folder
of type tvFolderAgentStats (see “Folder types” on page 2-10).

Methods:
SetObserver(Observer)
Observer as Boolean.
JoinActiveCall([Role]) as Call object (see p.D-8)
Role as TVPartyRole (see p.E-22). Optional. Default value is 0 (tvPartyRolePeer).
SignIn()
SignOut()

Properties:
ActiveDurationTotalInbound as Long.
ActiveDurationTotalOutbound as Long.
AgentID as String.
Class as TVObjectClass.
ID as String.
ItemsActiveTotalInbound as Long.
ItemsActiveTotalOutbound as Long.
LongestItemDurationInbound as Long.
LongestTalkTimeInbound as Long.
LongestTalkTimeOutbound as Long.
LongestWrapupTimeInbound as Long.
Observer as Boolean.
Overflow as Long.
Parent as Folder.

APPENDIX D. CLIENT API OBJECT REFERENCE D-6


TELEVANTAGE DEVELOPER ’S GUIDE

Position as Long.
QueueID as String.
Session as Session.
Status as TVAgentStatus.
StatusStartTime as Date.
Synchronized as Boolean.
Tag as Variant.
UserID as String.
Away as Boolean.
ForcedBreakCount as Long.
ItemsCompletedTotalOutbound as Long.
ItemsConnectedTotalOutbound as Long.
ItemsPlacedTotalOutbound as Long.
LongestItemDurationOutbound as Long.
LongestWrapupTimeOutbound as Long.
NoAnswerCount as Long.
TalkTimeTotalOutbound as Long.
WrapupTimeTotalOutbound as Long.

Events:
Change()
Remove()

AudioClip object
Used to create or manipulate an audio file.

Methods:
Export(ExportFile, [VoxFormat])
ExportFile as String.
VoxFormat as TVAudioVOXFormat (see p.E-4). Optional. Default value is -1.
Import(ImportFile, [Insert], [VoxFormat])
ImportFile as String.
Insert as Boolean. Optional. Default value is 0 (false).
VoxFormat as TVAudioVOXFormat (see p.E-4). Optional. Default value is -1.
Pause()
Play([StartPos], [StopPos])
StartPos as Long. Optional. Default value is 0.
StopPos as Long. Optional. Default value is -1.
Record([StartPos], [Insert])
StartPos as Long. Optional. Default value is 0.
Insert as Boolean. Optional. Default value is 0 (false).
ResumeAfterPause()
StopAudio()

Properties:
BookMarkStart as Long.
BookMarkEnd as Long.
CurrentPosition as Long.
DeviceType as TVAudioDeviceType.
Duration as Long.

APPENDIX D. CLIENT API OBJECT REFERENCE D-7


TELEVANTAGE DEVELOPER ’S GUIDE

Filename as String.
ID as String.
Parent as IDispatch.
PreventHybrid as Boolean.
ReadOnly as Boolean.
Session as Session.
Size as Long.
SkipInterval as Long.
State as TVAudioState.
Tag as Variant.

Events:
AudioDeviceChange(OldDevice, NewDevice)
OldDevice as TVAudioDeviceType (see p.E-3).
NewDevice as TVAudioDeviceType (see p.E-3).
PlayBeforeInterrupt(ShutdownDelay)
ShutdownDelay as Long.
RecordBeforeInterrupt(ShutdownDelay)
ShutdownDelay as Long.
SkipIntervalChange(OldValue, NewValue)
OldValue as Long.
NewValue as Long.
StateChange(FromState, ToState, Reason)
FromState as TVAudioState (see p.E-3).
ToState as TVAudioState (see p.E-3).
Reason as TVAudioStateChangeReason (see p.E-4).
Error(ErrorNumber)
ErrorNumber as Long.
CopyAudioFromServer()

Call object
Contains information about a call and methods to manipulate the call. Call objects can be collected in a
folder of type tvFolderCalls (see “Folder types” on page 2-10).

Methods:
Announce([AnnounceType])
AnnounceType as TVCallAnnounceType (see p.E-4). Optional. Default value is 1 (tvCallAnnounceType-
Caller).
Answer()
Associate(Contact)
Contact as Contact object (see p.D-14).
BlindTransfer(Address)
Address as Address object (see p.D-4).
Conference(ConferenceCall) as Call object (see p.D-8)
ConferenceCall as Call object (see p.D-8).
Decline([DeclineMode], [DeclineAudio])
DeclineMode as TVCallDeclineMode (see p.E-4). Optional. Default value is 0 (tvCallDeclineToRout-
ingList).
DeclineAudio as AudioClip object (see p.D-7). Optional.
Disconnect()

APPENDIX D. CLIENT API OBJECT REFERENCE D-8


TELEVANTAGE DEVELOPER ’S GUIDE

Hold([HoldAudioType], [HoldAudio])
HoldAudioType as TVCallGrabAndHoldAudioType (see p.E-5). Optional. Default value is 2 (tvCallGra-
bAndHoldAudioTypeUserDefault).
HoldAudio as AudioClip object (see p.D-7). Optional. Default value is <unprintable IDispatch*>.
Join([Role], [Partner])
Role as TVPartyRole (see p.E-22). Optional. Default value is 0 (tvPartyRolePeer).
Partner as Party object (see p.D-26). Optional. Default value is <unprintable IDispatch*>.
Park() as Long
RecordPause()
RecordResume()
RecordStart([Target], [Format], [TimeOut], [TermDigits], [Beep])
Target as IItem object (see p.D-19). Optional. Default value is <unprintable IDispatch*>.
Format as TVCallRecordFormat (see p.E-6). Optional. Default value is 3 (tvCallRecordFormatPCM8K).
TimeOut as Long. Optional. Default value is -1.
TermDigits as String. Optional. Default value is "".
Beep as Boolean. Optional. Default value is 0 (false).
RecordStop()
SetAccountCode(AccountCode)
AccountCode as String.
SetCustomData(Key, Value)
Key as String.
Value as String.
SetRole(Role, [Partner])
Role as TVPartyRole (see p.E-22).
Partner as Party object (see p.D-26). Optional. Default value is <unprintable IDispatch*>.
SupervisedTransferAbort()
SupervisedTransferComplete()
SupervisedTransferConference() as Call object (see p.D-8)
SupervisedTransferStart(Address) as Call object (see p.D-8)
Address as Address object (see p.D-4).
Supports(Feature) as Boolean
Feature as TVCallFeature (see p.E-5).
Unpark() as Call object (see p.D-8)
PlayAudio(AudioClip)
AudioClip as AudioClip object (see p.D-7).
AttachApplication(Address)
Address as Address object (see p.D-4).
AttachAudio(AudioClip)
AudioClip as AudioClip object (see p.D-7).
GetAudio() as AudioClip object (see p.D-7)
StopAudio()
StopAudioAndRelease()
AttachCall(AttachToCall, [Role], [Partner]) as Party object (see p.D-26)
AttachToCall as Call object (see p.D-8).
Role as TVPartyRole (see p.E-22). Optional. Default value is 0 (tvPartyRolePeer).
Partner as Party object (see p.D-26). Optional. Default value is <unprintable IDispatch*>.

Properties:
AccountCode as String.
Address as Address.

APPENDIX D. CLIENT API OBJECT REFERENCE D-9


TELEVANTAGE DEVELOPER ’S GUIDE

AnsweredByDevice as Long.
AnsweredByFirstName as String.
AnsweredByLastName as String.
AnsweredByName as String.
AnsweredByUserID as String.
AnsweredTime as Date.
AssociatedPerson as IDispatch.
AssociatedPersonID as String.
AssociatedPersonType as TVAssociatedPersonType.
AudioClip as AudioClip.
CallType as TVCallType.
Class as TVObjectClass.
Comments as String.
CustomData as String.
Device as Long.
DID as String.
Direction as TVCallDirection.
Features as Long.
FirstName as String.
ID as String.
LastName as String.
Mute as Boolean.
Name as String.
Number as String.
OrbitNumber as String.
OwnerAddress as Address.
OwnerDevice as Long.
OwnerFirstName as String.
OwnerID as String.
OwnerLastName as String.
OwnerName as String.
OwnerParty as Party.
OwnerPartyID as String.
Parent as Folder.
Parties as Parties.
PartyCount as Long.
Priority as Long.
RecordStatus as TVCallRecordStatus.
Role as TVPartyRole.
ScreenMessage as Boolean.
Session as Session.
StartTime as Date.
Status as TVPartyStatus.
Synchronized as Boolean.
Tag as Variant.
Handle as Long.
LineAppearance as Long.
WaitStartTime as Date.
VoiceTitle as AudioClip.

APPENDIX D. CLIENT API OBJECT REFERENCE D-10


TELEVANTAGE DEVELOPER ’S GUIDE

Answered as Boolean.
ActivityHistory as CallActivityHistory.
CallHistoryID as String.

Events:
Change(Synchronized)
Synchronized as Boolean.
PermissionsChange()
Remove()

CallActivity object
Contains trace information about a call, similar to what is displayed in the ViewPoint’s Call History pane.

Properties:
Description as String.
Device as Long.
ElapsedTime as Long.
ID as String.
Parent as IDispatch.
Position as Long.
Session as Session.
StartTime as Date.
Tag as Variant.

CallActivityHistory object
A collection of CallActivity objects.

Methods:
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as CallActivity object (see p.D-11)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Restrict(Filter) as CallActivityHistory object (see p.D-11)
Filter as String.
Subscribe()
Unsubscribe()

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as IDispatch.
Session as Session.
StartTime as Date.
Tag as Variant.

Events:
CallActivityReceived(Index)
Index as Long.

APPENDIX D. CLIENT API OBJECT REFERENCE D-11


TELEVANTAGE DEVELOPER ’S GUIDE

CallHistory object
Contains information about a call, similar to what is displayed in ViewPoint’s Call Log view. CallHistory
objects can be collected in a folder of type tvFolderCallHistory (see “Folder types” on page 2-10). See
“CallHistory objects” on page 2-12 for a detailed description of the CallHistory object structure.

Methods:
Associate(Contact)
Contact as Contact object (see p.D-14).
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
Save([Overwrite])
Overwrite as Boolean. Optional. Default value is 0 (false).
tvGetAssociatedPersonID() as String

Properties:
AssociatedPerson as IDispatch.
AssociatedPersonID as String.
AssociatedPersonType as TVAssociatedPersonType.
CallbackAddress as Address.
Class as TVObjectClass.
Comments as String.
Direction as TVCallDirection.
EndTime as Date.
FromParty as PartyHistory.
ID as String.
Parent as Folder.
PartyHistories as PartyHistories.
Result as TVCallHistoryResult.
Session as Session.
StartTime as Date.
Synchronized as Boolean.
Tag as Variant.
ToParty as PartyHistory.
WaitTime as Long.
AccountCode as String.
OrganizationName as String.
QueueRecordingMessage as Message.
QueueRecordingMessageID as String.
UserRecordingMessage as Message.
UserRecordingMessageID as String.
ActivityHistory as CallActivityHistory.

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Remove()

APPENDIX D. CLIENT API OBJECT REFERENCE D-12


TELEVANTAGE DEVELOPER ’S GUIDE

CallRule object
Contains information about a call rule, similar to what is displayed in ViewPoint’s Call Rules view. CallRule
objects can be collected in a folder of type tvFolderCallRules (see “Folder types” on page 2-10). See
“CallRule objects” on page 2-13 for a detailed description of the CallRule object structure.

Methods:
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
Save([Overwrite])
Overwrite as Boolean. Optional.
SwapPriorities(OtherCallRule)
OtherCallRule as CallRule object (see p.D-13).

Properties:
CallerCondition as IItem.
CallerTypeCondition as TVCallRuleCallerTypeCondition.
Class as TVObjectClass.
CustomScheduleCondition as Schedule.
Enabled as Boolean.
Greeting as Greeting.
ID as String.
Name as String.
Parent as Folder.
PersonalStatus as PersonalStatus.
Priority as Long.
RingOverride as TVCallRuleRingOverride.
RoutingList as RoutingList.
ScheduleTypeCondition as TVCallRuleScheduleType.
Session as Session.
Synchronized as Boolean.
Tag as Variant.

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Remove()

Column object
Contains information about columns in a ViewPoint view. Column objects can be collected in a Columns
object. See “The Folder object” on page 2-8 for details about Folder object structures.

Properties:
Class as TVObjectClass.
DataType as TVFieldDataType.
DisplayName as String.
ID as String.
Name as String.

APPENDIX D. CLIENT API OBJECT REFERENCE D-13


TELEVANTAGE DEVELOPER ’S GUIDE

Parent as View.
Position as Long.
ResourceID as Long.
Session as Session.
Tag as Variant.
Width as Long.

Columns object
A collection of Column objects.

Methods:
Add(Name) as Column object (see p.D-13)
Name as String.
Discard()
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as Column object (see p.D-13)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Remove(Index, [SearchType])
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Save()

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as View.
Session as Session.
Tag as Variant.

Contact object
Contains information about a contact, similar to the information displayed in ViewPoint’s Contacts view.
Contact objects can be collected in a WorkgroupMembers object or in a folder of type tvFolderContacts (see
“Folder types” on page 2-10). See “Contact objects” on page 2-13 for a detailed description of the Contact
object structure.

Methods:
Associate(Item, AssociateFlags) as Boolean
Item as IAssociate object (see p.D-18).
AssociateFlags as TVContactAssociateFlags (see p.E-8).
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
Move(Destination)
Destination as Folder object (see p.D-16).
Save([Overwrite])
Overwrite as Boolean. Optional.

APPENDIX D. CLIENT API OBJECT REFERENCE D-14


TELEVANTAGE DEVELOPER ’S GUIDE

Properties:
AccountCode as String.
Addresses as Addresses.
Class as TVObjectClass.
Comments as String.
Company as String.
DefaultAddress as Address.
FirstName as String.
FullName as String.
ID as String.
JobTitle as String.
LastName as String.
Parent as Folder.
PIN as String.
Session as Session.
Synchronized as Boolean.
Tag as Variant.
TelephonePromptLanguage as LocaleCode.
VoiceTitle as AudioClip.

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Move()
Remove()

Error object
Retains a record of a system error message.

Methods:
Clear()

Properties:
Description as String.
Number as Long.
Source as String.

Field object
Contains information about fields in a ViewPoint view. Field objects can be collected in a Fields object. See
“The Folder object” on page 2-8 for details about Folder object structures.

Properties:
Class as TVObjectClass.
DataType as TVFieldDataType.
DisplayName as String.
ID as String.
Name as String.
Parent as Folder.

APPENDIX D. CLIENT API OBJECT REFERENCE D-15


TELEVANTAGE DEVELOPER ’S GUIDE

ResourceID as Long.
Session as Session.
Tag as Variant.

Fields object
A collection of Field objects. See “The Folder object” on page 2-8 for details about Folder object structures.

Methods:
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as Field object (see p.D-15)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as Folder.
Session as Session.
Tag as Variant.

Folder object
Used to organize most of the objects available in a Session. Folder objects can be collected in a Folders
object. See “Structure of a session” on page 2-4 and “How folders are used” on page 2-7 for details about
folders.

Methods:
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
GetMailboxDiskUsage(CurrentUsage, MaximumUsage)
CurrentUsage as Long.
MaximumUsage as Long.
GetOwner() as SystemTarget object (see p.D-61)
GetProperty(Name, [Default]) as String
Name as String.
Default as String. Optional.
GetUnheardCount() as Long
Move(Destination)
Destination as Folder object (see p.D-16).
Save([Overwrite])
Overwrite as Boolean. Optional. Default value is 0 (false).
SetProperty(Name, Value)
Name as String.
Value as String.

Properties:
AccessLevel as TVPermissionAccessLevel.
Class as TVObjectClass.

APPENDIX D. CLIENT API OBJECT REFERENCE D-16


TELEVANTAGE DEVELOPER ’S GUIDE

CurrentView as View.
Customizable as Boolean.
Default as Boolean.
DisplayName as String.
Fields as Fields.
Folders as Folders.
Hidden as Boolean.
ID as String.
ItemClass as TVObjectItemClass.
Items as Items.
Name as String.
OwnerID as String.
Parent as Folder.
Permissions as Permissions.
Session as Session.
Synchronized as Boolean.
Tag as Variant.
Views as Views.
IsShared as Boolean.

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Move()
Remove()

Folders object
A collection of Folder objects.

Methods:
Add(Name, [ItemClass]) as Folder object (see p.D-16)
Name as String.
ItemClass as TVObjectItemClass (see p.E-21). Optional. Default value is -1.
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as Folder object (see p.D-16)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Remove(Index, [SearchType])
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Restrict(Filter) as Folders object (see p.D-17)
Filter as String.
Sort(SortString)
SortString as String.

Properties:
Count as Long.

APPENDIX D. CLIENT API OBJECT REFERENCE D-17


TELEVANTAGE DEVELOPER ’S GUIDE

NewEnum as IUnknown.
Parent as Folder.
Session as Session.
Tag as Variant.

Greeting object
Contains information about a greeting, similar to the information displayed in ViewPoint’s Greetings view.
Greeting objects can be collected in a folder of type tvFolderGreetings (see “Folder types” on page 2-10).
See “Greeting objects” on page 2-15 for a detailed description of the Greeting object structure.

Methods:
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
Save([Overwrite])
Overwrite as Boolean. Optional. Default value is 0 (false).

Properties:
Active as Boolean.
AudioClip as AudioClip.
Class as TVObjectClass.
Default as Boolean.
ID as String.
LastRecordedTime as Date.
Name as String.
Parent as Folder.
Session as Session.
Synchronized as Boolean.
Tag as Variant.
Text as String.

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Remove()

IAssociate object
Generic interface used to communicate with objects that can be associated. You do not need to deal directly
with an IAssociate interface; rather, you work with the associated object itself.

Methods:
Associate(Contact)
Contact as Contact object (see p.D-14).
Save([Overwrite])
Overwrite as Boolean. Optional. Default value is 0 (false).

Properties:
AssociateAllowed as Boolean.
AssociatedPerson as IDispatch.

APPENDIX D. CLIENT API OBJECT REFERENCE D-18


TELEVANTAGE DEVELOPER ’S GUIDE

AssociatedPersonID as String.
AssociatedPersonType as TVAssociatedPersonType.
CallbackAddress as Address.
CallerIDAddress as Address.
CallerIDName as String.
CallerIDNumber as String.
Class as TVObjectClass.
ID as String.
VoiceTitle as AudioClip.

ICOMSecurity object
An interface of the Session object. Provides access to DCOM security settings for the application.

Methods:
OverrideSecurity(EXEName, AppID, FriendlyName) as Boolean
EXEName as String.
AppID as String.
FriendlyName as String.
RestoreSecurity(EXEName, [AppID])
EXEName as String.
AppID as String. Optional. Default value is "".

Properties:
UseSecurityBypass as Boolean.

IDialingService object
Generic interface used to communicate with any of the dialing service objects. You do not need to deal
directly with an IDialingService interface; rather, you work with the dialing service object itself. See “Dialing
Service objects” on page 2-14 for information about all of the dialing service objects.

Properties:
AccessCode as String.
Name as String.
Class as TVObjectDialingServiceClass.
ID as String.
AddressType as TVAddressType.
Hidden as Boolean.

IItem object
Generic interface used to communicate with item objects. You do not need to deal directly with an IItem
interface; rather, you work with the item object itself.

Methods:
CheckAccess(AccessLevel)
AccessLevel as TVPermissionAccessLevel (see p.E-23).
Copy([Parent]) as IItem object (see p.D-19)
Parent as Folder object (see p.D-16). Optional.
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).

APPENDIX D. CLIENT API OBJECT REFERENCE D-19


TELEVANTAGE DEVELOPER ’S GUIDE

Discard()
Initialize(Parent, Data, Session)
Parent as Folder object (see p.D-16).
Data as Recordset.
Session as Session.
Move(Destination)
Destination as Folder.
Save([Overwrite])
Overwrite as Boolean. Optional. Default value is 0 (false).

Properties:
Class as TVObjectClass.
Comments as String.
DerivedClass as TVObjectClass.
DisplayName as String.
ID as String.
Name as String.
Parent as Folder.
Session as Session.
Status as TVItemStatus.
Synchronized as Boolean.

InternetService object
A dialing service object containing information for dialing a number over the Internet. InternetService objects
can be collected in a folder of type tvFolderServices (see “Folder types” on page 2-10). See “Dialing Service
objects” on page 2-14 for information about all of the dialing service objects.

Methods:
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
Move(Destination)
Destination as Folder object (see p.D-16).
Save([Overwrite])
Overwrite as Boolean. Optional.

Properties:
AccessCode as String.
AddressType as TVAddressType.
Class as TVObjectClass.
Default as Boolean.
Hidden as Boolean.
ID as String.
Name as String.
Parent as Folder.
Session as Session.
Synchronized as Boolean.
Tag as Variant.

Events:
Change(Synchronized, ChangedBy)

APPENDIX D. CLIENT API OBJECT REFERENCE D-20


TELEVANTAGE DEVELOPER ’S GUIDE

Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Remove()

IPhoneService object
Generic interface used to communicate with PhoneService, PhoneGatewayService, and RoutingService
objects. You do not need to deal directly with an IPhoneService object; rather, you work with the dialing
service object itself. See “Dialing Service objects” on page 2-14 for information about all of the dialing
service objects.

Properties:
AreaCode as String.
CountryCode as String.
IncludeLongDistancePrefix as String.
InternationalPrefix as String.
LongDistancePrefix as String.

Items object
A collection of IItem objects.

Methods:
Add([Class]) as IDispatch
Class as TVObjectClass (see p.E-19). Optional. Default value is -1.
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Find(Filter) as IDispatch
Filter as String.
FindNext() as IDispatch
Item(Index, [SearchType]) as IDispatch
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Remove(Index, [SearchType])
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Restrict(Filter) as Items object (see p.D-21)
Filter as String.
Sort(Field, [SortOrder])
Field as String.
SortOrder as TVSortOrder (see p.E-28). Optional. Default value is 0 (tvSortToggle).

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as Folder.
Session as Session.
Tag as Variant.

APPENDIX D. CLIENT API OBJECT REFERENCE D-21


TELEVANTAGE DEVELOPER ’S GUIDE

IWindowsSecurity object
An interface of the Session object. Provides access to the Windows Firewall settings for the application.

Methods:
EnableICFProgramExceptions()
AddICFProgramException(EXEName, FriendlyName, Scope, CustomRemoteAddresses, RebootRequired)
EXEName as String.
FriendlyName as String.
Scope as TVWindowsFirewallScope (see p.E-35).
CustomRemoteAddresses as String.
RebootRequired as Boolean.
GetScopePolicy(Server, Scope, CustomRemoteAddresses, [DatabaseInstance])
Server as String.
Scope as TVWindowsFirewallScope (see p.E-35).
CustomRemoteAddresses as String.
DatabaseInstance as String. Optional. Default value is "".

Properties:
ICFEnabled as Boolean.
AutoAdjustWindowsSecurity as Boolean.

Locale object
Provides access to the localized strings and images currently being used by the Session object.

Methods:
FormatCallerID(CallerID, Format) as String
CallerID as String.
Format as TVLocaleCallerIDFormat (see p.E-16).
FormatDateTime(DateTime, Format) as String
DateTime as Date.
Format as TVLocaleDateTimeFormat (see p.E-17).
GetInstalledLocales() as Collection
GetPicture(Index, Format, [Width], [Height]) as Picture
Index as Long.
Format as TVLocalePictureFormat.
Width as Long. Optional.
Height as Long. Optional.
GetString(Index, [Parameters]) as String
Index as Long.
Parameters as Variant. Optional.
GetSytemLocaleID() as String

Properties:
LocaleID as String.

APPENDIX D. CLIENT API OBJECT REFERENCE D-22


TELEVANTAGE DEVELOPER ’S GUIDE

LocaleCode object
Contains a locale code identifying a TeleVantage language locale setting. LocaleCode objects can be
collected in a LocaleCodes object.

Properties:
Description as String.
LocaleCode as String.
Parent as System.
Session as Session.
Tag as Variant.

LocaleCodes object
A collection of LocaleCode objects.

Methods:
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as LocaleCode object (see p.D-23)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as System.
Session as Session.
Tag as Variant.

LogonAddressInfo object
A container object that provides a mechanism to pass logon information to the Logon method of the Session
object.

Properties:
AccessCode as String.
AddressSubType as TVAddressSubType.
AddressType as TVAddressType.
PhoneType as TVPhoneType.
StationUsage as TVStationUsage.
Value as String.

Message object
Contains a voice message and related information. Message objects can be collected in a folder of type
tvFolderMessages (see “Folder types” on page 2-10). See “Message objects” on page 2-15 for a detailed
description of the Message object structure.

Methods:
Associate(Contact)
Contact as Contact object (see p.D-14).

APPENDIX D. CLIENT API OBJECT REFERENCE D-23


TELEVANTAGE DEVELOPER ’S GUIDE

Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
Forward() as Message object (see p.D-23)
Move(Destination)
Destination as Folder object (see p.D-16).
Reply([ReplyToAll]) as Message object (see p.D-23)
ReplyToAll as Boolean. Optional. Default value is 0 (false).
Save([Overwrite])
Overwrite as Boolean. Optional. Default value is 0 (false).
Send() as Recipients object (see p.D-34)

Properties:
AssociatedPerson as IDispatch.
AssociatedPersonID as String.
AssociatedPersonType as TVMessageAssociatedPersonType.
AudioClip as AudioClip.
CallbackAddress as Address.
Class as TVObjectClass.
Comments as String.
Confidential as Boolean.
CreatedTime as Date.
ForwardedTime as Date.
ID as String.
MessageType as TVMessageType.
Parent as Folder.
ReceiveStatus as TVMessageStatus.
Recipients as Recipients.
SenderCallerIDAddress as Address.
SenderCallerIDName as String.
SenderCallerIDNumber as String.
SendStatus as TVMessageStatus.
Session as Session.
Synchronized as Boolean.
Tag as Variant.
Unheard as Boolean.
Urgent as Boolean.
CallHistoryID as String.

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Move()
Remove()

APPENDIX D. CLIENT API OBJECT REFERENCE D-24


TELEVANTAGE DEVELOPER ’S GUIDE

Notification object
Contains address and schedule information for sending pager or e-mail message notifications to the user.
See “Notification objects” on page 2-16 for a detailed description of the Notification object structure.

Properties:
Address as Address.
ID as String.
Level as TVNotificationLevel.
MessageAttachment as TVNotificationMessageAction.
Parent as IDispatch.
ScheduleItems as NotifyScheduleItems.
Session as Session.
Tag as Variant.
UseScheduling as Boolean.
NotificationType as TVNotificationType.

NotifyScheduleItem object
Contains a record of when pager or e-mail notifications should be sent. NotifyScheduleItem objects can be
collected in a NotifyScheduleItems object.

Properties:
Enabled as Boolean.
ID as String.
Parent as Notification.
CustomSchedule as Schedule.
ScheduleType as TVScheduleItemType.
Tag as Variant.
Session as Session.

NotifyScheduleItems object
A collection of NotifyScheduleItem objects.

Methods:
Add() as NotifyScheduleItem object (see p.D-25)
Discard()
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as NotifyScheduleItem object (see p.D-25)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Remove(Index, [SearchType])
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Save()

Properties:
Count as Long.
NewEnum as IUnknown.

APPENDIX D. CLIENT API OBJECT REFERENCE D-25


TELEVANTAGE DEVELOPER ’S GUIDE

Parent as Notification.
Session as Session.
Tag as Variant.

Parties object
A collection of Party objects.

Methods:
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as Party object (see p.D-26)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as Call.
Session as Session.
Tag as Variant.

Party object
Contains information about one of the parties involved in a call, such as the caller, the recipient, a member
of a conference, and so forth. Party objects can be collected in a Parties object.

Methods:
Announce()
Answer()
Associate(Contact)
Contact as Contact object (see p.D-14).
Disconnect()
Hold([PlayHoldMusic])
PlayHoldMusic as Boolean. Optional. Default value is -1 (true).
SetCustomData(Key, Value)
Key as String.
Value as String.
SetRole(Role, [Partner])
Role as TVPartyRole (see p.E-22).
Partner as Party object (see p.D-26). Optional. Default value is <unprintable IDispatch*>.
Supports(Feature) as Boolean
Feature as TVPartyFeature (see p.E-22).

Properties:
Address as Address.
AnsweredTime as Date.
AssociatedPerson as IDispatch.
AssociatedPersonID as String.
AssociatedPersonType as TVAssociatedPersonType.
AudioClip as AudioClip.

APPENDIX D. CLIENT API OBJECT REFERENCE D-26


TELEVANTAGE DEVELOPER ’S GUIDE

Class as TVObjectClass.
Comments as String.
CustomData as String.
Device as Long.
DID as String.
Direction as TVPartyDirection.
Features as Long.
FirstName as String.
ID as String.
LastName as String.
Mute as Boolean.
Name as String.
Number as String.
Parent as Call.
Role as TVPartyRole.
Session as Session.
StartTime as Date.
Status as TVPartyStatus.
Tag as Variant.
Handle as Long.
WaitStartTime as Date.
VoiceTitle as AudioClip.

PartyHistories object
A collection of PartyHistory objects.

Methods:
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as PartyHistory object (see p.D-27)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as CallHistory.
Session as Session.
Tag as Variant.

PartyHistory object
Contains information concerning one party in a call. PartyHistory objects can be collected in a PartyHistories
object.

Properties:
AccountCode as String.
AnsweredBy as IDispatch.
AnsweredTime as Date.

APPENDIX D. CLIENT API OBJECT REFERENCE D-27


TELEVANTAGE DEVELOPER ’S GUIDE

CallerIDAddress as Address.
CallerIDName as String.
CallerIDNumber as String.
CustomData as String.
DeviceNumber as Long.
DialString as String.
DID as String.
Direction as TVCallDirection.
EndTime as Date.
ID as String.
LeftMessage as Boolean.
Message as Message.
Parent as CallHistory.
Person as IDispatch.
PersonID as String.
Result as TVPartyHistoryResult.
StartTime as Date.
Tag as Variant.
OrganizationName as String.
Session as Session.

Permission object
Contains a record of a permission needed for a specific feature. Permission objects can be collected in a
Permissions object.

Properties:
ID as String.
Name as String.
OwnerID as String.
Parent as IDispatch.
PermissionType as TVPermissionType.
Session as Session.
Tag as Variant.
UseDefault as Boolean.
Value as Long.

Permissions object
A collection of Permission objects.

Methods:
Add([EveryOne], [User]) as Permission object (see p.D-28)
EveryOne as Boolean. Optional. Default value is 0 (false).
User as IItem object (see p.D-19). Optional.
Discard()
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as Permission object (see p.D-28)
Index as Variant.

APPENDIX D. CLIENT API OBJECT REFERENCE D-28


TELEVANTAGE DEVELOPER ’S GUIDE

SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).


Remove(Index, [SearchType])
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Save()

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as IDispatch.
Session as Session.
Tag as Variant.

PersonalStatus object
Contains a record of a personal status, as displayed in ViewPoint’s Personal Status view. PersonalStatus
objects can be collected in a folder of type tvFolderPersonalStatus (see “Folder types” on page 2-10). See
“PersonalStatus objects” on page 2-16 for a detailed description of the PersonalStatus object structure.

Methods:
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
Save([Overwrite])
Overwrite as Boolean. Optional.

Properties:
AcceptQueueCalls as Boolean.
CallForwarding as TVPersonalStatusCallForwarding.
Class as TVObjectClass.
Description as String.
DisplayName as String.
DoNotRingPhone as Boolean.
ForwardingAddress as Address.
ForwardingAttemptCentrexPBXTransfer as Boolean.
ForwardingPromptForPassword as Boolean.
ForwardingPromptToAccept as Boolean.
ForwardingRingDuration as Long.
Greeting as Greeting.
ID as String.
Name as String.
Parent as Folder.
PromptForDescription as Boolean.
RoutingList as RoutingList.
Session as Session.
Synchronized as Boolean.
System as Boolean.
Tag as Variant.
UseCallRules as Boolean.
VoiceTitle as AudioClip.

Events:

APPENDIX D. CLIENT API OBJECT REFERENCE D-29


TELEVANTAGE DEVELOPER ’S GUIDE

Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Remove()

PhoneGatewayService object
A dialing service object containing information for dialing a number over an IP Gateway.
PhoneGatewayService objects can be collected in a folder of type tvFolderServices (see “Folder types” on
page 2-10). See “Dialing Service objects” on page 2-14 for information about all of the dialing service
objects.

Methods:
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
Move(Destination)
Destination as Folder object (see p.D-16).
Save([Overwrite])
Overwrite as Boolean. Optional.

Properties:
AccessCode as String.
AddressType as TVAddressType.
AreaCode as String.
Class as TVObjectClass.
CountryCode as String.
Hidden as Boolean.
ID as String.
IncludeLongDistancePrefix as String.
InternationalPrefix as String.
LongDistancePrefix as String.
Name as String.
Parent as Folder.
Session as Session.
Synchronized as Boolean.
Tag as Variant.

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Remove()

APPENDIX D. CLIENT API OBJECT REFERENCE D-30


TELEVANTAGE DEVELOPER ’S GUIDE

PhoneService object
A dialing service object containing information for dialing a number over a standard phone line.
PhoneService objects can be collected in a folder of type tvFolderServices (see “Folder types” on
page 2-10). See “Dialing Service objects” on page 2-14 for information about all of the dialing service
objects.

Methods:
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
Move(Destination)
Destination as Folder object (see p.D-16).
Save([Overwrite])
Overwrite as Boolean. Optional.

Properties:
AccessCode as String.
AddressType as TVAddressType.
AreaCode as String.
Class as TVObjectClass.
CountryCode as String.
Default as Boolean.
Hidden as Boolean.
ID as String.
IncludeLongDistancePrefix as String.
InternationalPrefix as String.
LongDistancePrefix as String.
Name as String.
Parent as Folder.
Session as Session.
Synchronized as Boolean.
Tag as Variant.

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Remove()

QueueByPeriodStat object
Contains information concerning a Call Center queue’s activity during a specific period of time.

Properties:
ItemsAbandonedTotalInbound as Long.
ItemsActiveTotalInbound as Long.
ItemsCompletedTotalInbound as Long.
ItemsReceivedTotalInbound as Long.
Parent as QueueStat.
Tag as Variant.
TalkTimeTotalInbound as Long.

APPENDIX D. CLIENT API OBJECT REFERENCE D-31


TELEVANTAGE DEVELOPER ’S GUIDE

WaitTimeTotalForAbandonedItemsInbound as Long.
WaitTimeTotalForAnsweredItemsInbound as Long.
ItemsCompletedTotalOutbound as Long.
ItemsConnectedTotalOutbound as Long.
ItemsPlacedTotalOutbound as Long.
LongestItemDurationOutbound as Long.
LongestTalkTimeOutbound as Long.
LongestWrapupTimeOutbound as Long.
NumberRedirectMaxHold as Variant.
NumberRedirectQueueBusy as Long.
NumberRedirectQueueClosed as Long.
TalkTimeTotalOutbound as Long.
WrapupTimeTotalOutbound as Long.
LongestItemDurationInbound as Long.
LongestTalkTimeInbound as Long.
ItemsToVoiceMailTotalInbound as Long.
ItemsTransferredTotalInbound as Long.

QueueByShiftStat object
Contains information concerning a Call Center queue’s activity during a specific shift.

Properties:
ItemsAbandonedTotalInbound as Long.
ItemsActiveTotalInbound as Long.
ItemsCompletedTotalInbound as Long.
ItemsReceivedTotalInbound as Long.
Parent as QueueStat.
Tag as Variant.
TalkTimeTotalInbound as Long.
WaitTimeTotalForAbandonedItemsInbound as Long.
WaitTimeTotalForAnsweredItemsInbound as Long.
ItemsCompletedTotalOutbound as Long.
ItemsConnectedTotalOutbound as Long.
ItemsPlacedTotalOutbound as Long.
LongestItemDurationOutbound as Long.
LongestTalkTimeOutbound as Long.
LongestWrapupTimeOutbound as Long.
NumberRedirectMaxHold as Variant.
NumberRedirectQueueBusy as Long.
NumberRedirectQueueClosed as Long.
TalkTimeTotalOutbound as Long.
WrapupTimeTotalOutbound as Long.
LongestItemDurationInbound as Long.
LongestTalkTimeInbound as Long.
ItemsToVoiceMailTotalInbound as Long.
ItemsTransferredTotalInbound as Long.

APPENDIX D. CLIENT API OBJECT REFERENCE D-32


TELEVANTAGE DEVELOPER ’S GUIDE

QueueStat object
Contains information concerning a Call Center queue’s activity. QueueStat objects can be collected in a
folder of type tvFolderQueueStats (see “Folder types” on page 2-10).

Properties:
AgentsAvailable as Long.
AgentsSignedIn as Long.
AgentsWrapUpInbound as Long.
Class as TVObjectClass.
CurrentPeriodStat as QueueByPeriodStat.
CurrentShiftStat as QueueByShiftStat.
ID as String.
ItemsAbandonedTotalInbound as Long.
ItemsActiveTotalInbound as Long.
ItemsCompletedTotalInbound as Long.
ItemsReceivedTotalInbound as Long.
ItemsWaitingTotalInbound as Long.
LongestItemDurationInbound as Long.
LongestTalkTimeInbound as Long.
LongestWaitTimeInbound as Long.
Parent as Folder.
PreviousPeriodStat as QueueByPeriodStat.
PreviousShiftStat as QueueByShiftStat.
QueueID as String.
QueueName as String.
QueueStatus as String.
Session as Session.
StartTime as Date.
Synchronized as Boolean.
Tag as Variant.
TalkTimeTotalInbound as Long.
WaitTimeTotalForAbandonedItemsInbound as Long.
WaitTimeTotalForAnsweredItemsInbound as Long.
ItemsBeingPlacedTotalOutbound as Long.
ItemsCompletedTotalOutbound as Long.
ItemsConnectedTotalOutbound as Long.
ItemsPlacedTotalOutbound as Long.
LongestItemDurationOutbound as Long.
LongestTalkTimeOutbound as Long.
LongestWrapupTimeOutbound as Long.
NumberRedirectMaxHold as Variant.
NumberRedirectQueueBusy as Long.
NumberRedirectQueueClosed as Long.
TalkTimeTotalOutbound as Long.
WrapupTimeTotalOutbound as Long.
AgentsOnBreak as Long.
AgentsWrapUp as Long.
AgentsWrapUpOutbound as Long.
ItemsToVoiceMailTotalInbound as Long.

APPENDIX D. CLIENT API OBJECT REFERENCE D-33


TELEVANTAGE DEVELOPER ’S GUIDE

ItemsTransferredTotalInbound as Long.

Events:
Change()
Remove()

Recipients object
Collection object containing a list of Contact and Workgroup items.

Methods:
Add(Recipient)
Recipient as IItem object (see p.D-19).
Discard()
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as IDispatch
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Remove(Index, [SearchType])
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Save()

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as Message.
Session as Session.
Tag as Variant.

Role object
Contains information on a given set of permissions that apply to a group of Users. Any user added to a role
will inherit permissions from that role.

Properties:
Class as TVObjectClass.
Comments as String.
Name as String.
ID as String.
Parent as IDispatch.
Tag as Variant.
Session as Session.

APPENDIX D. CLIENT API OBJECT REFERENCE D-34


TELEVANTAGE DEVELOPER ’S GUIDE

Roles object
A collection of Role objects.

Methods:
Add(Role)
Role as Role object (see p.D-34).
Discard()
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as Role object (see p.D-34)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Remove(Index, [SearchType])
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Save()

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as IDispatch.
Session as Session.
Tag as Variant.

RoutingList object
Contains information about a routing list, similar to the information displayed in ViewPoint’s Routing Lists
view. RoutingList objects can be collected in a folder of type tvFolderRoutingLists (see “Folder types” on
page 2-10). See “RoutingList objects” on page 2-17 for a detailed description of the RoutingList object
structure.

Methods:
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
Save([Overwrite])
Overwrite as Boolean. Optional. Default value is 0 (false).

Properties:
Actions as RoutingListActions.
Active as Boolean.
Class as TVObjectClass.
Customizable as Boolean.
Default as Boolean.
FinalAction as RoutingListFinalAction.
ID as String.
Name as String.
Parent as Folder.
Session as Session.
Synchronized as Boolean.

APPENDIX D. CLIENT API OBJECT REFERENCE D-35


TELEVANTAGE DEVELOPER ’S GUIDE

Tag as Variant.
BusyAction as RoutingListFinalAction.

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Remove()

RoutingListAction object
Contains a record of a single routing list action. RoutingListAction objects can be collected in a
RoutingListActions object.

Properties:
ActionType as TVRoutingListActionType.
Address as Address.
AttemptCentrexPBXTransfer as Boolean.
Description as String.
Greeting as Greeting.
ID as String.
Parent as RoutingList.
PauseDuration as Long.
Position as Long.
PromptCallerBeforeAction as TVRoutingListPromptCallerType.
PromptCallerGreeting as Greeting.
PromptForPassword as Boolean.
PromptToAccept as Boolean.
RingDuration as Long.
Tag as Variant.
WorkgroupRoutingType as TVWorkgroupRoutingType.
Session as Session.

RoutingListActions object
A collection of RoutingListAction objects.

Methods:
Add() as RoutingListAction object (see p.D-36)
Discard()
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as RoutingListAction object (see p.D-36)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Remove(Index, [SearchType])
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Save()

Properties:

APPENDIX D. CLIENT API OBJECT REFERENCE D-36


TELEVANTAGE DEVELOPER ’S GUIDE

Count as Long.
NewEnum as IUnknown.
Parent as RoutingList.
Session as Session.
Tag as Variant.

RoutingListFinalAction object
Contains a record of the final action in a routing list.

Properties:
ActionType as TVRoutingListFinalActionType.
Address as Address.
Greeting as Greeting.
ID as String.
Parent as RoutingList.
PauseDuration as Long.
PlayGreeting as TVRoutingListPlayGreetingType.
Tag as Variant.
Session as Session.

RoutingService object
Contains information for selecting a dialing service based on the number dialed.

Methods:
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
Move(Destination)
Destination as Folder object (see p.D-16).
Save([Overwrite])
Overwrite as Boolean. Optional.

Properties:
AccessCode as String.
AddressType as TVAddressType.
AreaCode as String.
Class as TVObjectClass.
CountryCode as String.
Default as Boolean.
Hidden as Boolean.
ID as String.
IncludeLongDistancePrefix as String.
InternationalPrefix as String.
LongDistancePrefix as String.
Name as String.
Parent as Folder.
Session as Session.
Synchronized as Boolean.
Tag as Variant.

APPENDIX D. CLIENT API OBJECT REFERENCE D-37


TELEVANTAGE DEVELOPER ’S GUIDE

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Remove()

Schedule object
Contains a record of the times when pager and e-mail message notifications should be sent. See “Schedule
objects” on page 2-18 for a detailed description of the Schedule object structure. Schedule objects can be
collected in a Schedules object.

Properties:
ID as String.
Name as String.
Parent as IDispatch.
ScheduledDays as ScheduledDays.
ScheduledDates as ScheduledDates.
Session as Session.
Tag as Variant.

ScheduledDate object
Contains a record of a date and time when pager and e-mail message notifications should be sent.
ScheduledDate objects can be collected in a ScheduledDates object.

Properties:
EndTime as Date.
ID as String.
Parent as Schedule.
Session as Session.
StartTime as Date.
Tag as Variant.
Value as Date.

ScheduledDates object
A collection of ScheduledDate objects.

Methods:
Add(ScheduledDate) as ScheduledDate object (see p.D-38)
ScheduledDate as Date.
Discard()
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as ScheduledDate object (see p.D-38)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Remove(Index, [SearchType])
Index as Variant.

APPENDIX D. CLIENT API OBJECT REFERENCE D-38


TELEVANTAGE DEVELOPER ’S GUIDE

SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).


Save()

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as Schedule.
Session as Session.
Tag as Variant.

ScheduledDay object
Contains a record of times on specific days of the week when pager and e-mail message notifications
should be sent. ScheduledDay objects can be collected in a ScheduledDays object.

Properties:
EndTime as Date.
ID as String.
Parent as Schedule.
Session as Session.
StartTime as Date.
Tag as Variant.
Value as TVScheduledDaysWeekday.
Times as String.

ScheduledDays object
A collection of ScheduledDay objects.

Methods:
Add(ScheduledDay) as ScheduledDay object (see p.D-39)
ScheduledDay as TVScheduledDaysWeekday (see p.E-26).
Discard()
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as ScheduledDay object (see p.D-39)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Remove(Index, [SearchType])
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Save()

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as Schedule.
Session as Session.
Tag as Variant.

APPENDIX D. CLIENT API OBJECT REFERENCE D-39


TELEVANTAGE DEVELOPER ’S GUIDE

Schedules object
A collection of Schedule objects.

Methods:
Add(Name) as Schedule object (see p.D-38)
Name as String.
Discard()
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as Schedule object (see p.D-38)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Remove(Index, [SearchType])
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Save()

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as IDispatch.
Session as Session.
Tag as Variant.

Session object
The root of the Client API. See “Structure of a session” on page 2-4 for details.

Methods:
CreateAddress([Value], [AddressType], [AddressSubType], [Service], [Category]) as Address object (see
p.D-4)
Value as String. Optional.
AddressType as TVAddressType (see p.E-2). Optional. Default value is 1 (tvAddressTypePhoneNumber).
AddressSubType as TVAddressSubType (see p.E-2). Optional.
Service as IDialingService object (see p.D-19). Optional.
Category as TVAddressCategory (see p.E-1). Optional.
CreateCall(Address) as Call object (see p.D-8)
Address as Address object (see p.D-4).
CreateCallAbort()
CreateItem(Class) as IDispatch
Class as TVObjectClass (see p.E-19).
CreateSession(UserName, [ServerConnectionLevel]) as Session object (see p.D-40)
UserName as String.
ServerConnectionLevel as TVServerConnectionLevel (see p.E-26). Optional. Default value is 0 (tvServ-
erConnectionLevelFull).
EmptyDeletedFolder([DeletedFolder], [Interval])
DeletedFolder as Folder object (see p.D-16). Optional.
Interval as Long. Optional. Default value is 0.
Export(Filename, Source, [Parameters]) as Long

APPENDIX D. CLIENT API OBJECT REFERENCE D-40


TELEVANTAGE DEVELOPER ’S GUIDE

Filename as String.
Source as Folder object (see p.D-16).
Parameters as Variant. Optional.
ExportCancel()
ExportDebugInfo(DataMember, [Password])
DataMember as Long.
Password as String. Optional.
Find(Filter, ItemClass) as IDispatch
Filter as String.
ItemClass as TVObjectItemClass (see p.E-21).
FindNext() as IDispatch
GetCallingInfo([LoggedInUserID], [LoggedInUserFirstName], [LoggedInUserLastName], [CallingAsID],
[CallingAsFirstName], [CallingAsLastName])
LoggedInUserID as String. Optional. Default value is "".
LoggedInUserFirstName as String. Optional. Default value is "".
LoggedInUserLastName as String. Optional. Default value is "".
CallingAsID as String. Optional. Default value is "".
CallingAsFirstName as String. Optional. Default value is "".
CallingAsLastName as String. Optional. Default value is "".
GetData(DataMember, [PreserveState], [LockType], [Password], [Filter]) as Recordset
DataMember as Long.
PreserveState as Boolean. Optional. Default value is -1 (true).
LockType as LockTypeEnum. Optional. Default value is 1.
Password as String. Optional. Default value is "".
Filter as String. Optional. Default value is "".
GetDefaultFolder(FolderType) as Folder
FolderType as TVDefaultFolders.
GetFolder(ID) as Folder
ID as String.
GetInterface(Interface, Item) as IDispatch
Interface as TVInterface.
Item as IDispatch.
GetItem(ID, [ParentID]) as IDispatch
ID as String.
ParentID as String. Optional. Default value is "".
GetItemFromTargetID(ID) as IDispatch
ID as String.
GetLastError() as Error
GetLastInboundCallAddress() as Address
GetPermissionValue(Name, [Parameters]) as Long
Name as String.
Parameters as Variant. Optional.
GetRecentOutboundCallAddresses() as Collection
GetTarget(ID) as SystemTarget
ID as String.
Import(Filename, Destination, Options, Mapping, HeaderPosition, [Parameters]) as Variant
Filename as String.
Destination as Folder.
Options as TVImportOptions.

APPENDIX D. CLIENT API OBJECT REFERENCE D-41


TELEVANTAGE DEVELOPER ’S GUIDE

Mapping as Variant.
HeaderPosition as TVImportHeaderPosition.
Parameters as Variant. Optional.
ImportCancel()
LogOff()
Logon(Server, UserName, Password, Station, ApplicationType, ApplicationID, [ServerConnectionLevel],
[CheckVersions], [StationUsage])
Server as String.
UserName as String.
Password as String.
Station as Long.
ApplicationType as TVApplicationType.
ApplicationID as Long.
ServerConnectionLevel as TVServerConnectionLevel. Optional. Default value is 0.
CheckVersions as Boolean. Optional. Default value is -1 (true).
StationUsage as TVStationUsage. Optional. Default value is 0.
ReadImportRecord(Filename, RecordNumber) as Collection
Filename as String.
RecordNumber as Long.
StartRing(RingPattern, [NumberofRings])
RingPattern as TVUserRingPattern.
NumberofRings as Long. Optional. Default value is 2.
StopRing()
ValidateLogonInfo(Server, UserName, Password, Station, [DefaultStation], [DefaultUsername]) as TVSes-
sionValidateLogonResult
Server as String.
UserName as String.
Password as String.
Station as Long.
DefaultStation as Long. Optional.
DefaultUsername as String. Optional.
ExportXML(FolderType, [ExportType]) as String
FolderType as TVDefaultFolders.
ExportType as TVExportType. Optional. Default value is 0.
ChangePassword(Server, UserName, OldPassword, NewPassword, [MinimumPasswordLength])
Server as String.
UserName as String.
OldPassword as String.
NewPassword as String.
MinimumPasswordLength as Long. Optional.
ChangeLocale(LocaleID)
LocaleID as String.
GetSystemCallHistory(Item) as CallHistory
Item as Variant.
GetLocale() as String
CreateCallAs(Address, CallingAsID) as Call
Address as Address.
CallingAsID as String.
GetLastInboundCallInfo([Address], [Timestamp], [CallerIDName], [CallerIDNumber])
Address as Address. Optional. Default value is <unprintable IDispatch*>.

APPENDIX D. CLIENT API OBJECT REFERENCE D-42


TELEVANTAGE DEVELOPER ’S GUIDE

Timestamp as Date. Optional.


CallerIDName as String. Optional. Default value is "".
CallerIDNumber as String. Optional. Default value is "".
GetCurrentCall() as Call
ChangePassword_v6(Server, UserName, OldPassword, NewPassword, [MinimumPasswordLength], [Data-
baseInstance])
Server as String.
UserName as String.
OldPassword as String.
NewPassword as String.
MinimumPasswordLength as Long. Optional.
DatabaseInstance as String. Optional. Default value is "".
Logon_v6(Server, UserName, Password, AddressInfo, ApplicationType, ApplicationID, [ServerConnection-
Level], [CheckVersions], [DatabaseInstance])
Server as String.
UserName as String.
Password as String.
AddressInfo as TVLogonAddressInfo.
ApplicationType as TVApplicationType.
ApplicationID as Long.
ServerConnectionLevel as TVServerConnectionLevel. Optional. Default value is 0.
CheckVersions as Boolean. Optional. Default value is -1 (true).
DatabaseInstance as String. Optional. Default value is "".
ValidateLogonInfo_v6(Server, UserName, Password, Station, [DefaultStation], [DefaultUsername], [Data-
baseInstance]) as TVSessionValidateLogonResult
Server as String.
UserName as String.
Password as String.
Station as Long.
DefaultStation as Long. Optional.
DefaultUsername as String. Optional.
DatabaseInstance as String. Optional. Default value is "".
GetFoldersByItemClass(ItemClass) as Folders
ItemClass as TVObjectItemClass.
Logon_v61(Server, UserName, Password, AddressInfo, ApplicationType, ApplicationID, [ServerConnection-
Level], [CheckVersions], [DatabaseInstance])
Server as String.
UserName as String.
Password as String.
AddressInfo as LogonAddressInfo.
ApplicationType as TVApplicationType.
ApplicationID as Long.
ServerConnectionLevel as TVServerConnectionLevel. Optional. Default value is 0.
CheckVersions as Boolean. Optional. Default value is -1 (true).
DatabaseInstance as String. Optional. Default value is "".
ValidateLogonInfo_v61(Server, UserName, Password, Station, AddressType, [DefaultStation], [DefaultUser-
name], [DatabaseInstance], [TerminalType], [ExternalAddress]) as TVSessionValidateLogonResult
Server as String.
UserName as String.
Password as String.

APPENDIX D. CLIENT API OBJECT REFERENCE D-43


TELEVANTAGE DEVELOPER ’S GUIDE

Station as Long.
AddressType as TVAddressType.
DefaultStation as Long. Optional.
DefaultUsername as String. Optional.
DatabaseInstance as String. Optional. Default value is "".
TerminalType as Long. Optional. Default value is 0.
ExternalAddress as String. Optional. Default value is "".
SendShortMessage(UserID, Message)
UserID as String.
Message as String.
CreateSession_v7(UserName, AddressInfo, [ServerConnectionLevel]) as Session
UserName as String.
AddressInfo as LogonAddressInfo.
ServerConnectionLevel as TVServerConnectionLevel. Optional. Default value is 0.
GetCallFromHandle(CallHandle) as Call
CallHandle as Long.

Properties:
ApplicationID as Long.
ApplicationType as TVApplicationType.
Class as TVObjectClass.
ClientServerTimeDiff as Long.
DefaultStationNumber as Long.
ExportRecords as Long.
Folders as Folders.
ImportBytes as Long.
Locale as IDispatch.
NameFormat as TVUserNameFormat.
ShortcutGroups as ShortcutGroups.
Station as Station.
StationNumber as Long.
Status as TVSessionStatus.
System as System.
SystemSettings as SystemSettings.
Tag as Variant.
User as User.
UserID as String.
Version as String.
AgentStatisticInterval as TVAgentStatisticInterval.
AudioDevice as TVAudioDeviceType.

Events:
AudioDeviceChange(AudioDevice)
AudioDevice as TVAudioDeviceType (see p.E-3).
CallStatusChange(ID, Status, OldStatus)
ID as String.
Status as TVPartyStatus (see p.E-23).
OldStatus as TVPartyStatus (see p.E-23).
CampOnAbort(ID)
ID as String.

APPENDIX D. CLIENT API OBJECT REFERENCE D-44


TELEVANTAGE DEVELOPER ’S GUIDE

CampOnCreateCallStart(ID, Cancel)
ID as String.
Cancel as Boolean.
CreateCallAbort(ID)
ID as String.
CreateCallComplete(ID)
ID as String.
CreateCallStart(ID)
ID as String.
CallingInfoChange()
FolderAdd(ID, ParentID, Folder)
ID as String.
ParentID as String.
Folder as Folder object (see p.D-16).
FolderChange(ID, ParentID, Folder)
ID as String.
ParentID as String.
Folder as Folder object (see p.D-16).
FolderAfterMove(ID, ParentID, PreviousParentID)
ID as String.
ParentID as String.
PreviousParentID as String.
FolderAfterRemove(ID, ParentID)
ID as String.
ParentID as String.
FolderBeforeMove(ID, ParentID, Folder, Destination)
ID as String.
ParentID as String.
Folder as Folder object (see p.D-16).
Destination as Folder object (see p.D-16).
FolderBeforeRemove(ID, ParentID, Folder)
ID as String.
ParentID as String.
Folder as Folder object (see p.D-16).
ItemAdd(ID, Class, ParentID, Item)
ID as String.
Class as TVObjectClass (see p.E-19).
ParentID as String.
Item as IDispatch.
ItemAfterMove(ID, Class, ParentID, PreviousParentID)
ID as String.
Class as TVObjectClass (see p.E-19).
ParentID as String.
PreviousParentID as String.
ItemAfterRemove(ID, Class, ParentID)
ID as String.
Class as TVObjectClass (see p.E-19).
ParentID as String.
ItemBeforeMove(ID, Class, ParentID, Item, Destination)

APPENDIX D. CLIENT API OBJECT REFERENCE D-45


TELEVANTAGE DEVELOPER ’S GUIDE

ID as String.
Class as TVObjectClass (see p.E-19).
ParentID as String.
Item as IDispatch.
Destination as Folder object (see p.D-16).
ItemBeforeRemove(ID, Class, ParentID, Item)
ID as String.
Class as TVObjectClass (see p.E-19).
ParentID as String.
Item as IDispatch.
ItemChange(ID, Class, ParentID, Item)
ID as String.
Class as TVObjectClass (see p.E-19).
ParentID as String.
Item as IDispatch.
ItemDataExpired(ItemClass)
ItemClass as TVObjectItemClass (see p.E-21).
PermissionChange()
SettingChange(Name, Value)
Name as String.
Value as Variant.
Logon(User)
User as User object (see p.D-62).
LogOff()
ServerShutdownScheduled(ShutdownDelay)
ShutdownDelay as Long.
ServerStatusChange(Status, ExtraInfo)
Status as TVServerStatus (see p.E-27).
ExtraInfo as Variant.
Error(Error, SeverityOverride, Cancel)
Error as Error object (see p.D-15).
SeverityOverride as TVDebugSeverity.
Cancel as Boolean.
ShortcutGroupAdd(ID)
ID as String.
ShortcutGroupChange(ID)
ID as String.
ShortcutGroupRemove(ID)
ID as String.
ShortcutAdd(ID, GroupID)
ID as String.
GroupID as String.
ShortcutChange(ID, GroupID)
ID as String.
GroupID as String.
ShortcutRemove(ID, GroupID)
ID as String.
GroupID as String.
ShortMessageReceived(FromID, FromName, Message)

APPENDIX D. CLIENT API OBJECT REFERENCE D-46


TELEVANTAGE DEVELOPER ’S GUIDE

FromID as String.
FromName as String.
Message as String.

Shortcut object
Contains information that can be used to locate and access a specific Folder object. Shortcut objects can be
collected in a Shortcuts object.

Properties:
FolderID as String.
ID as String.
ItemClass as TVObjectItemClass.
Name as String.
Parent as ShortcutGroup.
PictureID as Long.
Position as Long.
ResourceID as Long.
Session as Session.
Tag as Variant.

ShortcutGroup object
Contains information about a group of shortcuts, for example, the General and Advanced shortcut groups
displayed in ViewPoint’s view bar. ShortcutGroup objects can be collected in a ShortcutGroups object.

Methods:
Delete()
Discard()
Save()

Properties:
IconType as TVShortcutGroupIconType.
ID as String.
Name as String.
Parent as Session.
ResourceID as Long.
Session as Session.
Shortcuts as Shortcuts.
Tag as Variant.

ShortcutGroups object
A collection of ShortcutGroup objects.

Methods:
Add([Name]) as ShortcutGroup object (see p.D-47)
Name as String. Optional. Default value is "".
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as ShortcutGroup object (see p.D-47)

APPENDIX D. CLIENT API OBJECT REFERENCE D-47


TELEVANTAGE DEVELOPER ’S GUIDE

Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Remove(Index, [SearchType])
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Restrict(Filter) as ShortcutGroups object (see p.D-47)
Filter as String.

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as Session.
Session as Session.
Tag as Variant.

Shortcuts object
A collection of Shortcut objects.

Methods:
Add([Name], [FolderID]) as Shortcut object (see p.D-47)
Name as String. Optional. Default value is "".
FolderID as String. Optional. Default value is "".
Discard()
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as Shortcut object (see p.D-47)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Remove(Index, [SearchType])
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Save()
Restrict(Filter) as Shortcuts object (see p.D-48)
Filter as String.

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as ShortcutGroup.
Session as Session.
Tag as Variant.

APPENDIX D. CLIENT API OBJECT REFERENCE D-48


TELEVANTAGE DEVELOPER ’S GUIDE

SIPAccount object
Contains details of a SIP account, as shown when you edit a SIP account in TeleVantage ViewPoint (Tools >
Options > Personal > SIP Accounts.)

Properties:
AccountType as TVSIPAccountType.
AORUserPart as String.
DisplayName as String.
ID as String.
Parent as IDispatch.
Password as String.
Register as Boolean.
Session as Session.
SIPServer as SIPServer.
SIPSpan as SIPSpan.
Tag as Variant.
UseAsCallerIdentity as Boolean.
UseCredentials as Boolean.
UserName as String.

SIPAccounts object
A collection of SIPAccount objects.

Methods:
Add() as SIPAccount object (see p.D-49)
Discard()
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as SIPAccount object (see p.D-49)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Remove(Index, [SearchType])
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Save()

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as IDispatch.
Session as Session.
Tag as Variant.

APPENDIX D. CLIENT API OBJECT REFERENCE D-49


TELEVANTAGE DEVELOPER ’S GUIDE

SIPPhoneGatewayService object
A dialing service object containing information for dialing a number over an SIP Gateway.
SIPPhoneGatewayService objects can be collected in a folder of type tvFolderServices (see “Folder types”
on page 2-10). See “Dialing Service objects” on page 2-14 for information about all of the dialing service
objects.

Methods:
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
Move(Destination)
Destination as Folder object (see p.D-16).
Save([Overwrite])
Overwrite as Boolean. Optional.

Properties:
AccessCode as String.
AddressType as TVAddressType.
AreaCode as String.
Class as TVObjectClass.
CountryCode as String.
Hidden as Boolean.
ID as String.
IncludeLongDistancePrefix as String.
InternationalPrefix as String.
LongDistancePrefix as String.
Name as String.
Parent as Folder.
Session as Session.
Synchronized as Boolean.
Tag as Variant.

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Remove()

SIPServer object
Contains details of a SIP Server, as displayed in the SIP Servers view in the TeleVantage Administrator.

Properties:
Address as String.
AddressFormat as TVSIPServerAddressFormat.
Class as TVObjectClass.
Comments as String.
Name as String.
ID as String.
Parent as IDispatch.
Tag as Variant.

APPENDIX D. CLIENT API OBJECT REFERENCE D-50


TELEVANTAGE DEVELOPER ’S GUIDE

SIPServers object
A collection of SIPServer objects.

Methods:
Discard()
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as SIPServer object (see p.D-50)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as IDispatch.
Session as Session.
Tag as Variant.

SIPService object
Contains details of a SIP Service, which can be managed in the TeleVantage Administrator (File > New >
Dialing Service.)

Methods:
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
Move(Destination)
Destination as Folder object (see p.D-16).
Save([Overwrite])
Overwrite as Boolean. Optional.

Properties:
AccessCode as String.
AddressType as TVAddressType.
Class as TVObjectClass.
Default as Boolean.
Hidden as Boolean.
ID as String.
Name as String.
Parent as Folder.
Session as Session.
Synchronized as Boolean.
Tag as Variant.

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).

APPENDIX D. CLIENT API OBJECT REFERENCE D-51


TELEVANTAGE DEVELOPER ’S GUIDE

Remove()

SIPSpan object
Contains details of a SIP Span, as shown in the Trunks view in the TeleVantage Administrator.

Properties:
BoardNumber as Long.
Class as TVObjectClass.
Comments as String.
ID as String.
IPAddress as String.
Parent as IDispatch.
Tag as Variant.
Port as Long.

SIPSpans object
A collection of SIPSpan objects.

Methods:
Discard()
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as SIPSpan object (see p.D-52)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as IDispatch.
Session as Session.
Tag as Variant.

SIPSwitchGatewayService object
A dialing service object containing information for dialing a number over a SIP Switch Gateway.
SIPSwitchGatewayService objects can be collected in a folder of type tvFolderServices (see “Folder types”
on page 2-10). See “Dialing Service objects” on page 2-14 for information about all of the dialing service
objects.

Methods:
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
Move(Destination)
Destination as Folder object (see p.D-16).
Save([Overwrite])
Overwrite as Boolean. Optional.

Properties:

APPENDIX D. CLIENT API OBJECT REFERENCE D-52


TELEVANTAGE DEVELOPER ’S GUIDE

AccessCode as String.
AddressType as TVAddressType.
Class as TVObjectClass.
Hidden as Boolean.
ID as String.
Name as String.
Parent as Folder.
Session as Session.
Synchronized as Boolean.
Tag as Variant.

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Remove()

SkillDefinition object
Contains details of an Agent Skill, which can be managed in the TeleVantage Administrator (Tools > System
settings > Queue > Agent Skills.)

Properties:
Class as TVObjectClass.
Comments as String.
ID as String.
Name as String.
Parent as IDispatch.
Tag as Variant.

SkillDefinitions object
A collection of SkillDefinition objects.

Methods:
Discard()
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as SkillDefinition object (see p.D-53)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as IDispatch.
Session as Session.
Tag as Variant.

APPENDIX D. CLIENT API OBJECT REFERENCE D-53


TELEVANTAGE DEVELOPER ’S GUIDE

Station object
Contains configuration information about a station. See “Station objects” on page 2-19 for a detailed
description of the Station object structure.

Methods:
Discard()
GetButtonCount() as Long
Save([Overwrite])
Overwrite as Boolean. Optional. Default value is 0 (false).
ValidateButtons(PDNButtonCount, SDNStations, SDNButtonCounts) as Boolean
PDNButtonCount as Long.
SDNStations as Long.
SDNButtonCounts as Long.

Properties:
Buttons as StationButtons.
CadenceID as Long.
Class as TVObjectClass.
DefaultIdleString as String.
DefaultVolume as Long.
DeviceName as String.
HandsFreeCanPlaceCall as Boolean.
HandsFreeDialtoneTimeout as Long.
HandsFreeDisconnectTimeout as Long.
HandsFreeModeEnabled as Boolean.
ID as String.
Number as Long.
PadCharacter as TVStationPadCharacter.
PadExtension as TVStationPadExtension.
Parent as Folder.
PhoneFeatures as TVStationPhoneFeatures.
Session as Session.
Synchronized as Boolean.
Tag as Variant.
TerminalType as Long.
ToneID as Long.
TransferMode as TVStationTransferMode.
VoiceFirstAnsweringEnabled as Boolean.
DirectConnectDialString as String.
PickupAnswersRingingSDN as Boolean.
ExternalAddress as Address.
DropLoopCurrent as Boolean.
IdentificationOptions as TVStationIdentificationOptions.

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Remove()

APPENDIX D. CLIENT API OBJECT REFERENCE D-54


TELEVANTAGE DEVELOPER ’S GUIDE

StationButton object
Contains information about a specialized button on a feature phone. StationButton objects can be collected
in a StationButtons object.

Properties:
Address as Address.
ButtonNumber as Long.
DirectoryStationNumber as Long.
Feature as StationFeature.
Parent as Station.
RingDelay as Long.
Session as Session.
Tag as Variant.
DirectDialString as String.
PersonalStatusType as TVPersonalStatusType.

StationButtons object
A collection of StationButton objects.

Methods:
Add(ButtonNumber) as StationButton object (see p.D-55)
ButtonNumber as Long.
Discard()
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as StationButton object (see p.D-55)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Remove(Index, [SearchType])
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Save()

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as Station.
Session as Session.
Tag as Variant.

APPENDIX D. CLIENT API OBJECT REFERENCE D-55


TELEVANTAGE DEVELOPER ’S GUIDE

StationFeature object
Contains information about a feature assigned to a StationButton object. StationFeature objects can be
collected in a StationFeatures object. See “StationFeature objects” on page 2-19 for a detailed description of
the StationFeature object structure.

Properties:
DisplayName as String.
ID as String.
Name as String.
Parameters as StationParameters.
Parent as StationType.
ResourceID as Long.
Session as Session.
Tag as Variant.

StationFeatures object
A collection of StationFeature objects.

Methods:
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as StationFeature object (see p.D-56)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as StationType.
Session as Session.
Tag as Variant.

StationParameter object
Contains a parameter required by a StationFeature object. StationParameter objects can be collected in a
StationParameters object.

Properties:
ParameterType as TVStationFeatureParameterType.
Parent as StationFeature.
Session as Session.
Tag as Variant.

APPENDIX D. CLIENT API OBJECT REFERENCE D-56


TELEVANTAGE DEVELOPER ’S GUIDE

StationParameters object
A collection of StationParameter objects.

Methods:
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as StationParameter object (see p.D-56)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as StationFeature.
Session as Session.
Tag as Variant.

StationType object
Contains a list of features used by a specific type of feature phone. StationType objects can be collected in a
StationTypes object.

Properties:
Features as StationFeatures.
Name as String.
Parent as System.
Session as Session.
Tag as Variant.

StationTypes object
A collection of StationType objects.

Methods:
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as StationType object (see p.D-57)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as System.
Session as Session.
Tag as Variant.

APPENDIX D. CLIENT API OBJECT REFERENCE D-57


TELEVANTAGE DEVELOPER ’S GUIDE

SwitchGatewayService object
A dialing service object containing information for dialing a number over a Switch Gateway.
SwitchGatewayService objects can be collected in a folder of type tvFolderServices (see “Folder types” on
page 2-10). See “Dialing Service objects” on page 2-14 for information about all of the dialing service
objects.

Methods:
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
Move(Destination)
Destination as Folder object (see p.D-16).
Save([Overwrite])
Overwrite as Boolean. Optional.

Properties:
AccessCode as String.
AddressType as TVAddressType.
Class as TVObjectClass.
Hidden as Boolean.
ID as String.
Name as String.
Parent as Folder.
Session as Session.
Synchronized as Boolean.
Tag as Variant.

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Remove()

SwitchService object
A dialing service object containing information for dialing a number over a Switch. SwitchService objects can
be collected in a folder of type tvFolderServices (see “Folder types” on page 2-10). See “Dialing Service
objects” on page 2-14 for information about all of the dialing service objects.

Methods:
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
Move(Destination)
Destination as Folder object (see p.D-16).
Save([Overwrite])
Overwrite as Boolean. Optional.

Properties:
AccessCode as String.
AddressType as TVAddressType.
Class as TVObjectClass.

APPENDIX D. CLIENT API OBJECT REFERENCE D-58


TELEVANTAGE DEVELOPER ’S GUIDE

Hidden as Boolean.
ID as String.
Name as String.
Parent as Folder.
Session as Session.
Synchronized as Boolean.
Tag as Variant.

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Remove()

System object
Represents the system as a whole. It serves as the main interface between ViewPoint and the Server. It also
contains all system-wide settings and licenses. It handles all operations that affect the system as a whole.
For example, the System object provides methods to backup or restore the database, and to start or shut
down the Server. See “The System object” on page 2-5 for a detailed description of the System object
structure.

Methods:
GetDeviceName(DeviceNumber) as String
DeviceNumber as Long.
GetLicenseStatus(ExpirationDate) as TVLicenseStatus (see p.E-16)
ExpirationDate as Date.

Properties:
BusinessSchedules as Schedules.
Class as TVObjectClass.
DefaultInternetService as InternetService.
DefaultLocaleCode as LocaleCode.
DefaultPhoneService as IPhoneService.
LocaleCodes as LocaleCodes.
MinPasswordLength as Long.
ServerName as String.
ServerStatus as TVServerStatus.
ServerTime as Date.
ServerTimeZoneBias as Long.
Session as Session.
StationTypes as StationTypes.
Tag as Variant.
TimeUntilServerShutDown as Long.
VARCompany as String.
VARContactInfo as String.
VARName as String.
DefaultOutboundCallerIDPresentation as TVOutboundCallerIDPresentation.
DefaultOutboundCallerIDName as String.
DefaultOutboundCallerIDNumber as String.
Roles as Roles.
DefaultSIPService as SIPService.

APPENDIX D. CLIENT API OBJECT REFERENCE D-59


TELEVANTAGE DEVELOPER ’S GUIDE

SIPServers as SIPServers.
SIPSpans as SIPSpans.
SkillDefinitions as SkillDefinitions.

SystemSetting object
Contains information about a system setting. SystemSetting objects can be collected in a SystemSettings
object.

Methods:
Reset()
Save()

Properties:
AllowChange as Boolean.
Class as TVObjectClass.
Customizable as Boolean.
DataType as TVRegistryDataType.
Default as Variant.
Description as String.
ID as String.
Location as TVRegistryLocation.
Name as String.
Session as Session.
Tag as Variant.
Value as Variant.
UsingDefaultValue as Boolean.

SystemSettings object
A collection of SystemSetting objects.

Methods:
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
GetValue(Name) as Variant
Name as String.
GetValueEx(Name, DefaultValue) as Variant
Name as String.
DefaultValue as Variant.
Item(Index, [SearchType]) as SystemSetting object (see p.D-60)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
ResetValue(Name)
Name as String.
SetValue(Name, Value)
Name as String.
Value as Variant.

Properties:
Count as Long.

APPENDIX D. CLIENT API OBJECT REFERENCE D-60


TELEVANTAGE DEVELOPER ’S GUIDE

NewEnum as IUnknown.
Session as Session.
Tag as Variant.

SystemTarget object
Contains information about a user, similar to the information displayed in ViewPoint’s Extensions view.
SystemTarget objects can be collected in a folder of type tvFolderSystemTarget (see “Folder types” on
page 2-10).

Methods:
ApplyStatus(StatusType, [Password])
StatusType as TVPersonalStatusType (see p.E-24).
Password as String. Optional. Default value is "".
JoinActiveCall([Role]) as Call object (see p.D-8)
Role as TVPartyRole (see p.E-22). Optional. Default value is 0 (tvPartyRolePeer).
CampOnAbort()
CampOnStart([TimeOut])
TimeOut as Long. Optional. Default value is -1.
Supports(Feature) as Boolean
Feature as TVSystemTargetFeature (see p.E-31).

Properties:
Agent as Boolean.
Availability as TVSystemTargetAvailability.
CallForwardingType as TVSystemTargetCallForwardingType.
CallForwardingSystemTarget as SystemTarget.
Class as TVObjectClass.
Comments as String.
DIDList as String.
Extension as String.
FirstName as String.
HasMailbox as Boolean.
ID as String.
JobTitle as String.
LastName as String.
Name as String.
Parent as Folder.
QueueStandby as Boolean.
Session as Session.
StatusDescription as String.
StatusName as String.
Synchronized as Boolean.
Tag as Variant.
TargetType as TVSystemTargetType.
CampOnAbortTime as Date.
Addresses as Addresses.
NTAccountName as String.
OrganizationName as String.
MailboxSize as Long.
MaxMailboxSize as Long.

APPENDIX D. CLIENT API OBJECT REFERENCE D-61


TELEVANTAGE DEVELOPER ’S GUIDE

Events:
Change(Synchronized)
Synchronized as Boolean.
Remove()

User object
A Session’s User object represents the end user who is currently logged in. User objects can be collected in
a folder of type tvFolderUsers (see “Folder types” on page 2-10). See “The User object” on page 2-6 for a
detailed description of the User object structure.

Methods:
ApplyStatus(Status)
Status as PersonalStatus object (see p.D-29).
ChangePassword(NewPassword, [OldPassword])
NewPassword as String.
OldPassword as String. Optional. Default value is "".
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()
Save([Overwrite])
Overwrite as Boolean. Optional.
SetCallingAs(CallingAsID)
CallingAsID as String.

Properties:
ACDDoNotDisturb as Boolean.
AcceptQueueCalls as Boolean.
Addresses as Addresses.
Agents as Agents.
AutoAccountCodeLookup as Boolean.
AnnounceCallBehavior as TVUserAnnounceCallBehavior.
BusinessSchedule as Schedule.
CallBackEnabled as Boolean.
CallBackInterval as Long.
CallHistoryDayLimit as Long.
CallRecordingRecipient as IItem.
CallWaiting as TVUserCallWaiting.
Category as TVUserCategory.
CentrexPBXTransferOnForward as Boolean.
Class as TVObjectClass.
Comments as String.
Company as String.
DefaultAddress as Address.
DefaultAudioDevice as TVAudioDeviceType.
DefaultAudioSkipInterval as Long.
DefaultCentrexPBXTransferOnForward as Boolean.
DefaultContactAction as TVUserDefaultContactAction.
DefaultForwardingAddress as Address.
DefaultForwardRingDuration as Long.

APPENDIX D. CLIENT API OBJECT REFERENCE D-62


TELEVANTAGE DEVELOPER ’S GUIDE

DefaultPromptForwardeeForPassword as Boolean.
DefaultPromptForwardeeToAccept as Boolean.
DialByNameAction as TVExtensionDialByNameAction.
DIDList as String.
DoNotRingPhone as Boolean.
EmailNotification as Notification.
EmptyDeletedBehavior as TVUserEmptyDeletedBehavior.
EmptyDeletedInterval as Long.
ExchangeMailbox as String.
ExchangeSynchronization as Boolean.
Extension as String.
ExternalCallRingPattern as TVUserRingPattern.
ExternalCallTypes as TVUserExternalCallTypes.
FirstName as String.
ForwardingAddress as Address.
ForwardRingDuration as Long.
FullName as String.
GreetingAndTitleSize as Long.
HoldAudio as AudioClip.
ID as String.
InboundAccountCodeBehavior as TVUserAccountCodeBehavior.
InboundCallBehavior as TVUserInboundCallBehavior.
InternalCallRingPattern as TVUserRingPattern.
JobTitle as String.
LastAppliedStatus as PersonalStatus.
LastName as String.
MailboxSize as Long.
MaxConferenceMembers as Long.
MaxGreetingAndTitleSize as Long.
MaxMailboxSize as Long.
MaxMessageDuration as Long.
MessagePlayBackOrder as TVUserMessageOrder.
NameFormat as TVUserNameFormat.
Operator as IItem.
OutboundAccountCodeBehavior as TVUserAccountCodeBehavior.
OutboundCallBehavior as TVUserOutboundCallBehavior.
PagerNotification as Notification.
Parent as Folder.
Permissions as Permissions.
PlayNewMessageSound as Boolean.
PromptCallerForName as TVUserPromptCallerForName.
PromptForStatusDescription as Boolean.
PromptForStatusDuration as Boolean.
PromptForwardeeForPassword as Boolean.
PromptForwardeeToAccept as Boolean.
RingDuration as Long.
Session as Session.
SendDigitsBehavior as TVUserSendDigitsBehavior.
Station as Station.

APPENDIX D. CLIENT API OBJECT REFERENCE D-63


TELEVANTAGE DEVELOPER ’S GUIDE

StationNumber as Long.
StatusDescription as String.
Synchronized as Boolean.
Tag as Variant.
TelephonePromptLanguage as LocaleCode.
UseCallRules as Boolean.
VerifyIPAddress as Boolean.
VerifyPhoneAddress as Boolean.
VoiceTitle as AudioClip.
AllowVoiceMailLogonDuringGreeting as Boolean.
CallingAsFirstName as String.
CallingAsID as String.
CallingAsLastName as String.
CallNotification as Notification.
LogCalls as TVLogCallsLevel.
OutboundCallerIDNumber as String.
OutboundCallerIDPresentation as TVOutboundCallerIDPresentation.
Roles as Roles.
ImitateStation as Boolean.
RemoteAddress as Address.
RemotePhoneType as TVUserRemotePhoneType.
NTAccountName as String.
AutoAlertingOffHook as Boolean.
OutboundCallerIDCustomName as String.
OutboundCallerIDName as TVOutboundCallerIDName.
LockedOut as Boolean.
MustChangePassword as Boolean.
PasswordNeverExpires as Boolean.
SIPAccounts as SIPAccounts.

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Remove()

View object
Contain informations about a ViewPoint view. View objects can be collected in a Views object.

Methods:
Export([ExportType]) as String
ExportType as TVExportType (see p.E-13). Optional. Default value is 0 (tvExportTypeView).
Filter([FieldName], [Operator], [Value])
FieldName as String. Optional. Default value is "".
Operator as TVFilterOperator (see p.E-14). Optional. Default value is 0 (tvFilterOperatorEqualTo).
Value as Variant. Optional.
GetData([PreserveState], [Password], [ShowAll], [ResetDataSource]) as Recordset
PreserveState as Boolean. Optional. Default value is -1 (true).
Password as String. Optional.
ShowAll as Boolean. Optional.

APPENDIX D. CLIENT API OBJECT REFERENCE D-64


TELEVANTAGE DEVELOPER ’S GUIDE

ResetDataSource as Boolean. Optional.


Reset()
Sort([FieldName], [SortOrder])
FieldName as String. Optional. Default value is "".
SortOrder as TVSortOrder. Optional. Default value is 1.
ExportItemClass([ExportType]) as String
ExportType as TVExportType. Optional. Default value is 0.

Properties:
Columns as Columns.
Current as Boolean.
DisplayName as String.
FilterString as String.
ID as String.
Name as String.
Parent as Folder.
ResourceID as Long.
Session as Session.
SortString as String.
SystemDefined as Boolean.
Tag as Variant.

Views object
A collection of View objects. See “The Folder object” on page 2-8 for details about Folder object structures.

Methods:
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as View object (see p.D-64)
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as Folder.
Session as Session.
Tag as Variant.

Workgroup object
Contains information about a workgroup, similar to the information displayed in ViewPoint’s Workgroups
view. Workgroup objects can be collected in a WorkgroupMembers object or in a folder of type
tvFolderWorkgroups (see “Folder types” on page 2-10). See “Workgroup objects” on page 2-20 for a
detailed description of the Workgroup object structure.

Methods:
Delete([Mode])
Mode as TVDeleteMode (see p.E-9). Optional. Default value is 0 (tvDeleteMoveToDeleted).
Discard()

APPENDIX D. CLIENT API OBJECT REFERENCE D-65


TELEVANTAGE DEVELOPER ’S GUIDE

Save([Overwrite])
Overwrite as Boolean. Optional. Default value is 0 (false).

Properties:
Class as TVObjectClass.
Comments as String.
DialByNameAction as TVExtensionDialByNameAction.
DIDList as String.
Extension as String.
ID as String.
Members as WorkgroupMembers.
Name as String.
Operator as IItem.
Parent as Folder.
RingDuration as Long.
Session as Session.
Synchronized as Boolean.
Tag as Variant.
VoiceTitle as AudioClip.

Events:
Change(Synchronized, ChangedBy)
Synchronized as Boolean.
ChangedBy as TVItemChangedBy (see p.E-16).
Remove()

WorkgroupMember object
Contains either a Contact object or a Workgroup object. WorkgroupMember objects can be collected in a
WorkgroupMembers object.

Properties:
Member as IItem.
ID as String.
Parent as Workgroup.
Position as Long.
Session as Session.
Tag as Variant.

WorkgroupMembers object
A collection of WorkgroupMember objects.

Methods:
Add([Member]) as WorkgroupMember object (see p.D-66)
Member as IItem object (see p.D-19). Optional. Default value is <unprintable IDispatch*>.
Discard()
Exists(Index, [SearchType]) as Boolean
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Item(Index, [SearchType]) as WorkgroupMember object (see p.D-66)
Index as Variant.

APPENDIX D. CLIENT API OBJECT REFERENCE D-66


TELEVANTAGE DEVELOPER ’S GUIDE

SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).


Remove(Index, [SearchType])
Index as Variant.
SearchType as TVSearchType (see p.E-26). Optional. Default value is 0 (tvSearchDefault).
Save()

Properties:
Count as Long.
NewEnum as IUnknown.
Parent as Workgroup.
Session as Session.
Tag as Variant.

APPENDIX D. CLIENT API OBJECT REFERENCE D-67


APPENDIX E
APPENDIX E

CLIENT API ENUMERATIONS


TVAddressCategory
tvAddressCategoryNone = 0
tvAddressCategoryBusiness = 1
tvAddressCategoryHome = 2
tvAddressCategoryMobile = 3
tvAddressCategoryBusiness2 = 4
tvAddressCategoryHome2 = 5
tvAddressCategoryOther = 6
tvAddressCategoryEmail = 7
tvAddressCategoryEmail2 = 8
tvAddressCategoryIMAddress = 9

TVAddressError
tvAddressErrorNone = 0
tvAddressErrorInvalidParent = 1851
tvAddressErrorSetCallerIDParent = 1852
tvAddressErrorCallerIDConflict = 1853
tvAddressErrorDefaultToNothing = 1854
tvAddressErrorValueEmpty = 1855
tvAddressErrorCallerIDUsage = 1856
tvAddressErrorDuplicateCategory = 1857
tvAddressErrorInvalidService = 1858
tvAddressErrorInvalidType = 1859
tvAddressErrorUnableToRemoveCallerID = 1860
tvAddressErrorUnableToSetDefault = 1861
tvAddressErrorInvalidCategory = 1862
tvAddressErrorCouldNotConvertToPhone = 1863
tvAddressErrorAmbiguous = 1864
tvAddressErrorInvalidStation = 1865
tvAddressErrorInvalidID = 1866
tvAddressErrorInvalidUseRule = 1867
tvAddressErrorDefaultForUser = 1868

TVAddressFieldValidation
tvAddressFieldValidationMaxDescription = 5000
tvAddressFieldValidationMaxValue = 255
tvAddressFieldValidationMaxAccountCode = 255
tvAddressFieldValidationMaxSIPUserInfo = 255
TELEVANTAGE DEVELOPER ’S GUIDE

TVAddressPhoneComponent
tvAddressPhoneComponentAreaCode = 0
tvAddressPhoneComponentCountryCode = 1
tvAddressPhoneComponentPhoneNumber = 2
tvAddressPhoneComponentUseRules = 3

TVAddressSubType
tvAddressSubTypeDoNotUseRules = 0
tvAddressSubTypeUseRules = 8
tvAddressSubTypePager = 16

TVAddressType
tvAddressTypePhoneNumber = 1
tvAddressTypeIP = 2
tvAddressTypeStation = 3
tvAddressTypeUser = 4
tvAddressTypeEmail = 5
tvAddressTypeCustom = 6
tvAddressTypeExtension = 6
tvAddressTypeName = 7
tvAddressTypeApplication = 8
tvAddressTypePlugin = 8
tvAddressTypeAutoAttendant = 9
tvAddressTypeWorkgroup = 10
tvAddressTypeQueue = 11
tvAddressTypeUnused = 12
tvAddressTypeDID = 12
tvAddressTypeUserDefaultLocation = 13
tvAddressTypeVoiceMail = 14
tvAddressTypeVoiceMailAccess = 15
tvAddressTypeAccountLogon = 15
tvAddressTypeHoldMenu = 16
tvAddressTypeUnparkMenu = 21
tvAddressTypeIMAddress = 22
tvAddressTypeSIP = 23
tvAddressTypeSIPLocalAOR = 24

TVAddressUsageType
tvAddressUsageAddress = 1
tvAddressUsageCallerID = 2
tvAddressUsageBoth = 3

APPENDIX E. CLIENT API ENUMERATIONS E-2


TELEVANTAGE DEVELOPER ’S GUIDE

TVAgentStatisticInterval
tvAgentStatisticIntervalDay = 0
tvAgentStatisticIntervalShift = 1

TVAgentStatus
tvAgentStatusSignedOut = 0
tvAgentStatusAvailable = 1
tvAgentStatusStandby = 2
tvAgentStatusWrapUp = 3
tvAgentStatusOffering = 4
tvAgentStatusNoAnswer = 5
tvAgentStatusActiveInbound = 6
tvAgentStatusActiveOutbound = 7
tvAgentStatusWrapUpInbound = 3
tvAgentStatusWrapUpOutbound = 8
tvAgentStatusDialing = 9

TVApplicationType
tvApplicationTypeClient = 0
tvApplicationTypeAdministrator = 1

TVAssociatedPersonType
tvAssociatedPersonTypeSystem = 0
tvAssociatedPersonTypeUser = 1
tvAssociatedPersonTypeContact = 2
tvAssociatedPersonTypeUnknown = 3
tvAssociatedPersonTypeQueue = 4

TVAudioDeviceType
tvAudioDevicePhone = 0
tvAudioDeviceSpeakers = 1
tvAudioDeviceInCall = 2

TVAudioState
tvAudioStatePlaying = 1
tvAudioStateRecording = 2
tvAudioStatePausedPlaying = 3
tvAudioStatePausedRecording = 4
tvAudioStateIdle = 5
tvAudioStateUnknown = 6
tvAudioStateRinging = 7

APPENDIX E. CLIENT API ENUMERATIONS E-3


TELEVANTAGE DEVELOPER ’S GUIDE

TVAudioStateChangeReason
tvAudioStateChangeReasonPlay = 0
tvAudioStateChangeReasonPause = 1
tvAudioStateChangeReasonRecord = 2
tvAudioStateChangeReasonStop = 3
tvAudioStateChangeReasonSilentRange = 4
tvAudioStateChangeReasonDeviceChange = 5
tvAudioStateChangeReasonPlayDone = 6
tvAudioStateChangeReasonPlayInterrupt = 7
tvAudioStateChangeReasonSessionDone = 8
tvAudioStateChangeReasonSessionRinging = 9
tvAudioStateChangeReasonRecordTerminateUser = 10
tvAudioStateChangeReasonRecordTerminateMaxSilence = 11
tvAudioStateChangeReasonRecordTerminateTimeOut = 12
tvAudioStateChangeReasonRecordTerminateDigit = 13

TVAudioType
tvAudioTypeMessage = 2
tvAudioTypeGreeting = 1
tvAudioTypeVoiceTitle = 0

TVAudioVOXFormat
tvAudioVOXFormatServerDefault = 0xffffffff
tvAudioVOXFormatALaw = 0
tvAudioVOXFormatULaw = 1

TVCallAnnounceType
tvCallAnnounceTypeCallee = 0
tvCallAnnounceTypeCaller = 1

TVCallDeclineMode
tvCallDeclineToRoutingList = 0
tvCallDeclineToVoiceMail = 1
tvCallDeclineToVoiceMailScreen = 2

TVCallDirection
tvCallDirectionInbound = 0
tvCallDirectionOutbound = 1

TVCallerIDFormat
tvCallerIDFormatNameAndNumber = 0
tvCallerIDFormatName = 1
tvCallerIDFormatNumber = 2

APPENDIX E. CLIENT API ENUMERATIONS E-4


TELEVANTAGE DEVELOPER ’S GUIDE

TVCallFeature
tvCallFeatureAnnounce = 0
tvCallFeatureAnswer = 1
tvCallFeatureAssociate = 2
tvCallFeatureConference = 3
tvCallFeatureDecline = 4
tvCallFeatureDeclineToVoiceMail = 5
tvCallFeatureDeclineToVoiceMailScreen = 6
tvCallFeatureDisconnect = 7
tvCallFeatureHold = 8
tvCallFeatureJoin = 9
tvCallFeatureMute = 10
tvCallFeaturePark = 11
tvCallFeatureRecordPause = 12
tvCallFeatureRecordResume = 13
tvCallFeatureRecordStart = 14
tvCallFeatureRecordStop = 15
tvCallFeatureRoleCoach = 16
tvCallFeatureRoleMonitor = 17
tvCallFeatureRolePeer = 18
tvCallFeatureRolePupil = 19
tvCallFeatureScreenMessage = 20
tvCallFeatureSetAccountCode = 21
tvCallFeatureSetRole = 22
tvCallFeatureTransferBlind = 23
tvCallFeatureTransferBlindToApplication = 24
tvCallFeatureTransferSupervisedAbort = 25
tvCallFeatureTransferSupervisedComplete = 26
tvCallFeatureTransferSupervisedConference = 27
tvCallFeatureTransferSupervisedStart = 28
tvCallFeatureUnpark = 29
tvCallFeaturePlayAudio = 30

TVCallFieldValidation
tvCallFieldValidationMaxAccountCode = 255
tvCallFieldValidationMaxComments = 5000
tvCallFieldValidationMaxCustomData = 5000

TVCallGrabAndHoldAudioType
tvCallGrabAndHoldAudioTypeNone = 0
tvCallGrabAndHoldAudioTypeSystemDefault = 1
tvCallGrabAndHoldAudioTypeUserDefault = 2
tvCallGrabAndHoldAudioTypeCustom = 3

APPENDIX E. CLIENT API ENUMERATIONS E-5


TELEVANTAGE DEVELOPER ’S GUIDE

TVCallHistoryError
tvCallHistoryErrorUnsavedContact = 5501

TVCallHistoryFieldValidation
tvCallHistoryFieldValidationMaxNotes = 5000
tvCallHistoryFieldValidationMaxAccountCode = 255

TVCallHistoryResult
tvCallHistoryResultUnknown = 0xffffffff
tvCallHistoryResultAbandoned = 0
tvCallHistoryResultConnected = 1
tvCallHistoryResultLeftMessage = 2
tvCallHistoryResultBlindTransfer = 3
tvCallHistoryResultSupervisedTransfer = 4
tvCallHistoryResultLogin = 5
tvCallHistoryResultNoAnswer = 6
tvCallHistoryResultLoginFailed = 7

TVCallRecordFormat
tvCallRecordFormatADPCM6K = 0
tvCallRecordFormatADPCM8K = 1
tvCallRecordFormatPCM6K = 2
tvCallRecordFormatPCM8K = 3

TVCallRecordStatus
tvCallRecordStatusIdle = 0
tvCallRecordStatusRecording = 1
tvCallRecordStatusPaused = 2

TVCallRuleCallerTypeCondition
tvCallRuleCallerTypeNone = 0
tvCallRuleCallerTypeInternal = 1
tvCallRuleCallerTypeExternal = 2
tvCallRuleCallerTypeUnidentified = 4
tvCallRuleCallerTypeSpecific = 8

APPENDIX E. CLIENT API ENUMERATIONS E-6


TELEVANTAGE DEVELOPER ’S GUIDE

TVCallRuleError
tvCallRuleErrorNonUniqueName = 7001
tvCallRuleErrorNoName = 7002
tvCallRuleErrorNonUniquePriority = 7003
tvCallRuleErrorNoPriority = 7004
tvCallRuleErrorInvalidCallerCondition = 7005
tvCallRuleErrorScheduleConditionInvalidCombo = 7006
tvCallRuleErrorCallerConditionInvalidCombo = 7007
tvCallRuleErrorNoConditions = 7008
tvCallRuleErrorNoActions = 7009
tvCallRuleErrorCannotSwapWithDifferentFolder = 7010

TVCallRuleFieldValidation
tvCallRuleFieldValidationMaxName = 255
tvCallRuleFieldValidationMinName = 1
tvCallRuleFieldValidationMinPriority = 1

TVCallRuleRingOverride
tvCallRuleRingDoNotOverride = 0
tvCallRuleRingAlways = 1
tvCallRuleRingNever = 2

TVCallRuleScheduleType
tvCallRuleScheduleTypeNone = 0
tvCallRuleScheduleTypeBusinessHours = 1
tvCallRuleScheduleTypeNonBusinessHours = 2
tvCallRuleScheduleTypeAfterHoursWorkDays = 3
tvCallRuleScheduleTypeNonWorkDays = 4
tvCallRuleScheduleTypeHolidays = 5
tvCallRuleScheduleTypeCustomHours = 6

TVCallType
tvCallTypeConsultation = 3
tvCallTypeNormal = 2
tvCallTypeParked = 5
tvCallTypeTransfer = 4

TVColumnsError
tvColumnsErrorNonUniqueName = 9626
tvColumnsErrorInvalidName = 9627

APPENDIX E. CLIENT API ENUMERATIONS E-7


TELEVANTAGE DEVELOPER ’S GUIDE

TVContactAssociateFlags
tvContactAssociateNoCallerID = 0
tvContactAssociateCallerIDNumberToCallerID = 1
tvContactAssociateCallerIDNumberToCategory = 2
tvContactAssociateCallerIDNameToCallerID = 4
tvContactAssociateCallbackNumberToCallerID = 8
tvContactAssociateCallbackNumberToCategory = 16
tvContactAssociateCategoryOther = 0
tvContactAssociateCategoryBusiness = 128
tvContactAssociateCategoryHome = 256
tvContactAssociateCategoryMobile = 512
tvContactAssociateCategoryBusiness2 = 1024
tvContactAssociateCategoryHome2 = 2048
tvContactAssociateNoVoiceTitle = 0
tvContactAssociateVoiceTitle = 16384

TVContactError
tvContactErrorDuplicatePIN = 1002
tvContactErrorMissingName = 1003
tvContactErrorCallerIDConflict = 1004
tvContactErrorTelephonePromptLanguage = 1005
tvContactErrorCannotClearDefault = 1006
tvContactErrorNotInAddresses = 1007
tvContactErrorNoPINInSharedFolder = 1008

TVContactFieldValidation
tvContactFieldValidationMaxComments = 5000
tvContactFieldValidationMaxCompanyName = 50
tvContactFieldValidationMaxFirstName = 64
tvContactFieldValidationMaxJobTitle = 30
tvContactFieldValidationMaxLastName = 30
tvContactFieldValidationMaxPIN = 6
tvContactFieldValidationMaxAccountCode = 255

APPENDIX E. CLIENT API ENUMERATIONS E-8


TELEVANTAGE DEVELOPER ’S GUIDE

TVDefaultFolders
tvFolderAgents = 100
tvFolderAgentStats = 2300
tvFolderCallHistory = 400
tvFolderCallRules = 1000
tvFolderCalls = 300
tvFolderContacts = 500
tvFolderCurrentUser = 0xffffffff
tvFolderDeleted = 0
tvFolderGreetings = 1500
tvFolderMessages = 700
tvFolderPersonalStatus = 1600
tvFolderQueueStats = 2200
tvFolderRoutingLists = 1800
tvFolderServices = 1100
tvFolderSystemTarget = 1700
tvFolderUsers = 1300
tvFolderWorkgroups = 2100

TVDeleteMode
tvDeleteMoveToDeleted = 0
tvDeletePermanent = 1
tvDeletePermanentPromptIfInUse = 2

TVDeviceHookState
tvDeviceHookStateOff = 1
tvDeviceHookStateOn = 0
tvDeviceHookStateUnknown = 2

TVDirectorySearchMode
tvDirectorySearchLastName = 0
tvDirectorySearchFirstName = 1
tvDirectorySearchEither = 2

APPENDIX E. CLIENT API ENUMERATIONS E-9


TELEVANTAGE DEVELOPER ’S GUIDE

TVError
tvErrorUnexpected = 1001
tvErrorDeleteWhileEdit = 7501
tvErrorMoveInvalidDestination = 7502
tvErrorMoveWhileNew = 7503
tvErrorMoveWhileEdit = 7504
tvErrorSaveOutOfSync = 7505
tvErrorObjectIsDeleted = 7506
tvErrorNoChildID = 7507
tvErrorInvalidIndex = 7508
tvErrorItemNotFound = 7509
tvErrorDuplicateExtension = 7510
tvErrorInvalidExtension = 7511
tvErrorInvalidString = 7512
tvErrorNotImplemented = 7513
tvErrorInvalidEnumValue = 7514
tvErrorCannotMoveToDeleted = 7515
tvErrorPermissionAddNotAllowed = 7516
tvErrorPermissionAddNoUser = 7517
tvErrorPermissionAddNonUser = 7518
tvErrorPermissionAddNewUser = 7519
tvErrorPermissionAddFolderOwner = 7520
tvErrorPermissionAddDuplicateUser = 7521
tvErrorPermissionRemoveNotAllowed = 7522
tvErrorPermissionAccessUseDefault = 7523
tvErrorInvalidLong = 7524
tvErrorDatabaseTimeOut = 7525
tvErrorDatabaseQueryFailed = 7526
tvErrorAudioNoAudioToExport = 7527
tvErrorAudioConversionFailed = 7528
tvErrorAudioInvalidFileFormat = 7529
tvErrorAudioImportNotAllowed = 7530
tvErrorAudioRecordNotAllowed = 7531
tvErrorAudioServerNotRunning = 7532
tvErrorAudioGetTempPath = 7533
tvErrorAudioGetComputerName = 7534
tvErrorAudioGetTempFile = 7535
tvErrorAudioMCICommandFailed = 7536
tvErrorAudioMCICommandAborted = 7537
tvErrorInvalidIItemClass = 7538
tvErrorSubItemAlreadyInCollection = 7539
tvErrorAudioInvalidDeviceID = 7540
tvErrorPermissionCannotSetToNone = 7541

APPENDIX E. CLIENT API ENUMERATIONS E-10


TELEVANTAGE DEVELOPER ’S GUIDE

tvErrorPermissionDenied = 7542
tvErrorSessionLoggedOff = 7543
tvErrorInvalidDataMember = 7544
tvErrorInvalidTelephonyCharacters = 7545
tvErrorSystemCannotStartServer = 7546
tvErrorSystemCannotShutdownServer = 7547
tvErrorSystemCannotCancelShutdown = 7548
tvErrorCannotSetToNothing = 7549
tvErrorInvalidSNVKCombo = 7550
tvErrorSystemVariableReadOnly = 7551
tvErrorInvalidParentObject = 7552
tvErrorInvalidPassword = 7553
tvErrorInvalidUser = 7554
tvErrorTooManyInvalidLogins = 7555
tvErrorUnsavedObject = 7556
tvErrorDeleteInUseCannotDelete = 7557
tvErrorDeleteInUseCanDelete = 7558
tvErrorPropertyMissing = 7559
tvErrorObjectBeingUpdated = 7560
tvErrorMaxGreetingSpaceExceeded = 7561
tvErrorFailedSendToMailRecipient = 7562
tvErrorDatabaseVersionMismatch = 7563
tvErrorServerVersionMismatch = 7564
tvErrorBuildVersionMismatch = 7565
tvErrorDatabaseConnectionFailed = 7566
tvErrorServerConnectionFailed = 7567
tvErrorServerSyncCallNotAllowed = 7568
tvErrorServerTimeOut = 7569
tvErrorServerUnknown = 7571
tvErrorDatabaseTransactionOpen = 7572
tvErrorDatabaseInvalidCursor = 7573
tvErrorFolderNotFound = 7574
tvErrorParameterRequired = 7575
tvErrorParentSaveBeforeAdd = 7576
tvErrorDatabaseDeadlock = 7577
tvErrorFileCopyFileNotFound = 7578
tvErrorFileCopyDiskFull = 7579
tvErrorAudioImportFailed = 7580
tvErrorServerStationBusy = 7581
tvErrorFileCopyFileAccess = 7582
tvErrorInvalidDevice = 7583
tvErrorServerDBError = 7584
tvErrorServerNoVoxResource = 7585

APPENDIX E. CLIENT API ENUMERATIONS E-11


TELEVANTAGE DEVELOPER ’S GUIDE

tvErrorServerFileNotFound = 7586
tvErrorServerDiskFull = 7587
tvErrorServerMaxPartiesExceeded = 7588
tvErrorAudioExportRecording = 7589
tvErrorServerConnectionFailedInvalidNetworkSettings = 7590
tvErrorAudioMCIHardwareProblem = 7591
tvErrorInvalidBoolean = 7592
tvErrorDatabaseOutOfMemory = 7593
tvErrorDatabaseSyntaxError = 7594
tvErrorDatabaseUnknown = 7595
tvErrorAudioExportFailed = 7596
tvErrorAudioCopyFileViaDatabaseFailed = 7597
tvErrorAudioMCIFileProblem = 7598
tvErrorAudioMCIUnknown = 7599
tvErrorInsufficientLicenses = 7600
tvErrorInvalidProcedureCall = 7601
tvErrorCallFeatureNotAvailable = 7602
tvErrorAccountCodeIncomplete = 7603
tvErrorAccountCodeInvalid = 7604
tvErrorAccountCodeRequired = 7605
tvErrorInvalidTransferTarget = 7606
tvErrorObjectDiscarded = 7607
tvErrorServerCantTakeQueueCall = 7608
tvErrorServerFileExists = 7609
tvErrorServerNoAvailableTrunks = 7610
tvErrorServerStationOffHook = 7611
tvErrorInvalidFolder = 7612
tvErrorServerNotRunning = 7613
tvErrorInvalidFile = 7614
tvErrorPasswordRequired = 7615
tvErrorServerAnswerFailed = 7616
tvErrorServerInvalidParty = 7617
tvErrorUnregisteredLicensesExpired = 7618
tvErrorPasswordTooShort = 7619
tvErrorPasswordContainsExtension = 7620
tvErrorPasswordContainsPreventedSequence = 7621
tvErrorPasswordMustBeDifferent = 7622
tvErrorAccountLockedOut = 7623
tvErrorAccountLockedOutDueToPasswordFailure = 7624
tvErrorMustChangePassword = 7625
tvErrorPasswordExpired = 7626
tvErrorServerConferenceFailedNoResources = 7627
tvErrorTrialLicensesExpired = 7628

APPENDIX E. CLIENT API ENUMERATIONS E-12


TELEVANTAGE DEVELOPER ’S GUIDE

tvErrorServerNotInstalled = 7629
tvErrorServerDisconnectedParty = 7630
tvErrorServerCantTransfer = 7631
tvErrorServerTargetCantAcceptTransfer = 7632
tvErrorServerTargetCantAcceptTransferBlind = 7633
tvErrorServerTargetCantAcceptTransferSupervised = 7634
tvErrorServerTargetCantAcceptTransferredConferences = 7635
tvErrorServerCantCompleteTransferNoTransferCall = 7636
tvErrorServerCantCompleteTransferNoConsultationCall = 7637
tvErrorServerTransferConvertedSupervisedToBlind = 7638
tvErrorInvalidCallingAs = 7639
tvErrorServerNoActiveCall = 7640
tvErrorServerDialingNotComplete = 7641
tvErrorServerCantRecordCallNoMailbox = 7642
tvErrorCannotCreateFirewallException = 7643
tvErrorCannotUpdateSystemDCOMSettings = 7644
tvErrorServerNoMediaSession = 7645
tvErrorServerCannotReachClient = 7646

TVExportFormatType
tvExportFormatTypeXML = 0
tvExportFormatTypeCSV = 1

TVExportType
tvExportTypeView = 0
tvExportTypeData = 1

TVExtensionDialByNameAction
tvExtensionDialByNameActionDoNotList = 0
tvExtensionDialByNameActionListAndPlayExtension = 1
tvExtensionDialByNameActionList = 2

TVFieldDataType
tvFieldDataTypeNumber = 0
tvFieldDataTypeBoolean = 1
tvFieldDataTypeString = 2
tvFieldDataTypeDateTime = 3
tvFieldDataTypeIcon = 4

APPENDIX E. CLIENT API ENUMERATIONS E-13


TELEVANTAGE DEVELOPER ’S GUIDE

TVFilterOperator
tvFilterOperatorEqualTo = 0
tvFilterOperatorLessThan = 1
tvFilterOperatorGreaterThan = 2
tvFilterOperatorLike = 3
tvFilterOperatorLessThanOrEqualTo = 4
tvFilterOperatorGreaterThanOrEqualTo = 5
tvFilterOperatorNotEqualTo = 6

TVFinalActionError
tvFinalActionErrorAddressInvalid = 9451
tvFinalActionErrorNoAddress = 9453
tvFinalActionErrorSetAddressToNothing = 9455

TVFolderError
tvFolderErrorInvalidView = 9501
tvFolderErrorUnsavedView = 9502
tvFolderErrorNoView = 9503
tvFolderErrorNoName = 9504
tvFolderErrorDeleteNotAllowed = 9505
tvFolderErrorMoveNotAllowed = 9506
tvFolderErrorRenameNotAllowed = 9507

TVFolderFieldValidation
tvFolderFieldValidationMaxName = 255
tvFolderFieldValidationMinName = 1

TVFoldersError
tvFoldersErrorAddInvalidParent = 9551

TVGreetingError
tvGreetingErrorNonUniqueName = 9001
tvGreetingErrorNoName = 9002
tvGreetingErrorNoAudio = 9003
tvGreetingErrorDeleteDefaultGreeting = 9004
tvGreetingErrorSetDefaultToFalse = 9005
tvGreetingErrorSetActiveToFalse = 9006
tvGreetingErrorDeleteActiveGreeting = 9007

TVGreetingFieldValidation
tvGreetingFieldValidationMaxName = 255
tvGreetingFieldValidationMinName = 1
tvGreetingFieldValidationMaxText = 5000

APPENDIX E. CLIENT API ENUMERATIONS E-14


TELEVANTAGE DEVELOPER ’S GUIDE

TVImportContactField
tvImportContactFieldFirstName = 1
tvImportContactFieldLastName = 2
tvImportContactFieldTitle = 3
tvImportContactFieldComment = 4
tvImportContactFieldCompany = 5
tvImportContactFieldBusinessPhone = 6
tvImportContactFieldBusinessPhoneAccessCode = 7
tvImportContactFieldBusinessPhone2 = 8
tvImportContactFieldBusinessPhone2AccessCode = 9
tvImportContactFieldHomePhone = 10
tvImportContactFieldHomePhoneAccessCode = 11
tvImportContactFieldHomePhone2 = 12
tvImportContactFieldHomePhone2AccessCode = 13
tvImportContactFieldMobilePhone = 14
tvImportContactFieldMobilePhoneAccessCode = 15
tvImportContactFieldOtherPhone = 16
tvImportContactFieldOtherPhoneAccessCode = 17
tvImportContactFieldPIN = 18
tvImportContactFieldCallerIDs = 19
tvImportContactFieldAccountCode = 20
tvImportContactFieldEmail = 21
tvImportContactFieldEmail2 = 22
tvImportContactFieldIM = 23
tvImportContactFieldBusinessPhoneDescription = 24
tvImportContactFieldBusinessPhone2Description = 25
tvImportContactFieldHomePhoneDescription = 26
tvImportContactFieldHomePhone2Description = 27
tvImportContactFieldMobilePhoneDescription = 28
tvImportContactFieldOtherPhoneDescription = 29
tvImportContactFieldEmailDescription = 30
tvImportContactFieldEmail2Description = 31
tvImportContactFieldIMDescription = 32
tvImportContactFieldLocaleCode = 33

TVImportHeaderPosition
tvImportHeaderPositionNone = 0
tvImportHeaderPositionFirstRecord = 1

TVImportOptions
tvImportOptionsReplaceDuplicate = 0
tvImportOptionsAllowDuplicate = 1
tvImportOptionsNoDuplicate = 2

APPENDIX E. CLIENT API ENUMERATIONS E-15


TELEVANTAGE DEVELOPER ’S GUIDE

TVInterface
tvInterfaceIItem = 0
tvInterfaceIAssocate = 1
tvInterfaceICOMSecurity = 2
tvInterfaceIWindowsSecurity = 3

TVItemChangedBy
tvItemChangedByThisInstance = 0
tvItemChangedByAnotherInstance = 1

TVItemStatus
tvItemStatusNew = 0
tvItemStatusReady = 1
tvItemStatusModified = 2
tvItemStatusDeleted = 3

TVLicenseStatus
tvLicenseStatusUnlicensed = 0
tvLicenseStatusUnregistered = 1
tvLicenseStatusRegistered = 2
tvLicenseStatusRegisteredWithHardwareChange = 3
tvLicenseStatusTrial = 4

TVLicenseType
tvLicenseServer = 0
tvLicenseStation = 1
tvLicenseTrunk = 2
tvLicenseClient = 3
tvLicenseIP = 4
tvLicenseACD = 5
tvLicenseReporter = 6

TVLocaleCallerIDFormat
CallerIDFormatName = 1
CallerIDFormatNameAndNumber = 0
CallerIDFormatNumber = 2

APPENDIX E. CLIENT API ENUMERATIONS E-16


TELEVANTAGE DEVELOPER ’S GUIDE

TVLocaleDateTimeFormat
DateTimeFormatDate = 0
DateTimeFormatDateTime = 2
DateTimeFormatDateTimeDetailed = 11
DateTimeFormatDateTimeLong = 3
DateTimeFormatTimeLong = 12
DateTimeFormatTime = 1

TVLocalePictureFormat
PictureFormatBitmap = 0
PictureFormatCursor = 2
PictureFormatIcon = 1

TVLogCallsLevel
tvLogCallsLevelNone = 0
tvLogCallsLevelInboundOnly = 1
tvLogCallsLevelOutboundOnly = 2
tvLogCallsLevelAll = 3

TVMessageAssociatedPersonType
tvMessageAssociatedPersonTypeSystem = 0
tvMessageAssociatedPersonTypeUser = 1
tvMessageAssociatedPersonTypeContact = 2
tvMessageAssociatedPersonTypeUnknown = 3
tvMessageAssociatedPersonTypeQueue = 4

TVMessageError
tvMessageErrorUnsavedContact = 1501
tvMessageErrorForwardUnsent = 1502
tvMessageErrorReplyUnsent = 1503
tvMessageErrorSaveUnsent = 1504
tvMessageErrorSendExisting = 1505
tvMessageErrorNoRecipient = 1506
tvMessageErrorNoAudio = 1507
tvMessageErrorNoReplyRecipient = 1508
tvMessageErrorAssociateNotAllowed = 1509
tvMessageErrorConfidentialNotAllowed = 1510
tvMessageErrorConfidentialMove = 1511

TVMessageFieldValidation
tvMessageFieldValidationMaxComments = 5000

APPENDIX E. CLIENT API ENUMERATIONS E-17


TELEVANTAGE DEVELOPER ’S GUIDE

TVMessageStatus
tvMessageStatusNormal = 0
tvMessageStatusForward = 1
tvMessageStatusReply = 2

TVMessageType
tvMessageTypeVoiceMail = 0
tvMessageTypeCallRecording = 1
tvMessageTypeNthCallRecording = 2
tvMessageTypeSystemCallRecording = 3

TVNameFormat
tvNameFormatFirstLast = 0
tvNameFormatLastFirst = 1
tvNameFormatUserSpecific = 2

TVNotificationError
tvNotificationErrorNoAddress = 2851
tvNotificationErrorAddressTypeMismatch = 2852

TVNotificationFieldValidation
tvNotificationFieldValidationMaxLevel = 2
tvNotificationFieldValidationMaxMessageAction = 3

TVNotificationLevel
tvNotificationLevelNone = 0
tvNotificationLevelAll = 1
tvNotificationLevelUrgentOnly = 2

TVNotificationMessageAction
tvNotificationMessageActionDoNotAttach = 0
tvNotificationMessageActionAttach = 1
tvNotificationMessageActionttachAndMarkHeard = 2
tvNotificationMessageActionAttachAndDelete = 3

TVNotificationType
tvNotificationTypeEmail = 1
tvNotificationTypePager = 2
tvNotificationTypeCall = 3

APPENDIX E. CLIENT API ENUMERATIONS E-18


TELEVANTAGE DEVELOPER ’S GUIDE

TVObjectClass
tvClassSession = 1
tvClassFolder = 10
tvClassSystem = 11
tvClassPermission = 20
tvClassAddress = 21
tvClassSetting = 22
tvClassView = 23
tvClassShortcut = 24
tvClassSchedule = 27
tvClassScheduledDay = 28
tvClassScheduledDate = 29
tvClassVariable = 33
tvClassNotification = 34
tvClassParty = 35
tvClassAudioClip = 36
tvClassField = 41
tvClassColumn = 42
tvClassNotifyScheduleItem = 43
tvClassRoutingListAction = 44
tvClassRoutingListFinalAction = 45
tvClassReportingCategory = 46
tvClassSystemSetting = 47
tvClassShortcutGroup = 48
tvClassStationType = 49
tvClassStationFeature = 50
tvClassStationParameter = 51
tvClassSIPAccount = 60
tvClassSkillDefinition = 65
tvClassAgent = 101
tvClassAgentStat = 2301
tvClassAutoAttendant = 201
tvClassCall = 301
tvClassCallHistory = 401
tvClassCallHistoryParty = 402
tvClassCallRule = 1001
tvClassContact = 501
tvClassDeviceStation = 601
tvClassGreeting = 1501
tvClassIVRPlugIn = 1401
tvClassMessage = 701
tvClassPersonalStatus = 1601
tvClassQueue = 901

APPENDIX E. CLIENT API ENUMERATIONS E-19


TELEVANTAGE DEVELOPER ’S GUIDE

tvClassQueueStat = 2201
tvClassRoutingList = 1801
tvClassServiceInternet = 1101
tvClassServicePhone = 1102
tvClassServicePhoneGateway = 1103
tvClassServiceSwitch = 1104
tvClassServiceSwitchGateway = 1105
tvClassServiceRouting = 1106
tvClassServiceSIP = 1107
tvClassServiceSIPPhoneGateway = 1108
tvClassServiceSIPSwitchGateway = 1109
tvClassSystemTarget = 1701
tvClassTrunkGroupSIP = 1206
tvClassUser = 1301
tvClassUserGroup = 1302
tvClassRole = 1302
tvClassWorkgroup = 2101
tvClassSIPServer = 2701

TVObjectDialingServiceClass
tvDialingServiceClassPhone = 1102
tvDialingServiceClassSwitch = 1104
tvDialingServiceClassInternet = 1101
tvDialingServiceClassPhoneGateway = 1103
tvDialingServiceClassSwitchGateway = 1105
tvDialingServiceClassRouting = 1106

APPENDIX E. CLIENT API ENUMERATIONS E-20


TELEVANTAGE DEVELOPER ’S GUIDE

TVObjectItemClass
tvItemClassNoItem = 0xffffffff
tvItemClassDeletedItem = 0
tvItemClassAgentItem = 100
tvItemClassAutoAttendantItem = 200
tvItemClassCallItem = 300
tvItemClassCallHistoryItem = 400
tvItemClassContactItem = 500
tvItemClassDeviceItem = 600
tvItemClassMessageItem = 700
tvItemClassQueueItem = 900
tvItemClassCallRuleItem = 1000
tvItemClassServiceItem = 1100
tvItemClassTrunkGroupItem = 1200
tvItemClassUserItem = 1300
tvItemClassIVRPlugInItem = 1400
tvItemClassGreetingItem = 1500
tvItemClassPersonalStatusItem = 1600
tvItemClassSystemTargetItem = 1700
tvItemClassRoutingListItem = 1800
tvItemClassWorkgroupItem = 2100
tvItemClassQueueStatItem = 2200
tvItemClassAgentStatItem = 2300
tvItemClassSIPServerItem = 2700

TVOutboundCallerIDName
tvOutboundCallerIDNameSystemDefault = 0
tvOutboundCallerIDNameOrganization = 1
tvOutboundCallerIDNameUserName = 2
tvOutboundCallerIDNameCustom = 3

TVOutboundCallerIDPresentation
tvOutboundCallerIDPresentationSystemDefault = 0
tvOutboundCallerIDPresentationNetwork = 1
tvOutboundCallerIDPresentationAvailable = 2
tvOutboundCallerIDPresentationRestricted = 3

TVPartyDirection
tvPartyDirectionInbound = 0
tvPartyDirectionOutbound = 1

APPENDIX E. CLIENT API ENUMERATIONS E-21


TELEVANTAGE DEVELOPER ’S GUIDE

TVPartyFeature
tvPartyFeatureAnnounce = 0
tvPartyFeatureAnswer = 1
tvPartyFeatureAssociate = 2
tvPartyFeatureDisconnect = 7
tvPartyFeatureHold = 8
tvPartyFeatureMute = 10
tvPartyFeatureRoleCoach = 16
tvPartyFeatureRoleMonitor = 17
tvPartyFeatureRolePeer = 18
tvPartyFeatureRolePupil = 19
tvPartyFeatureSetRole = 22

TVPartyHistoryResult
tvPartyHistoryResultNone = 0
tvPartyHistoryResultHungUp = 1
tvPartyHistoryResultHungUpUpon = 2
tvPartyHistoryResultAbandoned = 3
tvPartyHistoryResultVoiceMail = 4
tvPartyHistoryResultBlindTransfer = 5
tvPartyHistoryResultSupervisedTransfer = 6
tvPartyHistoryResultMerged = 7
tvPartyHistoryResultLoggedIn = 8
tvPartyHistoryResultDirectVoiceMail = 9
tvPartyHistoryResultNoAnswer = 10
tvPartyHistoryResultAbandonedUpon = 11
tvPartyHistoryResultLoginFailed = 12

TVPartyRole
tvPartyRolePeer = 0
tvPartyRoleMonitor = 1
tvPartyRolePupil = 2
tvPartyRoleCoach = 3
tvPartyRolePeerListener = 4

APPENDIX E. CLIENT API ENUMERATIONS E-22


TELEVANTAGE DEVELOPER ’S GUIDE

TVPartyStatus
_tvPartyStatusMax = 38
tvPartyStatusUnknown = 37
tvPartyStatusNone = 0
tvPartyStatusActive = 1
tvPartyStatusAlerting = 29
tvPartyStatusApplication = 33
tvPartyStatusAttempting = 28
tvPartyStatusAttemptingTransfer = 35
tvPartyStatusCalling = 23
tvPartyStatusDialing = 30
tvPartyStatusDisconnected = 3
tvPartyStatusGreetingListening = 26
tvPartyStatusGreetingPlaying = 6
tvPartyStatusHold = 4
tvPartyStatusMessageLeaving = 8
tvPartyStatusMessageScreening = 9
tvPartyStatusMessageTaking = 7
tvPartyStatusOffering = 5
tvPartyStatusParked = 25
tvPartyStatusQueued = 27
tvPartyStatusRinging = 2
tvPartyStatusTransferring = 34
tvPartyStatusWaiting = 11

TVPermissionAccessLevel
tvPermissionAccessLevelUnknown = 0xffffffff
tvPermissionAccessLevelNone = 0
tvPermissionAccessLevelReadOnly = 1
tvPermissionAccessLevelFull = 2

TVPermissionType
tvPermissionTypeBoolean = 0
tvPermissionTypeAccessLevel = 1

TVPersonalStatusCallForwarding
tvPersonalStatusCallForwardingUseDefault = 0
tvPersonalStatusCallForwardingSetOn = 1
tvPersonalStatusCallForwardingSetOff = 2

APPENDIX E. CLIENT API ENUMERATIONS E-23


TELEVANTAGE DEVELOPER ’S GUIDE

TVPersonalStatusError
tvPersonalStatusErrorNonUniqueName = 8501
tvPersonalStatusErrorNoName = 8502
tvPersonalStatusErrorNoCategory = 8503
tvPersonalStatusErrorInvalidCallForwarding = 8504
tvPersonalStatusErrorCannotDeleteLAPS = 8505
tvPersonalStatusErrorSystemDefinedStatus = 8506

TVPersonalStatusFieldValidation
tvPersonalStatusFieldValidationLengthMaxDescription = 100
tvPersonalStatusFieldValidationLengthMaxName = 50

TVPersonalStatusType
tvPersonalStatusTypeAvailable = 0
tvPersonalStatusTypeDoNotDisturb = 1
tvPersonalStatusTypeInAMeeting = 2
tvPersonalStatusTypeOutOfTheOffice = 3
tvPersonalStatusTypeVacation = 4
tvPersonalStatusTypeAvailableACDOnly = 5
tvPersonalStatusTypeAvailableNonACD = 6
tvPersonalStatusTypeBreak = 7
tvPersonalStatusTypeCustom = 8

TVPhoneType
tvPhoneTypeUnspecified = 0
tvPhoneTypeH323 = 17
tvPhoneTypeH323PMIG = 18
tvPhoneTypeH323Uniden = 19
tvPhoneTypeH323Softphone = 20

TVRecipientError
tvRecipientErrorAddNotAllowed = 1950
tvRecipientErrorDuplicateRecipient = 1951
tvRecipientErrorDiscardNotAllowed = 1952
tvRecipientErrorRemoveNotAllowed = 1953
tvRecipientErrorSaveNotAllowed = 1954
tvRecipientErrorAddInvalidObject = 1955
tvRecipientErrorAddNoMailbox = 1956

TVRegistryDataType
tvRegistryDataTypeBoolean = 0
tvRegistryDataTypeLong = 1
tvRegistryDataTypeString = 2

APPENDIX E. CLIENT API ENUMERATIONS E-24


TELEVANTAGE DEVELOPER ’S GUIDE

TVRegistryLocation
tvRegistryLocationDatabasePerUser = 0
tvRegistryLocationDatabasePerSystem = 1
tvRegistryLocationRegistryCurrentUser = 2
tvRegistryLocationRegistryLocalMachine = 3

TVRoutingListActionError
tvRoutingListActionErrorNoAddress = 9401
tvRoutingListActionErrorSetAddressToNothing = 9402
tvRoutingListActionErrorSetPromptCallerGreeting = 9403
tvRoutingListActionErrorNoVoiceTitle = 9404
tvRoutingListActionErrorInvalidRingDuration = 9405
tvRoutingListActionErrorCannotForward = 9406

TVRoutingListActionType
tvRoutingListActionTypeCallMeWhereIAm = 1
tvRoutingListActionTypeCallAddress = 2
tvRoutingListActionTypePlayGreeting = 3
tvRoutingListActionTypePause = 4

TVRoutingListError
tvRoutingListErrorDeleteDefault = 9251
tvRoutingListErrorNoName = 9252
tvRoutingListErrorNonUniqueName = 9253
tvRoutingListErrorSetDefaultToFalse = 9254
tvRoutingListErrorEditSystemRL = 9255
tvRoutingListErrorSetActiveToFalse = 9256
tvRoutingListErrorDeleteActive = 9257

TVRoutingListFieldValidation
tvRoutingListFieldValidationMaxName = 128
tvRoutingListFieldValidationMinName = 1

TVRoutingListFinalActionType
tvRoutingListFinalActionTypeNone = 0
tvRoutingListFinalActionTypeTakeMessage = 1
tvRoutingListFinalActionTypeDisconnect = 2
tvRoutingListFinalActionTypeTransferToExtension = 3
tvRoutingListFinalActionTypePauseAndRestart = 4
tvRoutingListFinalActionTypePlayBusySignal = 5
tvRoutingListFinalActionTypeTransferToVMail = 6
tvRoutingListFinalActionTypeHangup = 7
tvRoutingListFinalActionTypeGrabAndHold = 8

APPENDIX E. CLIENT API ENUMERATIONS E-25


TELEVANTAGE DEVELOPER ’S GUIDE

TVRoutingListPlayGreetingType
tvRoutingListPlayGreetingTypeDoNotPlay = 0
tvRoutingListPlayGreetingTypeSystemHoldGreeting = 1
tvRoutingListPlayGreetingTypeCustomGreeting = 2
tvRoutingListPlayGreetingTypeSystemCampOnGreeting = 3

TVRoutingListPromptCallerType
tvRoutingListPromptCallerTypeDoNotPrompt = 0
tvRoutingListPromptCallerTypeSystemGreeting = 1
tvRoutingListPromptCallerTypeCustomGreeting = 2

TVScheduledDaysWeekday
tvScheduledDaysWeekdaySunday = 1
tvScheduledDaysWeekdayMonday = 2
tvScheduledDaysWeekdayTuesday = 3
tvScheduledDaysWeekdayWednesday = 4
tvScheduledDaysWeekdayThursday = 5
tvScheduledDaysWeekdayFriday = 6
tvScheduledDaysWeekdaySaturday = 7

TVScheduleItemFieldValidation
tvScheduleItemFieldValidationMaxType = 5

TVScheduleItemType
tvScheduleItemTypeBusinessHours = 0
tvScheduleItemTypeNonBusinessHours = 1
tvScheduleItemTypeAfterHoursWorkDays = 2
tvScheduleItemTypeNonWorkDays = 3
tvScheduleItemTypeCustomHours = 4
tvScheduleItemTypeHolidays = 5

TVSchedulesError
tvSchedulesErrorDuplicateName = 2801

TVSearchType
tvSearchDefault = 0
tvSearchID = 1
tvSearchOrdinal = 2
tvSearchKey = 3

TVServerConnectionLevel
tvServerConnectionLevelBasic = 0xffffffff
tvServerConnectionLevelFull = 0

APPENDIX E. CLIENT API ENUMERATIONS E-26


TELEVANTAGE DEVELOPER ’S GUIDE

TVServerStatus
tvServerLicenseError = 6
tvServerStarting = 2
tvServerStarted = 3
tvServerShutDownScheduled = 5
tvServerStopping = 4
tvServerStopped = 1
tvServerUnknown = 0

TVSessionStatus
tvSessionStatusLoggedOff = 0
tvSessionStatusLoggedOn = 1
tvSessionStatusLoggedOnWithoutCalls = 2

TVSessionValidateLogonResult
tvSessionValidateLogonResultSuccess = 0
tvSessionValidateLogonResultInvalidUser = 1
tvSessionValidateLogonResultInvalidPassword = 2
tvSessionValidateLogonResultInvalidStation = 3
tvSessionValidateLogonResultInvalidNoInternetService = 4
tvSessionValidateLogonResultInvalidInternetAddressPermissionDenied = 5
tvSessionValidateLogonResultInvalidNoSIPService = 6

TVShortcutError
tvShortcutErrorGroupNameRequired = 4401
tvShortcutErrorShortcutNameandFolderRequired = 4402

TVShortcutFieldValidation
tvShortcutFieldValidationMaxName = 255
tvShortcutFieldValidationMinName = 1

TVShortcutGroupFieldValidation
tvShortcutGroupFieldValidationMaxName = 255
tvShortcutGroupFieldValidationMinName = 1

TVShortcutGroupIconType
tvShortcutGroupIconTypeLarge = 0
tvShortcutGroupIconTypeSmall = 1

APPENDIX E. CLIENT API ENUMERATIONS E-27


TELEVANTAGE DEVELOPER ’S GUIDE

TVSIPAccountError
tvSIPAccountErrorNoAORUserPart = 3001
tvSIPAccountErrorNoSIPSpan = 3002
tvSIPAccountErrorNoSIPServer = 3003
tvSIPAccountErrorNoUserName = 3004

TVSIPAccountFieldValidation
tvSIPAccountFieldValidationMaxAORUserPart = 63
tvSIPAccountFieldValidationMaxDisplayName = 255
tvSIPAccountFieldValidationMaxUserName = 255
tvSIPAccountFieldValidationMaxPassword = 255

TVSIPAccountType
tvSIPAccountTypeLocal = 0
tvSIPAccountTypeExternal = 1

TVSIPServerAddressFormat
tvSIPServerAddressFormatFullyQualifiedDomainName = 0
tvSIPServerAddressFormatRegisteredAddressOfRecord = 1

TVSortOrder
tvSortToggle = 0
tvSortAscending = 1
tvSortDescending = 2

TVSpecialUsers
tvEveryOne = 0xffffffff

TVStationAnalogPhoneType
tvStationAnalogPhoneTypeStandard = 0
tvStationAnalogPhoneTypeAastra = 1
tvStationAnalogPhoneTypeCybiolink = 2
tvStationAnalogPhoneTypeVerticalAastraPowertouch = 3
tvStationAnalogPhoneTypeVerticalFanstel = 4
tvStationAnalogPhoneTypeVerticalIntelliVoice = 5

TVStationButtonFieldValidation
tvStationButtonFieldValidationMinRingDelay = 0xffffffff
tvStationButtonFieldValidationMaxRingDelay = 999

APPENDIX E. CLIENT API ENUMERATIONS E-28


TELEVANTAGE DEVELOPER ’S GUIDE

TVStationError
tvStationErrorFeatureRequired = 2501
tvStationErrorStationRequired = 2502
tvStationErrorButtonAlreadyDefined = 2503
tvStationErrorAddressRequired = 2504
tvStationErrorButtonSetAddressToNothing = 2505

TVStationExternalPhoneDestination
tvStationExternalPhoneDestinationNone = 0
tvStationExternalPhoneDestinationExternalNumber = 16
tvStationExternalPhoneDestinationGenericH323 = 17
tvStationExternalPhoneDestinationIntelPBXIPMediaGateway = 18
tvStationExternalPhoneDestinationUnidenIP = 19
tvStationExternalPhoneDestinationTeleVantageH323 = 20
tvStationExternalPhoneDestinationSIP = 24

TVStationFeatureParameterType
tvStationFeatureParameterTypeNone = 0xffffffff
tvStationFeatureParameterTypeAddress = 0
tvStationFeatureParameterTypeStationNumber = 1
tvStationFeatureParameterTypeRingDelay = 2
tvStationFeatureParameterTypePersonalStatusType = 3
tvStationFeatureParameterTypeMailbox = 4

TVStationFieldValidation
tvStationFieldValidationMaxDefaultIdleString = 16
tvStationFieldValidationMaxDirectConnectDialString = 255
tvStationFieldValidationMaxDefaultIdleString_v7 = 40
tvStationFieldValidationMinCadenceID = 1
tvStationFieldValidationMaxCadenceID = 16
tvStationFieldValidationMinDefaultVolume = 1
tvStationFieldValidationMaxDefaultVolume = 21

TVStationIdentificationOptions
tvStationIdentificationOptionsNone = 0
tvStationIdentificationOptionsUsePLARConnectionString = 1
tvStationIdentificationOptionsAutomaticallyLogon = 2
TVStationIdentificationOptionsUseIPAddress = 4

APPENDIX E. CLIENT API ENUMERATIONS E-29


TELEVANTAGE DEVELOPER ’S GUIDE

TVStationPadCharacter
tvStationPadCharacterPound = 35
tvStationPadCharacterStar = 42
tvStationPadCharacterZero = 48
tvStationPadCharacterOne = 49
tvStationPadCharacterTwo = 50
tvStationPadCharacterThree = 51
tvStationPadCharacterFour = 52
tvStationPadCharacterFive = 53
tvStationPadCharacterSix = 54
tvStationPadCharacterSeven = 55
tvStationPadCharacterEight = 56
tvStationPadCharacterNine = 57

TVStationPadExtension
tvStationPadExtensionBefore = 0
tvStationPadExtensionAfter = 1
tvStationPadExtensionDoNotPad = 2

TVStationPhoneFeatures
tvStationPhoneFeaturesNone = 0
tvStationPhoneFeaturesCID = 1
tvStationPhoneFeaturesCallWaitingCID = 2
tvStationPhoneFeaturesMessageIndicator = 4
tvStationPhoneFeaturesStutter = 8

TVStationTransferMode
tvStationTransferModeDirect = 0
tvStationTransferModeAssisted = 1

TVStationUsage
tvStationUsageOwner = 0
tvStationUsageOwnerAndForwardCalls = 1
tvStationUsageVisitor = 2

TVStoreHistoryType
tvStoreHistoryNone = 0
tvStoreHistoryExternalOnly = 1
tvStoreHistoryAll = 2

APPENDIX E. CLIENT API ENUMERATIONS E-30


TELEVANTAGE DEVELOPER ’S GUIDE

TVSystemTargetAvailability
tvSystemTargetAvailabilityAvailable = 0
tvSystemTargetAvailabilityInCall = 1
tvSystemTargetAvailabilityRinging = 2
tvSystemTargetAvailabilityWrapUp = 3

TVSystemTargetCallForwardingType
tvSystemTargetCallForwardingTypeNone = 0
tvSystemTargetCallForwardingTypeInternal = 1
tvSystemTargetCallForwardingTypeExternal = 2

TVSystemTargetError
tvSystemTargetErrorCannotDelete = 8751
tvSystemTargetErrorCannotDiscard = 8752
tvSystemTargetErrorCannotMove = 8753
tvSystemTargetErrorCannotSave = 8754

TVSystemTargetFeature
tvSystemTargetFeaturePersonalCallsCanBeMonitored = 0
tvSystemTargetFeaturePersonalCallsCanBeCoached = 1
tvSystemTargetFeaturePersonalCallsCanBeJoined = 2

TVSystemTargetType
tvSystemTargetTypeAutoAttendant = 201
tvSystemTargetTypeIVRPlugIn = 1401
tvSystemTargetTypeQueue = 901
tvSystemTargetTypeUser = 1301
tvSystemTargetTypeWorkgroup = 2101

TVUserAccountCodeBehavior
tvUserAccountCodeBehaviorNone = 0
tvUserAccountCodeBehaviorRequire = 1
tvUserAccountCodeBehaviorVerify = 2

TVUserAnnounceCallBehavior
tvUserAnnounceCallBehaviorNone = 0
tvUserAnnounceCallBehaviorCallerInternal = 1
tvUserAnnounceCallBehaviorCallerExternal = 2
tvUserAnnounceCallBehaviorCallerExternalDirect = 4
tvUserAnnounceCallBehaviorCallee = 8
tvUserAnnounceCallBehaviorTransferrer = 16

APPENDIX E. CLIENT API ENUMERATIONS E-31


TELEVANTAGE DEVELOPER ’S GUIDE

TVUserCallWaiting
tvUserCallWaitingDisabled = 0
tvUserCallWaitingEnabled = 1
tvUserCallWaitingEnabledWithoutBeep = 2

TVUserCategory
tvUserCategoryLocalUser = 0
tvUserCategoryACDUser = 1
tvUserCategoryRemoteUser = 3

TVUserDefaultContactAction
tvUserDefaultContactActionOpen = 0
tvUserDefaultContactActionCall = 1

TVUserEmptyDeletedBehavior
tvUserEmptyDeletedBehaviorNone = 0
tvUserEmptyDeletedBehaviorOnExit = 1
tvUserEmptyDeletedBehaviorInterval = 2

TVUserError
tvUserErrorInvalidDIDNumber = 2001
tvUserErrorNoLastName = 2002
tvUserErrorServerSettingsMissing = 2003
tvUserErrorDuplicateFullName = 2004
tvUserErrorNotInAddresses = 2005
tvUserErrorInvalidDefaultAddress = 2006
tvUserErrorPasswordFailNoMatch = 2009
tvUserErrorCannotDeleteSystemUser = 2012
tvUserErrorCannotRenameSystemUser = 2013
tvUserErrorPasswordInvalidCharacters = 2014
tvUserErrorNonSystemSchedule = 2015
tvUserErrorInvalidCallForwarding = 2016

TVUserExternalCallTypes
tvUserExternalCallTypesNone = 0
tvUserExternalCallTypesLocal = 1
tvUserExternalCallTypesLocalLong = 2
tvUserExternalCallTypesLocalLongIntl = 3

APPENDIX E. CLIENT API ENUMERATIONS E-32


TELEVANTAGE DEVELOPER ’S GUIDE

TVUserFieldValidation
tvUserFieldValidationMaxComment = 5000
tvUserFieldValidationMaxCompany = 50
tvUserFieldValidationMaxDIDList = 500
tvUserFieldValidationMaxExchangeMailbox = 5000
tvUserFieldValidationMinExtension = 1
tvUserFieldValidationMaxExtension = 5
tvUserFieldValidationMaxFirstName = 64
tvUserFieldValidationMaxJobTitle = 30
tvUserFieldValidationMaxLastName = 30
tvUserFieldValidationMaxPassword = 12
tvUserFieldValidationMaxExtensionEx = 10
tvUserFieldValidationMaxNTAccountName = 255
tvUserFieldValidationMinConferenceMembers = 0xffffffff
tvUserFieldValidationMinGreetingTitleSize = 1
tvUserFieldValidationMinMaxMessageDuration = 6
tvUserFieldValidationMaxMaxMessageDuration = 300
tvUserFieldValidationMinMaxMailboxSize = 0
tvUserFieldValidationMaxMaxMailboxSize = 59940
tvUserFieldValidationMaxMaxMailboxSizeEx = 0x00092784
tvUserFieldValidationMaxMaxMailboxSize_v6 = 0x039386c4

TVUserInboundCallBehavior
tvUserInboundCallBehaviorNone = 0
tvUserInboundCallBehaviorDisplayCallMonitor = 1
tvUserInboundCallBehaviorPlayCallerName = 2
tvUserInboundCallBehaviorFlashTitleBar = 4
tvUserInboundCallBehaviorPlayCalleeName = 8
tvUserInboundCallBehaviorFlashCallMonitorTab = 16

TVUserMessageOrder
tvUserMessageOrderUnheardLIFOHeardLIFO = 1
tvUserMessageOrderUnheardLIFOHeardFIFO = 2
tvUserMessageOrderUnheardFIFOHeardFIFO = 4
tvUserMessageOrderUnheardFIFOHeardLIFO = 8
tvUserMessageOrderAllFIFO = 16
tvUserMessageOrderAllLIFO = 32

TVUserNameFormat
tvUserNameFormatFirstLast = 0
tvUserNameFormatLastFirst = 1

APPENDIX E. CLIENT API ENUMERATIONS E-33


TVUserOutboundCallBehavior
tvUserOutboundCallBehaviorNone = 0
tvUserOutboundCallBehaviorDisplayMonitorOnNew = 1
tvUserOutboundCallBehaviorDisplayMonitorOnReturn = 2

TVUserPromptCallerForName
tvUserPromptCallerForNameNever = 0
tvUserPromptCallerForNameWhenNoVoiceTitle = 1
tvUserPromptCallerForNameWhenNoCallerID = 2

TVUserRemotePhoneType
tvUserRemotePhoneTypeNone = 0
tvUserRemotePhoneTypePolycomSoundPointIP = 1
tvUserRemotePhoneTypeIntelPBXIPMediaGateway = 2
tvUserRemotePhoneTypeUniden = 3

TVUserRingPattern
tvUserRingPatternTwoSecond = 1
tvUserRingPatternOneSecond = 2
tvUserRingPatternSplash1 = 3
tvUserRingPatternSplash2 = 4
tvUserRingPatternSplash3 = 5
tvUserRingPatternLongShort = 6
tvUserRingPatternShortLong = 7

TVUserSendDigitsBehavior
tvUserSendDigitsBehaviorNone = 0
tvUserSendDigitsBehaviorDID = 1
tvUserSendDigitsBehaviorExtension = 2

TVUserStrataRingPattern
tvUserStrataRingPatternLowTone = 1
tvUserStrataRingPatternMediumTone = 2
tvUserStrataRingPatternHighTone = 3
tvUserStrataRingPatternCombinedTone = 4
tvUserStrataRingPatternSingleTone = 5
TELEVANTAGE DEVELOPER ’S GUIDE

TVViewError
tvViewErrorResetNotAllowed = 9651
tvViewErrorSetCurrentToFalse = 9652
tvViewErrorSortStringInvalid = 9653
tvViewErrorFilterStringInvalid = 9654
tvViewErrorFilterValueInvalid = 9655
tvViewErrorFieldNameInvalid = 9656

TVViewFieldValidation
tvViewFieldValidationMaxFilter = 255
tvViewFieldValidationMaxSort = 255

TVWindowsFirewallScope
tvScopeManual = 3
tvScopeUnrestricted = 0
tvScopeRestrictLocalSubnet = 1
tvScopeRestrictCustom = 2

TVWorkgroupErrors
tvWorkgroupErrorMissingName = 1701
tvWorkgroupErrorInvalidRingDuration = 1702
tvWorkgroupErrorNonUniqueName = 1703

TVWorkgroupFieldValidation
tvWorkgroupFieldValidationMaxComments = 5000
tvWorkgroupFieldValidationMinName = 0
tvWorkgroupFieldValidationMaxName = 30
tvWorkgroupFieldValidationMaxDID = 500
tvWorkgroupFieldValidationMaxExtension = 4

TVWorkgroupMembersError
tvWorkgroupMembersErrorAlreadyExists = 1801
tvWorkgroupMembersErrorInvalidPerson = 1802
tvWorkgroupMembersErrorInvalidOwner = 1803

TVWorkgroupRoutingType
tvWorkgroupRoutingTypeSimultaneous = 0
tvWorkgroupRoutingTypeRoundRobin = 2
tvWorkgroupRoutingTypeSequential = 4

APPENDIX E. CLIENT API ENUMERATIONS E-35


INDEX

Symbols Device Status API. See TeleVantage Device Status API


* telephone commands (table), 6-6 Dialing service object group, 2-14

A E
about Error object, D-15
in-band signaling, 6-2
IVR Plug-in API, 4-2 F
TeleVantage Client API, 2-2 Field object, D-15
TeleVantage Device Status API, 3-2, 5-2 Fields object, D-16
TeleVantage SDK, 1-2 Folder object, D-16
TeleVantage TAPI Service Provider, 7-2
Folder object group, 2-7
Address object, D-4
folders
Addresses object, D-4 default folder structure, 2-9
Agent object, D-5 types, 2-10
Agent object group, 2-11 used in TeleVantage Client API, 2-7
Agents object, D-6 Folders object, D-17
AgentStat object, D-6
Application Programming Interface (API)
G
defined, 1-3
Greeting object, D-18
AudioClip object, D-7
Greeting object group, 2-15

C
I
Call object, D-8
IAssociate object, D-18
Call object group, 2-12
ICOMSecurity object, D-19
CallActivity object, D-11
IDialingService object, D-19
CallActivityHistory object, D-11
IItem object, D-19
CallHistory object, D-12
installing
CallHistory object group, 2-12
TeleVantage Client API, 1-3
CallRule object, D-13
TeleVantage Device Status API, 1-3
CallRule object group, 2-13 TeleVantage IVR Plug-in API, 1-3
class InternetService object, D-20
defined, 1-3
IPhoneService object, D-21
Client API. See TeleVantage Client API
Items object, D-21
Column object, D-13
IVR Plug-in API. See TeleVantage IVR Plug-in API
Columns object, D-14
IVR Plug-ins
component debugging in Visual Basic, 4-8
defined, 1-3 licensing, 4-4
Component Object Model (COM) IWindowsSecurity object, D-22
defined, 1-3
Contact object, D-14
Contact object group, 2-13
L
Locale object, D-22
LocaleCode object, D-23
D
LocaleCodes object, D-23
definitions of terms used in this manual, 1-3
LogonAddressInfo object, D-23
development tools, 1-3

INDEX I-1
M LocaleCodes, D-23
LogonAddressInfo, D-23
Message object, D-23
Message, D-23
Message object group, 2-15
Notification, D-25
Microsoft Visual Basic
NotifyScheduleItem, D-25
debugging IVR Plug-ins with, 4-8
NotifyScheduleItems, D-25
starting new TeleVantage Client API project, 2-20
Parties, D-26
module Party, D-26
defined, 1-3 PartyHistories, D-27
PartyHistory, D-27
N Permission, D-28
Notification object, D-25 Permissions, D-28
Notification object group, 2-16 PersonalStatus, D-29
PhoneGatewayService, D-30
NotifyScheduleItem object, D-25
PhoneService, D-31
NotifyScheduleItems object, D-25
QueueByPeriodStat, D-31
QueueByShiftStat, D-32
O QueueStat, D-33
Object Recipients, D-34
Address, D-4 Role, D-34
Addresses, D-4 Roles, D-35
Agent, D-5 RoutingList, D-35
Agents, D-6 RoutingListAction, D-36
AgentStat, D-6 RoutingListActions, D-36
AudioClip, D-7 RoutingListFinalAction, D-37
Call, D-8 RoutingService, D-37
CallActivity, D-11 Schedule, D-38
CallActivityHistory, D-11 ScheduledDate, D-38
CallHistory, D-12 ScheduledDates, D-38
CallRule, D-13 ScheduledDay, D-39
Column, D-13 ScheduledDays, D-39
Columns, D-14 Schedules, D-40
Contact, D-14 Session, D-40
Error, D-15 Shortcut, D-47
Field, D-15 ShortcutGroup, D-47
Fields, D-16 ShortcutGroups, D-47
Folder, D-16 Shortcuts, D-48
Folders, D-17 SIPAccount, D-49
Greeting, D-18 SIPAccounts, D-49
IAssociate, D-18 SIPPhoneGatewayService, D-50
ICOMSecurity, D-19 SIPServer, D-50
IDialingService, D-19 SIPServers, D-51
IItem, D-19 SIPService, D-51
InternetService, D-20 SIPSpan, D-52
IPhoneService, D-21 SIPSpans, D-52
Items, D-21 SIPSwitchGatewayService, D-52
IWindowsSecurity, D-22 SkillDefinition, D-53
Locale, D-22 SkillDefinitions, D-53
LocaleCode, D-23 Station, D-54

INDEX I-2
StationButton, D-55 P
StationButtons, D-55
Parties object, D-26
StationFeature, D-56
Party object, D-26
StationFeatures, D-56
PartyHistories object, D-27
StationParameter, D-56
StationParameters, D-57 PartyHistory object, D-27
StationType, D-57 Permission object, D-28
StationTypes, D-57 Permissions object, D-28
SwitchGatewayService, D-58 PersonalStatus object, D-29
SwitchService, D-58 PersonalStatus object group, 2-16
System, D-59 PhoneGatewayService object, D-30
SystemSetting, D-60 PhoneService object, D-31
SystemSettings, D-60 programming tips, 2-21
SystemTarget, D-61
User, D-62
View, D-64
Q
Views, D-65 QueueByPeriodStat object, D-31
Workgroup, D-65 QueueByShiftStat object, D-32
WorkgroupMember, D-66 QueueStat object, D-33
WorkgroupMembers, D-66
object R
defined, 1-3
Recipients object, D-34
object group diagrams
Role object, D-34
key, 2-3
Roles object, D-35
object groups
RoutingList object, D-35
Agent, 2-11
RoutingList object group, 2-17
Call, 2-12
CallHistory, 2-12 RoutingListAction object, D-36
CallRule, 2-13 RoutingListActions object, D-36
Contact, 2-13 RoutingListFinalAction object, D-37
Dialing services, 2-14 RoutingService object, D-37
Folder, 2-7
Greeting, 2-15 S
Message, 2-15
Schedule object, D-38
Notification, 2-16
Schedule object group, 2-18
RoutingList, 2-17
Schedule, 2-18 ScheduledDate object, D-38
Session, 2-4 ScheduledDates object, D-38
Station, 2-19 ScheduledDay object, D-39
StationFeature, 2-19 ScheduledDays object, D-39
System, 2-5 Schedules object, D-40
User, 2-6 Session object, D-40
Workgroup, 2-20 Session object group, 2-4
object groupsLPersonalStatus, 2-16 Shortcut object, D-47
object structures ShortcutGroup object, D-47
in TeleVantage Client API, 2-2 ShortcutGroups object, D-47
Shortcuts object, D-48
SIPAccount object, D-49

INDEX I-3
SIPAccounts object, D-49 answering an incoming call, 2-26
SIPPhoneGatewayService object, D-50 changing personal status, 2-32
SIPServer object, D-50 checking the availability of a user, 2-29
SIPServers object, D-51 checking the status of a call center agent, 2-29
SIPService object, D-51 checking the status of a user, 2-29
checking the status of an ACD workgroup agent, 2-31
SIPSpan object, D-52
creating a call to a user, 2-25
SIPSpans object, D-52
creating a call to an external number, 2-25
SIPSwitchGatewayService object, D-52
creating a contact, 2-23
SkillDefinition object, D-53 creating a queue call, 2-26
SkillDefinitions object, D-53 creating a user, 2-24
starting exporting a list of voice messages, 2-23
new project, 2-20 finding a call center agent via user and queue names, 2-29
Station object, D-54 finding a specific Call object, 2-28
Station object group, 2-19 finding out who is assigned to an extension, 2-28
StationButton object, D-55 finding out who owns a call, 2-27
StationButtons object, D-55 getting events for any item, 2-23
StationFeature object, D-56 hot desking, 2-22
StationFeature object group, 2-19 locating dialing service by its access code, 2-28
StationFeatures object, D-56 logging in and starting a new session, 2-22
logging on to a remote number, 2-22
StationParameter object, D-56
logging on to another user’s station, 2-22
StationParameters object, D-57
putting a call on hold, 2-27
StationType object, D-57
recording conversations between call center agents and
StationTypes object, D-57 external callers, 2-31
SwitchGatewayService object, D-58 retrieving a call on hold, 2-27
SwitchService object, D-58 signing a call center agent in and out, 2-30
System object, D-59 storing data with a party in a call, 2-33
System object group, 2-5 starting new project, 2-20
SystemSetting object, D-60 TeleVantage Device Status API
SystemSettings object, D-60 about, 3-2, 5-2
SystemTarget object, D-61 Device Status components, 3-2, 5-2
installing, 1-3
quick reference, 5-5
T sample project, 3-2, 5-2
telephone commands TeleVantage IVR Plug-in API
* commands (table), 6-6 about, 4-2
call handling menu commands (table), 6-3 components, B-2
quick call menu commands (table), 6-4 configuring, 4-4
quick call menu commands for call center agents (table), 6-6 installing, 1-3
Voice Mail.Account menu commands (table), 6-5 monitoring standard and custom call data, 4-3
TeleVantage quick reference, 4-9
using in-band signaling with, 6-2 using
TeleVantage Client API sample Customer ID Plug-in, 4-6
about, 2-2 Televantage SDK
installing, 1-3 about, 1-2
key to object group diagrams, 2-3 TeleVantage TAPI Service Provider
object structures, 2-2 about, 7-2
programming tips and examples, 2-21

INDEX I-4
accessing custom call data, 7-3
bearer modes supported, 7-3
call states, 7-3
capabilities, 7-2
exported TSP functions, 7-3
TAPI functions supported, 7-2
terms used in this manual, 1-3
type library
defined, 1-3

U
User object, D-62
User object group, 2-6
using in-band signaling With TeleVantage
about, 6-2

V
View object, D-64
Views object, D-65

W
Workgroup object, D-65
Workgroup object group, 2-20
WorkgroupMember object, D-66
WorkgroupMembers object, D-66

INDEX I-5

Você também pode gostar