TELEVANTAGE DEVELOPER`S GUIDE
Transcription
TELEVANTAGE DEVELOPER`S GUIDE
c TELEVANTAGE DEVELOPER ’S GUIDE TELEVANTAGE 8 COPYRIGHT © 2008 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 Dialogic 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. 1-877-VERTICAL www.vertical.com #98-0000 Edition 8 January 2008 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) Current User tvFolderCurrentUser Empty root-level folder. Only used to access a user’s 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 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. 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 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. 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 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. 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 Q StationFeature object (see page D-56). 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. CHAPTER 2. THE CLIENT API Start Visual Basic and open a new Standard EXE project. 2-20 TELEVANTAGE DEVELOPER ’S GUIDE 2. In the VB main menu, choose Project > References. In the References window, select the checkbox for TeleVantage 8.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 Dim Dim Dim Dim Dim Dim Dim oAudioClip As TeleVantage.AudioClip oFile As Object oFileSystemObject As Object oMessage As TeleVantage.Message oMessageFolder As TeleVantage.Folder oMessageView As TeleVantage.View sExportString As String 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 Dim Dim Dim Set oAddress As TeleVantage.Address oSession As TeleVantage.Session oUser As TeleVantage.User oUsersFolder As TeleVantage.Folder 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 Dim Dim Dim oAddress As TeleVantage.Address oCall As TeleVantage.Call oSystemTargetFolder As TeleVantage.Folder 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 Private Private Private WithEvents oSession As Session sCurrentCallID As String bCurrentlyInACall As Boolean 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.TVPartyStatus, 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 Debug.Print Debug.Print Debug.Print "START oSession_CallStatusChange" "Call: " & ID "Old Status: " & OldStatus "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 Dim Dim Dim Dim Dim Dim oAgentStat As TeleVantage.AgentStat oFolder As TeleVantage.Folder oTargetQueue As TeleVantage.SystemTarget oTargetUser As TeleVantage.SystemTarget eStatus As TeleVantage.TVAgentStatus sQueueID As String 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 Dim Dim Dim Dim Dim Dim oAgentStat As TeleVantage.AgentStat oFolder As TeleVantage.Folder oTargetQueue As TeleVantage.SystemTarget oTargetUser As TeleVantage.SystemTarget eStatus As TeleVantage.TVAgentStatus sQueueID As String 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 Dim Dim Dim Dim oCall As TeleVantage.Call oParty As TeleVantage.Party oCallFolder As TeleVantage.Folder sData1 As String 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 8.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 Dialogic NetMerge™ CT Application Development Environment (Dialogic NetMerge CT ADE.) As of this printing, the TeleVantage IVR Plug-in API is tested to be compatible with Dialogic 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 Dialogic’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 Dialogic’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: 7. Q Select Run > Start. Q Click Play on the toolbar. Q Press F5. 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 method 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 method Attempts to associate the Caller ID with a system target based on extension. A-6 AssociateExtensionEx method Attempts to associate the Caller ID with a system target based on 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 Attempts to associate the caller’s called ID with a personal or public contact. 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 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. The DID number of the called IVR Plug-in as defined in the Administrator. 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 method Returns all digits currently in the digit buffer, and leaves the digit buffer empty. A-21 GetCallProgress method Performs in-band call progress analysis. 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 method Returns the TDM bus transmit timeslot of the voice resource. 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 Method 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 Returns an interface to a PluginOutOfBandCallProgressEvents object for receiving out-of-band call progress events 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 8.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 property Read only. Returns a collection of Extension objects representing all extensions assigned to this device. C-3 Class property Read only. Returns the device's class (station or trunk). C-3 ConnectedDevices property Read only. Returns a collection of connected Devices if this device is in a call or conference. C-4 CurrentExtension property Read only. Returns the Extension object currently logged in to the device. C-4 DefaultExtension property Read only. Returns the Extension object that is the default for 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 property Read only. Returns a boolean value indicating whether or not 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 property Refreshes information about this extension. C-6 CallerIDNumber property Read only. Returns a boolean value indicating whether or not 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 Dialogic 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. 3 Send the caller to voice mail and monitor the message being left. Press Flash 1 to pick up the call in mid-message. 4 In call waiting situations, create a conference call with your current call and the new one. Hang up Send the caller to the next step on your routing list. Unless you have changed your routing 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. *96 Log off from remote session. Only available at a dial tone when logged in from a remote 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 2 3 41 42 43 5 6 7 8 9 # 3 Replay Next message Delete/Undelete message Reply Forward Call back Previous message Save Rewind Undelete all Fast Forward Skip message preamble; skip rest of message 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 Dialogic 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 OFFERING ACCEPTED DIALTONE DIALING RINGBACK CONNECTED BUSY ONHOLD ONHOLDPENDTRANSFER PROCEEDING DISCONNECTED UNKNOWN Exported TSP functions The following list contains all TSPI_xxx functions exposed by the TeleVantage TSP to TAPI: TSPI_lineAnswer TSPI_lineBlindTransfer TSPI_lineClose TSPI_lineCloseCall TSPI_lineCompleteTransfer TSPI_lineConditionalMediaDetection TSPI_lineDial TSPI_lineDrop TSPI_lineGetAddressCaps TSPI_lineGetAddressStatus TSPI_lineGetCallAddressID TSPI_lineGetCallInfo TSPI_lineGetCallStatus TSPI_lineGetDevCaps TSPI_lineGetID TSPI_lineGetLineDevStatus TSPI_lineGetNumAddressIDs TSPI_lineHold TSPI_lineMakeCall TSPI_lineNegotiateTSPIVersion TSPI_lineOpen TSPI_linePark TSPI_lineSetCallData TSPI_lineSetDefaultMediaDetection TSPI_lineSetStatusMessages TSPI_lineSetupTransfer TSPI_lineSwapHold TSPI_lineUnhold TSPI_lineUnpark TSPI_providerConfig TSPI_providerInit TSPI_providerInstall TSPI_providerRemove TSPI_providerShutdown TSPI_providerEnumDevices TSPI_providerGenericDialogData TSPI_providerUIIdentify TUISPI_lineConfigDialog TUISPI_providerConfig TUISPI_providerInstall 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 Q CallOffering method. Invoked when the call is offered to the Plug-in. See page A-2. 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 Inputs Private Sub PluginApplication_CallOffering(Caller as PluginCaller) Remarks Argument Description Caller A PlugInCaller object that contains the details of the party calling. See the PlugInCaller object reference for more information. 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 Inputs Private Sub PluginApplication_CallPlaced(Caller as PluginCaller, CPType CallProgress) 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 Remarks Private Sub PluginApplication_CallTerminated() 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 CallerIdNumber String Optional. The phone number of a TeleVantage contact you want to associate with. If this argument is not specified you must specify the CallerIDName argument. Default is “”. CallerIdName String Optional. The name of a TeleVantage contact you want to associate with. If this argument is not specified you must specify the CallerIDNumber argument. Default is “”. ExtensionContext String Optional. Leave blank to match against TeleVantage public contacts or specify a user’s extension number to match against the user’s TeleVantage contacts. Default is “”. Returns Associated Boolean Returns True if the method resulted in a matching contact and 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 Extension String The extension number of any system target that exists in the TeleVantage Server. Returns Associated String Returns True if the extension specified was a valid system target 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 String Optional. The Caller ID number that matches the Caller ID stored with the TeleVantage contact you want to associate with. If this argument is not specified you must specify the CallerIDName argument. Default is “”. CallerIdName String Optional. The Caller ID name that matches the Caller ID name stored with the TeleVantage contact you want to associate with. If this argument is not specified you must specify the CallerIDNumber argument. Default is “”. ExtensionContext String Optional. Leave blank to match against TeleVantage public contacts or specify a user’s extension number to match against the user’s TeleVantage contacts. Default is “”. Returns Associated Boolean Returns True if the method resulted in a matching contact and 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. CallerIdNumber 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 Extension String The extension number of any system target that exists in the TeleVantage Server. Associated String Returns True if the extension specified was a valid system target 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 Extension String The extension number of any system target that exists in the TeleVantage Server. MarkAuthenticated Boolean If set to True, the caller is marked as an "authenticated" user, which allows subsequent transfer to access voice mail/account settings without having to enter password. Returns Remarks Example Returns True if the extension specified was a valid system target and the association completed successfully. 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 PluginCaller.AssociateExtensionEx has been previously invoked with MarkAuthenticated argument set to "True", the account logon prompts will by bypassed altogether. 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 Associated APPENDIX A. IVR PLUG-IN API REFERENCE String 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 Action NextAction Specifies the next step the TeleVantage Server should take to 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 Perform Error Action specified in by the IVR Plug-In Transfer To/Hang Up settings in the TeleVantage Administrator. 4 Optional. Extension or phone number required if the Action argument is naTransferToNumber or naTransferToVoiceMail. The default is “”. Number String Type Optional. The type of address specified in the Number argument. The default is atExtension. Use atTelephone for phone numbers. AddressType See the section AddressType Enumerations for a complete list, including account login. AccessCode SubType String Optional. Only used if the Type argument is atTelephone, atExtension (for PBX/Centrex dialing services) or for atInternet. 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. Long Optional. Only used if the Type argument is atTelephone, specify astUseServiceRules if the number should be dialed using the 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 PropertyName String The name of a custom data variable that you want to remove 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 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 String Returns the name of the allocated raw voice resource, if any 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. Exists Boolean Returns True if the specified custom data property exists on the party in the call. Returns 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 Keyname String The name of a custom data variable or the name of a standard party attribute from the table below. DefaultValue String Optional. If the Keyname specified does not exist on the 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 ppAccountCode The account code associated with the party. Account code validation is ignored when writing to this property. ppCallbackNumber The party’s callback address. This is the Caller ID number for inbound 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. ppCallbackNumberType The type of the party’s callback address. See the AddressType enumeration for possible values. ppCalledDisplayName Suggested display name for the called party, a combination of FirstName and LastName. ppCalledExtension The extension of the called party. Use one of the AssociateXXX methods to change this value ppCalledFirstName The called party’s last name. ppCalledID The ID of the called party that can be passed to the client API. Use one of the AssociateXXX methods to change this value. ppCalledLastName The called party’s first name. ppCalledNumber The called party’s address. This is the Caller ID number for inbound 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 ppCalledNumberType The type of the called party’s address. See the AddressType enumeration for possible values. ppCallerIDName Caller ID name supplied by the party owner or the telephone company. ppCallerIDNumber The party’s address. This is the Caller ID number for inbound telephone 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. ppCallerIDNumberType The type of the party’s address. See the AddressType enumeration for possible values. ppDeviceNumber The device number that the party is on. Positive numbers are stations, negative numbers are trunks. ppDirection The direction of the party, either inbound or outbound. ppDisplayName Suggested display name for the party, a combination of FirstName and LastName. ppExtension The extension of the party. Use one of the AssociateXXX methods to change this value ppFirstName The party’s first name. ppHandle The handle of the party ppHandlerDisplayName Suggested display name for the of the party whom handled the call (placed by or answered by), a combination of FirstName and LastName. ppHandlerExtension The extension of the party whom handled the call (placed by or answered by). Use one of the AssociateXXX methods to change this value ppHandlerFirstName The last name of the party whom handled the call (placed by or answered by). ppHandlerID The ID of the party whom handled the call (placed by or answered by) that can be passed to the client API. Use one of the AssociateXXX methods to change this value. ppHandlerLastName The first name of the party whom handled the call (placed by or answered by). ppID The ID of the party that can be passed to the client API. Use one of the 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 non-empty path does not guarantee that the file actually exists. ppVoiceTitleFile 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 ’ or another plug-in. If the customer Dim CallersCustomerID as String CallersCustomerID = mPlugInCaller.Get mPlugInCaller.SetStatus "The Caller’s have been set by an auto attendant, queue ID is not set on the caller, use "N/A" as a default "CustomerID", "N/A" 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. DeviceName String Returns the raw voice resource device name for advanced voice processing by a 3rd party telephony toolkit. Returns Remarks Use this method if you need to use a 3rd party telephony toolkit such as Dialogic’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. Media PluginMedia Returns a PlugInMedia object for basic voice processing. Returns 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 Timeslot Long The TDM bus timeslot number you want the calling party to 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 Comments String The comments for the called IVR Plug-in as defined in the 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 DID String The DID number of the called IVR Plug-in as defined in the 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 Extension String The extension of the called IVR Plug-in as defined in the 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 Name The name of the called IVR Plug-in as defined in the Administrator. String 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 VarName The custom data variable name of the called IVR Plug-in as defined in the Administrator. String 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 Keyname String The name of a custom data variable or the name of a 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 Examples 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 ppAccountCode The account code associated with the party. Account code validation is ignored when writing to this property. ppCallbackNumber The party’s callback address. This is the Caller ID number for inbound telephone calls. CallerIDNumberType indicates if it will be a phone number, extension, or IP address. ppCallbackNumberAccessCode The access code of the Dialing Service used by the party’s callback address, if applicable. ppCallbackNumberSubType Only used if xxxNumberType is atTelephone. astUseServiceRules indicates the number was dialed using the Server’s dialing rules. astUnknown indicates the number was dialed exactly as specified in xxxNumber. ppCallbackNumberType The type of the party’s callback address. See the AddressType enumeration for possible values. ppCalledNumber The called party’s address. This is the Caller ID number for inbound telephone calls. CallerIDNumberType indicates if it will be a phone number, extension, or IP address. ppCalledNumberAccessCode The access code of the Dialing Service used by the called party’s address, if applicable. ppCalledNumberSubType Only used if xxxNumberType is atTelephone. astUseServiceRules indicates the number was dialed using the Server’s dialing rules. astUnknown indicates the number was dialed exactly as specified in xxxNumber. ppCalledNumberType The type of the called party’s address. See the AddressType enumeration for possible values. ppCallerIDName Caller ID name supplied by the party owner or the telephone company. ppCallerIDNumber The party’s address. This is the Caller ID number for inbound telephone calls. CallerIDNumberType indicates if it will be a phone number, extension, or IP address. ppCallerIDNumberAccessCode The access code of the Dialing Service used by the party’s address, if applicable. ppCallerIDNumberSubType Only used if xxxNumberType is atTelephone. astUseServiceRules indicates the number was dialed using the Server’s dialing rules. astUnknown indicates the number was dialed exactly as specified in xxxNumber. ppNotes Notes about the party. ’ 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 Status String Text to be displayed in the Device Monitor’s status column for 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. Exists Boolean Returns True if the specified custom data property exists on the party in the callee. Returns 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 Keyname String The name of a custom data variable or the name of a standard party attribute from the table below. DefaultValue String Optional. If the Keyname specified does not exist on the 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 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 ppDisplayName Suggested display name for the party, a combination of FirstName and 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 Examples ppHandlerID The ID of the IVR Plug-In. ppID The ID of the party that can be passed to the client API. Use one of the AssociateXXX methods to change this value. ppLastName The party’s last name. ppStartTime Time the IVR Plug-In entered the current call ppVoiceTitleFile Server local path and file name of the party’s recorded voice title. A non-empty path does not guarantee that the file actually exists. 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. Example1 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. 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 CallTimeOut Long Optional. Milliseconds to wait for call progress detection to complete. Default is 20,000 (20 seconds). ConnectLength Long 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 determine if you have reached an answering machine or a person, since answering machine greetings are much longer than live people. ConnectType Optional return value that returns the type of connection ConnectTypeCo detected, if a connection was made. See nstants ConnectTypeConstants enumeration for more information. Returns ActionResult ActionResult 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 See the ActionResult enumeration for a complete list of possible results for this method. 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. TermDigits String Optional. String indicating any digits that will terminate the 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 Optional. File format of the audio file. FileFormat can be any of the following. The default format is 3, or 8KHz PCM. FileFormat 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. ffWAV_PCM_11K 8 11KHz WAV PCM format. (See 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 APPENDIX A. IVR PLUG-IN API REFERENCE 5.83 3000 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 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. Returns Remarks 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 Optional. See below for the exact format required by this argument, String NumericPrecision Integer Optional. Precision on numbers to be played back. Result Returns information on how the method completed. See the ActionResult enumeration for more information. ActionResult 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 APPENDIX A. IVR PLUG-IN API REFERENCE Description 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: Format APPENDIX A. IVR PLUG-IN API REFERENCE 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.). 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. 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 Returns 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 TermDigits String Optional. Terminating digit mask. Default is “@” – all digits will terminate playback. ToneTimeOut Long Optional. The number of milliseconds before the tone times out. The default is -1 for no timeout until a digit is pressed. Result ActionResult Returns information on how the method completed. See the 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. TermDigits String Optional. Terminating digit mask. Default is “@” – all digits will terminate recording. RecordTimeOut Long Optional. Maximum number of milliseconds to record. Default is 60000 (1 minute). StartPosition Long Optional. Position in bytes within the file to start recording. Default is 0. EndPosition Long Optional returned value. Position in bytes within the file where recording stopped. ClearDigitBuffer Boolean Optional. Clear the digit buffer before playback. Default is -1, clear digit buffer. RecordBeep Boolean Optional. Specifies whether a beep will be played prior to recording. Default is -1 (True). 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. MaxSilence Long Optional. Maximum number of milliseconds of silence to record before terminating. Default is -1 or no timeout. MaxNonSilence Long Optional. Maximum number of milliseconds of non silence to record before terminating. Default is -1 or no timeout Result ActionResult Returns information on how the method completed. See the ActionResult enumeration for more information Returns 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 Rate Integer Specify a value from -10 to 10 to slow down or speed up voice 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 Volume Integer Specify a value from -10 to 10 to slow down or speed up voice 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 CallProgressState OutOfBandCall Returns the ISDN or Internet out of band call progress state as Progress describe in the enumeration below: Description Enumerations ExtraData APPENDIX A. IVR PLUG-IN API REFERENCE Integer Constant Value Description oobcpInitiated 0 Call has been initiated. oobcpProceeding 1 Call is proceeding oobcpAlerting 2 Remote party ringing oobcpConnected 3 Remote party answered oobcpDisconnected 4 Remote party didn't answer due to one of the reasons described in the ExtraData argument If the CallProgressState argument returns oobcpDisconnected, the value of ExtraData will be one of the CallDisconnectReason constants as described in enumeration below A-31 TELEVANTAGE DEVELOPER ’S GUIDE Enumerations Constant Value Description cdrUnknown 0 Unknown disconnect reason cdrBusy 1 Remote party was busy cdrDestOutOfOrder 2 Destination number was out of order cdrUnassignedNumber 3 Number is not unassigned cdrNetworkCongestion 3 Network congestion prevented the call cdrRejected 4 The call was rejected by the remote party cdrDestIncompatible 5 The designating was incompatible with the call type cdrNoAnswer 6 The remote party did not 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 Returns Name Data Type Description Reason CallDisconnect The CallDisconnectReason constants as described in Reason enumeration below Enumerations Constant Value Description cdrUnknown 0 Unknown disconnect reason cdrBusy 1 Remote party was busy cdrDestOutOfOrder 2 Destination number was out of order cdrUnassignedNumber 3 Number is not unassigned cdrNetworkCongestion 4 Network congestion prevented the call cdrRejected 5 The call was rejected by the remote party cdrDestIncompatible 6 The designating was incompatible with the call type cdrNoAnswer 7 The remote party did not 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 PluginOutOfBandCal Object lProgressEvents. APPENDIX A. IVR PLUG-IN API REFERENCE Description An object that implements the PluginOutOfBandCallProgressEvents interface 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 TimeoutInMillisecond Long s Returns Result Description The number of milliseconds to wait for audio WaitForAudioR The WaitForAudioResult constants as described in enumeration esult below Enumerations Constant Value Description 0 Timeout specified by WaitForAudioResult was exceeded while waiting for audio in the call wfarInbandCp 1 In band call progress available in the call. The Plug-In can use the PlugInMedia CallProgress method. wfarConnected 2 Remote party answered wfarDisconnected 3 Call disconnected. Plug-in application can use GetDisconnectReason() method of PluginOutOfBandCallProgress Monitor to find out the reason for failure. wfarLocalDisconnect 4 Local party terminated the call, for example the IVR Plug-in called the CallDone method wfarTimeout 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 Returns 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. 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. Remarks 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. 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 (tvCallAnnounceTypeCaller). 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 (tvCallDeclineToRoutingList). 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 (tvCallGrabAndHoldAudioTypeUserDefault). 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 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 (tvServerConnectionLevelFull). 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], [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 [CallingAsID], 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 TVSessionValidateLogonResult 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], [DatabaseInstance]) 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, [ServerConnectionLevel], [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], [DatabaseInstance]) 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, [ServerConnectionLevel], [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], [DefaultUsername], [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 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 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 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 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 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 * telephone commands (table), 6-6 Device Status API. See TeleVantage Device Status API Dialing service object group, 2-14 A E about in-band signaling, 6-2 IVR Plug-in API, 4-2 TeleVantage Client API, 2-2 TeleVantage Device Status API, 3-2, 5-2 TeleVantage SDK, 1-2 TeleVantage TAPI Service Provider, 7-2 Address object, D-4 Addresses object, D-4 Agent object, D-5 Agent object group, 2-11 Agents object, D-6 AgentStat object, D-6 Application Programming Interface (API) defined, 1-3 AudioClip object, D-7 C Call object, D-8 Call object group, 2-12 CallActivity object, D-11 CallActivityHistory object, D-11 CallHistory object, D-12 CallHistory object group, 2-12 CallRule object, D-13 CallRule object group, 2-13 class defined, 1-3 Client API. See TeleVantage Client API Column object, D-13 Columns object, D-14 component defined, 1-3 Component Object Model (COM) defined, 1-3 Contact object, D-14 Contact object group, 2-13 D definitions of terms used in this manual, 1-3 development tools, 1-3 INDEX Error object, D-15 F Field object, D-15 Fields object, D-16 Folder object, D-16 Folder object group, 2-7 folders default folder structure, 2-9 types, 2-10 used in TeleVantage Client API, 2-7 Folders object, D-17 G Greeting object, D-18 Greeting object group, 2-15 I IAssociate object, D-18 ICOMSecurity object, D-19 IDialingService object, D-19 IItem object, D-19 installing TeleVantage Client API, 1-3 TeleVantage Device Status API, 1-3 TeleVantage IVR Plug-in API, 1-3 InternetService object, D-20 IPhoneService object, D-21 Items object, D-21 IVR Plug-in API. See TeleVantage IVR Plug-in API IVR Plug-ins debugging in Visual Basic, 4-8 licensing, 4-4 IWindowsSecurity object, D-22 L Locale object, D-22 LocaleCode object, D-23 LocaleCodes object, D-23 LogonAddressInfo object, D-23 I-1 M Message object, D-23 Message object group, 2-15 Microsoft Visual Basic debugging IVR Plug-ins with, 4-8 starting new TeleVantage Client API project, 2-20 module defined, 1-3 N Notification object, D-25 Notification object group, 2-16 NotifyScheduleItem object, D-25 NotifyScheduleItems object, D-25 O Object Address, D-4 Addresses, D-4 Agent, D-5 Agents, D-6 AgentStat, D-6 AudioClip, D-7 Call, D-8 CallActivity, D-11 CallActivityHistory, D-11 CallHistory, D-12 CallRule, D-13 Column, D-13 Columns, D-14 Contact, D-14 Error, D-15 Field, D-15 Fields, D-16 Folder, D-16 Folders, D-17 Greeting, D-18 IAssociate, D-18 ICOMSecurity, D-19 IDialingService, D-19 IItem, D-19 InternetService, D-20 IPhoneService, D-21 Items, D-21 IWindowsSecurity, D-22 Locale, D-22 LocaleCode, D-23 INDEX LocaleCodes, D-23 LogonAddressInfo, D-23 Message, D-23 Notification, D-25 NotifyScheduleItem, D-25 NotifyScheduleItems, D-25 Parties, D-26 Party, D-26 PartyHistories, D-27 PartyHistory, D-27 Permission, D-28 Permissions, D-28 PersonalStatus, D-29 PhoneGatewayService, D-30 PhoneService, D-31 QueueByPeriodStat, D-31 QueueByShiftStat, D-32 QueueStat, D-33 Recipients, D-34 Role, D-34 Roles, D-35 RoutingList, D-35 RoutingListAction, D-36 RoutingListActions, D-36 RoutingListFinalAction, D-37 RoutingService, D-37 Schedule, D-38 ScheduledDate, D-38 ScheduledDates, D-38 ScheduledDay, D-39 ScheduledDays, D-39 Schedules, D-40 Session, D-40 Shortcut, D-47 ShortcutGroup, D-47 ShortcutGroups, D-47 Shortcuts, D-48 SIPAccount, D-49 SIPAccounts, D-49 SIPPhoneGatewayService, D-50 SIPServer, D-50 SIPServers, D-51 SIPService, D-51 SIPSpan, D-52 SIPSpans, D-52 SIPSwitchGatewayService, D-52 SkillDefinition, D-53 SkillDefinitions, D-53 Station, D-54 I-2 StationButton, D-55 StationButtons, D-55 StationFeature, D-56 StationFeatures, D-56 StationParameter, D-56 StationParameters, D-57 StationType, D-57 StationTypes, D-57 SwitchGatewayService, D-58 SwitchService, D-58 System, D-59 SystemSetting, D-60 SystemSettings, D-60 SystemTarget, D-61 User, D-62 View, D-64 Views, D-65 Workgroup, D-65 WorkgroupMember, D-66 WorkgroupMembers, D-66 object defined, 1-3 object group diagrams key, 2-3 object groups Agent, 2-11 Call, 2-12 CallHistory, 2-12 CallRule, 2-13 Contact, 2-13 Dialing services, 2-14 Folder, 2-7 Greeting, 2-15 Message, 2-15 Notification, 2-16 RoutingList, 2-17 Schedule, 2-18 Session, 2-4 Station, 2-19 StationFeature, 2-19 System, 2-5 User, 2-6 Workgroup, 2-20 object groupsLPersonalStatus, 2-16 object structures in TeleVantage Client API, 2-2 INDEX P 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 PersonalStatus object group, 2-16 PhoneGatewayService object, D-30 PhoneService object, D-31 programming tips, 2-21 Q QueueByPeriodStat object, D-31 QueueByShiftStat object, D-32 QueueStat object, D-33 R Recipients object, D-34 Role object, D-34 Roles object, D-35 RoutingList object, D-35 RoutingList object group, 2-17 RoutingListAction object, D-36 RoutingListActions object, D-36 RoutingListFinalAction object, D-37 RoutingService object, D-37 S Schedule object, D-38 Schedule object group, 2-18 ScheduledDate object, D-38 ScheduledDates object, D-38 ScheduledDay object, D-39 ScheduledDays object, D-39 Schedules object, D-40 Session object, D-40 Session object group, 2-4 Shortcut object, D-47 ShortcutGroup object, D-47 ShortcutGroups object, D-47 Shortcuts object, D-48 SIPAccount object, D-49 I-3 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 starting new project, 2-20 Station object, D-54 Station object group, 2-19 StationButton object, D-55 StationButtons object, D-55 StationFeature object, D-56 StationFeature object group, 2-19 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 System object, D-59 System object group, 2-5 SystemSetting object, D-60 SystemSettings object, D-60 SystemTarget object, D-61 T telephone commands * commands (table), 6-6 call handling menu commands (table), 6-3 quick call menu commands (table), 6-4 quick call menu commands for call center agents (table), 6-6 Voice Mail.Account menu commands (table), 6-5 TeleVantage using in-band signaling with, 6-2 TeleVantage Client API about, 2-2 installing, 1-3 key to object group diagrams, 2-3 object structures, 2-2 programming tips and examples, 2-21 INDEX answering an incoming call, 2-26 changing personal status, 2-32 checking the availability of a user, 2-29 checking the status of a call center agent, 2-29 checking the status of a user, 2-29 checking the status of an ACD workgroup agent, 2-31 creating a call to a user, 2-25 creating a call to an external number, 2-25 creating a contact, 2-23 creating a queue call, 2-26 creating a user, 2-24 exporting a list of voice messages, 2-23 finding a call center agent via user and queue names, 2-29 finding a specific Call object, 2-28 finding out who is assigned to an extension, 2-28 finding out who owns a call, 2-27 getting events for any item, 2-23 hot desking, 2-22 locating dialing service by its access code, 2-28 logging in and starting a new session, 2-22 logging on to a remote number, 2-22 logging on to another user’s station, 2-22 putting a call on hold, 2-27 recording conversations between call center agents and external callers, 2-31 retrieving a call on hold, 2-27 signing a call center agent in and out, 2-30 storing data with a party in a call, 2-33 starting new project, 2-20 TeleVantage Device Status API about, 3-2, 5-2 Device Status components, 3-2, 5-2 installing, 1-3 quick reference, 5-5 sample project, 3-2, 5-2 TeleVantage IVR Plug-in API about, 4-2 components, B-2 configuring, 4-4 installing, 1-3 monitoring standard and custom call data, 4-3 quick reference, 4-9 using sample Customer ID Plug-in, 4-6 Televantage SDK about, 1-2 TeleVantage TAPI Service Provider about, 7-2 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