Avaya Interaction Center, Interaction Center 6.1 Programmer's Manual

Avaya™ Interaction Center
Release 6.1 VTel Programmer Guide
585-248-220
Issue 2.1
© 2003 Avaya Inc. All Rights Reserved.
Notice
While reasonable efforts were made to ensure that the information in this document was complete and accurate at the time of printing, Avaya Inc. can assume no liability for any errors. Changes and corrections to the information in this document may be incorporated in future releases.
Preventing toll fraud
"Toll fraud" is the unauthorized use of your telecommunications system by an unauthorized party (for example, anyone who is not a corporate employee, agent, subcontractor, or person working on your company's behalf). Be aware that there may be a risk of toll fraud associated with your system and that, if toll fraud occurs, it can result in substantial additional charges for your telecommunications services.
Avaya fraud intervention
If you suspect that you are being victimized by toll fraud and you need technical assistance or support, call Technical Service Center Toll Fraud Intervention Hotline at +1-800-643-2353 for the United States and Canada. For additional support telephone numbers, see the Avaya Web site:
http://www.avaya.com
Select Support, then select Escalation Lists. This Web site includes telephone numbers for escalation within the United States. For escalation telephone numbers outside the United States, select Global Escalation
List.
Providing telecommunications security
Telecommunications security (of voice, data, and video communications) is the prevention of any type of intrusion to (that is, either unauthorized or malicious access to or use of) your company's telecommunications equipment by some party.
Your company's "telecommunications equipment" includes both this Avaya product and any other voice/data/video equipment that could be accessed via this Avaya product (that is, "networked equipment").
An "outside party" is anyone who is not a corporate employee, agent, subcontractor, or person working on your company's behalf. Whereas, a "malicious party" is anyone (including someone who may be otherwise authorized) who accesses your telecommunications equipment with either malicious or mischievous intent.
Such intrusions may be either to/through synchronous (time-multiplexed and/or circuit-based) or asynchronous (character-, message-, or packet-based) equipment or interfaces for reasons of:
Use (of capabilities special to the accessed equipment)
Theft (such as, of intellectual property, financial assets, or toll-facility access)
Eavesdropping (privacy invasions to humans)
Mischief (troubling, but apparently innocuous, tampering)
Harm (such as harmful tampering, data loss or alteration, regardless of motive or intent)
Be aware that there may be a risk of unauthorized intrusions associated with your system and/or its networked equipment. Also realize that, if such an intrusion should occur, it could result in a variety of losses to your company (including, but not limited to, human and data privacy, intellectual property, material assets, financial resources, labor costs, and legal costs).
Your responsibility for your company's telecommunications security
The final responsibility for securing both this system and its networked equipment rests with you, an Avaya customer's system administrator, your telecommunications peers, and your managers. Base the fulfillment of your responsibility on acquired knowledge and resources from a variety of sources, including, but not limited to:
Installation documents
System administration documents
Security documents
Hardware-/software-based security tools
Shared information between you and your peers
Telecommunications security experts
To prevent intrusions to your telecommunications equipment, you and your peers should carefully program and configure:
Your Avaya-provided telecommunications systems and their interfaces
Your Avaya-provided software applications, as well as their underlying hardware/software platforms and interfaces
Any other equipment networked to your Avaya products.
Warra nty
Avaya Inc. provides a limited warranty on this product. Refer to your sales agreement to establish the terms of the limited warranty. In addition, Avaya’s standard warranty language, as well as information regarding support for this product, while under warranty, is available through the following Web site:
http://www.avaya.com/support
Link disclaimer
Avaya Inc. is not responsible for the contents or reliability of any linked Web sites and does not necessarily endorse the products, services, or information described or offered within them. We cannot guarantee that these links will work all of the time and we have no control over the availability of the linked pages.
Trademarks
®
All trademarks identified by the trademarks, respectively, of Avaya Inc. All other trademarks are the property of their respective owners.
Avaya, CONVERSANT, CustomerQ, DEFINITY, DefinityOne, MultiVantage, Nabnasset, Quintus, and WebQ are registered trademarks or trademarks of Avaya Inc. in the United States or other countries or both.
or ™ are registered trademarks or
Ordering information: Avaya Publications Center Voi ce: +1-207-866-6701
Fax: +1-207-626-7269
Write: Globalware Solutions
Web: http://www.avayadocs.com E-mail: totalware@gwsmail.com
1-800-457-1764 (Toll-free, U.S. and Canada only)
1-800-457-1764 (Toll-free, U.S. and Canada only)
200 Ward Hill Avenue Haverhill, MA 01835 USA Attention: Avaya Account Manager
Order: Document No. 585-248-220, Issue 2.1
August 2003
Avaya support
Avaya provides a telephone number for you to use to report problems or to ask questions about your contact center. The support telephone number is 1-800-242-2121 in the United States. For additional support telephone numbers, see the Avaya Web site:
http://www.avaya.com
Select Support, then select Escalation Lists. This Web site includes telephone numbers for escalation within the United States. For escalation telephone numbers outside the United States, select Global Escalation
List.
Avaya Training
Avaya provides training for Avaya Operational Analyst. For more information, contact Avaya University at:
Web site: http://www.avaya-learning.com/logon_form.asp E-mail address: avaya.u.helpdesk@accenture.com US telephone: 1-800-288-5327 Outside US telephone: +1-303-406-6089
Comments
To comment on this document, send e-mail to crminfodev@avaya.com
Acknowledgment
This document was written by the CRM Information Development group.
.
Avaya™ Interaction Center
Release 6.1
VTel Programmer Guide
Contents
Before You Begin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Chapter 1: Definition of terms and concepts . . . . . . . . . . . . . . . . . . . . . . 13
What is VTel? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Phones, calls, and switches. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Agent IDs and Telephony Login IDs . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
The Agent ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
The Telephony Login ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Call routing and queues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Phone states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Phone states after hang up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Preset style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Immediate style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Auto-In and Manual-In modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Contents
Chapter 2: Communicating with other applications. . . . . . . . . . . . . . . . . . . 21
Using DDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
DDE requests and event messages . . . . . . . . . . . . . . . . . . . . . . . . . . 22
DDE in C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
DDE in C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
DDE in Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Starting VTel from other applications. . . . . . . . . . . . . . . . . . . . . . . . . . . 24
The asynchronous nature of the system . . . . . . . . . . . . . . . . . . . . . . . . . 25
Race conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Requests and errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Using the Ping() method to test the connection. . . . . . . . . . . . . . . . . . . . . . 28
Multiple concurrent telephone calls . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Socket usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Chapter 3: Initiating access to VTel . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Installing and running VTel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Dynamic IP addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Configuring VTel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Using Assign to connect to VTel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Logging in - access to Telephony resources . . . . . . . . . . . . . . . . . . . . . . . 35
Issue 2.1 August 2003 3
Contents
Logging out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Exiting VTel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Chapter 4: Message syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
DDE message syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Command name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Null Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Syntax examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Responses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Problem levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Communications path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Faulty request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Server not found . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Method not found. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Method-specific problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Return code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Request IDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Event messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Event ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Event type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Event name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
seqCouple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Syntax example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Chapter 5: Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Telephone switch dependency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Pass-through requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Queuing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
DDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Initiating calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Terminating calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Querying and setting EDU values . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Getting one value from the EDU. . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Getting multiple values from the EDU . . . . . . . . . . . . . . . . . . . . . . . . 46
Setting EDU values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Terminating an EDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
VTel command summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Interface Description Language (IDL) specification . . . . . . . . . . . . . . . . . . . . 50
VTel methods (requests from other applications) . . . . . . . . . . . . . . . . . . . . . 52
Answer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Assign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Busy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
BusyOverride . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4 VTel Programmer Guide
BusyPhoneset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
ChangePassword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
ConferenceCancel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
ConferenceComplete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
ConferenceInit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Deassign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Drop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Exit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
GetActive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
GetInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
GetPhoneInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
GuiCallHistory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
GuiLogin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Hangup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Hold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
HoldReconnect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
LogEntry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
LoginACD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
LoginTelephony . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
LoginVESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Logout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
LogoutTelephony . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
LogoutVESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
MakeCall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Ready . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
ReadyOverride . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
ReadyPhoneset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
ResetPhones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
RestartServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
SwapHeld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Te rm i na t e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
TransferCancel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
TransferComplete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
TransferInit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
VDUCreate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
VDUFindVDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
VDUGetActive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
VDUGetData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
VDUGetOneValue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
VDUGetValues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
VDUSetCurrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
VDUSetValues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
WrapUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
WrapUpOverride . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
get_timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
set_timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Contents
Issue 2.1 August 2003 5
Contents
Chapter 6: Event notification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Summary of events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Event messages to other applications . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Announcement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Busy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
BusyOutbound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
BusyPreset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Conference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
ConferenceCancel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
ConferenceComplete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
ConferenceInit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Disconnect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Drop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
InCall. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
IncomingCall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
LoginTelephony . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Logout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
LogoutTelephony . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
LogoutVESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
MakeCall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
OnHold. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Ready . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
ReadyPreset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Output Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
ResetPhones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Output Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
RingOutbound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
ServerFailed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
ServerRestart. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
TerminateConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
TransferCancel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
TransferComplete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
TransferInit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
VDUChange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
VDUCurrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
VDUTerminated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
WrapUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
WrapUpPreset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Chapter 7: Server failure processing. . . . . . . . . . . . . . . . . . . . . . . . . . . 101
The configuration file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6 VTel Programmer Guide
ServerFailReconnectLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
ServerFailRetryWaitTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
ServerFailPrompt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Resynchronizing with the phone. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Appendix A: The vtel.ini configuration file. . . . . . . . . . . . . . . . . . . . . . . . 105
Annotated vtel.ini file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Appendix B: VTel errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Reading a VTel error message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Alphabetical list of VTel errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Appendix C: VTel code tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
VTel WrapUp codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
WrapUp code storage in VDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Current scheme for WrapUp code storage in VDU . . . . . . . . . . . . . . . . . . . 129
Legacy scheme for WrapUp code storage in VDU. . . . . . . . . . . . . . . . . . . . 130
VTel DEFINITY reason codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Contents
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Issue 2.1 August 2003 7
Contents
8 VTel Programmer Guide
Before You Begin
Typographical Conventions
This guide uses the following font conventions:
Font Type Meaning
command This font signifies commands, information that you enter into the
computer, or information contained in a file on your computer.
commandvariable This font indicates variables in a command string.
italics This font is used to add emphasis to important words and for
references to other chapter names and manual titles.
Blue underlined text in online documents indicates a hypertext
link
jump to related information. To view the related material, click the blue underlined text.
Notes, Tips, and Cautions
Note:
Note: A note calls attention to important information.
!
!
Important:
Important:
Important: An important note calls attention to a situation that has the potential to cause
serious inconvenience or other similar repercussions.
Tip:
Tip: A tip offers additional how-to advice.
!
CAUTION:
CAUTION: A caution points out actions that may lead to data loss or other serious
problems.
Issue 2.1 August 2003 9
Before You Begin
Contacting Technical Support
If you are having trouble using Avaya software, you should:
1. Retry the action. Carefully follow the instructions in written or online documentation.
2. Check the documentation that came with your hardware for maintenance or hardware-related issues.
3. Note the sequence of events that led to the problem and the exact messages displayed. Have the Avaya documentation available.
4. If you continue to have a problem, contact Avaya Technical Support by:
Logging in to the Avaya Technical Support Web site
http://www.avaya.com/support/qq
Calling or faxing one of the following numbers from 8:30 a.m. to 8:30 p.m. (Eastern
Standard Time), Monday through Friday (excluding holidays):
- Toll free in the U.S. and Canada: 1-888-TECH-SPT (1-888-832-4778)
- Direct line for international and domestic calls: 1-512-425-2201
- Direct line for faxes: 1-512-997-4330
Sending email with your question or problem to crmsupport@avaya.com. You may
be asked to email one or more files to Technical Support for analysis of your application and its environment.
Note:
Note: If you have difficulty reaching Avaya Technical Support through the above
URL or email address, please go to http://www.avaya.com information.
Product Documentation
Most Avaya product documentation is available in both printed and online form. However, some reference material is available only online, and certain information is available only in printed form. A PDF document with detailed information about all of the documentation for the Avaya Interaction Center is included in the Doc directory on the product CD-ROM. This PDF document is also included on the separate documentation CD-ROM.
Readme File
for further
The Readme file is a PDF file included on the Avaya Interaction Center software CD-ROM. This file contains important information that was collected too late for inclusion in the printed documentation. The Readme file can include installation instructions, system
10 VTel Programmer Guide
requirements, information on new product features and enhancements, suggested work-arounds to known problems, and other information critical to successfully installing and using your Avaya software. Avaya may also deliver an Addendum to the Readme, which will be posted on the Avaya Technical Support Website. The Readme Addendum will contain similar information uncovered after the manufacture of the product CD-ROM. Review the Readme file and the Readme Addendum before you install your new Avaya software.
Electronic Documentation
The electronic documentation (in PDF or HTML format) for each Avaya Interaction Center product is installed automatically with the program. Electronic documentation for the entire Avaya product suite is included on the product CD-ROM and the documentation CD-ROM.
You can also view the documentation set online at http://www.avayadocs.com
Printed Documentation
You can purchase printed copies of these manuals separately. For details, see Ordering
information: Avaya Publications Center on the back of this manual’s title page.
License to Print the Electronic Documentation
Online copies of documentation are included on the CD-ROM that accompanies every software release. An Avaya customer who has licensed software (a “Licensee”) is entitled to make this online documentation available on an internal network or “intranet” solely for the Licensee's use for internal business purposes. Licensees are granted the right to print the documentation corresponding to the software they have purchased solely for such purposes.
Right-To-Print License Terms
Documents must be printed “as-is” from the provided online versions. Making changes to documents is not permitted. Documents may be printed only by any employee or contractor of Licensee that has been given access to the online documentation versions solely for Licensee's internal business purposes and subject to all applicable license agreements with Avaya. Both online and printed versions of the documents may not be distributed outside of Licensee enterprise or used as part of commercial time-sharing, rental, outsourcing, or service bureau use, or to train persons other than Licensee's employees and contractors for Licensee's internal business purposes, unless previously agreed to in writing by Avaya. If Licensee reproduces copies of printed documents for Licensee's internal business purposes, then these copies should be marked “For internal use only within <Licensee> only.” on the first page or cover (where <Licensee> is the name of Licensee). Licensee must fully and faithfully reproduce any proprietary notices contained
.
Issue 2.1 August 2003 11
Before You Begin
in the documentation. The copyrights to all documentation provided by Avaya are owned by Avaya and its licensors. By printing any copy of online documentation Licensee indicates its acceptance of these terms and conditions. This license only governs terms and conditions of printing online documentation. Please reference the appropriate license agreement for terms and conditions applicable to any other use, reproduction, modification, distribution or display of Avaya software and documentation.
Educational Services
Avaya University provides excellent training courses on a variety of topics. For the latest course descriptions, schedules, and online registration, you can get in touch with us:
Through the web at http://www.avaya-learning.com/logon_form.asp
Over the telephone at 800-288-5327 (within the U.S.) +001 303-406-6089 (outside of
the U.S.)
Through email at Avaya.U.Helpdesk@accenture.com
12 VTel Programmer Guide
What is VTel?
Chapter 1: Definition of terms and concepts
This section defines some of the terms used in this manual and describes concepts involved in telephony call management. This information is general in nature; refer to your telephone switch documentation to determine which items apply to your system.
This section includes the following topics:
What is VTel? on page 13
Phones, calls, and switches on page 14
Agent IDs and Telephony Login IDs on page 15
Call routing and queues on page 16
Phone states on page 17
Phone states after hang up on page 18
What is VTel?
VTel (Virtual Telephone) is a client application that provides a means of performing standard telephony functions such as answering calls, handling conference calls, and transferring calls. VTel is part of Avaya Computer Telephony for IC. VTel consists of:
the basic VTel engine. The VTel engine has an API of methods that can be used by
developers creating their own user interface for call management, or to access VTel or Telephony Server resources directly. This manual contains a description of the VTel engine methods and events.
the VTel graphical user interface (GUI). The VTel GUI is described in VTel User's Guide.
the VTel OLE automation server. The VTel OLE automation server is described in VTel
Automation Server Programmer's Guide.
the VTel utility programs, including VTelX, Simulator and Event Simulator. The utility
programs are described in VTel Utility Programs Guide
.
Issue 2.1 August 2003 13
Definition of terms and concepts
Phones, calls, and switches
The terms call, call type, phone, line appearance, and switch, as used in this manual, are defined in the following table.
Term Definition
Call An active connection between two or more parties that
allows transmission of speech
Call type One of two different types of calls:
direct calls, which are calls placed to a specific
equipment phone number
ACD calls, which are calls placed to a phone number
controlled by an Automatic Call Distribution (ACD) system.
Phone A phone number that can accept or make calls and has
at least one line appearance available. There are two types of phones discussed in this manual:
simple phones, which can only accept direct calls
ACD phones, which can accept both direct calls and
ACD calls.
Line appearance The number of simultaneous calls possible on a phone.
Available line appearances for a phone can be inbound or outbound, internal or external, and can have mixed limits for different call types.
Switch A telephone switching system, such as a Private Branch
Exchange (PBX) or an ACD system.The term ACD is often used in this manual to refer to any switch or system, such as the Expert Agent Selection (EAS) on the Avaya DEFINITY switch, capable of routing calls through a queue.
14 VTel Programmer Guide
Agent IDs and Telephony Login IDs
Call center agents can identify themselves to the system in two ways: with an Agent ID or with a Telephony Login ID.
The Agent ID
An Agent ID is used with ACD phones. Agents log into the phone system using Agent IDs and assign IDs to the phoneset currently used by the agent. The switch automatically routes calls for that Agent ID to that phone set.
The login procedure varies for each system. For example, using the Aspect switch, agents must physically log into the phoneset. From Avaya Computer Telephony for IC, agents can then be called through their Telephony IDs, Agent IDs, or the queue. With the DEFINITY switch, agents can log in physically or through Avaya Computer Telephony for IC. Agents then be called through Telephony IDs, Agent IDs, the queue, or the equipment number of the phone set.
Agent IDs and Telephony Login IDs
The Telephony Login ID
In the Telephony system, agents log in using a Telephony Login ID. For a simple phone, Avaya Computer Telephony for IC maps this Login ID to the physical phoneset. There is no switch involvement with the login of a simple phone. For an ACD phone, Avaya Computer Telephony for IC maps this Login ID to an Agent ID.
With some phone systems, IC Manager can be used to establish default assignments in the Directory Server, so that only the Telephony Login ID (and password) is needed. These assignments can be overridden during a VTel Login.
Issue 2.1 August 2003 15
Definition of terms and concepts
Call routing and queues
Calls can be routed:
directly to a phone when the specific phone number assigned to the physical phone set
is called (a direct call).
using a logical phone number which is mapped to the physical one by an external
resource (also considered a direct call).
indirectly through a call queue (a queued call).
A queue is a means of routing calls to any one of a number of agents qualified to handle the call. Each queue is often oriented toward a specific product, service, or particular skill set. In some systems, each time agents log into the system, the skills associated with each Agent ID are used to place the agents in a queue. In other systems, agents must directly specify the queue. Depending on the telephone switch used, agents can be in several queues at once, or can be changed to other queues by a supervisor to meet changing needs during the day.
All ACD calls are handled through a queue. When an ACD call is transferred directly to another agent (not another queue), it generally becomes a direct call.
16 VTel Programmer Guide
Phone states
Some telephone switches support a variety of states for ACD phones, inclluding Ready, Busy, and WrapUp, and can provide statistics on the time spent in each state. Other switches cannot support these states, or the rules may vary.
Phone states
The VTel configuration file (see Configuring VTel
on page 33) accommodates and supports the variation among switches. Each installation will require its own description of possible phone states and transitions between them.
Note:
Note: The terms used to describe phone states vary from call center to call center.
For example, Ready may be known as Available, Busy as Auxiliary Work or Idle, and WrapUp as After Call Work.
An ACD phone can be in one of three states:
the Ready state, which makes the phone available to receive another call
the Busy state, which prevents the queue from sending a new ACD call, but will
generally allow new direct calls if additional inbound line appearances are available
the WrapUp state, which follows completion of a call (on hook, hangup) and where the
agent is still processing information related to that call or customer
When the phone is in WrapUp state, it is usually implicitly busy and will not accept another ACD call, but will accept direct calls if additional inbound line appearances are available. For direct calls, it is possible to set some phone switches into WrapUp mode, but this is not generally available.
While a direct call is active, you generally cannot make the phone Ready for another ACD call. Although VTel may remain in the Ready state, the switch will prevent the queue from dispatching another call until the phone is idle.
Issue 2.1 August 2003 17
Definition of terms and concepts
Phone states after hang up
VTel allows agents to override the predetermined default state to which an ACD phone will be set after a call is hung up. There are two styles of changing this default phone state: preset style and immediate style.
The PresetState variable in the VTel configuration file (vtel.ini) determines whether the phone state can be changed in the preset style (PresetState=true) or in the immediate style (PresetState=false).
Preset style
Upon receipt of a call, the default preset state is indicated as part of the VTel GUI's description of the line appearance. This state will occur by default after hang up.
To override this default, the agent clicks the Ready, WrapUp, or Busy button during the course of the call. After this selection, the call continues uninterrupted. However, when the customer hangs up, or the agent clicks the Hang up button, the phone goes to the state selected during the course of the call.
Immediate style
Upon receipt of a call, no default hangup state is indicated as part of the VTel GUI's description of the line appearance.
To override the after-hangup default state, the agent clicks the Ready, WrapUp, or Busy button when the agent wishes to hang up. VTel issues a Hangup and the phone goes immediately to the selected state. The disadvantage of this style is that if the customer hangs up first (or if the agent clicks the Hang up button), the agent can only go to the default state.
!
!
Important:
Important:
Important: For switches that allow presets, the telephone switch should be set for
WrapUp after Hangup (or Busy, if WrapUp is not available on the switch). This allows VTel to determine the subsequent phone state.
If the telephone switch were set for a Ready state after a hangup sequence (AutoReady), VTel would not be able to override this without allowing a small window of time during which another call can be sent from the phone queue to the agent. Further, in such a case it may not be possible to return from the Ready state to the WrapUp state in the phone switch.
18 VTel Programmer Guide
By using the VTel configuration file to control the preset option, it can easily be changed at any time and the option selected can vary for each agent.
Note:
Note: The configuration file is read when the VTel Login window opens. If a
parameter is changed, the agent must exit and reenter VTel before the new configuration becomes effective.
Auto-In and Manual-In modes
The DEFINITY switch allows an agent's profile to be set to either Auto-In mode or Manual­In mode (on disconnecting from a call, the agent must manually make the phone available). In Auto-In mode, the agent’s phone is automatically made available (that is, put in the Ready state) to take the next ACD call on disconnectiong from a call. In Manual-in mode, the agent must manually make the phone available.
Agents can override their profile settings for their current sessions by using the physical phoneset. The VTel softphone does not allow overriding in this manner.
Phone states after hang up
If an agent is configured for Auto-In, VTel cannot control the agent's availability.
If an agent is configured for Manual-In (either because the agent’s profile is set to Manual­In, or because the agent altered the setting for the current session), VTel can control the agent's availability. This control from VTel provides more flexibility than that provided by the switch's Auto-In mode.
To be in Manual-In mode, the Auto-Available Split (AAS) field in both the Hunt Group and the Agent LoginID (EAS only) should be set to N. To enable Auto-In mode, the AutoIn and PhonePresetAcd file options in the vtel.ini file must be set to Y.
!
CAUTION:
CAUTION: In order to avoid conflicts, all clients within the Avaya Interaction Center
environment must share the same settings.
When Auto-In is enabled, VTel issues preset states (TS.ReadyAuto(), TS.Busy(), or TS.Wrapup()) to the Telephony Server immediately, instead of after a call is completed. When calls are completed, no requests are made to the Telephony Server.
Note:
Note: VTel will not send requests to the Telephony Server if the agent is in an
active call and Auto-In is not enabled.
Issue 2.1 August 2003 19
Definition of terms and concepts
20 VTel Programmer Guide
Chapter 2: Communicating with other
applications
This section describes the communication path between VTel and other applications. This section contains the following topics:
Using DDE on page 22
Starting VTel from other applications on page 24
The asynchronous nature of the system on page 25
Race conditions on page 26
Requests and errors on page 27
Using the Ping() method to test the connection on page 28
Multiple concurrent telephone calls on page 29
Socket usage on page 30
Issue 2.1 August 2003 21
Communicating with other applications
Using DDE
Three types of messages are sent between VTel and applications:
requests., which perform an action or get information
responses, which are always sent to the requester
events, which are sent to all applications connected to VTel whenever there is a
significant change within VTel.
Your application is also required to process and respond to certain VTel requests.
This bi-directional communication is accomplished through use of Dynamic Data Exchange (DDE). The communication techniques, syntax, and command set are designed to be extensible to other communication methods.
DDE requests and event messages
When using DDE, requests to VTel are made by sending DDE Execute commands, as in the Visual Basic LinkExecute method, and responses and event messages are sent from VTel using DDE. An external application may send a DDE Execute command to VTel requesting that VTel perform a specific function. VTel will respond by sending back another DDE Execute command. To function in both directions, both the external application and VTel must function as both DDE servers and DDE clients.
To support this bi-directional communication, the first message from an application must always be an Assign() request, which establishes the return link to the other application for sending all responses and events.
Note: Before most work can be performed, there must also be a Login request.
This section discusses some programming language-specific issues.
DDE in C
C uses the Microsoft DDEML library of functions, which is documented with the Microsoft SDK library. This is preferred over the older Microsoft DDE library.
DDE in C++
Note:
While C++ uses the Microsoft DDEML library for basic operations, several class libraries are available to ease the development effort.
22 VTel Programmer Guide
DDE in Visual Basic
The necessary commands, such as the LinkExecute method, are built into the Visual Basic Language.
Because of the design of Microsoft Visual Basic, a program may not send a DDE command while simultaneously processing another DDE command. This limitation can generally be avoided by using a timer-driven queue to send the responses to DDE commands. for additional information on the asynchronous nature of the system and its affect on application design. please see The asynchronous nature of the system page 25.
Using DDE
on
Issue 2.1 August 2003 23
Communicating with other applications
Starting VTel from other applications
VTel is designed to be started from other applications under Microsoft Windows, Windows 95, Microsoft NT, or OS/2. For example, the following could be used for a Visual Basic application:
x = Shell("VTel",6) ’VTel started minimized, without focus’
Because the Shell function is asynchronous, the application starting VTel must wait a short interval and verify that VTel is successfully started before attempting to communicate with VTel. The method depends on the communication medium selected.
For more information on using VTel as an OLE automation server, see VTel Automation
Server Programmer's Guide.
24 VTel Programmer Guide
The asynchronous nature of the system
The asynchronous nature of the system
The asynchronous design of Avaya Computer Telephony for IC presents situations that must be anticipated by connected applications.
While some requests are processed locally, others may involve distributed components of the Telephony system. These distributed components may be connected through a LAN or a WAN. Some requests may wait for another user’s response or for communication delays in a phone system.
All applications that process events must be designed to manage these situations. For example, VDUChange events may be reported from various sources at various times in any order.
In general, applications should not make a request and postpone all other operations until the response to that request is received. For example, if Logout and Exit commands arrive at VTel just before a MakeCall request, the application may never receive a response, since VTel will no longer be available.
Designing for asynchronous processes is more difficult than designing for synchronous processes, and requires careful attention during the initial application design.Most applications are generally more complex than originally envisioned.
When programming asynchronous processes, you may want to:
establish queues for both requests and events
affix a unique identifier to each request to allow its response to be easily distinguished
from others
use time outs to allow your application to recover from problems elsewhere
Issue 2.1 August 2003 25
Communicating with other applications
Race conditions
Because telephone functions occur in real time, most operations are subject to race conditions.
A race condition exists when two competing events "race" and the result is determined by which comes in first. In such a situation an external event may occur that temporarily invalidates an application’s state information. For example, at any time during a telephone call the caller may hang up, the agent may perform functions on the telephone set, or the agent may perform functions using VTel that cause a state change.
Applications interacting with VTel should never assume that any state information that they hold about a call remains valid. The state information received from event messages is accurate at that time, but may change before an application can act on it. A request to release a call, place a call on hold, or transfer a call may fail because the call has already been disconnected. In this case the failure is not a hard error, but is due to a temporary loss of synchronization.
26 VTel Programmer Guide
Requests and errors
Because of the real time behavior described above, certain requests may return a normal response even if the request is not successful. In these cases you must rely on the events returned to determine if the request was ultimately successful.
In general, those requests that immediately return specific information can be relied upon as being correct at that point in time. For example, a MakeCall() request returns the EDU ID of the outbound call that was created. Once you have this EDU ID you know that an outbound call was created successfully.
Requests that perform an action without returning information must be judged in terms of the events that follow. For example, if there is an incoming call and you submit an Answer() to respond, one of these scenarios may result:
the Answer() request may succeed and the agent will receive a
TS.IncomingCall.event.
the Answer() request may fail because the call has ended before the request reaches
the telephone switch and the EDU ID no longer exists. You may not know that the Answer() request did not succeed until some later time.
Requests and errors
the Answer() request may succeed at the telephone switch, but the call ends before
the TS.IncomingCall.event can be sent, resulting in the EDU ID being invalidated.
Various other race conditions may occur at the Telephony Server or EDU Server to
prevent the TS.IncomingCall.event from being issued.
The Answer() request waits in the queue for preceding requests to be issued, and the
state changes during this time period.
In all cases, the only real guarantee is receiving the TS.IncomingCall.event. Since a normal response to an Answer() request cannot guarantee that it actually succeeded, errors are only returned for syntactical problems with the request, or if Telephony returns an error. If the call no longer exists at the point that VTel processes the request, it is ignored.
Note:
Note: VTel does not return an error when an answer or hangup fails, because the
information may not be correct or useful.
Issue 2.1 August 2003 27
Communicating with other applications
Using the Ping() method to test the connection
The Ping() method simply echoes a response. This is especially useful during early development for testing the communication path to VTel. Since this is a non-destructive internal command, you do not need a valid login. However, since Contact Engine servers also respond to this command, a valid login allows you to quickly test communication to both VTel and major Contact Engine servers. For more information about pass-through requests, see Pass-through requests
During later use, an external application can occasionally use the Ping() method to validate the connection during periods of low activity, as shown in this example:
[VTel.Ping()][45] [VTel.Ping.response(,)][45]
on page 44.
28 VTel Programmer Guide
Multiple concurrent telephone calls
VTel allows an agent to handle multiple telephone calls concurrently, subject to the limitations of the telephone switch. Generally, an agent handles only one telephone call at a time. In some cases, however, it is useful to have more than one call open in VTel:
an agent with multiple line appearances places one call on hold while placing another
call for consultation
an agent with multiple line appearances places one call on hold while answering
another direct call
an agent continues wrap-up activities after disconnecting a call and another direct call
comes in
An external application must be able to handle multiple simultaneous calls from Avaya Computer Telephony for IC. The EDU ID uniquely identifies each call and is used to associate messages with the correct call.
Multiple concurrent telephone calls
Issue 2.1 August 2003 29
Communicating with other applications
Socket usage
Generally, VTel uses three (3) TCP sockets, one each for:
the Telephony Server
the EDU Server
a default Telephony session.
If an agent has more than one phone number, one (1) additional socket is required for each additional phone number. Socket connections for additional sessions are created and destroyed as needed.
30 VTel Programmer Guide
Chapter 3: Initiating access to VTel
This section describes a typical sequence of events that occur when connecting to VTel from an external application. This section includes the following topics:
Installing and running VTel on page 32
Configuring VTel on page 33
Using Assign to connect to VTel on page 34
Logging in - access to Telephony resources on page 35
Logging out on page 36
Exiting VTel on page 36
For additional information on connecting to VTel from external applications, see Starting
VTel from other applications on page 24.
Issue 2.1 August 2003 31
Initiating access to VTel
Installing and running VTel
The VTel.exe file is installed automatically with Avaya Interaction Center.
!
!
Important:
Important:
Important: With Interaction Center releases 6.0 and higher, VTel does not function out-
of-the-box. If you need to enable VTel, please contact Technical Support for assistance. For contact information, see Contacting Technical Support page 10.
Dynamic IP addressing
The Toolkit 2.2.5 and higher supports dynamic IP address identification. VTel 2.2.5 and higher are affected by this functionality.
If a machine on which VTel is installed is using DNS, DNS must be configured properly on that machine or VTel may hang on login.
on
Additionally, in order for VTel to determine the IP address of the machine on which it is installed, your local host file or network DNS server must contain one of two aliases:
vesprip1
vesprip2.
This alias must identify the IP address of a machine that has the TCP "Echo Service" configured and running.
32 VTel Programmer Guide
Configuring VTel
Much of the appearance and behavior of VTel is determined by the entries and options selected in its configuration file. Configuration information is supplied in this local text file, which is read each time the VTel executable is started.
When first started, VTel looks for the name of a configuration file to use. If none is found, it defaults to vtel.ini. VTel then attempts to open this file and read the configuration information.
Configuring VTel
A description of vtel.ini is given in The vtel.ini configuration file
on page 105.
Configuration options can include:
OLE and VESPddeSync (used to enable OLE Automation)
WrapupCodeDialog (used to provide wrapup functionality)
DirectoryGuiType (used to specify the type of Dial Directory that will be displayed)
There are also options that govern DEFINITY Reason Codes and DTMF functionality. For information on DEFINITY Reason Codes and DTMF, see VTel User’s Guide
.
It is strongly recommended that you examine the vtel.ini file to determine what options are available and what settings are best for your system.
Issue 2.1 August 2003 33
Initiating access to VTel
Using Assign to connect to VTel
After VTel starts, an application must establish a bi-directional connection so responses can be returned for all requests. Refer to Using DDE directional communication. Once the connection is established, the application gains a degree of control over VTel functions.
Note:
Note: Requests requiring access to Telephony resources will fail until after a login
has been performed.
To establish a DDE connection, the DDE Link Topic is needed to identify the applications that wish to communicate. This is indicated by the LinkTopic parameter of the Assign() command. The LinkTopic parameter contains the description of the application to respond to and the specific DDE topic, separated by the pipe or vertical bar character (|). These may be adjustable, or preset and fixed, depending on the language and application software that is used. In the following code example, the LinkTopic parameter is represented by the literal "DDEApp|DDETopic":
on page 22 for a discussion of bi-
[VTel.Assign("DDEApp|DDETopic")]
If the attempt is successful, VTel will send a DDE message to the specified application and topic:
[VTel.Assign.response(,"DDEApp|DDETopic")]
To assign from VTelX to VTel, the following Assign() command and response would be sent:
[VTel.Assign("VTelX|VTelX")] [VTel.Assign.response(,"VTelX|VTelX")]
34 VTel Programmer Guide
Logging in - access to Telephony resources
Logging in - access to Telephony resources
A login request must be sent before any access is granted to Telephony resources. There are four forms of the login command:
Login() directs VTel to log into the Telephony system, creating an assignment to the
agent's telephone set.
LoginACD() directs VTel to log into the Telephony system, creating an assignment to
the agent's ACD phone and, depending on the ACD system, allowing the agent to specify the queue that they service.
LoginVESP() directs VTel to log into the Telephony system only. No phone
assignments are made. This command is used to obtain direct access to Interaction Engine Servers without using VTel for telephony control.
LoginTelephony() is used with LoginVESP(), allowing a two-step process for
logging into VTel. LoginTelephony() directs VTel to log into the Telephony Server and the EDU Server, creating an assignment to the agent's ACD phone and, depending on the ACD system, allowing the agent to specify the queue that they service.
The syntax of a Login request is:
[VTel.Login("login","password","agentid","agentpassword","stationid")]
If the agent and station information are not needed, or if they are supplied by default through the Telephony system, the additional parameters may be omitted.
[VTel.Login("login","password",,,)]
If the attempt is successful, VTel will send a message to the originating application.
[VTel.Login.response(,"login","password",,,)]
An event message is also sent to all assigned applications.
A login may be performed from an external application or directly by the agent from the VTel user interface. VTel can be configured to rely entirely on an external login without prompting the agent. This allows an external application to handle the login process and to do so either with its own interface or by controlling the VTel login dialog.
If the system has been configured to permit login from both an external application and from the VTel interface, a conflict may result. The agent may perform a direct login before the application does so, in which case the application will receive an error unless it first sends a logout request.
Issue 2.1 August 2003 35
Initiating access to VTel
Logging out
A single logout request from any source (either from the VTel user interface or from an external application) will log out all current interfaces.
If the logout request is from the VTel user interface, the agent will be prompted for another login. If the request is from an external application, a response will be returned to the requester, followed by a logout event sent to each application currently monitoring events. There will be no login prompt displayed unless requested by the external application. For more information, see GuiLogin
The agent is not permitted to log out unless all work has been closed, including both phone calls and Electronic Data Units (EDUs).
[VTel.Logout()]
on page 60.
Exiting VTel
VTel can be told to exit, which will end the application. All assigned applications will be deassigned.
[VTel.Exit()]
36 VTel Programmer Guide
Chapter 4: Message syntax
This section describes the DDE message syntax that provides a language-independent interface to Avaya Computer Telephony for IC services. This section contains the following topics:
DDE message syntax on page 37
Command name on page 37
Arguments on page 38
Responses on page 39
Request IDs on page 41
Event messages on page 41
DDE message syntax
DDE message syntax
DDE messages employ a syntax consistent with that used by VTel, the Telephony DDE Server, and other CORBA-based components. The syntax is similar to a function call, consisting of a command name with a list of arguments enclosed in parentheses and separated by commas. The entire command is enclosed in square brackets and may be suffixed by a request identifier:
[command(arg1,arg2,arg3...)] [command(arg1,arg2,arg3...)][request_id]
Command name
The command name may contain any combination of the characters A-Z (uppercase or lowercase), 0-9, underscore (_) and period (.). Commands cannot start with an underscore or digit. Separate elements of commands with periods.
Issue 2.1 August 2003 37
Message syntax
Each command name contains the name of the server that the request is targeted for, followed by the request itself. These elements are separated by a period. Requests for VTel are preceded by VTel. For example:
[VTel.Exit()]
Arguments
All arguments are either strings or sequences of couples (also called name-value pairs).
A sequence of couples is enclosed in curly brackets ({}) and includes a maximum number of elements (couples), actual element count, and the couples. Each couple is further enclosed in curly brackets and contains a name and a value, each of which is a string enclosed in quotation marks, separated by a comma:
{max,n,{"name1","value1"},{"name2","value2"},{"name3","value3"}}
The maximum number of elements (max) limits the number of couples that will be returned in response to a request. The maximum number must be a positive integer or zero. It is often set to zero (0) to indicate that the response size is unlimited (that is, any number of values may be returned). If the numbers is not zero, then a response to the request can be truncated. For example, the size of the response from a request to get the values in an EDU can be limited to five elements:
Strings
{5,1,{"vdu_id","2df5d9e6003b00007800002a1f430002"}}
The actual number of couples (n) is the count of the elements in the sequence. An empty sequence has zero in the element count, for example:
{0,0} or {5,0}
Note:
Note: Couples in a sequence are not positional. The couples may appear in any
order. The ordering may change at any time.
Strings are enclosed in quotation marks. Strings may contain any characters; however, quotation marks and backslash characters must be written with a backslash in front of them (that is, \ and \\).
38 VTel Programmer Guide
Null Values
Null strings are represented by an empty field, such as the one after ani in this code example.
{2,2,{"vdu_id","2df5d9e6003b00007800002a1f430002"},{"ani",}}
Null names cannot be used in a couple.
Syntax examples
[VTel.Assign ("DDEApp|DDETopic")] [VTel.Login("llutton","querty","5301","1111","1812")] [VTel.Login("llutton","querty",,,)] [VTel.VDUGetOneValue("2df5d9e6003b00007800002a1f430002","ani",)] [VTel.VDUSetValues("2df5d9e6000002a1f430002",{0,1,{"ani","5089525120"}})] [VTel.VDUGetValues("2df5d9e6003b00007800002a1f430002",{0,0})]
In this last line of this example, the first zero in {0,0} indicates "send back all the values found"; the second zero indicates that there are no couples in the sequence, where the sequence is simply being used to indicate the maximum number of couples to be returned.
Responses
Responses
For every request made to VTel, there is a response returned to the application that made the request. This response message consists of .response appended to the request name, an exception string, the argument list of the request (which may be modified to return the results) and, if required, a return code:
[command.response(exception,arg1,arg2,arg3...,argn)return code]
Problem levels
For any request, there are five reasons why a problem may occur.
Communications path
The request cannot be communicated to one of the components due to a communications failure.
Issue 2.1 August 2003 39
Message syntax
Faulty request
VTel cannot understand enough of the request to attempt processing or even identify the destination. A generic response message is sent to the requester, who is identified by the communications path. The original request is not returned as this will often "break" the parsing components in the requester.
Server not found
A request is made to a server that did not respond at this time.
Method not found
A server attempts to perform an unknown method. The method does not exist in the vespidl.pk file and is therefore not registered with the Telephony Server.
Method-specific problem
These are documented with the specific server and method.
Exceptions
The exception field indicates all serious problems with a request, such as a requested server that does not exist. An empty exception field indicates the request was processed without serious error. This is indicated in the response below by a comma delimiter with no preceding quotes.
[VTel.VDUGetOneValue("2df5d9e6003b00002a1f430002","ani",)] [VTel.VDUGetOneValue.response(,"2df5d9e6003b002a1f430002","ani","5084863244")]
When present, an exception consists of three string elements, separated by colons (:). The first element indicates the error level, and is typically a literal word. Common exception elements include SYSTEM, VTel, and USER (a USER exception might occur if unintelligible information was passed to the Telephony Server, for example). The second element is a hexadecimal code for the error. The third is a string describing the error. All three are contained within one set of double quotes.
Note: Describing strings may contain additional colons.
For example, if a supplied EDU ID does not exist, the following request-response sequence might occur:
[VTel.VDUGetOneValue("1df5d9e6003b00002a1f430002","ani",)] [VTel.VDUGetOneValue.response("USER:4000350:No such
Note:
VDU:1df5d9e6003b002a1f430002","1df5d9e6003b002a1f430002","ani",)]
40 VTel Programmer Guide
If an exception is returned, all of the other returned information may be invalid, including the return code.
Return code
As shown in the response syntax, a return code may be added to the end of the response. If it is present, this value may give you additional information, but it is not an error indicator. The type and meaning of this value depends on the server and particular method invoked. If an exception is returned, this value is not valid.
VTel will internally process most return code issues. Others will be passed through by VTel.
Request IDs
Anything enclosed in square brackets after the request is echoed in the response. This is optional and can be used by the sender to identify the request by generating a unique ID number for each.
Request IDs
[VTel.VDUGetOneValue("2df5d9e6003b00007800002a1f430002","ani",)][44] [VTel.VDUGetOneValue.response(,"2df5d9e6003b00007800002a1f430002","ani",
This enables the application to match the requests with the corresponding responses. It is the responsibility of the user application to generate a unique ID number. Sequential request counters are recommended.
Note:
Note: No response sequence is guaranteed or implied by this ID number.
Requests of the same or different types may be processed and replied to in an arbitrary order.
Event messages
Event messages sent from VTel to user applications use a slightly different syntax than request messages:
[eventid({eventtype,eventname,seqCouple})]
"5084863244")][44]
Issue 2.1 August 2003 41
Message syntax
Event ID
The event ID is similar to the command field of the request messages, consisting of elements separated by periods. The first element contains the name of the server (for example, VTel). The next element contains the event name. The third element contains the literal word event. For example:
VTel.Disconnect.event
Event type
The literal 0.
Event name
A string describing the event. For example:
"Disconnect"
seqCouple
A sequence of couples with the remaining event information. For example:
{1,1,{"vdu_id","2df5d9e6003b00007800002a1f430002"}}
Syntax example
[VTel.Disconnect.event({0,"Disconnect",{1,1,{"vdu_id",
"2df5d9e6003b00007800002a1f430002"}}})]
42 VTel Programmer Guide
Chapter 5: Methods
This section describes the VTel methods. It contains the following topics:
Telephone switch dependency on page 43
Pass-through requests on page 44
Initiating calls on page 45
Terminating calls on page 45
Querying and setting EDU values on page 46
VTel command summary on page 47
Interface Description Language (IDL) specification on page 50
Telephone switch dependency
VTel methods (requests from other applications) on page 52
Telephone switch dependency
The availability and operation of certain commands is dependent on the telephone switch being used, its options and software version, and its configuration. For example:
if a switch does not support standard ACD services, a phone generally cannot be made
Busy, and the WrapUp mode will not prevent additional incoming calls.
if the switch is configured for AutoReady operation, you may encounter a condition
where the phone state cannot be changed by VTel before another call arrives
The number of available inbound and outbound line appearances available will vary depending on both configuration and trunk capacity. VTel cannot always predict line appearances, and may only return a failure if an outbound request is rejected.
Issue 2.1 August 2003 43
Methods
Pass-through requests
In addition to functions performed within VTel, VTel also accepts pass-through requests for other Contact Engine servers. The targeted server is named in the command name; requests for the Telephony Server are preceded by "TS.", the EDU Server by "EDU.", and so on. For example:
[TS.Ping()] [TS.Ping.response(,)]
VTel will not act on these commands, but functions only as a conduit.
Note:
Note: If the VTel user logs out after a pass-through request has been sent, but
before a response has been returned, the response will be lost.
When an application connected to VTel submits its first pass-through request, VTel assigns a session ID to that application. Each instance is assigned a different session ID. VTel can then return the response to the appropriate application instance.
In some cases, there are several ways to perform a function. For example, an EDU entry for a telephone call may be accessed by sending a request either to VTel or directly to the EDU Server. The result, particularly timing, may be subtly different. In general, you should not perform telephony functions directly on phones managed by VTel. Doing so may result in a momentary loss of synchronization between information in the server and that displayed by the VTel interface.
There are also differences in the domains of various functions. The EDU functions available from VTel generally apply only to those EDUs in use by VTel. While VTel.VDUGetActive() returns the EDU IDs currently being monitored on the workstation by VTel, the direct VDU.GetActive() returns the EDU IDs of active EDUs in Avaya Computer Telephony for IC.
Queuing
When a pass-through request comes in to VTel, VTel internally queues the request. The internal queue is unlimited in size. The pass-through request will not be sent to the Toolkit, and then to Telephony, until all previous requests have been sent. No additional queued requests will be sent until responses from previous requests have been received, or a time out has occurred. This ensures a deterministic sequence of operation.
Thus, if the network becomes unresponsive for several seconds while a large number of pass-through requests are being sent to VTel, those pass-through requests will be queued in VTel until the Toolkit can re-establish a link with Telephony. Once the network responds again, all pass-through requests are issued sequentially.
44 VTel Programmer Guide
DDE
Each DDE message must have have a completed request and response sequence, or handshake. This applies to each request, response, and event message issued using DDE, because of the Microsoft DDEML specification.
DDE messages sent to VTel must abide by this DDE protocol, ensuring that a second message is not sent until a DDE ACK has been received from the first message.
Initiating calls
Calls are dialed through the MakeCall() request. A call may be made to a dialable number, ACD queue, or UserID. The request must include a placeholder for the EDU ID, which is returned in the response to a successful MakeCall() attempt:
[VTel.MakeCall("5089525120",)] [VTel.MakeCall.response(,"5089525120","2df5d9e6003b0000780002a1f430002")]
Initiating calls
Terminating calls
Telephone calls may be terminated using the Hangup() or Terminate() requests. The Hangup() request may place the agent's telephone in the WrapUp state, without
terminating the EDU, or it may be configured to operate like the Terminate() request. The Terminate() request performs a hangup, then terminates the EDU.
[VTel.Terminate("2df5d9e6003b00007800002a1f430002")] [VTel.Hangup("2df5d9e6003b00007800002a1f430002")]
The resulting telephone state depends on the VTel configuration and the telephone switch options. For additional information, see Telephone switch dependency
on page 43.
Issue 2.1 August 2003 45
Methods
Querying and setting EDU values
EDU values may be queried and set through VTel. The VTel commands that operate on the EDU are a subset of those available from the EDU Server and generally apply only to those EDUs that are active in VTel. Exceptions are the VDUFindVDU() and VDUGetData() commands, which can access information not currently active in VTel. Only EDUs currently active in VTel can be edited.
Getting one value from the EDU
One value can be retrieved from the EDU using the VDUGetOneValue() request:
[VTel.VDUGetOneValue("2df5d9e63b0000782a1f430002","ani",)] [VTel.VDUGetOneValue.response(,"2df5d9e63b0000782a1f430002","ani","5089525120")]
Getting multiple values from the EDU
The VDUGetValues() method retrieves all of the values in the specified EDU, up to the maximum sequence limit:
[VTel.VDUGetValues("2df5d9e6003b00007800002a1f430002",{2,0})] [VTel.VDUGetValues.response(,"2df5d9e6003b00007800002a1f430002",
{2,2,{"ani","5089525120"},{"dnis","5084863244"}})]
Setting EDU values
The VDUSetValues() method can set one or more EDU values with a single call:
[VTel.VDUSetValues("2df5d9e6003b00007800002a1f430002",{2,2,
{"ani","5089525120"},{"dnis","5084863244"}})]
[VTel.VDUSetValues.response(,"2df5d9e6003b00007800002a1f430002",
{2,2,{"ani","5089525120"},{"dnis","5084863244"}})]
Terminating an EDU
The Terminate() method will release the EDU after a call is wrapped up:
[VTel.Terminate("2df5d9e6003b00007800002a1f430002")] [VTel.Terminate.response(,"2df5d9e6003b00007800002a1f430002")]
46 VTel Programmer Guide
VTel command summary
The following commands are accepted by VTel.
Name Description
Answer Answer a call
Assign Establish initial connection with VTel
Busy Make a phone number Busy (dependent on the telephone
switch)
BusyOverride Changes the current preset to Busy (dependent on the
telephone switch)
BusyPhoneset Make a phoneset Busy (dependent on the telephone
switch)
Change Password Change the Avaya Computer Telephony for IC password
for the current user
VTel command summary
ConferenceCancel Cancel a conference
ConferenceComplete Establish an n-way conference
ConferenceInit Begin a conference call
Deassign Break the connection between VTel and a user application
Drop Drop a party from a conference call (dependent on the
telephone switch)
Exit Direct VTel to terminate
GetActive Obsolete (see VDUGetActive)
GetInfo Get general information about the current session
GetPhoneInfo Get general information about the default phone
GuiCallHistory View information on previous related phone conversations
(requires the DUStore Server)
GuiLogin Display the standard VTel login dialog
Hangup Hang up the phone and the EDU remains
Hold Place an active call on hold
HoldReconnect Remove the hold state for a current call and make it active
LogEntry Add an entry to the VTel log file
Issue 2.1 August 2003 47
Methods
Name Description
Login Log user into Telephony and assign to the user's phone
LoginACD Log user into Telephony as an ACD phone
LoginTelephony Log user into Telephony Server and EDU Server only,
assigning to the user's phone
LoginVESP Log user into Telephony only; no phone access through
VTel
Logout Log user out of Telephony, deassigning the user's phone
LogoutTelephony Log user out of Telephony Server and EDU Server only,
deassigning user's phone
LogoutVESP Log user out of Telephony only, does not deassign user's
phone
MakeCall Dial a number and return a EDU ID
Ping Test the connection from an external application
Ready Set a phone to the Ready state (dependent on the
telephone switch)
ReadyOverride Changes the current preset to Ready (dependent on the
telephone switch)
ReadyPhoneset Set a phoneset to the Ready state (dependent on the
telephone switch)
Release Obsolete (see Terminate)
ResetPhones Release all calls and set VTel to a neutral state
RestartServer Attempt to restart the specified server
SwapHeld Toggle between a newly added call and call(s) on hold
(dependent on the telephone switch)
Terminate Hang up a call and release the EDU
Transfer Blind transfer
TransferCancel Cancel a consultative transfer
TransferComplete Finish a consultative transfer
TransferInit Begin a consultative transfer
VDUCreate Create a new EDU and have it monitored by VTel
VDUFindVDU Find all EDUs that match a search criteria (requires the
48 VTel Programmer Guide
DUStore Server)
VTel command summary
Name Description
VDUGetActive Get a list of all EDUs active in VTel
VDUGetData Get all data from any EDU
VDUGetOneValue Return one value from a EDU in use
VDUGetValues Return multiple values from a EDU in use
VDUGetCurrentValue Set the "current" EDU ID context, notifying any GUI
VDUSetValues Set multiple values in the EDU
WrapUp Hang up the call, enter the WrapUp state, do not release
the EDU (dependent on the telephone switch)
WrapUpOverride Changes the current preset to WrapUp (dependent on the
telephone switch)
?.get_timeout Obtain the Toolkit’s response timeout
?.set_timeout Set the Toolkit’s response timeout
Issue 2.1 August 2003 49
Methods
Interface Description Language (IDL) specification
The CORBA Interface Description Language describes the syntax for VTel commands:
interface VTel : General {
ORBStatus Answer( in string vduid ); ORBStatus Assign( in string linktopic ); ORBStatus Busy( in string phonenumber ); ORBStatus BusyOverride( in string phonenumber ); ORBStatus BusyPhoneset( void ); ORBStatus ChangePassword( in string oldpassword, in string
newpassword ); ORBStatus ConferenceCancel( in string vduid ); ORBStatus ConferenceComplete( in string vduid ); ORBStatus ConferenceInit( in string vduid, in string phonenumber ); ORBStatus Deassign( void ); ORBStatus Drop( in string vduid, in string phonenumber ); ORBStatus Exit( void ); ORBStatus GetActive( out SeqString vduidvalues ); ORBStatus GetInfo( out SeqCouple values ); ORBStatus GetPhoneInfo( in string phonenumber,
out SeqCouple values ); ORBStatus GuiCallHistory( in string account ); ORBStatus GuiLogin( in string login, in string password,
in string agentid, in string agentpassword, in
string stationid); ORBStatus Hangup( in string vduid ); ORBStatus Hold( in string vduid ); ORBStatus HoldReconnect( in string vduid ); ORBStatus LogEntry( in string text ); ORBStatus Login( in string login, in string password, in string
agentid, in string agentpassword, in string stationid);
ORBStatus LoginACD( in string login, in string password, in string
agentid, in string agentpassword, in string
stationid, in string queue); ORBStatus LoginTelephony( in string login, in string password,
in string agentid, in string agentpassword, in string stationid,
in string queue); ORBStatus LoginVESP( in string login, in string password ); ORBStatus Logout( void ); ORBStatus LogoutTelephony( in string retry_limit, in string
wait_seconds );
50 VTel Programmer Guide
Interface Description Language (IDL) specification
ORBStatus LogoutVESP( void ); ORBStatus MakeCall( in string phonenumber_orig, in string
phonenumber_dest, out string vduid ); ORBStatus Ping( void ); ORBStatus Ready( in string phonenumber ); ORBStatus ReadyOverride( in string phonenumber ); ORBStatus ReadyPhoneset( void ); ORBStatus Release( in string vduid ); ORBStatus ResetPhones( void ); ORBStatus RestartServer( in string server, in long retrylimit,
in long waitseconds ); ORBStatus SwapHeld( in string vduid ); ORBStatus Terminate( in string vduid ); ORBStatus Transfer( in string vduid, in string phonenumber ); ORBStatus TransferCancel( in string vduid ); ORBStatus TransferComplete( in string vduid ); ORBStatus TransferInit( in string vduid, in string phonenumber ); ORBStatus VDUCreate( in SeqCouple values, out string vduid ); ORBStatus VDUFindVDU( in string criteria, out SeqString values ); ORBStatus VDUGetActive( out SeqString vduidvalues ); ORBStatus VDUGetData( in string vduid, out SeqCouple values ); ORBStatus VDUGetOneValue( in string vduid, in string name,
out string value ); ORBStatus VDUGetValues( in string vduid, out SeqCouple values ); ORBStatus VDUSetCurrent( in string vduid ); ORBStatus VDUSetValues( in string vduid, in SeqCouple values ); ORBStatus WrapUp( in string phonenumber ); ORBStatus WrapUpOverride( in string phonenumber ); ?.get_timeout( out unsigned long number); ?.set_timeout( in unsigned long number); };
Issue 2.1 August 2003 51
Methods
VTel methods (requests from other applications)
This section describes each of the VTel methods available to other applications. Any function or operation available from any VTel user interface can also be accomplished by using one or more methods. Some methods may not have any equivalents in a particular user interface.
In each of the methods requiring a phone number for the user’s phone set, an empty or null argument can be supplied indicating use of the default number. If a phone set has only a single number with multiple line appearances, that phone number is the default. Where there are multiple phone numbers on the local phone set, the default is the last phone number used.
Note:
Note: Use of a default phone number applies only to the local phone set.
A destination phone number must be supplied to make an outbound call.
A call may be made to a dialable number, ACD queue, or UserID. The UserID may be the Telephony login ID, the phone login ID, or the station or equipment number for the phoneset (see the arguments for the Login, LoginACD, and LoginVESP methods), depending on circumstances.
Answer
IDL Syntax ORBStatus Answer( in string vduid );
Description Answers an incoming call. This is required only if neither the telephone switch nor
VTel are in auto-answer mode.
Input Parameters
Name Required Description/Comments
vduid Yes The EDU ID corresponding to the incoming
call.
Output Parameters
Examples
Notes A previous incoming call event will have provided the EDU ID to use. If the call
None.
[VTel.Answer("2df5d9e6003b00007800002a1f430002")]
has already been answered, this is harmless and without error.
52 VTel Programmer Guide
VTel methods (requests from other applications)
Assign
IDL Syntax ORBStatus Assign( in string linktopic );
Description For DDE communications, establishes a basic request and response connection
with VTel, allowing responses and events to be sent to the attached application.
Input Parameters
Name Required Description/Comments
linktopic Yes Application name and DDE topic.
Output Parameters
Examples
None.
[VTel.Assign("DDEApp|DDETopic")]
Busy
IDL Syntax ORBStatus Busy( in string phonenumber );
Description If not in an active ACD call, this sets a phone to the Busy state. From within an
ACD call, it may either preset the Busy state or hang up the call, placing the phone in the Busy state. For more information, see Phone states after hang up page 18.
Input Parameters
Name Required Description/Comments
phonenumber No Dialable number or null (default phone).
on
Output Parameters
Examples
Notes This method is dependent on the telephone switch and the type of phone
None.
[VTel.Busy("1234")] [VTel.Busy()]
assigned. Refer to the IDL chapter of your Telephony Services manual. This method does not typically affect incoming calls that are not processed through a queue.
Issue 2.1 August 2003 53
Methods
BusyOverride
IDL Syntax ORBStatus BusyOverride( in string phonenumber );
Description If in call, and presets are on, changes the current preset to Busy and disallows
any attempts to change the preset for the remainder of the call unless by means of another override command (such as ReadyOverride or WrapUpOverride).
If not in call, or presets are not on, behaves like the Busy command.
Input Parameters
Name Required Description/Comments
phonenumber No Dialable number or null (default phone).
Output Parameters
Examples
Notes This method is dependent on the telephone switch and the type of phone
None.
[VTel.BusyOverride("1234")] [VTel.BusyOverride()]
assigned. Refer to the IDL chapter of your Telephony Services manual.
BusyPhoneset
IDL Syntax ORBStatus BusyPhoneset( void );
Description If there are no active calls, this sets the entire phoneset to the Busy state. If there
are active calls, the result is switch dependent (see the documentation for your telephone switch).
Input Parameters
Output Parameters
None.
None.
Examples
Notes This method is dependent on the telephone switch. Refer to the IDL chapter of
54 VTel Programmer Guide
[VTel.BusyPhoneset()]
your Telephony Services manual to determine availability.
VTel methods (requests from other applications)
ChangePassword
IDL Syntax ORBStatus ChangePassword( in string oldpassword, in string
newpassword );
Description Changes the current Telephony password.
Input Parameters
Name Required Description/Comments
oldpassword Yes The currently used Telephony password.
newpassword No The new Telephony password, or empty for no
password.
Output Parameters
Examples
Notes Some configurations may not permit an empty or blank password.
None
[VTel.ChangePassword("violet","fragrant")]
ConferenceCancel
IDL Syntax ORBStatus ConferenceCancel( in string vduid );
Description Following a ConferenceInit(), this terminates the call made to the additional
party. The previous conversation(s) are taken off hold.
Input Parameters
Name Required Description/Comments
vduid Yes The EDU ID of a current call in the
ConferenceInit state.
Output Parameters
Examples
None.
[VTel.ConferenceCancel("2df5d9e6003b00007800002a1f430002")
Issue 2.1 August 2003 55
Methods
ConferenceComplete
IDL Syntax ORBStatus ConferenceComplete( in string vduid );
Description Following a ConferenceInit(), this retains the new conversation with the
additional party, while the previous conversation(s) are taken off hold so that all connected parties can speak together.
Input Parameters
Name Required Description/Comments
vduid Yes The EDU ID of a current call in the
ConferenceInit state.
Output Parameters
Examples
None.
[VTel.ConferenceComplete("2df5d9e6003b00007800002a1f430002")]
ConferenceInit
IDL Syntax ORBStatus ConferenceInit( in string vduid, in string
phonenumber );
Description Initiates a conference with an additional party. All previous conversations are put
on hold, and a call is made to the new party.
Input Parameters
Name Required Description/Comments
vduid Yes The EDU ID of a current call.
phonenumber Yes Dialable number, UserID, or ACD queue of the
phone that is to be conferenced in.
Output Parameters
Examples
56 VTel Programmer Guide
None.
[VTel.ConferenceInit("2df5d9e6003b00007800002a1f430002","GLangrey")]
VTel methods (requests from other applications)
Deassign
IDL Syntax ORBStatus Deassign( void );
Description Breaks the connection between VTel and the external application. With DDE
communications, no further commands are accepted until another Assign().
Input Parameters
Output Parameters
Examples
Notes This also stops any event reporting to the external application. It does not affect
None.
None.
[VTel.Deassign()]
the current state of VTel or any phones or calls. Its effect can be delayed if other prior messages are queued waiting on a busy connection. If this is executed before responses to previous requests have been sent, the responses are lost.
Drop
IDL Syntax ORBStatus Drop( in string vduid, in string phonenumber );
Description Drops a party from a conference call.
Input Parameters
Name Required Description/Comments
vduid Yes The EDU ID of a current conference call.
phonenumber Yes The dialable number, UserID, or ACD queue of
Output Parameters
Examples
Notes If only two parties are in the call, the call is ended and both parties are
None.
[VTel.Drop("2df5d9e6003b00007800002a1f430002","1234")]
disconnected. Attempting to drop a party that is no longer present returns an error. Attempting to drop yourself returns an error. This method is dependent on the
the party to be dropped.
Issue 2.1 August 2003 57
Methods
telephone switch and the type of phone assigned. Refer to the IDL chapter of your Telephony Services manual to determine availability.
Exit
IDL Syntax ORBStatus Exit( void );
Description Causes the VTel application to end.
Input Parameters
Output Parameters
Examples
Notes This method will be rejected if there is a current login in effect.
None.
None.
[VTel.Exit()]
GetActive
IDL Syntax ORBStatus GetActive( out SeqString vduidvalues );
Description Obsolete method; see VDUGetActive
on page 77.
GetInfo
IDL Syntax ORBStatus GetInfo( out SeqCouple values );
Description Returns general information about the current state and configuration of VTel.
Input Parameters
Output Parameters
58 VTel Programmer Guide
None.
Name Description/Comments
values Information about the current status of VTel.
VTel methods (requests from other applications)
Examples [VTel.GetInfo({0,0})]
[VTel.GetInfo.response(,{5,5,{"pbx_name","Definity"},
{"login_name","vtelsim"},{"pbx_rev","G3V2"}, {"build","(Build 1)"},{"version","2.1.27"}})]
Notes The available information may vary in different configurations.
GetPhoneInfo
IDL Syntax ORBStatus GetPhoneInfo( in string phonenumber, out SeqCouple
values );
Description Returns switch-dependent information about the default phone.
Input Parameters
Name Required Description/Comments
phonenumber No Currently only null (default phone) is
allowed.
Output Parameters
Name Description/Comments
values Information about the current status of the default phone.
Examples
[VTel.GetPhoneInfo("",{0,0})] [VTel.GetPhoneInfo.response(,"",{3,3,{"state","idle"},
{"aspect_status","A"},{"mode","ready"}})]
[VTel.GetPhoneInfo.response(,"",{3,3,{"state","active"},
{"aspect_status","O"},{"mode","busy"}})]
[VTel.GetPhoneInfo.response(,"",{3,3,{"state","active"},
{"aspect_status","X"},{"mode","busy"}})]
Notes This method is dependent on the telephone switch and the type of phone
assigned. Refer to the IDL chapter of your Telephony Services manual to determine availability.
GuiCallHistory
IDL Syntax ORBStatus GuiCallHistory( in string account );
Issue 2.1 August 2003 59
Methods
Description Search old EDUs for historical information related to the given account number.
The results of the search are displayed in the Call History dialog box.
Input Parameters
Name Required Description/Comments
account No An account number to use for the initial
search.
Output
None.
Parameters
Examples
[VTel.GuiCallHistory("165459876")] [VTel.GuiCallHistory.response(,"165459876")]
Notes This is a self-contained object that allows the user to find information or perform
an action, but does not return any information.
This method requires that the DU Store Server be available.
GuiLogin
IDL Syntax ORBStatus GuiLogin( in string login, in string password, in
string agentid, in string agentpassword, in string stationid);
Description Causes VTel to display its standard Login dialog, prompting the agent to perform a
login from the user interface. This does not actually perform a login, nor does it wait for the agent to respond. A successful response only means that the VTel Login dialog is visible. The parameters are all optional, and can be used to set the default responses that will be displayed in the Login dialog.
Input Parameters
Name Required Description/Comments
login No Telephony login ID.
password No Telephony password.
agentid No Phone login ID.
agentpassword No Phone password.
stationid No Station or equipment number for this
60 VTel Programmer Guide
phoneset.
VTel methods (requests from other applications)
Output
None.
Parameters
Examples
[VTel.GuiLogin("Fred",,,,)]
Notes This method will return an error for an invalid login, or if another login is currently
in progress. No input parameters are needed unless you wish to set default values.
Hangup
IDL Syntax ORBStatus Hangup( in string vduid );
Description Places the phone on-hook, disconnecting the call. The state of the EDU depends
on the current configuration and any preset actions.
Input Parameters
Name Required Description/Comments
vduid Yes The EDU ID of the telephone call.
Output
None.
Parameters
Examples
[VTel.Hangup("2df5d9e6003b00007800002a1f430002")]
Notes Race conditions may occur if the agent also releases the call through the VTel
user interface, or the caller hangs up at about the same time. An error condition indicating an invalid EDU ID should generally be considered a normal return. If the call has been hung up but the EDU is still available, no error is returned, since it correctly reflects the state at that time. Should you need to know when the call is hung up, look for the Disconnect event.
If a ConferenceInit() or TransferInit() is in progress and Hangup() is invoked:
the conference or consultative transfer is canceled.
the conversation(s) that were put on hold remain on hold.
Issue 2.1 August 2003 61
Methods
Hold
IDL Syntax ORBStatus Hold( in string vduid );
Description Sets an active call to the hold state.
Input Parameters
Name Required Description/Comments
vduid Yes The EDU ID of the telephone call.
Output Parameters
Examples
Notes If the call exists and is currently on-hold, this is harmless and ignored without
None.
[VTel.Hold("2df5d9e6003b00007800002a1f430002")]
error. Should you need to know when the call is actually put on hold, look for the No-load event.
HoldReconnect
IDL Syntax ORBStatus HoldReconnect( in string vduid );
Description Removes the hold state for a current call and makes it active.
Input Parameters
Name Required Description/Comments
vduid Yes The EDU ID of the telephone call.
Examples
Notes If the call exists but is currently off-hold, this is harmless and ignored without error.
62 VTel Programmer Guide
[VTel.HoldReconnect("2df5d9e6003b00007800002a1f430002")]
Should you need to know when the call is actually reconnected, look for the
InCall event.
VTel methods (requests from other applications)
LogEntry
IDL Syntax ORBStatus LogEntry( in string text );
Description Permits a desktop application to add entries to the VTel log file.
Input Parameters
Name Required Description/Comments
text Yes The text that is to be written to the VTel log file.
Examples
Notes Each LogEntry entry is automatically given a date-time stamp, identified as to the
[VTel.LogEntry("This is a test")]
connection number of the requester, and followed by a new line.
Login
IDL Syntax ORBStatus Login( in string login, in string password, in
string agentid, in string agentpassword, in string stationid);
Description Directs VTel to log into Telephony, creating an assignment to the agent’s
telephone set.
Input Parameters
Name Required Description/Comments
login Yes Telephony login ID.
password Yes Telephony password, if one was assigned.
agentid No Phone login ID.
agentpassword No Phone password.
stationid No Station or equipment number for this
Output Parameters
None.
phoneset.
Issue 2.1 August 2003 63
Methods
Examples [VTel.Login("llutton","qwerty",,,)]
Notes This method will return an error for an invalid login, or if another login is currently
in progress. The agent and station parameters may not be needed, depending on your configuration and the type of login desired.
For the Meridian Link, agentid corresponds to the position ID and stationid to the equipment number. The agent ID (if agent ID software is being used) can only be entered through IC Manager; it cannot be entered through VTel.
LoginACD
IDL Syntax ORBStatus LoginACD( in string login, in string password, in
string agentid, in string agentpassword, in string stationid, in string queue);
Description Directs VTel to log into Telephony, creating an assignment to the agent’s ACD
telephone set.
Input Parameters
Name Required Description/Comments
login Yes Telephony login ID.
password Yes Telephony password, if one was assigned.
agentid No Phone login ID.
agentpassword No Phone password.
stationid No Station or equipment number for this
phoneset.
queue No Queue for assignment.
Output
None.
Parameters
Examples
[VTel.LoginACD("llutton","qwerty",,,,)]
Notes This method will return an error for an invalid login, or if another login is currently
in progress. The agent, station, and queue parameters may not be needed, depending on your configuration and the type of login desired.
For the Meridian Link, agentid corresponds to the position ID and stationid to the equipment number. The agent ID (if agent ID software is being used) can only be entered through IC Manager; it cannot be entered through VTel.
64 VTel Programmer Guide
VTel methods (requests from other applications)
LoginTelephony
IDL Syntax ORBStatus LoginTelephony( in string login, in string
password, in string agentid, in string agentpassword, in string stationid, in string queue);
Description Directs VTel to assign and log into the Telephony Server and the EDU Server.
LoginVESP() must be called before LoginTelephony().
Input Parameters
Name Required Description/Comments
login Yes Telephony login ID.
password Yes Telephony password, if one was
assigned.
agentid No Phone login ID.
agentpassword No Phone password.
stationid No Station or equipment number for this
phoneset.
queue No Queue for assignment.
Output
None.
Parameters
Examples
[VTel.LoginTelephony("llutton","qwerty",,,,)]
Notes This method allows a two-step process for logging into VTel. It is paired with
LogoutTelephony().
This method will return an error for an invalid login, or if another login is currently in progress. The agent, station, and queue parameters may not be needed, depending on your configuration and the type of login desired.
For the Meridian Link, agentid corresponds to the position ID and stationid to the equipment number. The agent ID (if agent ID software is being used) can only be entered through IC Manager; it cannot be entered through VTel.
Issue 2.1 August 2003 65
Methods
LoginVESP
IDL Syntax ORBStatus LoginVESP( in string login, in string password );
Description Directs VTel to log into Telephony only. No phone assignments are made.
Input Parameters
Name Required Description/Comments
login Yes Telephony login ID.
password Yes Telephony password, if one was assigned.
Output Parameters
Examples
Notes This method will return an error for an invalid login, or if another login is currently
None.
[VTel.LoginVESP("llutton","qwerty")]
in progress.
Logout
IDL Syntax ORBStatus Logout( void );
Description Directs VTel to log out from Telephony, deassigning the agent's telephone set.
Input Parameters
Output Parameters
None.
None.
Examples
Notes This method will fail if there is any work in progress. Works in progress may
66 VTel Programmer Guide
[VTel.Logout()]
include active phone calls and EDUs that have not been terminated because of either a WrapUp state or an application locking the resources.
If the VTel GUI was visible before logout, it will be hidden after logout and the user will not be prompted for another login unless a GuiLogin() request is made. This allows the external application to display its own login interface, or to determine when the VTel login dialog is visible.
VTel methods (requests from other applications)
LogoutTelephony
IDL Syntax ORBStatus LogoutTelephony( in string retry_limit, in string
wait_seconds );
Description Directs VTel to deassign and log out of the Telephony Server and the EDU Server.
LogoutVESP() must be called after LogoutTelephony().
Input Parameters
Name Required Description/Comments
retry_limit No Number of attempts to make. (The default is 0.)
wait_seconds No Number of seconds between attempts. (The
default is 0.)
Output
None.
Parameters
Examples
[VTel.LogoutTelephony(,)] [VTel.LogoutTelephony(10,2)]
Notes This method will fail (that is, a given try will fail) if there is any work in progress.
Works in progress may include active phone calls and EDUs that have not been terminated because of either a WrapUp state or an application locking the resources.
If retry_limit is -1, retries will occur at intervals of wait_seconds until success is achieved.
If retry_limit is a positive integer, a maximum of that many retries will occur, with an interval of wait_seconds between each try. A response will not be returned until success is achieved or until the retry_limit has been reached. If the request was ultimately unsuccessful, an error response is returned.
This method allows a two-step process for logging out of VTel. It is paired with LoginTelephony().
If the VTel GUI was visible before logout, it will be hidden after logout and the user will not be prompted for another login unless a GuiLogin() request is made. This allows the external application to display its own login interface, or to determine when the VTel login dialog is visible.
Issue 2.1 August 2003 67
Methods
LogoutVESP
IDL Syntax ORBStatus LogoutVESP( void );
Description Directs VTel to log out from Telephony only but does not deassign the agent's
telephone set.
Input Parameters
Output Parameters
Examples
Notes This method will fail if LoginVESP() has not been issued or if there is any work in
None.
None.
[VTel.LogoutVESP()]
progress. Works in progress may include active phone calls and EDUs that have not been terminated because of either a WrapUp state or an application locking the resources.
If the VTel GUI was visible before logout, it will be hidden after logout and the user will not be prompted for another login unless a GuiLogin() request is made. This allows the external application to display its own login interface, or to determine when the VTel login dialog is visible.
MakeCall
IDL Syntax ORBStatus MakeCall( in string phonenumber_orig, in string
phonenumber_dest, out string vduid );
Description Directs VTel to initiate a call on the selected phone line.
Input Parameters
Name Required Description/Comments
phonenumber_orig No Dialable number, UserID, or null (default
phonenumber_dest Yes Dialable number, UserID, or ACD queue of
68 VTel Programmer Guide
phone) for the phone from which the outbound call is originating.
the phone that is the destination of the outbound call.
Output Parameters
VTel methods (requests from other applications)
Name Description/Comments
vduid The EDU ID of the completed telephone call.
Examples
Notes Race conditions may occur if a telephone call arrives at the same time that an
[VTel.MakeCall("4004","5089525120",)] [VTel.MakeCall(,"5089525120",)]
attempt to make an outgoing call is made. This results in an error return. If the phone can be set to the Busy state, this will prevent queued calls, but direct calls typically cannot be prevented.
Depending on the available outbound line appearances and the destination (internal or outside line), this request may fail. Some of these failures cannot be easily predicted due to the number of factors involved. For more information, see
Race conditions
on page 26.
Ping
IDL Syntax ORBStatus Ping( void );
Description Tests the connection (a DDE connection, for example) to ensure that VTel is still
responding to messages.
Input Parameters
None.
Output Parameters
Examples
Notes Because this only tests the connection to VTel, it does not require a valid login.
None.
[VTel.Ping()]
Ready
IDL Syntax ORBStatus Ready( in string phonenumber );
Description If not in an active ACD call, sets a phone to the Ready state. From within an ACD
call, may either preset the call in the Ready state or hang up the call, placing the
Issue 2.1 August 2003 69
Methods
Input Parameters
phone in the Ready state. For more information , see Phone states after hang
up on page 18
Name Required Description/Comments
phonenumber No Dialable number or null (default phone).
Output
None.
Parameters
Examples
[VTel.Ready("1234")] [VTel.Ready()]
Notes This method is dependent on the telephone switch and the type of phone
assigned. Refer to the IDL chapter of your Telephony Services manual. This method does not typically affect inbound calls that are not processed through a queue.
ReadyOverride
IDL Syntax ORBStatus ReadyOverride( in string phonenumber );
Description If in call, and presets are on, changes the current preset to Ready and disallows
any attempts to change the preset for the remainder of the call unless by means of another override command (such as BusyOverride or WrapUpOverride).
If not in call, or presets are not on, behaves like the Ready command.
Input Parameters
Name Required Description/Comments
phonenumber No Dialable number or null (default phone).
Output
None.
Parameters
Examples
[VTel.ReadyOverride("1234")] [VTel.ReadyOverride()]
Notes This method is dependent on the telephone switch and the type of phone
assigned. Refer to the IDL chapter of your Telephony Services manual.
70 VTel Programmer Guide
VTel methods (requests from other applications)
ReadyPhoneset
IDL Syntax ORBStatus ReadyPhoneset( void );
Description If there are no active calls, this sets the entire phoneset to the Ready state. If
there are active calls, the result is switch dependent. Consult the documentation for your telephone switch for more information.
Input Parameters
Output Parameters
Examples
Notes This method is dependent on the telephone switch. Refer to the IDL chapter of
None.
None.
[VTel.ReadyPhoneset()]
your Telephony Services manual to determine availability.
Release
IDL Syntax ORBStatus Release( in string vduid );
Description Obsolete method; see Ter mi na te
on page 73.
ResetPhones
IDL Syntax ORBStatus ResetPhones( void );
Description For use when VTel has lost sync with the phoneset. This method clears all current
telephony activity from VTel, terminating all calls and EDUs.
Important: The user should complete all business with active calls before this
Input Parameters
None.
!
!
Important:
Important:
method is called.
Issue 2.1 August 2003 71
Methods
Output Parameters
Examples
Notes Because this method is used to recover from synchronization errors, any
None.
[VTel.ResetPhones()]
additional errors received during the execution of this method are ignored.
RestartServer
IDL Syntax ORBStatus RestartServer( in string server, in long
retrylimit, in long waitseconds );
Description Attempts to restart the server specified, restoring the connection with the same
user login information that was used previously.
Input Parameters
Name Required Description/Comments
server Yes The name of the server (for example, "TS")
to be restarted.
retrylimit No The number of restart attempts to make.
(The default is 6.)
waitseconds No The number of seconds to wait between
attempts. (The default is 10.)
Output Parameters
Examples
Notes When the server restarts, call state and information context will have been lost.
None.
[VTel.RestartServer("VDU",3,3)]
This request is ignored if the server has already restarted.
SwapHeld
IDL Syntax ORBStatus SwapHeld( in string vduid );
Description After a TransferInit() or ConferenceInit(), this method toggles between
the new party and the conversation(s) on hold.
72 VTel Programmer Guide
Input Parameters
VTel methods (requests from other applications)
Name Required Description/Comments
vduid Yes The EDU ID of a current call.
Output Parameters
Examples
Notes This method is dependent on the telephone switch. Refer to the IDL chapter of
None.
[VTel.SwapHeld("2df5d9e6003b00007800002a1f430002")]
your Telephony Services manual to determine availability.
Terminate
IDL Syntax ORBStatus Terminate( in string vduid );
Description Hangs up a telephone call and terminate its EDU. No further work can be
performed related to this call.
Input Parameters
Name Required Description/Comments
vduid Yes An EDU ID active in VTel.
Output Parameters
Examples
Notes If the EDU is locked, the call is terminated but the EDU remains held by VTel.
None.
[VTel.Terminate("2df5d9e6003b00007800002a1f430002")]
Transfer
IDL Syntax ORBStatus Transfer( in string vduid, in string
phonenumber );
Description Performs a blind transfer of current conversation(s) to another phone.
Issue 2.1 August 2003 73
Methods
Input Parameters
Name Required Description/Comments
vduid Yes The EDU ID of a current call.
phonenumber Yes Dialable number, UserID, or ACD queue of the
phone that the call is to be transferred to.
Output Parameters
Examples
None.
[VTel.Transfer("2df5d9e6003b00007800002a1f430002","George")]
TransferCancel
IDL Syntax ORBStatus TransferCancel( in string vduid );
Description Ends a consultative transfer by disconnecting the additional party and taking the
original conversation(s) off hold.
Input Parameters
Name Required Description/Comments
vduid Yes The EDU ID of a current call.
Output Parameters
None.
Examples
[VTel.TransferCancel("2df5d9e6003b00007800002a1f430002")]
TransferComplete
IDL Syntax ORBStatus TransferComplete( in string vduid );
Description Ends a consultative transfer by connecting the additional party to the original
conversation(s), and disconnecting the initiating agent from the call. The initiating agent will typically retain the EDU and move to WrapUp state, unless a different VTel configuration option has been selected, or a preset state has been set. For more information, see Phone states after hang up
74 VTel Programmer Guide
on page 18.
Input Parameters
VTel methods (requests from other applications)
Name Required Description/Comments
vduid Yes The EDU ID of a current call.
Output Parameters
Examples
None.
[VTel.TransferComplete("2df5d9e6003b00007800002a1f430002")]
TransferInit
IDL Syntax ORBStatus TransferInit( in string vduid, in string
phonenumber );
Description Begins a consultative transfer. The current conversation(s) are put on hold, and
an outbound call is placed to an additional party, using the same EDU ID as the previous call.
Input Parameters
Name Required Description/Comments
vduid Yes The EDU ID of a current call.
phonenumber Yes Dialable number, UserID, or ACD queue of the
phone that the call is to be transferred to.
Output Parameters
Examples
None.
[VTel.TransferInit("2df5d9e6003b00007800002a1f430002","George")]
VDUCreate
IDL Syntax ORBStatus VDUCreate( in SeqCouple values, out string
vduid );
Description Creates a unique Electronic Data Unit (EDU) for a phone call.
Issue 2.1 August 2003 75
Methods
Input Parameters
Output Parameters
Name Required Description/Comments
values Yes Zero or more name/value pairs to place into
the new EDU.
Name Description/Comments
vduid Identifies the newly created EDU.
Examples
[VTel.VDUCreate({2,2,{"account","12345"},{"color","green"}},)] [VTel.VDUCreate.response(,{2,2,{"account","12345"},{"color","green"}},
"2df5d9e6003b00007800002a1f430002")]
Notes You may not specify the EDU ID. This is assigned by Avaya Computer Telephony
for IC.
You must explicitly terminate any EDUs that are created with VDUCreate(). Use Terminate() to do so.
VDUFindVDU
IDL Syntax ORBStatus VDUFindVDU( in string criteria, out SeqString
values );
Description Retrieves a list of all EDUs in Avaya Computer Telephony for IC that match the
given criteria, including both active calls and those stored in the DUStore Server.
Input Parameters
Name Required Description/Comments
criteria Yes The search criteria to be used. The criteria are the same
Output Parameters
Name Description/Comments
values A list of EDU IDs matching the criteria.
76 VTel Programmer Guide
as those used by the EDU Server for event monitoring. See Electronic Data Unit Server Programmer Guide
for
more information on event monitoring.
VTel methods (requests from other applications)
Examples [VTel.VDUFindVDU("login_id=Joe",{0,0})]
Notes The EDU may exist anywhere in Avaya Computer Telephony for IC.
This method requires that the DUStore Server be available.
VDUGetActive
IDL Syntax ORBStatus VDUGetActive( out SeqString vduidvalues );
Description Returns a list of all EDU IDs currently being monitored by VTel. These EDU IDs
may or may not be related to a current phone conversation. Connected applications may enter or change information in these EDUs; any changes will result in notification events.
Input Parameters
Output Parameters
Examples
None.
Name Description/Comments
vduidvalues A list of all EDU IDs currently active in VTel.
[VTel.VDUGetActive({0,0})] [VTel.VDUGetActive.response(,{2,2,"2df5d9e6003b00007800002a1f430002", "2df5d9e6003b00007800003bff430002"})]
VDUGetData
IDL Syntax ORBStatus VDUGetData( in string vduid, out SeqCouple
values );
Description Retrieves all values from an EDU, which may reside anywhere in Avaya
Computer Telephony for IC.
Input Parameters
Name Required Description/Comments
vduid Yes Any EDU in Telephony.
Issue 2.1 August 2003 77
Methods
Output Parameters
Name Description/Comments
values Values of all data elements currently in the EDU.
Examples
Notes This method may return a large number of data elements. Be sure to allow
[VTel.VDUGetData("2df5d9e6003b00007800002a1f430002",{0,0})]
enough room for the response. While it can be limited by setting the maximum number to return, this is not very useful in this case as the ordering of return values is arbitrary and you cannot determine what has been missed.
VDUGetOneValue
IDL Syntax ORBStatus VDUGetOneValue( in string vduid, in string name,
out string value );
Description Retrieves one value from an EDU.
Input Parameters
Name Required Description/Comments
vduid Yes An EDU active in VTel.
name Yes EDU data element to be returned.
Output Parameters
Name Description/Comments
value Value of the specified data element.
Examples
Notes The EDU must currently exist within VTel.
[VTel.VDUGetOneValue("2df5d9e6003b00007800002a1f430002","ani",)]
VDUGetValues
IDL Syntax ORBStatus VDUGetValues( in string vduid, out SeqCouple
values );
78 VTel Programmer Guide
Description Retrieves all values from an EDU.
Input Parameters
Name Required Description/Comments
vduid Yes An EDU active in VTel.
Output Parameters
Name Description/Comments
values All data elements contained in this EDU.
VTel methods (requests from other applications)
Examples
[VTel.VDUGetValues("2df5d9e6003b00007800002a1f430002",{0,0})]
Notes The EDU must currently exist within VTel.
This method may return a large number of data elements. Be sure to allow enough room for the response. While it can be limited by setting the maximum number to return, this is not very useful in this case as the ordering of return values is arbitrary and you cannot determine what has been missed.
VDUSetCurrent
IDL Syntax ORBStatus VDUSetCurrent( in string vduid );
Description From the list of EDU IDs being monitored at the time, this method allows you to
select a single EDU ID to have the current focus. An event is sent to all GUI screens and all connected applications when the focus is changed to a different EDU.
Input Parameters
Name Required Description/Comments
vduid Yes EDU ID to be given the current focus.
Output
None.
Parameters
Issue 2.1 August 2003 79
Methods
Examples [VTel.VDUSetCurrent("2df5d9e6003b00007800002a1f430002")]
[VTel.VDUSetCurrent.response(,"2df5d9e6003b00007800002a1f430002")] [VTel.VDUCurrent.event({0,"VDUCurrent",{{1,1,{"vdu_id",
"2df5d9e6003b00007800002a1f430002"}}}})] [VTel.VDUSetCurrent("1234XXX")] [VTel.VDUSetCurrent.response("VTel:040002E0:VDUID not valid in
VTel","1234XXX")]
Notes Those GUI screens that present available calls will typically respond to this
immediately. This may cause another call to be put on hold and an abrupt change in the EDU information presented to the user. If the user initiates this change by selecting another call from a VTel GUI, the attached application will be notified. If an external application initiates this change, it must coordinate this action with the user interface to prevent the user from being "surprised" by the abrupt change in displayed information or by a phone conversation suddenly being put on hold.
VDUSetValues
IDL Syntax ORBStatus VDUSetValues( in string vduid, in SeqCouple
values );
Description Sets one or more values in an EDU.
Input Parameters
Name Required Description/Comments
vduid Yes An EDU active in VTel.
values Yes EDU data element(s) to be set.
Output
None.
Parameters
Examples
[VTel.VDUSetValues("2df5d9e6003b00007800002a1f430002",{2,2,{"ani",
"5089525120"},{"dnis","5084863244"}})]
Notes The EDU must currently exist within VTel.
For existing names the old values will be replaced. New names will produce additional entries. Duplicate names are not useful, because the last value entered for a given name will dominate.
80 VTel Programmer Guide
VTel methods (requests from other applications)
WrapUp
IDL Syntax ORBStatus WrapUp( in string phonenumber );
Description From within an ACD call, may either preset the WrapUp state or hang up the call,
placing the phone in the WrapUp state. For more information, see Phone states
after hang up on page 18.
Input Parameters
Name Required Description/Comments
phonenumber No Dialable number or null (default phone).
Output
None.
Parameters
Examples
[VTel.WrapUp("1234")] [VTel.WrapUp()]
Notes This method is dependent on the telephone switch and the type of phone
assigned. Refer to the IDL chapter of your Telephony Services manual.
WrapUpOverride
IDL Syntax ORBStatus WrapUpOverride( in string phonenumber );
Description If in call, and presets are on, changes the current preset to WrapUp and disallows
any attempts to change the preset for the remainder of the call unless by means of another override command (such as BusyOverride or ReadyOverride).
If not in call, or presets are not on, behaves like the WrapUp command.
Input Parameters
Name Required Description/Comments
phonenumber No Dialable number or null (default phone).
Output
None.
Parameters
Examples
[VTel.WrapUpOverride("1234")] [VTel.WrapUpOverride()]
Issue 2.1 August 2003 81
Methods
Notes This method is dependent on the telephone switch and the type of phone
assigned. Refer to the IDL chapter of your Telephony Services manual.
get_timeout
IDL Syntax ORBStatus get_timeout( out unsigned long number );
Description Returns the current value of the Toolkit timeout, which is the length of time the
Toolkit will wait for an acknowledgment for a transaction with Telephony.
Input
None.
Parameters
Output Parameters
Name Description/Comments
number Length of timeout in seconds.
Examples
[?.get_timeout()] [?.get_timeout.response(,32)67108881]
set_timeout
IDL Syntax ORBStatus set_timeout( in unsigned long number );
Description Sets the current value of the Toolkit timeout, which is the length of time the Toolkit
will wait for an acknowledgment for a transaction with Telephony.
Input Parameters
Name Required Description/Comments
number Yes Length of timeout in seconds.
Output
None.
Parameters
Examples
82 VTel Programmer Guide
[?.set_timeout(20)] [?.set_timeout.response(,20)67108885]
Chapter 6: Event notification
This section describes the VTel events. It contains the following topics:
Summary of events on page 84
Event messages to other applications on page 86
Issue 2.1 August 2003 83
Event notification
Summary of events
An application that has created a session with VTel may receive the following event messages from VTel:
Name Description
Announcement A new message has been broadcast.
Busy A phone is Busy and will not accept incoming calls.
BusyOutbound The phone called is busy.
BusyPreset The phone will be in Busy state after Hangup.
Conference A party has been added to a conference.
ConferenceCancel A conference call has been canceled. The new call has been
ConferenceComplete A conference call has been completed. The new call has been
terminated and the original party taken off hold.
established and the original party taken off hold.
ConferenceInit A conference call has been initialized. The original party was put
on hold and the new call has been placed.
Connect A phone connection has been made.
Disconnect A previous phone connection has been disconnected.
Drop A party has dropped out of a conference.
Exit VTel is about to terminate.
InCall An active call has been taken off hold, or a new call answered.
IncomingCall An incoming call has arrived.
Login User is logged into Telephony.
LoginTelephony User is logged into Telephony and EDU services.
Logout User is logged out of Telephony and phone is deassigned.
LogoutTelephony User is logged out of Telephony and EDU services.
LogoutVESP User is logged out of Telephony.
MakeCall A user has made an outbound call.
OnHold An active call has been put on hold.
Ready A phone is now available for incoming calls.
84 VTel Programmer Guide
Summary of events
Name Description
ReadyPreset The phone will be in Ready state after Hangup.
ResetPhones All current telephony activity has been cleared from VTel.
RingOutbound An outbound call has been placed, but not yet answered.
ServerFailed The Telephony Server or EDU Server has failed.
ServerRestart The Telephony Server or EDU Server has been restarted.
TerminateConnection This application connection to VTel is being terminated.
Transfer A blind transfer to another phone has occurred.
TransferCancel A consultative transfer has been canceled
TransferComplete A consultative transfer has been completed.
TransferInit A consultative transfer has been initialized. The original party
was put on hold and the new call has been placed.
VDUChange Some of the information associated with this EDU has changed.
VDUCurrent Within VTel, the single EDU that is currently in focus.
VDUTerminated An EDU is no longer active.
WrapUp A phone is in the WrapUp state, with the call disconnected but
call information still available for further work. In many systems the phone will not accept further incoming calls while in this state.
WrapUpPreset The phone will be in WrapUp state after Hangup.
Issue 2.1 August 2003 85
Event notification
Event messages to other applications
In many examples presented here, the vdu_id field has been truncated for a more convenient presentation. When using the vdu_id field, its value must be 32 characters long.
Announcement
Description A new announcement message has been broadcast.
Output Parameters
Name Description/Comments
Announcement The message that was broadcast.
Examples
[VTel.Announcement.event({0,"Announcement",{1,1,{"Announcement",
"Heavy activity expected today."}}})]
Busy
Description The phone state has changed to Busy.
Output Parameters
Name Description/Comments
phonenumber The name or number for the phone affected.
Examples
[VTel.Busy.event({0,"Busy",{1,1,{"phonenumber","devel2"}})]
BusyOutbound
Description The phone called is busy.
86 VTel Programmer Guide
Output Parameters
Event messages to other applications
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
called The phone number or login ID used to place the outbound
call.
Examples
[VTel.BusyOutbound.event({0,"BusyOutbound",{2,2,{"vdu_id",
"2df5d9e6003b00007800002a1f430002"},{"called","jsmith"}}})]
BusyPreset
Description A Busy preset has been established for a current call; the phone will become Busy
after the call is disconnected. For more information, see Phone states after hang
up on page 18.
Output Parameters
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
Examples
[VTel.BusyPreset.event({0,"BusyPreset",{1,1,{"vdu_id",
"2f562c0e0780261f4302"}}})]
Conference
Description A party has been added to a conference call.
Output Parameters
Name Description/Comments
dest A physical extension number or dialed external phone
orig The equipment number (physical phone number) of the
number. The event can contain multiple dest name/value pairs.
initiating agent.
Issue 2.1 August 2003 87
Event notification
Name Description/Comments
number_in_call A digit representing the number of parties now involved in
the conference.
vdu_id The EDU ID corresponding to the telephone call.
Examples [VTel.Conference.event({0,"Conference",{6,6,{"dest","4100"},
{"dest","4007"},{"dest","4001"},{"orig","4001"},{"number_in_call", "3"},{"vdu_id", "30a3911f00000000780000111f430002"}}})]
Notes The Conference event is sent to all the parties in the conference call (except for
the one just added).
More information may be associated with this event than is described above. This is dependent on your telephone switch. Refer to the Event chapter of your Telephony Services manual.
For notification of parties being dropped from a conference call, see Drop page 90.
ConferenceCancel
Description A conference call has been canceled. The call to the new party has been
terminated and the original conversation(s) have been taken off hold.
Output Parameters
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
Examples
[VTel.ConferenceCancel.event({0,"ConferenceCancel",{1,1,{"vdu_id",
"2f562aab7800261f430002"}}})]
ConferenceComplete
on
Description A conference call has been established. The new party has been conferenced in
and the original conversation(s) have been taken off hold.
88 VTel Programmer Guide
Output Parameters
Event messages to other applications
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
Examples
[VTel.ConferenceComplete.event({0,"ConferenceComplete",{1,1,{"vdu_id"
"2f562a7c0780261f430002"}}})]
ConferenceInit
Description A conference call has been initiated. The original conversation(s) have been put
on hold, and a call has been placed to a new party.
Output Parameters
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
Examples
[VTel.ConferenceInit.event({0,"ConferenceInit",{1,1,{"vdu_id",
"334be85900000000780000111f430002"}}})]
Connect
Description A telephone call has been connected.
Output Parameters
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
Examples
[VTel.Connect.event({0,"Connect",{1,1,{"vdu_id",
"2f562bfa0780261f430002"}}})]
Disconnect
Description A telephone call has been disconnected.
Issue 2.1 August 2003 89
Event notification
Output Parameters
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
Examples
[VTel.Disconnect.event({0,"Disconnect",{1,1,{"vdu_id",
"2f562c6d07861f43002"}}})]
Drop
Description While in a conference, one of the parties has disconnected (hung up) and dropped
out of the conference. This will also be received when the last party disconnects, but will then be immediately followed by a Disconnect.event.
Output Parameters
Name Description/Comments
dest The phone number of the party leaving the conference.
vdu_id The EDU ID corresponding to the telephone call.
Examples
Notes The Drop event is sent to all the parties remaining in the conference call.
[VTel.Drop.event({0,"Drop",{2,2,{"dest","4100"},{"vdu_id",
"30a3911f00000000780000111f430002"}}})]
More information may be associated with this event than is described above. This is dependent on your telephone switch. Refer to the Event chapter of your Telephony Services manual.
For notification of parties being added to a conference call, see Conference page 87.
Exit
Description Any valid login has ended and the VTel program is about to terminate.
Output Parameters
Examples
90 VTel Programmer Guide
None.
[VTel.Exit.event({0,"Exit",{0,0}})]
on
Event messages to other applications
InCall
Description A call has come off hold or a new call has been answered.
Output Parameters
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
Examples
[VTel.InCall.event({0,"InCall",{1,1,{"vdu_id",
"2f562bfa00780261f430002"}}})]
IncomingCall
Description A new call has arrived.
Output Parameters
Name Description/Comments
call_type Identifies call as ACD or direct.
vdu_id The EDU ID corresponding to the telephone call.
Examples
[VTel.IncomingCall.event({0,"IncomingCall",{2,2,{"call_type","direct"},
{"vdu_id","2f562bfa22"}})]
[VTel.IncomingCall.event({0,"IncomingCall",{2,2,{"call_type","ACD"},
{"vdu_id","2df5d9e622"}})]
Login
Description The user has logged in.
Output Parameters
Name Description/Comments
login_name Telephony login ID.
agent_name* Phone login ID.
Issue 2.1 August 2003 91
Event notification
Name Description/Comments
station_id* Station or equipment number of phoneset.
queue* Queue number agent is assigned to.
The inclusion of the station_id and queue parameters depends on the request that generates the event. See the examples for this event.
Examples If the request was Login:
[VTel.Login.event({0,"Login",{3,3,{"login_name","jsmith"},
{"agent_name","john"},{"station_id","553"}}})]
If the request was LoginACD:
[VTel.Login.event({0,"Login",{4,4,{"login_name","jsmith"},
{"agent_name","john"},{"station_id","553"},{"queue","4"}}})]
If the request was LoginVESP:
[VTel.Login.event({0,"Login",{1,1,{"login_name","jsmith"}}})]
LoginTelephony
Description The user has logged in to Telephony and EDU services: the user's telephone set
has been assigned.
Output Parameters
Name Description/Comments
login_name Telephony login ID.
agent_name Phone login ID.
station_id Station or equipment number of phoneset.
queue Queue number agent is assigned to.
Examples
[VTel.LoginTelephony.event({0,"LoginTelephony",{4,4,
{"login_name","jsmith"},{"agent_name","john"},
{"station_id","553"}, {"queue","4"}}})]
92 VTel Programmer Guide
Event messages to other applications
Logout
Description The user has logged out of Telephony and the user's telephone set has been
deassigned.
Output Parameters
Name Description/Comments
login_name Telephony login ID.
Examples
[VTel.Logout.event({0,"Logout",{1,1,{"login_name","jsmith"}}})]
LogoutTelephony
Description The user has logged out of Telephony and EDU services: the user's telephone set
has been deassigned.
Output Parameters
Name Description/Comments
login_name Telephony login ID.
Examples
[VTel.LogoutTelephony.event({0,"LogoutTelephony",{1,1,{"login_name",
"jsmith"}}})]
LogoutVESP
Description The user has logged out of Avaya Computer Telephony for IC.
Output Parameters
Name Description/Comments
login_name Telephony login ID.
Examples
[VTel.LogoutVESP.event({0,"LogoutVESP",{1,1,{"login_name","jsmith"}}})]
Issue 2.1 August 2003 93
Event notification
MakeCall
Description A user has placed an outbound call.
Output Parameters
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
Examples
[VTel.MakeCall.event({0,"MakeCall",{1,1,{"vdu_id",
"2f562c6d00780261f430002"}}})]
OnHold
Description A user has placed an active call on hold.
Output Parameters
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
Examples
[VTel.OnHold.event({0,"OnHold",{1,1,{"vdu_id",
"2f562bfa00780261f430002"}}})]
Ready
Description A phone is available for incoming ACD calls. In general, a phone can always
accept direct calls if a line appearance is available.
Output Parameters
Name Description/Comments
phonenumber The name or number for the phone affected.
Examples
94 VTel Programmer Guide
[VTel.Ready.event({0,"Ready",{1,1,{"phonenumber","devel2"}}})]
ReadyPreset
Description
A phone is preset to a Ready state after hangup. For more information, see Phone
states after hang up on page 18.
Output Parameters
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
Examples
[VTel.ReadyPreset({0,"ReadyPreset",
Event messages to other applications
{1,1,{"vdu_id","2df5d9e6003b007800002a1f430002"}}})]
ResetPhones
Description
All current telephony activity has been cleared from VTel.
Output Parameters
None.
Examples
[VTel.ResetPhones.event({0,"ResetPhones",{0,0}})]
RingOutbound
Description An outbound call has been placed, has reached its destination, and is ringing, but
has not yet been answered.
Issue 2.1 August 2003 95
Event notification
Output Parameters
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
Examples
[VTel.RingOutbound.event({0,"RingOutbound",{1,1,{"vdu_id",
"2f562a4a00780261f430002"}}})]
ServerFailed
Description If the Telephony Server or EDU Server fails, this event will be sent to all connected
applications.
Output Parameters
Name Description/Comments
interface Either Avaya TS (TS) or EDU Server (EDU).
Examples
[VTel.ServerFailed.event({0,"ServerFailed",{1,1,{"interface","TS"}}})]
ServerRestart
Description If the Telephony Server or EDU Server fails, and is then restarted, this event will
be sent to all connected applications.
Output Parameters
Name Description/Comments
interface Either Avaya TS (TS) or EDU Server (EDU).
Examples
[VTel.ServerRestart.event({0,"ServerRestart",{1,1,{"interface","TS"}}})]
TerminateConnection
Description A problem has caused VTel to terminate the connection to this application. This
event is received only by a single application. Typically, it is caused by the application failing to respond to a VTel Ping() request before the timeout.
96 VTel Programmer Guide
Event messages to other applications
Output Parameters
Examples
None.
[VTel.TerminateConnection.event({0,})]
Transfer
Description A blind transfer has been made.
Output Parameters
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
Examples
[VTel.Transfer.event({0,"Transfer",{1,1,{"vdu_id",
"2f562a4a00070261f430002"}}})]
TransferCancel
Description A consultative transfer has been canceled.
Output Parameters
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
Examples [VTel.TransferCancel.event({0,"TransferCancel",{1,1,{"vdu_id",
"2f562aab7800261f430002"}}})]
TransferComplete
Description A consultative transfer has been completed.
Output Parameters
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
Issue 2.1 August 2003 97
Event notification
Examples [VTel.TransferComplete.event({0,"TransferComplete",{1,1,{"vdu_id",
"2f562a7c0780261f430002"}}})]
TransferInit
Description A consultative transfer has begun. The original conversation(s) have been put on
hold, and a call has been placed to an additional party.
Output Parameters
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
Examples
[VTel.TransferInit.event({0,"TransferInit",{1,1,{"vdu_id",
"2f562aab00780261f430002"}}})]
VDUChange
Description New or additional information has been attached to this EDU. Only the new or
changed information is presented.
Output Parameters
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
Examples
[VTel.VDUChange.event({0,"VDUChange",{2,2,{"vdu_id",
"2df5f00655132"},{"notes","persistent customer"}}})]
VDUCurrent
Description At any point in time, a single EDU ID typically has the current focus for the user.
This may change due to a user action, an API request, or a Telephony event. A change in focus is reported by this event.
98 VTel Programmer Guide
Output Parameters
Event messages to other applications
Name Description/Comments
vdu_id The EDU ID now having the current focus.
Examples
[VTel.VDUCurrent.event({0,"VDUCurrent",{1,1,{"vdu_id", "30a393fb00000000780000111f430002"}}})]
VDUTerminated
Description VTel is no longer monitoring this EDU.
Output Parameters
Name Description/Comments
vdu_id The EDU ID corresponding to the telephone call.
Examples
[VTel.VDUTerminated.event({0,"VDUTerminated",{1,1,{"vdu_id",
"2f5628660080000261f430002"}}})]
WrapUp
Description The call has been disconnected (on-hook) but the EDU remains available for
additional work pertaining to this call. Depending on the configuration options and telephone switch, the phone may have been placed in a WrapUp mode and be unable to accept further ACD calls.
Output Parameters
Name Description/Comments
vdu_id A formerly active EDU ID monitored by VTel.
Examples
[VTel.WrapUp.event({0,"WrapUp",{1,1,{"vdu_id",
"2f56288300000000780000261f430002"}}})]
Issue 2.1 August 2003 99
Event notification
WrapUpPreset
Description A phone is preset to a WrapUp state after hangup. For more information, see
Phone states after hang up
Output Parameters
Name Description/Comments
vdu_id An active EDU ID monitored by VTel.
on page 18.
Examples
[VTel.WrapUpPreset.event({0,"WrapUpPreset",{1,1,{"vdu_id",
"2f5628830000780261f430002"}}})]
100 VTel Programmer Guide
Loading...