WO1998043150A2 - Browser user interface for internet telephony application - Google Patents

Browser user interface for internet telephony application Download PDF

Info

Publication number
WO1998043150A2
WO1998043150A2 PCT/US1998/005990 US9805990W WO9843150A2 WO 1998043150 A2 WO1998043150 A2 WO 1998043150A2 US 9805990 W US9805990 W US 9805990W WO 9843150 A2 WO9843150 A2 WO 9843150A2
Authority
WO
WIPO (PCT)
Prior art keywords
script
page
web
web browser
workstation
Prior art date
Application number
PCT/US1998/005990
Other languages
French (fr)
Other versions
WO1998043150A3 (en
Inventor
Malcom B. Strandberg
Robert J. Stent
Anthony Curreri
W. James Gillis, Jr.
John Cambray
B. Scott Smith
Original Assignee
Davox Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Davox Corporation filed Critical Davox Corporation
Priority to AU67775/98A priority Critical patent/AU6777598A/en
Publication of WO1998043150A2 publication Critical patent/WO1998043150A2/en
Publication of WO1998043150A3 publication Critical patent/WO1998043150A3/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Definitions

  • This invention relates to computer systems and more particularly, to a browser user interface for a client workstation in a client/server environment in which the client workstation utilizes a web browser type interface for mission critical applications and takes advantage of other web browser interface functions and features .
  • Graphical or non-graphical user interfaces must include specific binary code for each computer or operating system type which will utilize the interface. Although such interface code may reside on either a personal computer (PC) or on a file server, this separate network protocol is necessary for distribution of the operating interface. In addition, each computer running the interface will generate its own separate temporary files.
  • PC personal computer
  • file server this separate network protocol is necessary for distribution of the operating interface.
  • each computer running the interface will generate its own separate temporary files.
  • the present invention features a system including a web browser based operation critical client workstation.
  • the system includes a server computer including at least one web server, for servicing a number of connected web browser based client workstations.
  • At least one client workstation is connected to this server computer and responsive to the web server, receives web browser based information and displays web browser based information in a web page browser format.
  • the web based information received by the client workstation includes operation critical application information which is interactively displayed and utilized to perform an operation critical application directly from the client workstation.
  • the operation critical application can include a telephony application such as inbound telephone call servicing, outbound telephone call servicing or a combination of inbound and outbound telephone call servicing applications.
  • the client workstation can include an agent workstation or an agent supervisor workstation.
  • the operation critical application information may include audio and display animation information.
  • the invention also features a web browser based operation critical agent workstation for a telephony system which includes a server computer having at least a web server, for servicing a number of connected web browser based client workstations. Also included is at least one telephony system web browser based agent workstation which is coupled to the server computer and responsive to the web server. The at least one telephony system web browser based agent workstation receives web browser based information and displays the information in a web page browser format. The information received includes operation critical application information which is interactively displayed and utilized to perform an operation critical application such as a telephony application.
  • the web browser based agent workstation may include a script wizard, for allowing a user to generate at least one non-proprietary, industry standard active telephony object to handle a telephony application, and a host communication wizard, for allowing the user to generate at least one host connection active object to handle information exchange between the telephony system web browser based agent workstation and a host computer.
  • a script wizard for allowing a user to generate at least one non-proprietary, industry standard active telephony object to handle a telephony application
  • a host communication wizard for allowing the user to generate at least one host connection active object to handle information exchange between the telephony system web browser based agent workstation and a host computer.
  • the present invention includes a web browser based operation critical client workstation wherein at least one client workstation is coupled to a web server of a server computer. In response to the web server, at least one client workstation receives web browser based information and displays the information on a web page browser format.
  • the information received by the client workstation includes operation critical application information allowing a user at the client workstation to operate and control the operation critical application from the client workstation.
  • the client workstation may store persistent data to be used by the workstation within the workstation, for later reuse without accessing the server computer.
  • the invention features a web browser based client workstation, coupled to a web server, for executing HTML code and for displaying information in a web page browser format.
  • the client workstation further includes a HTML code generator, for generating on the client workstation, web browser based HTML code for display and operation on the client workstation.
  • the HTML code generator may further include a script wizard, for allowing a user to generate at least one non- proprietary, industry standard active object to control an application.
  • This embodiment may further include a host communication wizard, for allowing a user to generate at least one host connection, active object, to handle information exchange between the web browser based client workstation and a host computer.
  • Another embodiment of the present invention features a telephony system including a web browser based operation critical agent workstation and web browser based scripting.
  • the system includes a server computer having at least a web server, for servicing a number of connected web browser based agent workstations. At least one agent workstation is coupled to the server computer and responsive to the web server for receiving web browser based information and for displaying the information in a web page browser format.
  • the information received by the telephony system web browser based agent workstation includes operation critical telephony application information which is interactively displayed and utilized to perform a telephony operation critical application.
  • the web browser based information received by the agent workstation includes web browser based scripting information, for providing at least one script page to be displayed on the agent workstation, for providing information to be communicated to a telephony system customer, and for allowing an agent at the agent workstation to input information regarding the telephony system customer in at least one location in the script page displayed.
  • a further feature of this embodiment may include a number of script pages at least two of which can be displayed in a logical branch structure.
  • at least a first one of the script pages includes a predetermined message text comprising at least one question having at least two possible responses.
  • the agent workstation causes a branch to at least a second script page based on an agent's indication of a response to the question in the predetermined message text of the first script page.
  • the present invention features a telephony system including a web browser based operation critical agent workstation coupled to a computer server including at least a web server.
  • the telephony system web browser based agent workstation receives web browser based information and displays the information in a web page browser format on the workstation.
  • the web page information received by the agent workstation includes operation critical application information which is interactively displayed and utilized to perform a telephony operation critical application.
  • This embodiment also includes an agent workstation with a script wizard, for allowing a user to generate at least one non-proprietary, industry standard, telephony active object, as well as a host communication wizard, for allowing the user to generate at least one host connection active object for handling information exchange between the telephony system web browser based agent workstation and a host computer.
  • the operation critical application information includes display of web browser based information for allowing the agent workstation to control both voice and data relative to at least one telephony call .
  • the present invention features, in another embodiment, a web browser based operation critical client workstation, coupled to a server computer, for receiving and displaying information received from the server computer in a web page browser format.
  • the information received by the web browser based operation critical client workstation includes operation critical application information.
  • the server computer includes at least one proxy server, coupled to a source of information external to the server computer, for facilitating access to the data external to the server computer by the client workstation.
  • the client workstation includes at least one web browser based web page for communicating with the proxy server on the server computer, for requesting information from the proxy server which is external to the server computer, and for receiving external information from the data source external from the server computer through the proxy server.
  • a further feature of this embodiment allows the web browser based client workstation to access data from multiple sources generally simultaneously, and to display on one web page of the web browser based client workstation the data from multiple sources generally simultaneously.
  • the present invention additionally includes a system including a web browser based operation critical client workstation wherein the client workstation includes at least one client side active object.
  • the at least one client side active object can initiate and control the operation of at least one function without intervention of a server computer or a web server.
  • Fig. 1 is a block diagram of a system including a web browser based client workstation in accordance with the many embodiments of the present invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
  • client workstations 12 include a personal computer having a display 14 and a user input mechanism 16 such as a keyboard, keypad and/or mouse 16.
  • the personal computer (PC) of the client workstation 12 is typically run by an operating system such as Windows based program (Windows 95, Windows 97, Windows NT, etc.) or other operating system such as Unix.
  • interconnection 20 is an intranet connection and the client workstations 12 are reasonably local to (usually within the same room or building) as server computer 18. This is not, however, a limitation of the present invention as an internet connection 20 may also be utilized thus facilitating the client workstations 12 to be remote from the server computer 18 and the application computer 22, which will be described in greater detail below.
  • the client workstations 12 are generally local to the application server 22 and the server computer 18 given that the agents or other users of the client workstations 12 also require a voice data set 24 such as a telephone for telephone call processing.
  • the client workstations 12 may be coupled to the server computer 18 by means of a first telephone line 20 or by such other means as cable modem and cable line or other similar technology which exists now or may exist in the future.
  • a separate telephone line 26 provides voice communication to each of the voice data sets 24 at each of the client workstations 12.
  • server computer 18 is typically a separate kind of stand alone personal computer (PC) which typically services between 10 and 100 client workstations 12.
  • PC personal computer
  • server computer 18 Given the significant processing carried on in the server computer 18, better performance is realized in the system 10 by having a server computer 18 as a separate processor. This is not a tremendous financial burden given the low prices of personal computers at the present time.
  • the present invention contemplates a server computer 18 implemented on or as part of an application server 22, without departing from the scope of the present invention .
  • Server computer 18 includes a web server 28, as is well known in the art, which provides internet type service using web browser style information written in HTML code as is well known in the art.
  • Server computer 18 also includes proxy server 30 which may interface with web server 28 and provides access by the client workstation 12 to data outside of the server computer 18.
  • proxy server 30 may interface with web server 28 and provides access by the client workstation 12 to data outside of the server computer 18.
  • One limitation of internet type communication utilizing the HTTP protocol is level of security inherent in such present protocol. This level of security only allows a client workstation to communicate with one server computer 18. Accordingly, a client workstation 12 coupled to a server computer 18 having a particular IP address may only communicate with that web server 28 and may not communicate with and obtain data from outside or external sources.
  • the present invention features a proxy server 30 which utilizes a JDBC Java code based communication link 32 to each client workstation 12 to access external databases such as database 34 on application server 22, or a separate host or database 36 remote and external from the web server 28 and server computer 18.
  • each client workstation 12 includes a browser 38 such as Netscape or Microsoft Explorer. These tasks are considered "lightweight" in terms of processing requirements on the personal computer on which the client workstation 12 is implemented. As such, a high level of performance of the client workstation is essentially guaranteed.
  • a system in accordance with the present invention may include a network file sharer, such as a disk drive, in place of the proxy server, connected between the web server 18 and the application server 22.
  • each "page” may include one or more applets 40 which are typically Java code based and can be utilized to present "active" objects on the display 14 of each client workstation.
  • Such active objects include buttons which can be pushed, audio, display animation, and other well known active objects.
  • application server 22 is a separate computer such as a personal computer or workstation (such as the type manufactured by Sun Microsystems) which generally includes application software code 42, generally proprietary code written in one or more standard or non-standard programming languages.
  • An application code 42 directs the operation of the system including, in an exemplary embodiment, control of a telephone line switch 44 either internal to the application server 22 or more preferably external to application server 22 in the form of an automated call distributor (ACD) as is well known in the art.
  • ACD automated call distributor
  • the voice line switch 44 controls the switching of the line on one of the incoming telephone lines 46 to one of the voice data sets 24 at each of the client workstations 12.
  • the application server 22 coordinates the switching of voice of a particular telephone call with data associated with that telephone call which may be retrieved by one or more data bases 34, 36 or other data base or host system.
  • application server 22 also includes an interface to a supervisor workstation 50 which may be another personal computer running one or more applications 52.
  • supervisor workstation 50 includes one or more "wizards" which is a software programming tool which allows inexperienced users to quickly, easily, and with minimum knowledge of a program language, write various software programs or routines to accomplish various functions.
  • the present invention features a script wizard which allows a supervisor (for example a telephony agent supervisor) located at supervisor workstation 50 to create scripts and script pages containing scripts for use by the agents.
  • a supervisor for example a telephony agent supervisor
  • scripts are phrases including both text and active objects which are displayed on the agent' s client workstation display 14 to allow the user sitting at the client workstation 12 to perform an operation critical (also sometimes referred to as mission critical) application, such as a telephony application, from the client workstation.
  • an operation critical also sometimes referred to as mission critical
  • An additional wizard 54 provided by the present invention includes a host connection or connectivity wizard which allows the supervisor to easily, quickly and generally effortlessly determine and program first connections for a particular web browser based "page" displayed on the client workstation display 14 to be accessed through proxy server 30 of the server computer 18.
  • all scripts, script pages, close connections, and the like are stored on the application server 22 and accessed and distributed by the server computer 18 to the client workstations 12.
  • Utilizing web browser based "internet" features allows the present invention to present a platform portable, easy to install system and presents to the user of each client workstation 12, a familiar interface to a particular mission critical (considered to be functions critical to the businesses revenue) application.
  • a web browser was limited to casual search, reference and support functions due to the fact that the browser was easy to use and install.
  • previous web browser applications were typically not very responsive. Utilizing the present invention, however, and the techniques of the present invention, make the browser display responsive and able to manage the activity and state information required for operation or mission critical business use.
  • a feature of the present invention is the ability of the present system to provide a web browser based operation critical client workstation.
  • the present invention includes a web page cache 56 in each of the client workstations 12.
  • Each web page received from the web server 28 is stored or “cashed” in the cache 56 for later re-use by the browser 38. In this manner, the client workstation 12 does not have to request the page from the web server 28, thus greatly improving system performance.
  • a data store 58 is utilized to store information to be added to or merged with web page information stored in page cache 56. In the present invention, this information is received utilizing a message "socket" 60 in the form of a TRS message from the application server.
  • the application server 22 may be utilized to obtain initial customer identification information from the customer using, for example, DTMF touch tone signals from the customers telephone. Thus, the application server 22 can send a message over message socket 60 to a selected one client workstation 12.
  • That message may include a command to handle an incoming telephone call as well as identification information about the calling customer such as a customer number.
  • This information can be stored in data store 58 and when the client workstation is ready, this information can be merged with a selected web page stored in cache 56 to display, on the client workstation display device 14, specific information about the calling customer.
  • the data store 58 can provide data to one or more applets 40 running on one or more web pages and page cache 56 to utilize the JDBC connection 32 to proxy server 30 to retrieve more information about the calling party from one or more external data bases 34 or 36.
  • the browser user interface of the present invention can display, on the client workstation display 14, all of the information about the calling party/customer including name, address, telephone number, account balance and history, etc.
  • the application server 22 may utilize information about the calling party' s telephone number to lookup information about the calling party without having to request information from the customer. Utilizing such ANI information from an incoming telephone call is well known to those skilled in the art and considered to be within the scope of the present invention.
  • application server 22 also coordinates the generally simultaneous arrival of data from one or more external data sources 34, 36 on a display device 14 of a client workstation 12 along with the arrival of voice information over voice data set 24 at the same client workstation 12.
  • the present invention allows for mission or operation critical applications to be run from at least one client workstation 12.
  • An example of an application server includes the "Unison Call Center Management System" manufactured by Davox Corporation, the assignee of the present invention, and described, for example, in U.S. Patent Nos . 5,577,112, 5,381,470 and 5,592,543 incorporated herein by reference.
  • any reference to Unison is a reference to a Call Center Management System or other application server as is well known in the art.
  • any reference in the present exemplary description to "Lyricall” is understood to be a reference to a collection of software programs/tools which implement the exemplary embodiment of the present invention on the Davox Unison brand Call Center Management System, although this not a limitation of the present invention.
  • Other implementations and software, hardware or combinations thereof are considered to be within the scope of the present invention.
  • AdminApplet and by proxy AdminAppletDemo.
  • the sole purpose of this interface is to allow the hostconn and dataset applets to call into the admin applet by casting an applet to AdminApplet. They must cast to an interface and because of how the demo form of admin is built.
  • AdminApplet which extends Admin
  • AdminAppletDemo which extends AdminStub
  • this interface Note we only need in here the methods which will be called from other Java applets. Not those which will be called from JavaScript.
  • setUserField public abstract void setUserField ( String fieldName,
  • Agent Logon Logoff methods Note part of logon include connecting to wsapi and Sybase. When agent logs off we need to close these connections.
  • This method will change the loginStatus to LOGIN_STATUS_LOGGING_ON
  • connectionLost protected void connectionLost ( )
  • the Admin applet provides connectivity path to the Unison servers.
  • the Admin creates a connection to the Unison servers via the trs.msg package.
  • the Admin connects to the Unison WSAPI server.
  • the Admin is essentially a Davox specific communication mechanism for browser connectivity to the Unison system.
  • the Admin makes use of the trs.msg package to communicate directly to Unison servers. Due to the security restrictions on web browsers the connectivity to Unison servers is limited to the machine which downloads the applet to the browser. This will generate a requirement for a gateway server for connection to Unison servers that reside on more than one physical box.
  • the Admin also provides database connectivity by implementing the jdbc class.
  • the jdbc class Java Database Connectivity
  • the jdbc allows the Admin to communicate directly with the Sybase dataserver.
  • the jdbc Java Database Connectivity
  • ⁇ °i connection is also restricted .he same connectivity restraints which limit L nsg connectivity. Thus, if there is a need for connection to multiple dataservers which reside on separate physical boxes a gateway dataserver will have to be implemented.
  • the third communication path implemented by the Admin is the http communication. This is the native communication mechanism utilized by the web browsers and servers. This is used by the Admin to download the custom 'hit' screens.
  • This method will process a message buffer received from the Unison server.
  • This method will establish a communication path to the WSAPI server for a browser public boolean logon(String name, String password)
  • This method will process a received message that contains a prompt command.
  • This method will process the WSAPI enable command. This signifies audio connection — if applicable has been established with the Unison DSP. This command also contains the list of available campaigns that the agent is allowed to access. private void sendData(TrsMsgMsg msg)
  • This method handles a sendjdata command from the WSAPI server. This functions somewhat differently than the typical WSAPI connection.
  • the Admin accepts the command and performs the database lookup itself.
  • the 'form' parameter is the name of an html page to be displayed in the 'data' window of the browser.
  • the html page may have javascript wrapper functions to acquire database information from the Admin. private void removeData(TrsMsgMsg msg)
  • This method will, indirectly, remove the data from the 'data' window of the browser. This message is usually received in response to a valid INPU command. All database, tac and user fields are removed at this time.
  • This method will store tac field messages received by the WSAPI server.
  • the field information can be obtained by the public getTacFieldO method.
  • This method will set a user field. This field will persist until a removeData() method is received. The field can be retrieved with the getUserFieldfJ method. public void getUserField(String name)
  • This method will retrieve the value of the user field with name name. If the field cannot be obtained a null is returned.
  • This method will issue an add_camp command to the WSAPI server. This will add the user as an agent available to receive calls from the Unison system. public void campAddResponse(TrsMsgMsg msg)
  • This method will read the Unison call record from the campaign database.
  • the Camp class is used to store the retrieved information.
  • This method is u ⁇ d to update any database field in the call recoiu. This method must be called to ensure the data gets written to the database prior to a promptRespond() method invokation.
  • Database connectivity is performed using jdbc. This class allows access to the Sybase dataserver. Since the browsers are still at JVM 1.0.2 this requires obtaining the jdbc class directly from Sybase. The jdbc and the Sybase drivers are required to communicate to the Sybase dataserver.
  • the connectivity for the Admin is performed from the AdminSyb class.
  • the AdminSyb class performs a connection to the Sybase dataserver which houses the campaign database.
  • the AdminSyb also performs the database lookup and update for the Admin applet. Database reads are performed for every sendDataO command and database updates are performed at every promptRespondO command.
  • the WSAPI integration from Admin As opposed to a CLAPI integration, The first difference is in data presentation. The Admin is expecting the form to be an html page. The Admin will be responsible for passing the form data information on to the browser. The second major difference is that the Admin will manage database record integrity. The WSAPI will not be updating the database.
  • the Admin applet requires the Unison system to have a univtac with module was.c at was.c@@/main/uni2.1rel/4 or higher. • The Admin applet requires a new version of WSAPI that handles trsmsg connections.
  • AdminApplet extends Admin implements ActionListener, Adminlnterface
  • Java implementation of the admin bui panel Presents agent controls and handles agent input events.
  • Agent is logged on and ready to recieve calls
  • stats collector applet Called by the stats collector applet when stats are available to be displayed. We don't enable the stats tab until then.
  • Handle agent logoff request Turns the logoff button's busy indicator on to let agent know a logoff is pending.
  • This class allows the admin applet to display URLs in the browser on a non JavaScript thread.
  • IE 4.0 has a "bug" where when a call is made from JavaScript to a Java applet and the Java applet then calls showDocument, the showDocument takes 5 to 10 seconds to complete. By doing the showDocument on a new thread, and hence not on a JavaScript thread, we avoid this problem
  • LEDs Panel of status lights
  • TYPE 1 Track method calls. Green : Neutral (no action in progress). This is the default Yellow: Processing a method. LED will go green when method complete. Red : Error occured in method.
  • TYPE 2 Track boolean flags. Green : Flag is off. Yellow: Flag is on.
  • Debug LED For use in creating panels of LED for runtime debugging. An LED communicates it state by it's color. An LED can be one of four colors. GRAY : Off GREEN : On RED : Error BLUE : On, after an error has previously occured
  • ADMPRTRANS public final static t ADMPRTRANS
  • ADMPROCTRANS public f inal static int ADMPROCTRANS
  • ADMPROCSTRANS public f inal static int ADMPROCSTRANS
  • ADMPREXCLUDE public f inal stat ic int ADMPREXCLUDE • ADMPROCEXCLUDE public final static int ADMPROCEXCLUDE
  • DSHash stores by dataset name the dataset vectors.
  • getVector(String) get a data set by passing the vector init() 1 row(String, String) row( "zzz”, “1 ") - sets currentrow to 1 row( "zzz", “.”) - no change, return current row row( "zzz", “+”) - sets the DS current row + 1 row( "zzz", “END”) - sets the DS last row row( "zzz.5", match) - sets the DS current row where col 5 match NOTE: this is the only row command with dotted tag ".” row( "zzz", “0") - sets currentrow to colname row if any modification is done to row 0 the entire
  • Hashtable DSHash stores by dataset name the dataset vectors, dataset names cannot include any dot ".” chars, column names cannot include ".*" column names cannot start with "*” column names cannot be the string "0"
  • Vector DS install a data set by passing the vector
  • match count 0 (above should be a java script table)
  • row (tag, cmd) has 8 variations, and does most of the mgmt row returns currentrow or 0 if empty, nomatch, or past end getData (tag) has 3 variations, returning string lists setData (tag, string) has 3 variations note: row numbers and column numbers start at 1 row ( 'zzz", “1") - sets currentrow to first row row( 'zzz", “.") - no change, return current row row ( 'zzz", “+”) - sets the DS current row + 1 row ( 'zzz", "END”) - sets the DS last row row ( 'zzz.5", match) - sets the DS current row where col 5 match row ( 'zzz" , "0") - sets currentrow to colname row if any modification is done to row 0 the entire DS is deleted row ( zzz "ADD”) - adds a new row after current row row ( 'zzz' “DEL”) - deletes the current row g/setData( "zzz.5")
  • HostConn (HOST) applet changes to support DS applet
  • the load properties are the same, but a "x.y.*” property will be looked for instead of an "x.y.z” property.
  • one of the 3 optional load properties otherwise is loads a single column DS : with select z from y
  • HOST HostConn additions: on HOST. getData x.y.z for DS marked x if x.y.* is empty, HOST will load DS with setData ("y, ", data) if the Props. host file has DS data, otherwise will request a Vector from JDBC applet and load DS with setVector () will call Host execute putting result in a Vector NOTE will check to see if the Vector contains multiple result sets, will call DS. setVector ("x:y”, ) or if multiple result sets saves each DS will call DS. setVector ("x:yl”, ) will call DS. setVector ("x:y2", ) otherwise once DS is indicated as loaded, will call DS applet with getData ( "x : y . z” ) for non host loaded datasets, screenlogic can call DS applet directly
  • updateData ( x.y.* ) - will update entire DataSet, even if no known Changes changeData ( x.y.* ) - will tell if known changes
  • HostConn extends HostCommon hostconn - dispatch applet, all HostData requests come through this applet which are mapped by strings in Props. host file and dispatched to the appropriate hostconn applet local copies of all data are cached here in LocalData author malcom version 1.16 10/21/97
  • propsPath public String propsPath if set, used as path +/props.host and +/file.csv if not set defaults to Props.host and ../forms/maps/file.csv
  • DSROW(ds. val) and incrementor and logic DSROW(ds col match) does DS row(ds col, match) and DSROW(ds +) does DS row(ds,"+”) if DSROW() fails (returns 0), macro is stopped at that point and returns st ⁇ ng up to that point
  • DSIF(col ⁇ match) checks numeric col ⁇ match if any DSIF() fails, the next loop of the DSFOR is tried, if not in a DSFOR the macro is stopped at that point and returns string up to that point
  • JDBCsybase extends HostCommon implements Runnable hostconn - any jdbc (sybase,oracle,%) applet author malcom
  • sendAgentContacts() Descr: Sends a query to the STS server to obtain the number of contacts for all the agents associated with this agent's Campaigns. . sendAgentNameQ
  • sendAgentTermCodes() Descr: Sends a query to the STS server to obtain all Term Codes and Term Code numbers for the agent for their applications and campaigns. » sendAgentTimeQ
  • Descr Creates but does not display the DisplayStats popup window. » stopQ . sts GetAgentlDQ
  • Agent name . sts GetApplication(int)
  • statsAvail public boolean statsAvail
  • Descr Creates but does not display the DisplayStats popup window. If Successful connection to the STS Server, starts the STSRecv thread for receiving TrsMsgs from the server and spawns the STSRecv thread.
  • FetchStats thread to request data from the server. Finally, tries to connent to the Unison database to retrieve and store (locally) Term Code definition data.
  • TrsMsgMsg taken from the STS server and calls the correct processing routine based on the fetchState flag. No action for a null message receipt or if the message is a non-expected one.

Abstract

A client workstation (12) including: a web browser for use as a user interface to an application such as telephony application; a script wizard for allowing a user to generate objects to handle such applications; an object to handle communication between the client workstation (12) and a server (18); a memory (58) for storing persistant data; a proxy server (30) to facilitate access to external data sources (36); and means to display (14) data from multiple sources simultaneously on one web page.

Description

BROWSER USER INTERFACE FOR CLIENT WORKSTATION
RELATED APPLICATION
This application is related to and claims the benefit of Provisional U.S. Patent Application Number 60/042,063 entitled Browser User Interface for Scripting, filed by the
Assignee of the present invention, and incorporated herein by reference.
FIELD OF THE INVENTION
This invention relates to computer systems and more particularly, to a browser user interface for a client workstation in a client/server environment in which the client workstation utilizes a web browser type interface for mission critical applications and takes advantage of other web browser interface functions and features .
BACKGROUND OF THE INVENTION In the past, user interfaces to various computer applications have utilized custom designed, application specific, graphical and non-graphical user interfaces. The problems with these custom design graphical or non-graphical user interfaces are that they are not industry standard, often have a significant training or learning time, and non- uniform product behavior.
Graphical or non-graphical user interfaces must include specific binary code for each computer or operating system type which will utilize the interface. Although such interface code may reside on either a personal computer (PC) or on a file server, this separate network protocol is necessary for distribution of the operating interface. In addition, each computer running the interface will generate its own separate temporary files.
Given the significant volume of software now running on most computers, an additional software package which has its own "look and feel" will require training of the users to become familiar with the software package.
Accordingly, it would be advantageous to provide an industry standard, uniformly looking, uniformly behaving and uniformly accepted user interface for a mission critical application such as a telephony or other application.
SUMMARY OF THE INVENTION The present invention features a system including a web browser based operation critical client workstation. The system includes a server computer including at least one web server, for servicing a number of connected web browser based client workstations. At least one client workstation is connected to this server computer and responsive to the web server, receives web browser based information and displays web browser based information in a web page browser format. The web based information received by the client workstation includes operation critical application information which is interactively displayed and utilized to perform an operation critical application directly from the client workstation.
In one embodiment, the operation critical application can include a telephony application such as inbound telephone call servicing, outbound telephone call servicing or a combination of inbound and outbound telephone call servicing applications. The client workstation can include an agent workstation or an agent supervisor workstation. In addition, the operation critical application information may include audio and display animation information.
The invention also features a web browser based operation critical agent workstation for a telephony system which includes a server computer having at least a web server, for servicing a number of connected web browser based client workstations. Also included is at least one telephony system web browser based agent workstation which is coupled to the server computer and responsive to the web server. The at least one telephony system web browser based agent workstation receives web browser based information and displays the information in a web page browser format. The information received includes operation critical application information which is interactively displayed and utilized to perform an operation critical application such as a telephony application.
In this embodiment, the web browser based agent workstation may include a script wizard, for allowing a user to generate at least one non-proprietary, industry standard active telephony object to handle a telephony application, and a host communication wizard, for allowing the user to generate at least one host connection active object to handle information exchange between the telephony system web browser based agent workstation and a host computer.
In another embodiment, the present invention includes a web browser based operation critical client workstation wherein at least one client workstation is coupled to a web server of a server computer. In response to the web server, at least one client workstation receives web browser based information and displays the information on a web page browser format. The information received by the client workstation includes operation critical application information allowing a user at the client workstation to operate and control the operation critical application from the client workstation. In this embodiment, the client workstation may store persistent data to be used by the workstation within the workstation, for later reuse without accessing the server computer. In yet another embodiment of the present invention, the invention features a web browser based client workstation, coupled to a web server, for executing HTML code and for displaying information in a web page browser format. The client workstation further includes a HTML code generator, for generating on the client workstation, web browser based HTML code for display and operation on the client workstation. In this embodiment, the HTML code generator may further include a script wizard, for allowing a user to generate at least one non- proprietary, industry standard active object to control an application. This embodiment may further include a host communication wizard, for allowing a user to generate at least one host connection, active object, to handle information exchange between the web browser based client workstation and a host computer. Another embodiment of the present invention features a telephony system including a web browser based operation critical agent workstation and web browser based scripting.
The system includes a server computer having at least a web server, for servicing a number of connected web browser based agent workstations. At least one agent workstation is coupled to the server computer and responsive to the web server for receiving web browser based information and for displaying the information in a web page browser format. The information received by the telephony system web browser based agent workstation includes operation critical telephony application information which is interactively displayed and utilized to perform a telephony operation critical application.
In this embodiment, the web browser based information received by the agent workstation includes web browser based scripting information, for providing at least one script page to be displayed on the agent workstation, for providing information to be communicated to a telephony system customer, and for allowing an agent at the agent workstation to input information regarding the telephony system customer in at least one location in the script page displayed. A further feature of this embodiment may include a number of script pages at least two of which can be displayed in a logical branch structure. In this embodiment, at least a first one of the script pages includes a predetermined message text comprising at least one question having at least two possible responses. The agent workstation causes a branch to at least a second script page based on an agent's indication of a response to the question in the predetermined message text of the first script page.
In yet another embodiment, the present invention features a telephony system including a web browser based operation critical agent workstation coupled to a computer server including at least a web server. The telephony system web browser based agent workstation receives web browser based information and displays the information in a web page browser format on the workstation. The web page information received by the agent workstation includes operation critical application information which is interactively displayed and utilized to perform a telephony operation critical application.
This embodiment also includes an agent workstation with a script wizard, for allowing a user to generate at least one non-proprietary, industry standard, telephony active object, as well as a host communication wizard, for allowing the user to generate at least one host connection active object for handling information exchange between the telephony system web browser based agent workstation and a host computer. Further, in this embodiment, the operation critical application information includes display of web browser based information for allowing the agent workstation to control both voice and data relative to at least one telephony call .
The present invention features, in another embodiment, a web browser based operation critical client workstation, coupled to a server computer, for receiving and displaying information received from the server computer in a web page browser format. The information received by the web browser based operation critical client workstation includes operation critical application information. In this embodiment, the server computer includes at least one proxy server, coupled to a source of information external to the server computer, for facilitating access to the data external to the server computer by the client workstation. In this embodiment, the client workstation includes at least one web browser based web page for communicating with the proxy server on the server computer, for requesting information from the proxy server which is external to the server computer, and for receiving external information from the data source external from the server computer through the proxy server. A further feature of this embodiment allows the web browser based client workstation to access data from multiple sources generally simultaneously, and to display on one web page of the web browser based client workstation the data from multiple sources generally simultaneously.
The present invention additionally includes a system including a web browser based operation critical client workstation wherein the client workstation includes at least one client side active object. The at least one client side active object can initiate and control the operation of at least one function without intervention of a server computer or a web server.
DESCRIPTION OF THE DRAWINGS
These and other features and advantages of the present invention will be better understood by reading the following detailed description, taken together with the drawings wherein:
Fig. 1 is a block diagram of a system including a web browser based client workstation in accordance with the many embodiments of the present invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
The present invention features a system 10, Fig. 1, including one or more web browser based client workstations 12. In the preferred embodiment, client workstations 12 include a personal computer having a display 14 and a user input mechanism 16 such as a keyboard, keypad and/or mouse 16. The personal computer (PC) of the client workstation 12 is typically run by an operating system such as Windows based program (Windows 95, Windows 97, Windows NT, etc.) or other operating system such as Unix.
The client workstations 12 are coupled to a server computer 18 by means of an internet type interconnection 20 utilizing a HTTP protocol. In the preferred embodiment, interconnection 20 is an intranet connection and the client workstations 12 are reasonably local to (usually within the same room or building) as server computer 18. This is not, however, a limitation of the present invention as an internet connection 20 may also be utilized thus facilitating the client workstations 12 to be remote from the server computer 18 and the application computer 22, which will be described in greater detail below. In the case where the system 10 of the present invention is utilized to implement a telephony call center as in a disclosed exemplary implementation, the client workstations 12 are generally local to the application server 22 and the server computer 18 given that the agents or other users of the client workstations 12 also require a voice data set 24 such as a telephone for telephone call processing. In the case wherein the client workstations 12 are remote from the application server 22 and/or server computer 18, the client workstations may be coupled to the server computer 18 by means of a first telephone line 20 or by such other means as cable modem and cable line or other similar technology which exists now or may exist in the future. In this embodiment, a separate telephone line 26 provides voice communication to each of the voice data sets 24 at each of the client workstations 12.
In the exemplary embodiment, server computer 18 is typically a separate kind of stand alone personal computer (PC) which typically services between 10 and 100 client workstations 12. Given the significant processing carried on in the server computer 18, better performance is realized in the system 10 by having a server computer 18 as a separate processor. This is not a tremendous financial burden given the low prices of personal computers at the present time.
However, the present invention contemplates a server computer 18 implemented on or as part of an application server 22, without departing from the scope of the present invention .
Server computer 18 includes a web server 28, as is well known in the art, which provides internet type service using web browser style information written in HTML code as is well known in the art. Server computer 18 also includes proxy server 30 which may interface with web server 28 and provides access by the client workstation 12 to data outside of the server computer 18. One limitation of internet type communication utilizing the HTTP protocol is level of security inherent in such present protocol. This level of security only allows a client workstation to communicate with one server computer 18. Accordingly, a client workstation 12 coupled to a server computer 18 having a particular IP address may only communicate with that web server 28 and may not communicate with and obtain data from outside or external sources.
Accordingly, the present invention features a proxy server 30 which utilizes a JDBC Java code based communication link 32 to each client workstation 12 to access external databases such as database 34 on application server 22, or a separate host or database 36 remote and external from the web server 28 and server computer 18. In accordance with the present invention, each client workstation 12 includes a browser 38 such as Netscape or Microsoft Explorer. These tasks are considered "lightweight" in terms of processing requirements on the personal computer on which the client workstation 12 is implemented. As such, a high level of performance of the client workstation is essentially guaranteed. Alternatively, instead of a proxy server, a system in accordance with the present invention may include a network file sharer, such as a disk drive, in place of the proxy server, connected between the web server 18 and the application server 22. In a typical "web page" based information display, each "page" may include one or more applets 40 which are typically Java code based and can be utilized to present "active" objects on the display 14 of each client workstation. Such active objects include buttons which can be pushed, audio, display animation, and other well known active objects.
In accordance with the exemplary embodiment of the present invention, application server 22 is a separate computer such as a personal computer or workstation (such as the type manufactured by Sun Microsystems) which generally includes application software code 42, generally proprietary code written in one or more standard or non-standard programming languages. An application code 42 directs the operation of the system including, in an exemplary embodiment, control of a telephone line switch 44 either internal to the application server 22 or more preferably external to application server 22 in the form of an automated call distributor (ACD) as is well known in the art. In the exemplary embodiment, the voice line switch 44 controls the switching of the line on one of the incoming telephone lines 46 to one of the voice data sets 24 at each of the client workstations 12. The application server 22 coordinates the switching of voice of a particular telephone call with data associated with that telephone call which may be retrieved by one or more data bases 34, 36 or other data base or host system.
In the present exemplary embodiment, application server 22 also includes an interface to a supervisor workstation 50 which may be another personal computer running one or more applications 52. In the preferred embodiment, supervisor workstation 50 includes one or more "wizards" which is a software programming tool which allows inexperienced users to quickly, easily, and with minimum knowledge of a program language, write various software programs or routines to accomplish various functions.
For example, the present invention features a script wizard which allows a supervisor (for example a telephony agent supervisor) located at supervisor workstation 50 to create scripts and script pages containing scripts for use by the agents. As is well known in the telephony industry, scripts are phrases including both text and active objects which are displayed on the agent' s client workstation display 14 to allow the user sitting at the client workstation 12 to perform an operation critical (also sometimes referred to as mission critical) application, such as a telephony application, from the client workstation. An additional wizard 54 provided by the present invention includes a host connection or connectivity wizard which allows the supervisor to easily, quickly and generally effortlessly determine and program first connections for a particular web browser based "page" displayed on the client workstation display 14 to be accessed through proxy server 30 of the server computer 18.
In the present exemplary embodiment of the present invention, all scripts, script pages, close connections, and the like are stored on the application server 22 and accessed and distributed by the server computer 18 to the client workstations 12.
Utilizing web browser based "internet" features, allows the present invention to present a platform portable, easy to install system and presents to the user of each client workstation 12, a familiar interface to a particular mission critical (considered to be functions critical to the businesses revenue) application. Up until now, using a web browser was limited to casual search, reference and support functions due to the fact that the browser was easy to use and install. However, previous web browser applications were typically not very responsive. Utilizing the present invention, however, and the techniques of the present invention, make the browser display responsive and able to manage the activity and state information required for operation or mission critical business use.
In the prior art, (particularly "mission critical" or essential applications), had their own "look and feel" which were programmed using a graphically user interface and propriety software. This required much learning by the user in order to become familiar with all of the features of the application. The present invention overcomes these limitations by using an internet type browser, such as Netscape or Microsoft Explorer which is now familiar to nearly everyone, and which, in the present invention, is utilized to display web page browser formatted information to the user in a style that he or she is accustomed to seeing. In addition, the users are generally familiar with and in fact need only become familiar with one "set" of tools and toolbars for the browser in order to be able to effectively and efficiently utilize the mission critical application implemented on the system of the present invention. Accordingly, a feature of the present invention is the ability of the present system to provide a web browser based operation critical client workstation.
Because typical mission critical or operation critical applications typically utilize identical or nearly identical "pages" of web browser based information, the present invention includes a web page cache 56 in each of the client workstations 12. Each web page received from the web server 28 is stored or "cashed" in the cache 56 for later re-use by the browser 38. In this manner, the client workstation 12 does not have to request the page from the web server 28, thus greatly improving system performance.
In connection with page cache 56, another feature of the present invention is the provision of a data store 58 in each of the client workstations. A data store 58 is utilized to store information to be added to or merged with web page information stored in page cache 56. In the present invention, this information is received utilizing a message "socket" 60 in the form of a TRS message from the application server. The following example is useful to explain the data store 58. For example, if one particular mission critical application being run by the client workstation 12 is to handle incoming telephone calls from customers, the application server 22 may be utilized to obtain initial customer identification information from the customer using, for example, DTMF touch tone signals from the customers telephone. Thus, the application server 22 can send a message over message socket 60 to a selected one client workstation 12. That message may include a command to handle an incoming telephone call as well as identification information about the calling customer such as a customer number. This information can be stored in data store 58 and when the client workstation is ready, this information can be merged with a selected web page stored in cache 56 to display, on the client workstation display device 14, specific information about the calling customer. Utilizing another feature of the present invention often termed as "push" technology, the data store 58 can provide data to one or more applets 40 running on one or more web pages and page cache 56 to utilize the JDBC connection 32 to proxy server 30 to retrieve more information about the calling party from one or more external data bases 34 or 36. In this manner, although the calling party/customer may have input only his or her customer number, the browser user interface of the present invention can display, on the client workstation display 14, all of the information about the calling party/customer including name, address, telephone number, account balance and history, etc. Alternatively, the application server 22 may utilize information about the calling party' s telephone number to lookup information about the calling party without having to request information from the customer. Utilizing such ANI information from an incoming telephone call is well known to those skilled in the art and considered to be within the scope of the present invention. Additionally, application server 22 also coordinates the generally simultaneous arrival of data from one or more external data sources 34, 36 on a display device 14 of a client workstation 12 along with the arrival of voice information over voice data set 24 at the same client workstation 12. Thus, the present invention allows for mission or operation critical applications to be run from at least one client workstation 12.
An example of an application server includes the "Unison Call Center Management System" manufactured by Davox Corporation, the assignee of the present invention, and described, for example, in U.S. Patent Nos . 5,577,112, 5,381,470 and 5,592,543 incorporated herein by reference. In the present description, any reference to Unison is a reference to a Call Center Management System or other application server as is well known in the art. In addition, any reference in the present exemplary description to "Lyricall" is understood to be a reference to a collection of software programs/tools which implement the exemplary embodiment of the present invention on the Davox Unison brand Call Center Management System, although this not a limitation of the present invention. Other implementations and software, hardware or combinations thereof are considered to be within the scope of the present invention.
Modifications and substitutions by one of ordinary skill in the art are considered to be within the scope of the present invention which is not to be limited except by the claims which follow.
What is claimed is:
All Packages Class Hxerarchy This Package Previous Next Index
Interface davox.admin.Adminlnterface public interface Adminlnterface
Interface implemented by AdminApplet (and by proxy AdminAppletDemo). The sole purpose of this interface is to allow the hostconn and dataset applets to call into the admin applet by casting an applet to AdminApplet. They must cast to an interface and because of how the demo form of admin is built. In short we end up with two applets AdminApplet which extends Admin AND AdminAppletDemo which extends AdminStub As you can see there is no common base class which could be casted too. Hence the use of this interface. Note we only need in here the methods which will be called from other Java applets. Not those which will be called from JavaScript.
Figure imgf000017_0001
• getAgentNameO . getAgentPassword() . getDBField(String)
. getTacField(Stπng) » getUserField(String) . setDBFieId(String, String) . setUserField(String, String)
Figure imgf000017_0002
β getDBField public abstract String getDBField (String field)
• setDBField public abstract boolean setDBField (String field,
String value) β getTacField public abstract String getTacFiel ( String field)
• setUserField public abstract void setUserField ( String fieldName,
\ String fieldValue) β getUserField public abstract String getUserField (String field)
• getAgentName public abstract String getAgentName ( )
• getAgentPassword public abstract String getAgentPassword ( )
All Packages Class Hierarchy This Package Previous Next Index
u All Packages Class Hierarchy This Package Previous Next Index
Class davox.admin.Admin
3ava. lang. Object
+ I ]ava . awt .Component
+ 3ava . awt . Container
I
+ j-ava . awt . Panel
I
+ Java. applet .Applet
I
+ davox . admin .Admin
public class Admin extends Applet
Abstract base class to communicate with the Unison WSAPI server. An Admin applet must extend this class and provide implementations for the abstract methods.
£jp- frf- f jffiw.
* app_name
* client_host
Agent Logon/Logoff methods. - console
* form_name
* lastStatus
* leds
LED and debug support . LOGIN_STATUS_AVAIL . LOGIN_STATUS_A VAILING . LOGIN_STATUS_BREAK . LOGIN_STATUS_BREAKING . LOGIN_STATUS_LOGGING_OFF . LOGIN_STATUS_LOGGING_ON . LOGIN_STATUS_OFF . LOGIN_STATUS_UNKNOWN .. loginStatus
* priorStatus
J? - promptCount
• props
(ϋts mc or Irtώ ,
• Admin()
Figure imgf000020_0001
• admAvailResponse(int, String)
admCampAddResponse(int, String)
• admCampRemoveResponse(int, String)
• admCampsResponse(int, String, String, String)
• admConnectionLostQ
• admEnable(String)
• admExcludeResponse(int, String)
• admLogoffResponse()
• admLogonResponse(int, String)
Abstract methods which must be defined by a class which extends Admin.
• admMessage(String)
• admPopUp(String, int)
• admPrompt(String, int)
• admRemoveData()
• admSendData(String)
• admTacField(String, String)
» admUnavailResponse(int, String)
• avail()
• availResponse(TrsMsgMsg)
• campAdd(String, int)
» campAddResponse(TrsMsgMsg)
• campRemove(String)
• campRemoveResponse(TrsMsgMsg)
• connection Los t()
Handles error when we lose the connection to wsapi.
• continueLogon()
Called from WsapiLogon.class. . destroyO
Called by browser when applet is being destroyed. » exclude(String, String, String)
Excludes a record from any further dial attempts . excludeResponse(TrsMsgMsg)
• getAgentID()
Login ID » getCampaignNameQ . getCamps() . getClientHostO
Retrieve the ip address of the client system. . getDBField(String) . getTacField(String)
• getUserField(String)
• getVersion()
Admin applet version.
• init()
Applet initialization. . jsGetCampsResponse()
. jsLog(String) » ledError(int) . ledθff(int) . ledθn(int) » logoffO
Process a logoff request.
• logof Response(TrsMsgMsg)
Called when we receive the message from wsapi accepting or rejecting our request to logoff. » logon(String, String)
Logon to the Unison system.
• logPage(String)
Logging function for URLs. - process(TrsMsgMsg)
Process a received message from the WAS. » promptRespond(String)
• promptRespondTransfer(String, String)
Send message with transfer termcode and digits to dial
• setClientHost(String)
Sets the ip address of the client system. . setDBField(String, String)
• setUserField(String, String) » socketStressTest()
Diagnostic method to stress test our JDBC connection. . startO
Called by browser when applet needs to be started (or restarted). » stop()
Called by browser when applet needs to be stopped. » unavai )
• unavailResponse(TrsMsgMsg)
• vini()
Initialize a connection with WSAPI. » viniResponse()
Handles the response to the VINI message.
Figure imgf000021_0001
β LOGIN_STATUS JUNKNOWN public final static mt LOGIN_STATUS_UNKNOWN β LOGIN_STATUS_OFF public f inal static mt LOGIN_STATUS_OFF β LOGIN_STATUS_BREAK public final static t LOGIN_STATUS_BREAK
• LOGIN_STATUS_AVAIL public final static mt LOGIN_STATUS_AVAIL
• LOGIN_STATUS_LOGGING_ON public final static mt LOGIN_STATUS_LOGGING_ON
• LOGIN_STATUS_LOGGING_OFF public final static t LOGIN_STATUS_LOGGING__OFF
• LOGIN_STATUS_BREAKING public final static mt LOGIN_STATUS_BREAKING β LOGIN_STATUS_A VAILING public final static mt LOGIN_STATUS_AVAILING
• loginStatus public t loginStatus
** priorStatus public mt priorStatus
<* lastStatus public String lastStatus props public Properties props a promptCount public mt promptCount + form name
10 public String form_name
<i» app_name public String app_name
S> console protected Console console clientjhost protected String client_host
Agent Logon Logoff methods. Note part of logon include connecting to wsapi and Sybase. When agent logs off we need to close these connections.
<* leds public AdminLEDs leds
LED and debug support
Figure imgf000023_0001
• Admin public Admin ( )
Figure imgf000023_0002
• start public void start ( )
Called by browser when applet needs to be started (or restarted).
Overrides: start in class Applet
• stop public void stop ( )
Called by browser when applet needs to be stopped. In response we must stop or suspend all running threads.
Overrides:
1\ stop in class Applet
• destroy public void destroy ( )
Called by browser when applet is being destroyed In response we must free any resources which would not otherwise be garbage collected
Overrides: destroy in class Applet
• init public void ιnιt ( )
Applet initialization Called when applet first created Performs one time initialization
Overrides: mit in class Applet
• process protected void process (TrsMsg sg msg)
Process a received message from the WAS
Parameters: msg - message received from WSAPI
• setClientHost public void setClientHost ( String clιent_host )
Sets the ip address of the client system. In IE we are unable to determine this from Java code due to security exceptions To workaround it we use a cgi script to determine the client's ip One the admin applet is initialized it displays this "setchentip pi" in the screen frame which will call this method, setClιentHost(), then proceed to display the logon prompt in the screen frame
• getClientHost public String getClientHost ( )
Retrieve the ip address of the client system Call by stats collector
• logon public void logon (String name,
String password)
Logon to the Unison system This method will issue a request to the Unison system to logon with
c cL the name name and the password password Valid login name/password combinations are attained from the conftg dbo agent_defιne database table
This method will change the loginStatus to LOGIN_STATUS_LOGGING_ON
Parameters: name - login name to pass to the Unison system password - password to pass to the Unison system Returns: true if the command was successfully sent, false otherwise
• continueLogon protected void continueLogon ( )
Called from WsapiLogon class Continues the login process started when logon() called See logon() for details
• vini public void vim ( )
Initialize a connection with WSAPI WSAPI requires a VINI command before a logon command can be sent
• viniResponse public void viniResponse ( )
Handles the response to the VINI message This is where we send the actual agent logon request
• logoff public void logof f ( )
Process a logoff request This method will invoke a logoff request with a logoff level of LOGOFF JLEVEL_SOFT
• logofϊResponse public void logof fResponse ( Trs sgMsg msg)
Called when we receive the message from wsapi accepting or rejecting our request to logoff
• connectionLost protected void connectionLost ( )
Handles error when we lose the connection to wsapi Note this is only called from the WsapiRecv thread when an IOException occurs • get Version public String getVersion O
Admin applet version
• getCampaignName public String getCampaignName ( )
• getTacField public String getTacField (String field)
9 setUserField public void setUserField (String fieldName,
String fieldValue)
• getUserField public String getUserField (String field)
• promptRespond public boolean promptRespond (String text) β promptRespondTransfer public boolean promptRespondTransfer (String text,
String digits)
Send message with transfer termcode and digits to dial
Parameters: text - termcode <F08> or <F09> digits - the digits to dial Returns: true β getCamps public void getCamps ( ) β jsGetCampsResponse public void j sGetCampsResponse ( )
• campAdd public void campAdd( String camp, mt level)
1+ • campAddResponse public void campAddResponse (TrsMsgMsg msg )
• campRemove
• public void campRemove ( String camp )
• campRemoveResponse public void campRemoveResponse (TrsMsgMsg msg )
• avail public void avail ( )
• availResponse public void availResponse (TrsMsgMsg msg )
• unavail public void unavail ()
• unavailResponse public void unavailResponse (TrsMsgMsg msg) β getDBField public String getDBField (String field)
• setDBField public boolean setDBField (String field,
String value)
• exclude public boolean exclude (String app_name,
String field_name, String data)
Excludes a record from any further dial attempts
Returns: true
• excludeResponse public void excludeResponse (TrsMsgMsg msg )
Parameters:
I msg - TrsMsgMsg created by exclude
• jsLog public void j sLog ( String str )
• logPage public void logPage (String url)
Logging function for URLs.
Parameters: url - the address of the page to be loaded. Returns: none
• getAgentID public String getAgentID ( ) Login ID
Returns: agent_id
9 ledOn public void ledθn ( int led)
9 ledOff public void ledθf f ( int led)
• ledError public void ledError ( int led)
9 socketStressTest public void socketStressTest ( )
Diagnostic method to stress test our JDBC connection. This method loops infinitely sending a bogus termcode for the current call and rereading the database record. In effect, this continously excercises our WSAPI and Sybase connections with both reads and writes.
• admLogonResponse protected abs trac t void admLogonResponse ( int s tatusCode ,
String s tatusString ) Abstract methods which must be defined by a class which extends Admin. 9 admSendData protected abstract void admSendData ( String urlStnng )
9 admLogof Response protected abstract void admLogoffResponse ( )
9 admEnable protected abstract void admEnable ( String campaigns )
• admPrompt protected abstract void admPrompt (String promptStnng,
Figure imgf000029_0001
• admPopUp protected abstract void admPopUp (String promptStnng, mt size)
• admMessage protected abstract void admMessage ( String promptStnng )
• admRemoveData protected abstract void admRemoveData ( )
9 admTacField protected abstract void admTacField (String tac_fιeld,
String tac_value)
• admCampsResponse protected abstract void admCampsResponse ( mt statusCode,
String statusStrmg, String campsOn, String campsAvail)
9 admCampAddResponse protected abstract void admCampAddResponse ( mt statusCode,
String statusStrmg)
9 admCampRemoveResponse protected abstract void admCampRemoveResponse ( t statusCode,
String statusStrmg)
n • admAvailResponse protected abstract void admAvailResponse ( mt statusCode ,
String statusStrmg )
9 admUnavailResponse protected abstract void admUnavailResponse (mt statusCode,
String statusStrmg)
9 admExcludeResponse protected abstract void admExcludeResponse ( mt statusCode,
String statusStrmg)
• admConnectionLost protected abstract void admConnectionLost ( )
All Packages Class Hierarchy This Package Previous Next Index
It . Overview
. Functionality
. Methods
. Database Connectivity
. WSAPI differences
Overview
The Admin applet provides connectivity path to the Unison servers. The Admin creates a connection to the Unison servers via the trs.msg package. The Admin connects to the Unison WSAPI server. There are subtle differences between the trsmsg connectivity to WSAPI compared to the CLAPI connection. See the differences section for detailed information about the changes.
Functionality
The Admin is essentially a Davox specific communication mechanism for browser connectivity to the Unison system. The Admin makes use of the trs.msg package to communicate directly to Unison servers. Due to the security restrictions on web browsers the connectivity to Unison servers is limited to the machine which downloads the applet to the browser. This will generate a requirement for a gateway server for connection to Unison servers that reside on more than one physical box.
The Admin also provides database connectivity by implementing the jdbc class. The jdbc class (Java Database Connectivity) allows the Admin to communicate directly with the Sybase dataserver. The jdbc
λ°i connection is also restricted .he same connectivity restraints which limit L nsg connectivity. Thus, if there is a need for connection to multiple dataservers which reside on separate physical boxes a gateway dataserver will have to be implemented.
The third communication path implemented by the Admin is the http communication. This is the native communication mechanism utilized by the web browsers and servers. This is used by the Admin to download the custom 'hit' screens.
Methods
Admin
The following list the methods of the Admin class implemented by the Admin applet. There are more methods than described below. Those methods are intentionally undocumented as yet their functionality is in a state of flux. public void process(TrsMsgMsg msg)
This method will process a message buffer received from the Unison server. public boolean viniO
This method will establish a communication path to the WSAPI server for a browser public boolean logon(String name, String password)
This method will log the agent into the Unison system with the name and the password. public void prompt(TrsMsgMsg msg)
This method will process a received message that contains a prompt command. private void enable(TrsMsgMsg msg)
This method will process the WSAPI enable command. This signifies audio connection — if applicable has been established with the Unison DSP. This command also contains the list of available campaigns that the agent is allowed to access. private void sendData(TrsMsgMsg msg)
This method handles a sendjdata command from the WSAPI server. This functions somewhat differently than the typical WSAPI connection. The Admin accepts the command and performs the database lookup itself. The 'form' parameter is the name of an html page to be displayed in the 'data' window of the browser. The html page may have javascript wrapper functions to acquire database information from the Admin. private void removeData(TrsMsgMsg msg)
This method will, indirectly, remove the data from the 'data' window of the browser. This message is usually received in response to a valid INPU command. All database, tac and user fields are removed at this time.
3D private void tacField sMsgMsg msg)
This method will store tac field messages received by the WSAPI server. The field information can be obtained by the public getTacFieldO method. public String getTacField(String field)
This method will retrieve the tac field value with the name field. If the field is unattainable a null is returned. public void setUserFieId(String name, String value)
This method will set a user field. This field will persist until a removeData() method is received. The field can be retrieved with the getUserFieldfJ method. public void getUserField(String name)
This method will retrieve the value of the user field with name name. If the field cannot be obtained a null is returned. public boolean promptRespond(String text)
This method will issue a prompt response to the WSAPI on behalf of the browser. public void campAdd(String camp)
This method will issue an add_camp command to the WSAPI server. This will add the user as an agent available to receive calls from the Unison system. public void campAddResponse(TrsMsgMsg msg)
The response to the add_camp command issued to the WSAPI server. public void availO
This method is invoked to take an agent off of break. public void availResponse(TrsMsgMsg msg)
The response to the avail command. public void unavail()
This command is issued to put the agent on break. public void unavailResponse(TrsMsgMsg msg)
This method handles the response to the unavail request. private void dbReadRecordQ
This method will read the Unison call record from the campaign database. The Camp class is used to store the retrieved information. public boolean setDBField(String field, String value)
1\ This method is u^d to update any database field in the call recoiu. This method must be called to ensure the data gets written to the database prior to a promptRespond() method invokation.
Database Connectivity
Database connectivity is performed using jdbc. This class allows access to the Sybase dataserver. Since the browsers are still at JVM 1.0.2 this requires obtaining the jdbc class directly from Sybase. The jdbc and the Sybase drivers are required to communicate to the Sybase dataserver. The connectivity for the Admin is performed from the AdminSyb class. The AdminSyb class performs a connection to the Sybase dataserver which houses the campaign database. The AdminSyb also performs the database lookup and update for the Admin applet. Database reads are performed for every sendDataO command and database updates are performed at every promptRespondO command.
WSAPI differences
There are only two major points of difference with the WSAPI integration from Admin as opposed to a CLAPI integration. The first difference is in data presentation. The Admin is expecting the form to be an html page. The Admin will be responsible for passing the form data information on to the browser. The second major difference is that the Admin will manage database record integrity. The WSAPI will not be updating the database.
Notes
. The Admin applet requires the Unison system to have a univtac with module was.c at was.c@@/main/uni2.1rel/4 or higher. • The Admin applet requires a new version of WSAPI that handles trsmsg connections.
Δ L All Packages Class Hierarchy This Package Previous Next Index
Class davox.admin.AdminApplet
3 ava . lang . Ob3 ect
I
+ ;j ava . awt . Component
I
+ j ava . awt . Container
I
+ 3 ava . aw . Panel
I
+ 3ava apple .Applet
I
+ davox . admin . Admin
I
+ davox . admin . AdminApplet
public class AdminApplet extends Admin implements ActionListener, Adminlnterface
Java implementation of the admin bui panel Presents agent controls and handles agent input events.
Figure imgf000035_0001
• AdminApplet()
Figure imgf000035_0002
. actionPerformed(Object)
Callback when one of the buttons in the admin applet is pressed. . addCampCookie(Stπng)
Called when camps.html is first displayed . admAbortPromptO
Abort a prompt and return agent back to call screen. . admAbortTransfer()
Callback when cancel selected in confirm transfer prompt » admAddCamp(Stπng)
Add a campaign to the agent's portfolio » admAvailO
Request to make agent available
J3 • admAvailResponse(int, String)
Callback from Unison to agent "ready to recieve calls" request » admCampAddResponse(int, String)
Called by admin in response to a campaign being added.
• admCampRemoveResponse(int, String)
Called by admin in response to a campaign being removed. » admCampsResponse(int, String, String, String)
Called by admin asynchronously after getCamps has been called.
• admCancelCamps()
Called when the "X" is selected in campaign selection page. » admCancelPromptO
Callback when X selected in extension.html.
• admConferenceTransfer(String)
Called from JavaScript when a term code is selected. » admConfirmTransfer()
Callback when check mark selected in confirm transfer prompt
admConnectionLostQ
Handle abnormal losing of connection to Unison server(s). » admEnable(String)
Agent is logged on and ready to recieve calls
• admExcludeResponse(int, String)
Called by Admin when an EXCLUSION term code response has been processed. » admGotoTab(String)
Call via JavaScript from "logandgo.html" to change from the call tab to another tab.
• admLogoff ()
Handle agent logoff request. » admLogoffResponse()
Handle the logoff response from Unison. . admLogonO
Presents the agent logon screen. » admLogonResponse(int, String)
Handle the logon response from Unison.
• admMessage(String)
Handle messages (was_send_msg). » admPopUp(String, int)
Handle popup messages (was_popup). . admProcessCamps()
Called when the check mark is selected in the campaign page.
• admProcessExcIude(String, String, String)
Called when check selected in exclude screen » admProcessLogon(String, String)
Handle agent logon request. » admProcessPrompt(String)
Callback when check selected in extension.html. » admProcessRecall(String)
Callback when check mark selected in recall prompt. . admProcessSilentTransfer(String, String)
it- Called from JavaScript to perform a tranfer without prompting for a number. » admProcessTransfer(String)
Callback when check mark selected in transfer prompt. . admPrompt(String, int)
Handle prompt messages. » admPromptRespond(String)
Called from JavaScript when a term code is selected. . admPromptRespondExcludeO
Called from JavaScript when an EXCLUDE term code is selected. » admPromptRespondRecall(String)
Called from JavaScript when a RECALL term code is selected. . admPromptRespondTransfer(String)
Called from JavaScript when a TRANSFER term code is selected.
• admRemoveCamp(String)
Removes a campaign to the agent's portfolio. . admRemoveDataO
Called by Unison to clear the hit screen and enter the "waiting for call" state. . admSendData(String)
Called by Unison to display a hit screen. . admTacField(String, String)
Called by Unison once for every TAC field associated with a new call. . admUnavailResponse(int, String)
Callback from Unison to agent's break request. . busyOff ()
Turn off the busy indicator . busyOn()
Turn on the busy indicator . clearTacStatusO
Clears the tac status frame. . getAgentMessages()
Return AgentMessages for formatting agent message page.
• getAgentName()
Allows agent name to be retrieved from other Java applets or JavaScript.
• getAgentPassword()
Allows agent password to be retrieved from other Java applets or JavaScript.
• getAvailCampO
Return the next available campaign. . getAvailCampCountO
Called from camps.html to begin the process of retrieving available campaigns. . getCampCookieO
Returns the list of selected campaigns for setting the campaigns cookie. . getExclusionData()
Return ExclusionData for formatting exclude prompt. » getJoinedCampO
Return the next selected campaign.
• getJoinedCampCountO
Called from camps.html to begin the process of retrieving selected campaigns.
S . getTacField()
Get a tac field. . getTacFieldCount()
Called from tac.html to retrieve the number of tac fields. . getTacStatus()
Called from tacstatus.html as a result of showTacStatus() being called.
• getTransferMsgO
Returns text to be displayed in head of transfer.html.
• handleEvent(Event)
Handle mouse events on the button.
• initQ
Initialize the admin applet.
• paint(Graphics)
Paint the background graphic.
• setStatsAvailable(boolean)
Called by the stats collector applet when stats are available to be displayed.
• showTacStatus(String)
Displays the message in the tac status frame.
• showUrl(String, String)
Instructs the browser to show a html file in the specified frame.
• update(Graphics)
Override update to prevent flashing.
Figure imgf000038_0001
9 AdminApplet public AdminApple ( )
Figure imgf000038_0002
• init public void init()
Initialize the admin applet. Creates the interface components and does a super.init() to let Admin. class do it's thing.
Overrides: init in class Admin
• actionPerformed public void actionPerforme (Obj ect obj )
Callback when one of the buttons in the admin applet is pressed. Dispatches the event for
k processing. The switching of tabs is complicated because when we go from the call tab to any other tab we want the url of the current hit screen such that when the call tab is reselected we return the agent to that url and not the start of the script. To do this must go through JavaScript to get the url of the current hit screen. This is done by displaying the file "logandgo.html" in a non viewable frame. This file calls admGotoTab passing it the url of the current hit screen. Only when admGotoTab is called do we actually change tabs. The url of the current hit screen is saved for use if the call tab is reselected.
Parameters: obj - The button which was pressed.
• admGotoTab public synchronized void admGotoTab ( String url )
Call via JavaScript from "logandgo.html" to change from the call tab to another tab. The route through JavaScript is used to allow the url of the current hit screen to be detected. Note, the termcode prompts have been also added as we know use logandgo as the route to display termcode prompts. This is such that if a termcode prompt is aborted we can return the agent to the correct url of the hit screen also.
Parameters: url - Url of current hit screen.
• setStatsAvailable public void setStatsAvailable (boolean b)
Called by the stats collector applet when stats are available to be displayed. We don't enable the stats tab until then.
• paint public void paint (Graphics g )
Paint the background graphic. Note the PictureButtons extend Canvas. They recieve their own paint messages.
Overrides: paint in class Container
9 update public void update (Graphics g)
Override update to prevent flashing.
Overrides: update in class Component
1 9 handleEvent public boolean handleEvent ( Event e)
Handle mouse events on the button. If state of the button will be set according to the event and the button's current state. The event listener for this button may be called.
Overrides: handleEvent in class Component
• admSendData protected void admSendData ( String urlString)
Called by Unison to display a hit screen. We force the call tab to be visible.
Parameters: url - Name of html file to be displayed. Overrides: admSendData in class Admin
• admRemoveData protected void admRemoveData ( )
Called by Unison to clear the hit screen and enter the "waiting for call" state.
Overrides: admRemoveData in class Admin
• admTacField protected void admTacField ( String tac_f ield ,
String tac_value)
Called by Unison once for every TAC field associated with a new call. Saves them away in tacFields. Note we save both the field and value names in the same vector.
Parameters: tac_field - Field name. tav_value - Field value. Overrides: admTacField in class Admin
9 getTacFieldCount public synchronized int getTacFieldCount ( )
Called from tac. html to retrieve the number of tac fields. We return tac fields to JavaScript one at a time because in IE 3.0 we cannot return arrays to JavaScript. Note because we store tac fields in a single vector this is actually 2 * the number of tac fields. • getTacField public synchronized String getTacField ( )
Get a tac field. Note on alternating calls we return the name of the tac field then it's value. 9 admLogon public void admLogon ( )
Presents the agent logon screen. 9 admProcessLogon public void admProcessLogon (String uname,
String passwd)
Handle agent logon request. Called by "check" button in logon page (logon.html). Note the prompting for agent extension (if any) is triggered by an asynchronous prompt callback message from the admin applet
Parameters: uname - Username entered by agent passwd - Password entered by agent
9 admLogonResponse protected void admLogonResponse ( int statusCode,
String statusString)
Handle the logon response from Unison. The only button we enable is logoff. The other buttons will be enabled when admEnable is called by Unison.
Parameters: statusCode - ADM_SUCCESS or ADM_FAILURE statusString - If ADM_FAILURE, the reason for the failure. Overrides: admLogonResponse in class Admin
9 admLogoff protected void admLogoff ()
Handle agent logoff request. Turns the logoff button's busy indicator on to let agent know a logoff is pending.
9 admLogoffResponse protected void admLogoffResponse ( )
1 Handle the logoff response from Unison.
Parameters: statusCode - ADM_SUCCESS or ADM_FAILURE statusString - If ADM_FAILURE, the reason for the failure. Overrides: admLogoffResponse in class Admin admConnectionLost protected void admConnectionLost ( )
Handle abnormal losing of connection to Unison server(s). When this occurs we display a "Connection lost..." message (in connectlost.html).
Parameters: statusCode - Not used. statusString - Not used. Overrides: admConnectionLost in class Admin
9 admEnable protected void admEnable ( String campaigns ) Agent is logged on and ready to recieve calls
Overrides: admEnable in class Admin
• getAgentName public String getAgentName ( )
Allows agent name to be retrieved from other Java applets or JavaScript.
• getAgentPassword public String getAgentPassword ( )
Allows agent password to be retrieved from other Java applets or JavaScript.
• admUnavailResponse protected void admUnavailResponse ( int code ,
String status )
Callback from Unison to agent's break request. All Packages Class Hie. chy This Package Previous Next 1 ex
Class davox.admin.ShowUrl java . lang. Object I
+ java . lang. Thread
I
+ davox . admin . ShowUrl
public class ShowUrl extends Thread
This class allows the admin applet to display URLs in the browser on a non JavaScript thread. IE 4.0 has a "bug" where when a call is made from JavaScript to a Java applet and the Java applet then calls showDocument, the showDocument takes 5 to 10 seconds to complete. By doing the showDocument on a new thread, and hence not on a JavaScript thread, we avoid this problem
Fietd 'fad .
• ac
• frame
• url
CoMsPrucPor Index.
„ ShowUrl(AppletContext, URL, String) Constructor
MePJto-11 de
• runf)
Displays the URL
Fte/ci_,
9 ac protected AppletContext ac • url protected URL url
fl • frame protected String frame
Coffsprμepors ShowUrl public ShowUrl (AppletContext ac, URL url, String frame)
Constructor
Me kods
9 run public void run ( )
Displays the URL
Overrides: run in class Thread
All Packages Class Hierarchy This Package Previous Next Index
All Packages Class H archy This Package Previous Next ndex
Class davox.admin.AdminLEDs java. lang. Object I + j ava . awt .Component
+ java. awt .Container
I
+ J ava , awt . Panel
-davox . awt . EDPanel
-davox . admin . AdminLEDs
public class AdminLEDs extends LEDPanel
Panel of status lights (LEDs) used in admin for debugging. Two types ofLEDs are used. TYPE 1 : Track method calls. Green : Neutral (no action in progress). This is the default Yellow: Processing a method. LED will go green when method complete. Red : Error occured in method. TYPE 2: Track boolean flags. Green : Flag is off. Yellow: Flag is on. Debug LED. For use in creating panels of LED for runtime debugging. An LED communicates it state by it's color. An LED can be one of four colors. GRAY : Off GREEN : On RED : Error BLUE : On, after an error has previously occured
Figure imgf000045_0001
. ACTPERF
. ADMEXCLUDER
. ADMP ABORT
.ADMPRES ND
.ADMPREXCLUDE
.ADMPROCEXCLUDE
.ADMPROCRECALL
.ADMPROCSTRANS
.ADMPROCTRANS
.ADMPRRECALL
.ADMPRTRANS
. BADPROMPT
. BADWASMSG
.MAX LED
. REINIT
.SEP
.SHOWCGI
. SHOWURL
.SYBCONN
.SYBOK
. SYBREAD
.SYBWRITE
τ3 . TABSENABLED
. TCENABLED
. WASCONN-
. WASOK
. WASPROCMSG
. WASRECVMSG
. WASSENDMSG
CottsPrucPor Index.
„ AdminLEDs( Applet, Console) Constructor
MePkod Index
. handleEvent(Event)
Detect mouse click of dump button
Figure imgf000046_0001
9 TCENABLED public final static int TCENABLED
9 TABSENABLED public final static int TABSENABLED
• BADPROMPT public final static int BADPROMPT
• BADWASMSG public final static int BADWASMSG
• REINIT public final static int REINIT
9 WASRECVMSG public final static int WASRECVMSG
• SYBOK public f inal stat ic int SYBOK
• WASOK public final static mt WASOK
• SEP public final static int SEP
• WASSENDMSG public final static int WASSENDMSG
• WASPROCMSG public final static mt WASPROCMSG
• SYBREAD public final static mt SYBREAD
• SYBWRITE public final static t SYBWRITE
• WASCONN public final static t WASCONN
• SYBCONN public final stati c int SYBCONN
• ADMPRESPOND public final static t ADMPRESPOND
• ADMP ABORT public final static int ADMPABORT
• ADMPRRECALL public final static int ADMPRRECALL
• ADMPROCRECALL public final stat ic int ADMPROCRECALL
• ADMPRTRANS public final static t ADMPRTRANS
• ADMPROCTRANS public f inal static int ADMPROCTRANS
• ADMPROCSTRANS public f inal static int ADMPROCSTRANS
• ADMPREXCLUDE public f inal stat ic int ADMPREXCLUDE • ADMPROCEXCLUDE public final static int ADMPROCEXCLUDE
• ADMEXCLUDER public final static int ADMEXCLUDER
• SHOWURL public final static int SHOWURL
• ACTPERF public final static int ACTPERF
• SHOWCGI public final static int SHOWCGI
• MAX_LED public final static int MAX_LED
Consprucpors
•Λ AdminLEDs public AdminLEDs (Applet a, Console c)
Constructor
Meth ds
9 handleEvent public boolean handleEvent (Event e)
Detect mouse click of dump button
Overrides: handleEvent in class Component
All Packages Class Hierarchy This Package Previous Next Index
\ D All Packages Class Hie archy This Package Previous Next ιn e>
Class davox.host.DataSet java . lang. Object I + java . awt . Component
-java .awt .Container I
+ java. awt . Panel
I
+ ]ava . applet .Applet
I
+ davo . host . HostCommon
I
+ davox . host . DataSet
public class DataSet extends HostCommon holds data sets author malcom
Figure imgf000049_0001
/aJex.
. DSHash stores by dataset name the dataset vectors.
Con&PrncPor Index
«■ DataSetQ
MePJtod Index
. aboutQ
• getArray(String) returns vector as a Array this works on netscape's javascript
• getData(String) getData( "zzz.5") - gets column 5 for the current row zzz.DS [ currentrow*totcols + 5] getData( "zzz.*;") - gets all columns for the current row, using chars following * (;) as column separator, will be in storage column order getData( "zzz;") - gets entire Vector (except current row) columns;colnaml ;colnam2...;data;data: using last char (;) as column separator getData( "zzz.5.*;") - gets column 5 for the all rows using chars following * (;) as column separator, getData( "zzz.O") - gei- current row number . getVector(String) get a data set by passing the vector init() 1 row(String, String) row( "zzz", "1 ") - sets currentrow to 1 row( "zzz", ".") - no change, return current row row( "zzz", "+") - sets the DS current row + 1 row( "zzz", "END") - sets the DS last row row( "zzz.5", match) - sets the DS current row where col 5 match NOTE: this is the only row command with dotted tag "." row( "zzz", "0") - sets currentrow to colname row if any modification is done to row 0 the entire
DS is deleted row( "zzz", "ADD") - adds a new row after current row row( "zzz", "DEL") - deletes the current row > setData(String, String) setData( "zzz.5",v) - sets column 5 for the current row zzz.DS [ currentrow*totcols + 5] setData( "zzz.*;","v;v;v") - sets all columns for the current row using chars following * (;) as column separator, will be in storage column order setData( "zzz;","n;col;v;v;v;") - sets entire Vector (except row position) columns;colnaml ;colnam2...;data;data;; using last char (;) as column separator used to set from props file. » setVector(String, Vector) install a data set by passing the vector
Figure imgf000050_0001
9 DSHash public Hashtable DSHash stores by dataset name the dataset vectors, dataset names cannot include any dot "." chars, column names cannot include ".*" column names cannot start with "*" column names cannot be the string "0"
ConsPrncpors
-* DataSet public DataSet ( ;
MePftodg
.9 row public int row (String name, String cmd) row( "zzz", " 1 ") - sets currentrow to 1
H row( "zzz", ".") - no cnαnge, return current row row( "zzz", "+") - sets the DS current row + 1 row( "zzz", "END") - sets the DS last row row( "zzz.5", match) - sets the DS current row where col 5 match NOTE: this is the only row command with dotted tag "." row( "zzz", "0") - sets currentrow to colname row if any modification is done to row 0 the entire
DS is deleted row( "zzz", "ADD") - adds a new row after current row row( "zzz", "DEL") - deletes the current row
• setData public void setData (String name,
String value) setData( "zzz.5",v) - sets column 5 for the current row zzz.DS [ currentrow*totcols + 5] setData( "zzz.*;",''v;v;v") - sets all columns for the current row using chars following * (;) as column separator, will be in storage column order setData( "zzz;","n;col;v;v;v;") - sets entire Vector (except row position) columns;colnaml;colnam2...;data;data;; using last char (;) as column separator used to set from props file, deletes old DS, and after loaded sets row to END setData( "zzz*","ds2") - sets entire Vector (including row position) as a duplicate of dataset ds2
NOTE: setData commands without a dot ".", clear the entire DS
• getData public String getData (String name ) getData( "zzz.5") - gets column 5 for the current row zzz.DS [ currentrow*totcols + 5] getData( "zzz.*;") - gets all columns for the current row, using chars following * (;) as column separator, will be in storage column order getData( "zzz;") - gets entire Vector (except current row) columns;colnaml ;colnam2...;data;data;; using last char (;) as column separator getData( "zzz.5.*;") - gets column 5 for the all rows using chars following * (;) as column separator, getData( "zzz.O") - gets current row number
• getVector public Vector getVector (String name) get a data set by passing the vector
Overrides: getVector in class HostCommon
• setVector public void setVector (String name,
Vector DS) install a data set by passing the vector
Overrides: setVector in class HostCommon
• getArray public String [ ] getArray ( String name ) returns vector as a Array this works on netscape's javascript
• init public void init ( )
Overrides: init in class HostCommon
• about public String about ( )
All Packages Class Hierarchy This Package Previous Next Index
5b DataSet table zzz
value
Figure imgf000053_0001
match count = 0 (above should be a java script table)
S\ DataSet test
— click for stats in console resulu status i name (zzz) or element ( zzz.age ) ARG1 :| zzz, getData showTable row command or set value ARG2:l 2, name, age, frodo, 100 , 3 ava, 3
Be sure to set both ARGl and ARG2 before clicking either button below: DS.row 11 setData I .. click this first to set zzz dataset with value shown about
various HostConn applets using DataSets
DataSet ( DS) for java/BUI spec javadoc for DataSet.class
DS . row (tag, cmd) has 8 variations, and does most of the mgmt row returns currentrow or 0 if empty, nomatch, or past end getData (tag) has 3 variations, returning string lists setData (tag, string) has 3 variations note: row numbers and column numbers start at 1 row ( 'zzz", "1") - sets currentrow to first row row( 'zzz", ".") - no change, return current row row ( 'zzz", "+") - sets the DS current row + 1 row ( 'zzz", "END") - sets the DS last row row ( 'zzz.5", match) - sets the DS current row where col 5 match row ( 'zzz" , "0") - sets currentrow to colname row if any modification is done to row 0 the entire DS is deleted row ( zzz "ADD") - adds a new row after current row row ( 'zzz' "DEL") - deletes the current row g/setData( "zzz.5") - gets or sets column 5 for the current row zzz.DS [ 1 + currentrow*totcols + 5] g/setData ( "zzz.*;") - gets or sets all columns for the current row chars after * ( ; ) as column separator will be in storage column order g/setData( "zzz,") - sets or gets entire Vector ( cols, names , data ) columns, colnaml, colnam2... , data, data, , used to set from props file deletes old DS, and after loaded sets row (, "END") NOTE: only get/set command without a "." last char is separator setData ( "zzz* " , "yyy" ) - sets entire Vector as a copy of DS yyy getData( "zzz.5.*,") - gets column 5 for the all rows getData ( "zzz.O") - gets current row number g/setVector( zzz ) - for terapplet comm, passes dataset Vector see DSVector layout
colnames note whereever 5 is used above the colname will be allowed column names cannot include "*" char
51 column names Cc ot be the string "0" screen logic must sort the row lists mto/from storage order. row( "zzz", "0"); getData ( "zzz.*,") will display colnames
DSHash zzz holds data as DS vector
DSVector layout:
String Vector [2+cols+rows*cols] in the following order: row; totcols ; colname1; colname2; ... ; rowlcoll; rowlc2 ; .. , row2cl ; row numbers and column numbers start at 1 index 0 holds the current row (initialized to last row) last row = ( (Vector . size - 2) / cols)-l index 1 holds the number of columns per row row 0 holds the names of the columns using a single dimensional vector (the first 2 fields passing the dimension) allows the JDBC applets to pass multiple result sets in one vector. The HostConn applet will split the result sets into multiple data sets before posting them with the DataSet applet, but otherwise does little else.
SCRIPT+ dataset functions compared
INIT name, field, ... WITH query HOST. getData ( name )
INIT name, field,... AS value, value
DS. setData ( "name;") columns; colnames ;..; data; ..
ADDROW name field, ... = value, value DS.row( name, "ADD" ) DS.setDatat "zzz.*," "rowvalue, value, value" )
FOREACH name
DS.row( name, "1")
ENDFOR name
DS . row ( name, "+")
FINDROW name field = value
DS.row( "zzz.5", value)
DELETEROW name
DS.row( name, "DEL" )
HostConn (HOST) applet changes to support DS applet
Props. host has the same format except a flag in the applet /dbserver property (x) will indicate if that class of data will be stored in the DS applet :
5"3 Props. host x=HC .applet ; DS; server; password; .. host spe fic
The load properties are the same, but a "x.y.*" property will be looked for instead of an "x.y.z" property. one of the 3 optional load properties otherwise is loads a single column DS : with select z from y
Props. host x.y=0; table where
Props. host x.y.*= 2; columns, colnaml, colnam2..., data, data, ,
Props. host x.y.*= 0; query
Props. host x. y . * .update= update query with DS property, nothing is cached locally because x.y.z differs based on current row however LocalData will hold update info x.y.* = state; x.y.*.QV = last query
HostConn additions: on HOST. getData x.y.z for DS marked x if x.y.* is empty, HOST will load DS with setData ("y, ", data) if the Props. host file has DS data, otherwise will request a Vector from JDBC applet and load DS with setVector () will call Host execute putting result in a Vector NOTE will check to see if the Vector contains multiple result sets, will call DS. setVector ("x:y", ) or if multiple result sets saves each DS will call DS. setVector ("x:yl", ) will call DS. setVector ("x:y2", ) otherwise once DS is indicated as loaded, will call DS applet with getData ( "x : y . z" ) for non host loaded datasets, screenlogic can call DS applet directly
DS . row selection s always done directly on DS applet other support functions: updateData ( x.y.* ) - will update entire DataSet, even if no known Changes changeData ( x.y.* ) - will tell if known changes
Due to the complexity of DS x.y.* update hostconn will support variable DS(name) substituted with DS . getData (name ) and loop operator I NEW I DSFOR(sep) { } substituted by doing the loop while substituting DS ( ) vars in . I NEW I row ( "name", "0") while row ( "name" ,"+"){ if ( row>l )( sep } { ) else { I DSFORO will not be nestable nor sequence more than one DataSet. So the Dataset must include in its rows, all it needs for the updates.
Of course user U() and davox D() fields can be referenced as will as the current row of other DataSets.
sql query command building issues HostConn Wizard: two general classes of host queries:
1. entire rows pulled : select * from table where .. this can be updated with: delete from table where .. insert table values ()
I NEW I values ( ' DS ( zzz. *',') ' ) would return: values (' data ',' data ' ) useful if row is all char types.
I NEW I DSFOR(,){ values (' DS ( zzz .1 )', DS (zzz .2) ) } would return: values ( 'data' , Odata) , values ( 'data ' , Odata)
2. specific columns : select a,b from table where .. in this case the ds cannot grow or shrink if returns a single row: this can be updated with: update table set a = v, set b = v where .. set a = 'DS(zzz.l)', b = DΞ(zzz.2) would return: set a = 'data1, b = Odata if multiple rows, some column must be included which can uniquely id a row, and its old value saved: update table set a = v, set b = v where b == oldv and in this case oldv must be stored in same dataset
S.ζ All Packages Class Hierarchy This Package Previous Next index
Class davox.host.HostConn java . lang . Object
+ java . awt . Component
I
-java . awt . Container I + java . awt . Panel
+ java. applet .Applet
I
+ davox . host . HostCommon
+ davox . host . HostConn
public class HostConn extends HostCommon hostconn - dispatch applet, all HostData requests come through this applet which are mapped by strings in Props. host file and dispatched to the appropriate hostconn applet local copies of all data are cached here in LocalData author malcom version 1.16 10/21/97
Fiefd ' fftd x.
. CHANGED state 4; . LIVE state 1 ; . LOADED state 2; . LocalData cached data
. £H
Props. host contents . propsPath if set, used as path +/props.host and -Jfile.csv if not set defaults to Props. host and ../forms/maps/file.csv . QVAR x.y.z.Qv holds the expanded query . UPDATED state 3;
5io oMsPr cPor /f e>i
• HostConnQ
MePh Index
• changedHostData(String) x.[y.[zj] will find all matching localData Host fields (stored in the hashtable), returning the count of CHANGED fields
• clearHostData(String) χ.[y.[z]] will find all matching localData Host fields (stored in the hashtable) and delete them, returning the count of CHANGED fields cleared or -number of ERROR fields cleared
• DSmacro(String) processes a macro
DS(ds...) DS(name) substituted by DS.getData(name)
DSROW(ds...
• getPata(String) always fetches from host is Props.host tag entry is LIVE (1;) otherwise gets local cached copy of data if there, if no loaded cached copy: if Props.host tag entry is LOADED (2;) initializes to that data, (seperated by comma, if a list) otherwise fetching from host applet. » initQ
• setData(String, String) tKϊs sets local copy of host data values (like Admin does for Davox) setting state info as well if
Prop: x=;DS; will set DS x:y.z or just updates host if Props.host tag entry is LIVE (1;) and there exists a Props.host tag. update command
D(davoxDB) U(User) and VF(value arg) will be substituted
updateHostData(String) x.[y.[z]] will find all CHANGED matching Host fields and update them, returning a count of updates if all ok or -number of failures if any failed if available will use Props.host x.y.z.update command otherwise will use update y set z = VF() OR if x.y Prop: update x.y set z = VF()
Figure imgf000059_0001
• pH public Propert ies pH
Props.host contents
• propsPath public String propsPath if set, used as path +/props.host and +/file.csv if not set defaults to Props.host and ../forms/maps/file.csv
• LocalData public Hashtable
Figure imgf000060_0001
cached data
• LIVE public final int LIVE state 1 ;
• LOADED public final int LOADED state 2;
• UPDATED public final int UPDATED state 3;
• CHANGED public final int CHANGED state 4;
• QVAR public final String QVAR x.y.z.Qv holds the expanded query
Cons rμcpors
J HostConn public HostConn ( )
MtP ds
9 updateHostData public int updateHostData ( St ring tag ) x.[y.[z]] will find all CHANGED matching Host fields and update them, returning a count of updates if all ok or -number of failures if any failed if available will use Props.host x.y.z.update command otherwise will use update y set z = VF() OR if x.y Prop: update x.y set z = VF()
• clearHostData public int clearHost Data ( St ring tag ) x-[y-[z]] will Host fields (stored in the hashtable) and delete them, returning the
Figure imgf000061_0001
cleared or -number of ERROR fields cleared
• changedHostData public t changedHostData (String tag) x.[y.[z]] will find all matching localData Host fields (stored in the hashtable), returning the count of CHANGED fields
• getData public String getData (String tag) always fetches from host is Props.host tag entry is LIVE (1,) otherwise gets local cached copy of data if there, if no loaded cached copy if Props.host tag entry is LOADED (2;) initializes to that data, (seperated by comma, if a list) otherwise fetching from host applet if available will use Props host tag query command otherwise will use: select z from y OR if x.y Prop, select z from x y
D(davoxDB) U(User) will be substituted if Prop: x=;DS, will then return DS χ-y.z but if Props.host tag x y z is set, it is used as MACRO to format DS data or pull an entire comma, separated list
• setData public void setData (String tag,
String value) this sets local copy of host data values (like Admin does for Davox) setting state info as well if
Prop: x=;DS, will set DS χ-y.z or just updates host if Props.host tag entry is LIVE (1,) and there exists a Props host tag update command
D(davoxDB) U(User) and VF(value arg) will be substituted
9 DSmacro public String DSmacro (String s) processes a macro
DS(ds ) DS(name) substituted by DS.getData(name)
DSROW(ds. val) and incrementor and logic DSROW(ds col match) does DS row(ds col, match) and DSROW(ds +) does DS row(ds,"+") if DSROW() fails (returns 0), macro is stopped at that point and returns stπng up to that point
DSFOR(sep){ } and loop operator substituted by doing the loop while substituting DS() vars in .. row(ds,"0") while row(ds,"+") { data(sep)data } DSIF(col == match) checks string col == match DSIF(col '= match) checks string col l= match DSIF(col > match) checks numeric col > match
DSIF(col < match) checks numeric col < match if any DSIF() fails, the next loop of the DSFOR is tried, if not in a DSFOR the macro is stopped at that point and returns string up to that point
• init public void ιnιt ( )
Overrides: init in class HostCommon All Packages Class Hier archy This Package Previous Next mdex
Class davox.host.JDBCsybase java. lang. Object I
+ j ava . awt . Component
I
+ java . awt .Container
I
+ java . awt . Panel
I
+ j ava . applet . Applet
I
+ davox . host . HostCommon
I
+ davox . host . JDBCsybase
public class JDBCsybase extends HostCommon implements Runnable hostconn - any jdbc (sybase,oracle,...) applet author malcom
Fiefd fffdex.
. driver example _driver _server _user for Sybase: com.sybase.jdbc.SybDriver jdbc:sybase:Tds:getHost:2025 xxxcfg_user example _driver _server _user for oracle: oracle.jdbc.driver.OracleDriverjdbc:oracle:thin: . passwd . server • user
. Columns
. numColumns
. numRows
ConsPrncPor Index.
, JDBCsybaseQ
MePkod Index
» disconnect^) close the connection initQ queryQ reconnectQ open - connection to _server, using _user _passwd sets Status and color run() . runQueryQ do the sql Query command sets Result and Columns using separator sep if Query startswith "[" will store the result as a DataSet
[d:s select * from ... . startQ for beaning - put image setup in start . stopQ stop any background threads and close the connection . ycqryQ old name - deprecated . ycqryjobQ spawn the query in the background
• ycqrywait(long)
Fie cYs
9 Columns public String Columns
• _user public String _user
• _passwd public String _passwd
• _driver public String _drιver example _driver _server _user for Sybase: com.sybase.jdbc.SybDriver jdbc:sybase:Tds:getHost:2025 xxxcfg_user example _driver _server _user for oracle: oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@getHost: 1521 :test sys
• _server public String _server
• numRows public int numRows
• numColumns publ ic int numColumns
L\ ConsPrncPors
J JDBCsybase public JDBCsybase ( )
Me kods
9 ycqryjob public void ycqryjob ( ) spawn the query in the background
• ycqrywait public void ycqrywait (long msec)
• run public void run ( )
• reconnect public void reconnect ( ) open - connection to _server, using _user _passwd sets Status and color
• ycqry public void ycqry ( ) old name - deprecated
• query public void query ()
• runQuery public void runQuery ( ) do the sql Query command sets Result and Columns using separator sep if Query startswith "[" will store the result as a DataSet
[d:s select * from ... if successful will call DS.setVector("d:s",) and if multiple result sets returned. following result sets are stored as: d:s:2, d:s:3, ...
['d:s select * from ... will wrap char type data with tick's ('value') useful for writing automatic commands optionally sets _driver server _user _passwd if passed in Result driver must contain . AND server must contain : AND Result must have at least 2 args ( note: getAgentName and/or getAgentPassword will already have been substituted by HostConn )
Overrides: runQuery in class HostCommon
Ul • init public void inιt ( )
Overrides: init in class HostCommon
• start public void start ( ) for beaning - put image setup in start
Overrides: start in class HostCommon
• disconnect public void disconnect ( ) close the connection
• stop public void stop ( ) stop any background threads and close the connection
Overrides: stop in class Applet
All Packages Class Hierarchy This Package Previous Next Index
ϋ Al l Packages Class Hi . archy This Package Previous Next mdex
Class davox.host.SCREENsbplug
]ava. lang. Object I + j ava . awt . Component
+ java . awt .Container
-java . awt . Panel I
+ java . applet .Applet
I
+ davox . host . HostCommon
I
+ davox . host . SCREENsbplug
public class SCREENsbplug extends HostCommon
SCREENsbplug - screen scraper SmartButton Glue version -via netscape plugin author malcom
ffe/d ffffex,
» link • server current connection . Session cached connections . SessionPkg » un link
ConsPmcPor Index.
, SCREENsbplugQ
MePliod Index
. dropLinks(boolean) . runQueryQ do the Query command
STATUS
SEND data
\Λ SCREEN row col len DISCONNECT
DELAY T, sees matl,mat2,mat3 select row_col_len from ;senddata select 0 from T, sees matl,mat2,mat3;senddata select row co en from GO(3 1 1) T, s xx,x;datal;;data3 sep; used to sep DELAY;SEND;... . stopQ
Figure imgf000067_0001
• _server public String _server current connection
• Jink public int _link
• un_link public int un_link
• Session public String Session [ ] cached connections
• SessionPkg public String SessionPkg []
ConsPrncpors
^ SCREENsbplug public SCREENsbplug ! )
MtP ods
• runQuery public void runQuery ( ) do the Query command
STATUS
SEND data
SCREEN row col len
DISCONNECT
DELAY T, sees matl ,mat2,mat3
5 select row_col_len fro. ,senddata select 0 from T, sees matl,mat2,mat3;senddata select row_col_len from GO(3 1 1) T, s xx,x;datal ;;data3 sep; used to sep DELAY;SEND;...
Overrides: runQuery in class HostCommon
• dropLinks public void dropLinks (boolean disc )
• stop public void stop ( )
Overrides: stop in class Applet
All Packages Class Hierarchy This Package Previous Next Index
All Packages
Figure imgf000069_0001
This Package Previous Next mdex
Class davox.stat.JustStats
]ava. lang. Object I
+ java .awt .Component
I
+ java .awt .Container
+ java . awt . Panel
I
+ j ava . applet . Applet
I
+ davox . st at . JustStats
public class JustStats extends Applet
The display portion of the Statistics applet without the threads.
Fiefd fffdex.
. db
Con&PrπcPor Index.
^ JustStatsQ
MePlfod Index
. initQ
. startQ
. sts GetAgentlDQ
Method: sts_GetAgentID() Descr: Returns the present setting of the Stats internal Agent ID. . sts GetAgentNameQ
Method: sts_GetAgentName() Descr: Returns to the caller the String that is the presently defined Agent name.
• sts GetApplication(int)
Method: sts_GetApplication(int index) Descr: Returns an AgentStatElements object reference for the input indexed element in the Application Stats Vector.
• sts GetCampaign(int)
Method: sts_GetCampaign(int index) Descr: Returns an AgentStatElements object reference for the input indexed element in the Campaign Stats Vector.
• sts GetCompCampaign(int)
Method: sts_GetCompCampaign(int index) Descr: Returns an AgentStatElements object reference
LI for the input indexed <_.v-ment in the Comparative Stats Vector. » sts GetNumApplicationsQ
Method: sts_GetNumApplications() Descr: Returns the number of applications presently available for the status display window, 0 if none are available. . sts GetNumCampaignsQ
Method: sts_GetNumCampaigns() Descr: Returns the number of campaigns presently available for the status display window, 0 if none are available.
• sts GetTermCodeDef(int, String)
Method: sts_GetTermCodeDef(int app_id, String code) Descr: Returns a TermCodeElements object reference when the input app_id AND code are matched in the tcDefinitions vector. . sts IsServerAvailableQ
Method: sts_IsServerAvailable() Descr: Returns true to the caller if the Stats server is available and logged in to (real stats are being collected) or false if the server is not available (real stats cannot be collected). . sts_SetAgentIP(int)
Method: sts_SetAgentID(int id) Descr: Takes as input an int that is the presently logged on Agent
ID.
sts SetAgentName(String)
Method: sts_SetAgentName(String s) Descr: Takes as input a String that is the presently logged on Agent name, . sts StartStatisticsQ
Method: sts_StartStatistics() Descr: Get Term Code information and then spawns the DisplayStats popup window for data display. . sts StopStatisticsQ
Method: sts_StopStatistics() Descr: Called before the Statistics object is destroyed, calls the
Statistics applet's stop() method which will stop the TrsMsg receive and data collection threads, then log out from the Stats (STS) server then destroys the Stats display window if it exists.
• sts UpdateTime(int)
Method: sts_UpdateTime(int seconds) Descr: If the Display Window is active, takes the input time value (in seconds) and updates the time display.
FiefcYs
• db public boolean db
ConsPrucPors
•J JustStats public JustStats ( )
MePko s
9 init public void init ( )
Overrides: init in class Applet • start public void start ( )
Overrides: start in class Applet
• sts_StartStatistics public void sts_StartStatιstιcs ( )
Method: sts_StartStatistics() Descr: Get Term Code information and then spawns the DisplayStats popup window for data display. It will then try to connect to the Stats Server (STS). If successful, it then starts the STSRecv thread for receiving TrsMsgs from the server and spawns the thread to retrieve data from the server. Inputs: None Outputs: None
• sts StopStatistics public void sts_StopStatιstιcs ( )
Method: sts_StopStatistics() Descr: Called before the Statistics object is destroyed, calls the Statistics applet's stop() method which will stop the TrsMsg receive and data collection threads, then log out from the Stats (STS) server then destroys the Stats display window if it exists. Inputs None Outputs: None
• sts_IsServerAvailable public boolean sts_IsServerAvaιlable ( )
Method: sts_IsServerAvailable() Descr: Returns true to the caller if the Stats server is available and logged in to (real stats are being collected) or false if the server is not available (real stats cannot be collected). Inputs: None Outputs: returns true if STS server available false if STS server not available
• sts SetAgentID public void sts_SetAgent ID ( int id)
Method: sts_SetAgentID(int id) Descr: Takes as input an int that is the presently logged on Agent ID. Inputs: int containing Agent ID Outputs: None
• sts GetAgentID public int sts_GetAgent I D ( )
Method: sts_GetAgentID() Descr: Returns the present setting of the Stats internal Agent ID Inputs: None Outputs: int containing Agent ID
• sts SetAgentName public void sts_SetAgentName ( St ring s )
Method: sts_SetAgentName(String s) Descr: Takes as input a String that is the presently logged on Agent name. Inputs: String Object containing Agent Name Outputs' None
• sts GetAgentName publ ic String st s_GetAgentName ( ) Method: sts_GetAgentName() Descr: Returns to the caller the String that is the presently defined Agent name. This is presently set by the STS server and will be null otherwise. Thus if no STS server connection has been made, the name will be null. Inputs: None Outputs: returns Agent name string if STS server available null otherwise
• sts GetNumApplications public int sts_GetNumApplιcatιons ( )
Method: sts_GetNumApplications() Descr: Returns the number of applications presently available for the status display window, 0 if none are available. Inputs: None Outputs: Number of applications.
• sts_GetNumCampaigns public t sts_GetNumCampaιgns ( )
Method: sts_GetNumCampaigns() Descr: Returns the number of campaigns presently available for the status display window, 0 if none are available. Inputs: None Outputs: Number of campaigns.
• stsJUpdateTime public void sts_UpdateTime ( mt seconds )
Method: sts_UpdateTime(int seconds) Descr: If the Display Window is active, takes the input time value (in seconds) and updates the time display. This is used to show time between data fetches. Inputs: None Outputs: Number of campaigns.
• sts_GetApplication public AgentStatElements sts_GetApplιcatιon ( int index )
Method: sts_GetApplication(int index) Descr: Returns an AgentStatElements object reference for the input indexed element in the Application Stats Vector. Will return null for an invalid index or if no data is available in the Application Stats Vector. Inputs: index of the vector element to return Outputs: AgentStatElements object reference
• sts_GetCampaign public AgentStatElements sts_GetCampaιgn ( int index )
Method: sts_GetCampaign(int index) Descr: Returns an AgentStatElements object reference for the input indexed element in the Campaign Stats Vector. Will return null for an invalid index or if no data is available in the Campaign Stats Vector. Inputs: index of the vector element to return Outputs: AgentStatElements object reference
• sts GetCompCampaign public AgentStatElements sts_GetCompCampaιgn ( int index )
Method: sts_GetCompCampaign(int index) Descr: Returns an AgentStatElements object reference for the input indexed element in the Comparative Stats Vector. Will return null for an invalid index or if no data is available in the Comparative Stats Vector. Inputs: index of the vector element to return Outputs: AgentStatElements object reference
• sts GetTermCodeDef
7o publ ic TermCodeElements sts_GetTermCodeDef ( int app id,
String code )
Method: sts_GetTermCodeDef(int app_id, String code) Descr: Returns a TermCodeElements object reference when the input app_id AND code are matched in the tcDefmitions vector. Will return null for no match. Inputs: int app_id = application id for Term Code String code = the Term Code's code value Outputs: TermCodeElements reference or null if no match
All Packages Class Hierarchy This Package Previous Next Index
All Packages
Figure imgf000074_0001
This Package Previous Next index
Class davox.stat.StatsCollector j ava . lang . Obj ect I + java . awt . Component java . awt . Container
+ java. awt . Panel
I
+ j a a . applet . Applet
I
+ davox . stat . StatsCollector
public class StatsCollector extends Applet
Collects statistics used by the statistics display applet(s). An instance of StatsCollector runs in the Admin frame as long as the Admin frame is open. Statistics are collected at a 10-minute interval unless set to another value as a parameter in applet tag:
<PARAM NAME="FREQUENCY" VALUE="4">
To turn on debug messages (if not using properties file for this purpose):
< PARAM NAME= " DEBUG " VALUE= "ON " >
To specify a properties file:
<PARAM NAME="PROPERTIES" VALUE=" [ filename] ">
In the properties file, to override default SysConfigPort (2025):
SYS_CNFG_PORT= [ port ]
In the properties file, to turn on debug messages:
STATS DEBUG=1
Field fffdex.
» bDemo
• bStatsServerAvail
. db
. FETCH APPS
. FETCH CONNECTS
. FETCH CONTACTS
. FETCH DONE
. FETCH NAME
ll . FETCH NONE . FETCH TCODES . FETCH TIME . fetchState . fetchTime
E . props
. RECV APPS
. RECV CONNECTS
. RECV "CONTACTS
. RECV NAME
. RECV TCUDES
. RECV TIM"E
. statsAvail
. updateNow
ConsPrncPor Index StatsCollectorQ
MePkod ltιde
» connectToStatsServerQ
Method: connectToStatsServer() Descr: Attempts to hook up to the Stats (STS) Server. . destroyQ
Destroy method. . fetchStatsQ
Get Agent Stats from server. . initQ • process(TrsMsgMsg)
Takes a TrsMsgMsg received from the STS server and calls the correct processing routine based on the fetchState flag. . resetAHVectorsQ
Method: resetAHVectors() Descr: Resets all Stats Vectors to empty, if they are not already empty. . resetStatVectorsQ
Method: resetStatVectors() Descr: Resets presently active Stats Vectors to empty, if they are not already empty. . restartStatisticsQ
Method: restartStatistics() Descr: Called when an unexpected logout from the STS Server occurs. . sendAgentAppsAndCampsQ
Sends a query to the STS server to obtain all Campaigns and Applications for the agent at this workstation. . sendAgentContactsQ
Method: sendAgentContacts() Descr: Sends a query to the STS server to obtain the number of contacts for all the agents associated with this agent's Campaigns. . sendAgentNameQ
Sends a query to the STS server to obtain all Agent names so that a match may be found for the input agent name. . sendAgentTermCodesQ
Method: sendAgentTermCodes() Descr: Sends a query to the STS server to obtain all Term Codes and Term Code numbers for the agent for their applications and campaigns. » sendAgentTimeQ
Method: sendAgentTime() Descr: Sends a query to the STS server to obtain the active times for all
n the agents associated with this agent's Campaigns. . startQ
Method: start()
Descr: Creates but does not display the DisplayStats popup window. » stopQ . sts GetAgentlDQ
Method: sts_GetAgentID() Descr: Returns the present setting of the Stats internal Agent ID. » sts GetAgentNameQ
Method: sts_GetAgentName() Descr: Returns to the caller the String that is the presently defined
Agent name. . sts GetApplication(int)
Method: sts_GetApplication(int index) Descr: Returns an AgentStatElements object reference for the input indexed element in the Application Stats Vector. . sts GetCampaign(int)
Method : sts_GetCampaign(int index) Descr: Returns an AgentStatElements object reference for the input indexed element in the Campaign Stats Vector.
• sts GetCompCampaign(inf)
Method: sts_GetCompCampaign(int index) Descr: Returns an AgentStatElements object reference for the input indexed element in the Comparative Stats Vector. » sts GetNumApplicationsQ
Get number of available applications. » sts GetNumCampaignsQ
Get number of available campaigns. . sts GetTermCodePef(int, String)
Method: sts_GetTermCodeDef(int app_id, String code) Descr: Returns a TermCodeElements object reference when the input app_id AND code are matched in the tcDefmitions vector. . sts IsServerAvailableQ
Method: sts_IsServerAvailable() Descr: Returns true to the caller if the Stats server is available and logged in to (real stats are being collected) or false if the server is not available (real stats cannot be collected). . sts SetAgentΙD(int)
Method: sts_SetAgentID(int id) Descr: Takes as input an int that is the presently logged on Agent
ID.
• sts SetAgentName(String)
Method: sts_SetAgentName(String s) Descr: Takes as input a String that is the presently logged on Agent name.
• sts SetFrequency(int)
Method: sts_SetFrequency(int frq) Descr: Takes as input an integer value that will be the data collection frequency (in minutes).
• sts ShowStatistics(boolean)
Method: sts_ShowStatistics(boolean b) Descr: If the Stats window is not null, will show or hide the window depending on the value of the input parameter, . sts StartStatisticsQ
Method: sts_StartStatistics() Descr: Get Term Code information and then it will then try to connect to the Stats Server (STS). . sts StopStatisticsQ
Method: sts_StopStatistics() Descr: Called before the Statistics object is destroyed, calls the
Statistics applet's stop() method which will stop the TrsMsg receive and data collection threads, then log out from the Stats (STS) server then destroys the Stats display window if it exists. . sts UpdateTime(inf)
Method: sts_UpdateTime(int seconds) Descr: If the Display Window is active, takes the input time value (in seconds) and updates the time display. . toggleStatVectorsQ
Method: toggleStatVectors() Descr: Toggles the data collection vectors from set 1 to set 2 Inputs:
None Outputs: None . updateStatsDisplayO
Sets flag updateNow to let DisplayStats know when to update.
Figure imgf000077_0001
9 fetchTime public int fetchTime
• FETCH_NONE public final stat ic int FETCH_NONE
• FETCH_APPS public final static t FETCH_APPS
• RECV APPS public final static int RECV_APPS
• FETCHJTIME public final static t FETCHJTIME
• RECV_TIME public final static int RECV_TIME
• FETCH_CONNECTS public final static mt FETCH_CONNECTS
• RECV_CONNECTS public final static int RECV_CONNECTS
• FETCH_CONTACTS public final static int FETCH_CONTACTS
• RECV_CONTACTS public final static int RECV_CONTACTS
• FETCH_TCOPES public final static int FETCH_TCODES
• RECV TCOPES public final stat ic int RECV_TCODES
• FETCH_NAME public final stat ic int FETCH_NAME
• RECV NAME
1ζ public final static _..t RECV_NAME
• FETCH_PONE public final static t FETCH_DONE
• fetchState public int fetchState
• db public boolean db
• bPemo public boolean bDemo
• updateNow public boolean updateNow
• statsAvail public boolean statsAvail
• bStatsServerAvail public boolean bStatsServerAvail
• props public TrsProps props
« P public Properties p
ConsPrncpors
-* StatsCollector public StatsCollector ( )
MtPkodg
• init publ ic void ιnιt ( ;
Overrides: init in class Applet
• start publ ic void start ( )
Method: start()
Descr: Creates but does not display the DisplayStats popup window. If Successful connection to the STS Server, starts the STSRecv thread for receiving TrsMsgs from the server and spawns the
FetchStats thread to request data from the server. Finally, tries to connent to the Unison database to retrieve and store (locally) Term Code definition data.
Inputs: None
Outputs: None
Overrides: start in class Applet
• stop public void stop ( )
Overrides: stop in class Applet
• destroy public void destroy ( )
Destroy method. Closes db connection, TO DO: need to close/flush the receive to avoid broken pipe
Overrides: destroy in class Applet
• fetchStats public void fetchStats ( ) Get Agent Stats from server.
• process public void process (TrsMsgMsg msg)
Takes a TrsMsgMsg received from the STS server and calls the correct processing routine based on the fetchState flag. No action for a null message receipt or if the message is a non-expected one.
Parameters:
TrsMsgMsg - reference
• sendAgentName publ ic boolean sendAgentName ( )
Sends a query to the STS server to obtain all Agent names so that a match may be found for the input agent name. When the match is found, the agentID will be set from the received data. agent_state agent__logιn= [ agent name ]
• sendAgentAppsAndCamps
17 publ ic boolean sendAς cAppsAndCamps ( )
Sends a query to the STS server to obtain all Campaigns and Applications for the agent at this workstation. Sets fetchStats to receive this info back after sending the message. Uses the server query: agent_tιme agent_ιd= [ valid agent id tf ] camp_ιd=- l
• sendAgentTime publ ic boolean sendAgentTime ( )
Method: sendAgentTime() Descr: Sends a query to the STS server to obtain the active times for all the agents associated with this agent's Campaigns. Logs the times to all three Stats tables depending on the agent, application or campaign. Sets fetchStats to receive this info back after sending the message. Uses the server query (for each campaign): agent_time agent_id=-l camp_id=[valid campaign id #] state=ALL Inputs: None Outputs: None
• sendAgentContacts public boolean sendAgentContacts ( )
Method: sendAgentContacts() Descr: Sends a query to the STS server to obtain the number of contacts for all the agents associated with this agent's Campaigns. Logs the times to all three Stats tables depending on the agent, application or campaign. Sets fetchStats to receive this info back after sending the message. Uses the server query (for each campaign): agent_inputs agent_id— 1 camp_id=[valid campaign id #] mode=FINAL contact— 1 Inputs: None Outputs: None
• sendAgentTermCodes publ ic boolean sendAgentTermCodes ( )
Method: sendAgentTermCodes() Descr: Sends a query to the STS server to obtain all Term Codes and Term Code numbers for the agent for their applications and campaigns. Also collects comparative data for all the agents associated with this agent's Campaigns. Sets fetchStats to receive this info back after sending the message. Uses the server query (for each campaign): agent_inputs agent_id=-l camp_id=[valid campaign id #] input=ALL Inputs: None Outputs: None
• restartStatistics publ ic void restartStatist ics ( )
Method: restartStatistics() Descr: Called when an unexpected logout from the STS Server occurs. Runs the STSConnect thread which will continuously try to reconnect to the Stats Server. Inputs: None Outputs: None
• resetStatVectors publ ic void resetStatVectors ( )
Method: resetStatVectors() Descr: Resets presently active Stats Vectors to empty, if they are not already empty. Inputs: None Outputs: None
• resetAHVectors publ ic void resetAl lVectors ( )
Method: resetAUVectorsQ Descr: Resets all Stats Vectors to empty, if they are not already empty
la Inputs: None Outputs: None
• toggleStatVectors public synchronized void toggleStatVectors ( )
Method: toggleStatVectors() Descr: Toggles the data collection vectors from set 1 to set 2 Inputs: None Outputs: None
• updateStatsDisplay public void updateStatsDisplay ( )
Sets flag updateNow to let DisplayStats know when to update.
• connectToStatsServer public boolean connectToStatsServer ( )
Method: connectToStatsServer() Descr: Attempts to hook up to the Stats (STS) Server. If successfull, starts the STSRecv thread for receiving server messages and returns true, otherwise returns false. Inputs: None Outputs: true if STS Server connection made false otherwise
• sts_StartStatistics public void sts_StartStatιstιcs ( )
Method: sts_StartStatistics() Descr: Get Term Code information and then it will then try to connect to the Stats Server (STS). If successful, it then starts the STSRecv thread for receiving TrsMsgs from the server and spawns the thread to retrieve data from the server. Inputs: None Outputs: None
• sts_StopStatistics public void sts_StopStatιstιcs ( )
Method: sts_StopStatistics() Descr: Called before the Statistics object is destroyed, calls the Statistics applet's stop() method which will stop the TrsMsg receive and data collection threads, then log out from the Stats (STS) server then destroys the Stats display window if it exists. Inputs- None Outputs: None
• sts_ShowStatistics public void sts_ShowStatιstιcs (boolean bShow)
Method: sts_ShowStatistics(boolean b) Descr: If the Stats window is not null, will show or hide the window depending on the value of the input parameter. Inputs: b = false: Hide Window true- Show Window Outputs: None
• sts_IsServerAvailab!e public boolean sts_IsServerAvaιlable ( )
Method: sts_IsServerAvailable() Descr: Returns true to the caller if the Stats server is available and logged in to (real stats are being collected) or false if the server is not available (real stats cannot be collected). Inputs: None Outputs: returns true if STS server available false if STS server not available
Ή • sts SetAgentID public void sts_SetAgent ID ( int id)
Method: sts_SetAgentID(int id) Descr: Takes as input an int that is the presently logged on Agent ID. Inputs: int containing Agent ID Outputs: None
• sts GetAgentID public t sts_GetAgent ID ( )
Method: sts_GetAgentID() Descr: Returns the present setting of the Stats internal Agent ID. Inputs: None Outputs: int containing Agent ID
• sts SetAgentName public void sts_SetAgentName ( String s )
Method: sts_SetAgentName(String s) Descr: Takes as input a String that is the presently logged on Agent name. Inputs: String Object containing Agent Name Outputs: None
• sts_GetAgentName public String sts_GetAgentName ( )
Method: sts_GetAgentName() Descr: Returns to the caller the String that is the presently defined Agent name. This is presently set by the STS server and will be null otherwise. Thus if no STS server connection has been made, the name will be null. Inputs: None Outputs: returns Agent name string if STS server available null otherwise
• sts_SetFrequency public void sts_SetFrequency ( int frq)
Method: sts_SetFrequency(int frq) Descr: Takes as input an integer value that will be the data collection frequency (in minutes). Inputs: int value for frequency (in minutes) Outputs: None
• sts_GetNumApplications public int sts_GetNumApplιcat ιons ( )
Get number of available applications.
Returns: the number of applications presently available for the stats display window, 0 if none are available
• sts GetNumCampaigns public int sts_GetNumCampaιgns ( )
Get number of available campaigns.
Returns: the number of campaigns presently available for the status display window, 0 if none are available
• sts UpdateTime
to public void sts_UpdateTime ( int seconds )
Method: sts_UpdateTime(int seconds) Descr: If the Display Window is active, takes the input time value (in seconds) and updates the time display. This is used to show time between data fetches. Inputs: None Outputs: Number of campaigns.
• sts_GetApplication public AgentStatElements sts_GetApplication ( int index)
Method: sts_GetApplication(int index) Descr: Returns an AgentStatElements object reference for the input indexed element in the Application Stats Vector. Will return null for an invalid index or if no data is available in the Application Stats Vector. Inputs: index of the vector element to return Outputs: AgentStatElements object reference
• sts_GetCampaign public AgentStatElements sts_GetCampaign ( int index )
Method: sts_GetCampaign(int index) Descr: Returns an AgentStatElements object reference for the input indexed element in the Campaign Stats Vector. Will return null for an invalid index or if no data is available in the Campaign Stats Vector. Inputs: index of the vector element to return Outputs: AgentStatElements object reference
• sts_GetCompCampaign public AgentStatElements sts_GetCompCampaign ( int index)
Method: sts_GetCompCampaign(int index) Descr: Returns an AgentStatElements object reference for the input indexed element in the Comparative Stats Vector. Will return null for an invalid index or if no data is available in the Comparative Stats Vector. Inputs: index of the vector element to return Outputs: AgentStatElements object reference
• sts GetTermCodeDef public TermCodeElements Ξts_GetTermCodeDef ( int app_id,
String code )
Method: sts_GetTermCodeDef(int app_id, String code) Descr: Returns a TermCodeElements object reference when the input app_id AND code are matched in the tcDefmitions vector. Will return null for no match. Inputs: int app_id = application id for Term Code String code = the Term Code's code value Outputs: TermCodeElements reference or null if no match
All Packages Class Hierarchy This Package Previous Next Index All Packages Class Hie , archy This Package Previous Next mdex
Class davox.trsmsg.TrsXdr j ava . lang . Obj ect I + davox . trsms . TrsXdr
public class TrsXdr extends Object
Class for converting messages to and from XDR format. When sending a message this class is used to take a TrsMsgMsg and write it in XDR format to the output buffer in TrsMsgBuf. When recieving a message this class is used to build a TrsMsgMsg from the data stored in the input buffer in TrsMsgBuf. Notice that all communications with Unison involve either two writes or two reads as we move data between: TrsMsgMsg < — > TrsMsgBuf < — > Connection to server Note, this is not a true or complete XDR facility. It's a workaround to allow an XDRish stream to be used for communication with servers.
f efd fβ fex,
.TRSDT BYTE .TRSDT CHAR .TRSDT FLOAT .TRSDT INT .TRSDT STRING
ConsPrticPor 1fde
. TrsXdrQ
MePkod Index
» xdrBufRead(TrsMsgMsg)
Construct a message from the data stored in the input buffer. ^ xdrBufWrite(TrsMsgMsg)
Wnte a message to the output buffer in XDR format.
Figure imgf000084_0001
9 TRSDT_BYTE public final static int TRSDT_BYTE
11 • TRSDTJNT public final static t TRSDT_INT
• TRSDT_CHAR public final static mt TRSDT_CHAR
• TRSDT_FLOAT public final static int TRSDT_FLOAT
• TRSDT_STRING public final static int TRSDT_STRING
Co»sPrμcpors
«* TrsXdr public TrsXdr ( )
MePkodg
9 xdrBufWrite protected static boolean xdrBufWrite (TrsMsgMsg msg)
Write a message to the output buffer in XDR format
Parameters: msg - The message to be written.
• xdrBufRead protected static void xdrBufRead ( TrsMsgMsg msg ) throws lOException
Construct a message from the data stored in the input buffer.
Parameters: msg - The message to be built.
All Packages Class Hierarchy This Package Previous Next Index
& All Packages Class Hie- archy This Package Previous Next .adex
Class davox.util.Console
]ava . lang. Object I
+ java . awt .Component
I
+ java . awt . Container
I
+ java . awt .Window
+ java . awt . Frame
I
+ davox . util . Console
public class Console extends Frame
Utility class for logging messages from applets. An instance of Console should be used and not "System.out.println". Applet Params: LOGCAT [info,error,debug,time,numbers,type] Categories of information to log. info : log informational messages error : log error messages debug : log debug messages time : include a timestamp on each message numbers : include a message number on each message type : prefix each message with it's type (I,E,D) LOGMODE [buffered,standard] Which method(s) to use for logging information buffered: buffer messsages internally. Sent to our own console window when dumpMessages() called, standard: Log all messages to the Java console as they occur LOGBUFF number Sets the size of the buffer to be used for logging messages. When full the oldest messages will be lost to allow storage of new messages. The default is 1000.
ConsPrncPor lnde
Console( Applet) Constructor.
Mepnod Index
• appendPebug(Object)
Appends to an existing debug message.
• debug(Object)
Logs debug messages. . dumpMessagesQ
Dumps buffered messages to the Java console
• error(Object)
Logs error messages. . exception(Exception)
Logs error messages.
• handleEvent(Event)
Handle input events on our "pseudo Java console" window.
*t info(Object)
Logs information messages.
ConsPrncpors v Console public Console (Applet applet ) Constructor.
Parameters: applet - Handle to applet. Used to get applet parameters.
MtPb ds
9 info public void info (Object o ) Logs information messages.
Parameters: o - Object whose toString() method is to be called for text of message.
• error public void error (Object o)
Logs error messages.
Parameters: o - Object whose toString() method is to be called for text of message.
• debug public void debug (Obj ect o )
Logs debug messages. This is for development/debugging use only.
Parameters: o - Object whose toString() method is to be called for text of message.
• exception public void exception ( Exception e ) Logs error messages.
Parameters: o - Object whose toStπng() method is to be called for text of message
• appendDebug as public void appendDeb^g (Obj ect o )
Appends to an existing debug message. This is used to better format debug messages.
Parameters: o - Object whose toStringQ method is to be called for text of message.
• dumpMessages public void dumpMessages ( )
Dumps buffered messages to the Java console
• handleEvent public boolean handleEvent ( Event e )
Handle input events on our "pseudo Java console" window.
Overrides: handleEvent in class Component
All Packages Class Hierarchy This Package Previous Next Index
tø Al l Packages Class Hier archy This Package Previous Next index
Class davox.util.CsvDb j ava . lang . Obj ect I + davox . util . CsvDb
public class CsvDb extends Object
This class reads ".csv" and allows it to be navigated as a simple database. This class was created to support the simulation of call records in the demo mode of the bui. As such, this class does not contain a full set of database methods. Only those I need for demo mode. CSV stands for "Comma Seperated Values". A csv file is an ascii text file which can be produced by spreadsheets such as Excel. The only format restriction we impose on csv files is that the first row contain all the field names. Subsequent rows provide data for each field. Each row is considered one record. Here is a simple sample csv file containing 2 records. CUSTNAME,ADDRESS,CITY,STATE John Doe,l Any St.,YourTown.MA. Mary Jane,2 Main St.,Westford,MA. You specify the CSV file to be loaded on the constructor. Once constructed you can traverse records with nextRecord() and gotoRecord(). You use getField() to retrieve the value of a field on the current record. You use setField() to set the value of a field on the current record. There is as yet no methods provided to create or delete records or to save the data back out to a CSV file, I didn't need them.
CoH&PwcPor Zfde
, CsvDb(URL)
Constructs a CsvDb from a CSV file.
MePffod Index
• getField(int)
Returns the value of the field identified in the current record. . getField(String)
Returns the value of the field identified in the current record. . getFieldCountQ
Retrieve the number of fields in the current record. . getFieldNamesQ
Returns the field names (the first record) in the CSV file. . getRecordCountQ
Retrieve the number of data records.
• gotoRecord(int)
Position to a specific record index. » nextRecordQ
Position to next record.
• setField(String, String)
Set the value of a field in the current record
V) ConsPrncPors CsvDb public CsvDb (URL url) throws lOException
Constructs a CsvDb from a CSV file.
Parameter' " url - URL of CSV file fo be loaded.
MtPb dg
9 nextRecord public void nextRecord ( )
Position to next record. If at last record, will wrap to first record. This is the behavior I needed to simulate call data.
• getFieldNames public String [ ] getFieldNames ( )
Returns the field names (the first record) in the CSV file.
• gotoRecord public void gotoRecord ( int n) Position to a specific record index.
Parameters: n - Record index.
• getRecordCount public t getRecordCount ( )
Retrieve the number of data records.
• getFieldCount public int getFieldCount ( )
Retrieve the number of fields in the current record. Note for a well formatted CSV file this should be the same for all records.
• getField public String getFιeld ( ιnt n )
Returns the value of the field identified in the current record. If the field does not exist null is returned
Parameters: n - Index of the field who's value is to be retrieved.
• getField public String getField (String field)
Returns the value of the field identified in the current record. If the field does not exist null is returned.
Parameters: field - Name of the field who's value is to be retrieved.
• setField public void setField (String field,
String value)
Set the value of a field in the current record
All Packages Class Hierarchy This Package Previous Next Index
W Agent Web Station
(AWS)
Functional Specification of the ScreenLogic Script Builder C^C f - ^ ^Λ • ^ ^
% CONTENTS
©Overview of the ScreenLogic Script Builder
©User Interface
© Scripts/Pages
©Components
© Wizards & Templates
©Property Sheets
©Tools
©Functionality Levels
©Restrictions and Compatibility
Overview of the ScreenLogic Script Builder
The ScreenLogic Script Builder is a tool that will be used to create scripts and script pages to be displayed in the Agent Web Station (AWS). This tool will be a MDI style window that will run under Windows95 on a PC desktop. The development environment that will be used to build ScreenLogic is PowerBuilder. ScreenLogic will integrate directly into the Unison PC Supervisor console and also take advantage of the Davox Foundation Class translation functionality wherever possible.
According to the MRP Ease of Use criteria is paramount. ScreenLogic will be easy to learn and use by Management/Supervisory Personnel. It will be intuitive, logical, fast and made so that errors/problems are identified on the fly. This includes building screens and defining logical branching structures. We will incorporate "self-help" functionality and "wizards" to assist the user in every aspect of ScreenLogic operations. We expect purchasers to learn the product through on-line tutorials, documentation and other self-help programs that will use templates and examples to assist. One's thought is that if Davox Education Department is needed to teach the user, the product is not easy enough to use.
The builder will allow the user to create a script page which can include text, pictures, sound, JAVA applets, data base fields, and links to other pages. The JAVA applets that can be inserted need not be limited to Davox created applets but will include 3 rd party applets as well. The database fields that can be inserted will include Unison database fields, external databases assessable through ODBC as well as user defined fields.
User Interface
The User Interface will consist of a MDI Frame Window that will act as a container for all the windows within the application. When the frame is minimized the whole user environment will close.
Figure imgf000094_0001
There will be two types of sheet windows that can open in the frame The first is the scπpt sheet that will contain a tree view list of scripts and scπpt pages The user will be able to double-click on any script page in the list in order to open that page for modification The second sheet is page view sheet which is where the editing of objects take place Multiple page view sheets can be opened at one time, but only one scπpt sheet may be open at a time
The user will be able to cut and paste objects between page view sheets Also, the user may cut and move objects within one page
The interface will also include two tool bars that are can be dragged and docked at any point within the frame The top tool bar will contain script/page level functions such as EXIT, NEW, OPEN, CLOSE, SAVE and HELP
Dl&|x| ja] _ j__\ ___
Also, on the toolbar is a cascading menu item that will contain the tools available to the user This menu list will contain a spell checker, screen flow view, calendar tool, agent statistics tools and page deployment interface
Figure imgf000094_0002
The second tool bar will look something like the following picture m S&MΪMΪ&M.
The second tool bar will contain all the objects which can be chosen and dropped onto a script page. These will include, but are not limited to, the following:
©Picture
©JAVA Applet
©Unison DB Field
©User Defined DB Field
©ODBC DB Field
©Paragraph
©Forms
©Radio Button
©Datasets
©User Defined HTML
©Check Box
©Drop Down List Box
©Sound
Associated with all of these objects will be a pop menu which when the user right clicks on the object will appear. This menu will be custom for each object and depending on the object will present to the user a choice of the following options.
Scripts/Pages
© Script
A script is a construct that is used to describe a group of multiple script pages. A script file will contain a description of the user data defined in the builder, a list of pages that are part of the script, and comment fields and other descriptive elements that describe things about the script. Such as name, description, creation date and modification date.
A script will have a directory associated with it. This directory will reside under the forms directory in the directory hierarchy. Each script will have it's own directory. The start page for the script however will reside in the forms directory and will branch to script pages in the script directory.
© Script Page
The script page is the heart of the script. Each script can have an unlimited amount of pages that will contain uie objects inserted by the builder. These script pages will have related information and data and possibly have links to other pages. The pages are created individually by the script builder and are linked together based on the objects created on the page. A page can contain any of the objects described in the components section of this document.
Pages can be part of only one script. If a script page is reusable in another script it must be copied to the directory for that script and inserted into the script.
Components
©Picture
A picture object is an image that can be added to a script page. This image must be of type .gif or .jpg in order to display correctly on a Netscape browser. Internet Explorer from Microsoft will also support an image of type .bmp.
©JAVA Applet
A JAVA applet object can be added to a script page. This applet can be a Davox created applet such as the navbar or credit card verifier or it can be from a third party. If it is a Davox created applet then a specific wizard will be associated with it. If it's from a third party then a generic wizard will be used. If a generic wizard is used then it will be up to the user to understand how it works and what parameters are need and how they are configured. Each Davox applet will have it's own button on the tool bar while the generic applet button will cover the rest.
Specs/ Applets.htm
©Unison DB Field
The user will have the capability to drop a Unison DB field either on the page or within other objects on the page. The other objects include the paragraph object or the marquee object. The user can add the field into another object by right clicking on that object. A pop menu will appear with a choice of inserting the field.
If an object is to be dropped onto the page it must be part of a form. The list of possibilities for fields comes from the Unison database and is defined as part of the application. These fields would normally be part of the PDD file.
©User Defined DB Field
The user will have the capability to drop a User Defined DB field either on the page or within other objects on the page. The other objects include the paragraph object or the marquee object. The user can add the field into another object by right clicking on that object. A pop menu will appear with a choice of inserting the field.
If an object is to be dropped onto the page it must be part of a form. The list of possible fields is user defined. When the user chooses to add a user defined field they will be able to pick from a list of currently defined user fields. This list will reside in the script file. If they want to add a new one they will be able to at this time. Once a new one is added it will be available for use from that point on.
@ ODBC DB Field
<H The user will have the capability to drop an ODBC or JDBC DB field either on the page or within other objects on the page. The other objects include the paragraph object or the marquee object. The user can add the field into another object by right clicking on that object. A pop menu will appear with a choice of inserting the field.
If an object is to be dropped onto the page it must be part of a form. The list of possible fields is generated by a tool that will create the list from querying of the selected database. For more information on how this list is created should visit the JDBC functional spec.
©Paragraph
A paragraph object will allow the user to enter in text. This text will be a free flowing style. This is because the browser in which it is to be displayed will handle the formatting of the paragraph. The user will be able to insert all db field types into a paragraph. Also fonts and size of characters in the paragraph can be changed..
©Forms
©Radio Button
©Datasets
©User Defined HTML
A user defined HTML object will allow the user to enter in straight HTML into the script. This will allow flexibility in creation of the html file. If there is some portion of the html language that is not support the user can use this object to do whatever they want. The html that is part of this object will be pasted straight into the file without any error checking, so, it is up to the user to make sure that their code is correct.
©Check Box
©Drop Down List Box
©Sound
Wizards & Templates
One of the key components of the ScreenLogic script builder is ease of use. With that in mind I'll describe the wizard concept within ScreenLogic. Each object that can be inserted into a script will have a setup wizard associated with it. This wizard will step the page builder through all necessary steps in setting up the particular object. These wizards will go a long way in helping the user in understand what is needed to set up an object. As the user get educated in using the objects they can selectively disable individual wizards. This will be done through the options choice on the frame menu.
Along with the wizards associated with the objects will be wizards which will step the user through the initial steps of setting up a script as well as a script page. This wizard will step the user through setting fonts, default character size, background and foreground colors, etc.
%
Figure imgf000098_0001
Also along the ease of use vein is the concept of templates. When a user creates a new script we will allow the user to choose a template instead of using the wizard to set up the page or script. We will include some canned template files but also give the user the ability to create their own templates. These template will have any common aspects of a script or script page included in them. For example if all the pages in a script used the same template when create the common background and foreground colors can be set ahead as well as font size and any objects which could appear on all pages. This will save the user from having to do the common things on every page.
Property Sheets
Each object that can be inserted into a script page will have a corresponding property sheet. This property sheet will be different for each object and will describe the pertinent information associated with the object. For example if this was a picture object the name of the picture would be available as well as the position on the page. A user could modify this property sheet and apply the changes to change the characteristics of the object on the fly. The following picture is an example of what the property sheet will look like. Since each sheet is different the number of tabs and information on the tabs will change on a per sheet basis.
%
Figure imgf000099_0001
Tools
©spell checker
A spell checking mechanism will be inserted as a way that the user can check their script page for spelling errors. A third party OCX will be employed to do this. Any object which has text in it will be available to be spell checked.
©screen flow view
This tool will give the user a high level look of pages within a script and the links between them. The user will be able to use this to understand the relationships between pages in a script as well as check to see if there are any standalone pages with no link in or out.
©calendar tool
Setting appointments are an important function within many customers' operations. ScreenLogic needs to support an appointment calendar function that is built by supervisory personnel and displayed graphically for the agents. Each of the agents must be able to access the calendar and lock in an appointment, making it unavailable for others. The feature must update near real time in order to display only currently available appointments and be able to inform a requesting agent that their selection may no longer be available and bringing up other options. Most appointments are made on-line with the prospect on the phone. The supervisor needs to be able to see the same appointment screen as their agents and be able to print it out on demand. ScreenLogic will need to support multiple calendars for appointments as it is likely there will be a unique schedule per campaign or per list.
@ agent statistics tools
^7 Near real time _ ,nt display statistics need to be supported. S ,rvisors should have a menu of choices to select from on what an can display about their performance. This includes: Number of calls handled/contacts, various selected result codes, number of sales, revenue attributable to that agent in the local currency and percent of goal. Supervisors need to be able to input a goal per agent or per team or for the call center in either/or # of Sales or total value in $, £ ,¥ etc
©page deployment interface
When the user is done creating or modifying their script they will want to deploy it. This interface will allow them to move the selected pages to the server it will reside on. This will be done through FTP but will be graphical in nature so no knowledge of FTP will be required.
©HTML View
The User will be able to go to the menu and choose to view the HTML that will be generated by this product. This window will be view only since we want to control what is in this file.
Functionality Levels
The functionality available to individual supervisors will differ based on the functionality level given to that supervisor. It is thought that based on the expertise of the supervisor more and more tools and choices will be given. The reasoning behind this is that since we have multiple targets for this product we can tailor the functionality of the product to different levels of users and keep things as simple as we can.
©Level 1
A level 1 user will be given all the capabilities of the ScreenLogic builder.
©Level 2
A level 2 user will be given a scaled down level of functionality. This is done in order to limit the sensory overload that could be associated with a product such as this. It is thought that a level 2 person will only get the base functionality needed to create a script and script pages without overloading them with choice and functionality.
Functions such as the HTML view, user defined HTML object, the ability to disable certain wizards, and others will be disabled in the builder. A user will only be allowed to access these functions when their user level get raised within the Unison system.
Restrictions and Compatibility
Agent Web Station/ScreenLogic Builder
Functional Specification of the
Host Connectivity
CONTENTS
Overview of the HostConn Agent Web Station HostConn Components o Screen Scraping
• Open Connect - server
• SBglue - local terminal emulator o Database
• JDBC - server . ODBC - local
Screen Logic HostConn Components o HostConn Wizard o ScreenLogic Builder Restrictions and Compatibilities
°( Overview of HostConn
The Agent Work Station (AWS) will need to access and display data which is kept in one or more corporate databases. Typically all data that is required to manage a call will be included in the Unison call record via the daily or realtime trickled downloads. However there are cases where direct access to corporate databases are required from the AWS.
Example reasons are:
• the client database is massive and cannot be downloaded (especially the case of inbound campaigns)
• the most current state of the database needs to be presented
• the database is a legacy closed database (screen access only)
HostConn objects
To accomplish this, custom HostConn objects will be installed on a custom portion of the admin frame in the agent BUI. The web pages can access these applets via javascript. These objects might be just applets or a mixture of javascript, applets, and activeX. The objects will have a minimal visual component, clicking on it will allow the user to display status and activity.
An instance of each HostConn object will be started for each database to be accessed. The number of HostConn objects is loosely defined, but typically will be one for each database or terminal session on each host.
There will be 4 types of HostConn objects:
• Screen Scraper Open Connect - server The Open Connect applets will access any 3270/5250 Host screen, via a server.
. Screen Scraper SBglue - local terminal emulator The SBglue objects will access any Davox PC Smart Button(tm) supported terminal emulators, (requires additional local client software, and windows PC).
• Database JDBC - server The JDBC applets are will access any database from a two tier JDBC server, hich will be able to access any network database, (requires establishing a jdbc web server).
• Database ODBC - local The ODBC objects will access any ODBC database, (requires additional local client software, and windows PC).
HostConn Wizard
The ScreenLogic HostConn Wizard will need to be able to gather information on the number of HostConn objects to put in the custom portion of the admin frame. The parameters passed to these objects will be the name of the host and database to access, the login and password information, and whether to login from the start or on first access.
In the case of Screen Scraper objects, the HostConn Wizard will also help the user define parameters to associate table names with keystroke strings which access a specific screens. Updatable field names will be associated with table names and keystrokes required to update a specific field.
ScreenLogic Builder, Vj - Ϊ Λ Λ \
The ScreenLogic Builder will then be able to display the list of available HostConn sessions defined by the HostConn Wizard, and the available tables for each session. The ScreenLogic Builder will then allow the user to pick any field from these tables, to add to any web page. ScreenLogic will display the field as a javascript function on the HostConn objects.
loo Agent Web Station HostConn Components Screen Scraping
Screen Scraping is used to access Legacy host databases by using terminal emulation sessions. The emulators can be hidden, but they are communicated with to navigate to different screens by sending keystrokes. The data on any screen can be read by specifying the row, column and length of interest.
To update a field, often requires accessing a different screen than the one used to display the data. The key sequences to enter the data may also require special field clear and enter keys.
To keep the Screen Scraping as similar as possible to other Database data, table names will be associated with keystroke sequences used to get to the screen which displays the data. To read a field, only the table name and specific row,column and length need to be passed to the host session applet. Which will then access that screen associated with the table, and return the data at the position specified.
For updates, a different table name (screen locator) may need to specified. An update field name will be associated with pre-data and post-data keystroke sequences. These are the necessary special keys to post the edit. To update a field, the table name, the update field name, and the new data need to be passed to the host session applet.
Open Connect - server
Figure imgf000103_0001
The Webconnect and openvista software from Open Connect is a Server based host access software. This server software is included with Netra J server software from SUN. The server based emulation is preferred over local emulators discussed next, because the server emulators are administered centrally and do not require the heavy load on the PC which a local emulator requires. Also server based emulators will run on any type of workstation, not just a PC. As no software installation is required on the client other than a browser that supports java, it is far easier to install if no terminal emulator currently exists on the client workstation.
The following image is the terminal emulator applet, provided with WebConnect server package from Open Connect. The Java Applet communicates with the server it came from, which acts as a proxy/router and connects to the actual host.
Ό,
Figure imgf000104_0001
_j| Unsigne 'Javaj eteWindow
The following is the html used to start the above emulator WebConnect.class:
<applet archive=WebConnect . zip code=WebConnect . class width=500 height=25 >
<param name="host" value=" 192 . 168 . 120 .78 ">
<PARAM NAME="cabbase" value="WebConnect . cab">
<param name="port " value=" 3270 " >
<param name="session" value="hostgog . ses">
<param name="beepfile" value="beep. au">
<param name="emulation" value="3270">
<param name="autostart " value="192.168.120.78 : 83">
<param name="button" value="New hostgog">
<param name="fontsize" value="12">
<param name="clickpad" value="ON">
<param name="langname" value="en_US">
<param name="htmlport" value="83">
</applet>
Something similar to this would be embedded in the custom portion of the admin frame on the BUI, for each terminal emulation session to be started.
Additional parameters or identified files stored on the server, would contain the login and password information, and whether to login from the start or later, table names associated with keystroke strings
, u which access a specific scree»._, update field names associated with pre-data α~J post-data stπngs.
The following methods are supported.
. getData(tablename,row,col,len) • setData(tablename,fieldname,value)
SBglue - local terminal emulator
Some users will already have terminal emulators installed on their PC workstation, and will want to use that emulator rather than the server based emulator. This is not the preferred approach as it has numerous limitations. But there may be a host for which the customer has a terminal emulator, but is not accessible via the WebConnect software.
What will be required is that the local terminal emulator runs on a PC with windows 95, and that the terminal emulator can be controlled via HLLAPI calls or DDE or OCX. The degree of control must be such that keystrokes can be sent, the screen can be read, and conditional delays or screen status can be checked. Although we have several terminal emulators of this type supported with the PC SmartButton software and ClientAPI and AgentGuide software, typically there will be a fee for implementing the new terminal emulator.
One of the terminal emulators supported by SBglue is Dynacomm. And example Dynacomm screen follows. This would be running as a separate application on the PC.
Figure imgf000105_0001
The above screen can be accessed from Internet Explorer by use of the DAVOX SBweb OCX, which calls the DAVOX sbglue32.dll. These two packages should be installed on the PC, but can be downloaded from the web server using miscrosoft's CAB techniques. The following is an example of a web page accessing Dynacomm.
102
Figure imgf000106_0001
The following is the html for the above page embedding the sbweb.ocx:
<OBJECT ID="Websbl" WIDTH=100 HEIGHT=50 CLASSID="CLSID:FF48F245-A623-llD0-8864 -00009290EE10">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="2117">
<PARAM NAME="_ExtentY" VALUE="1058">
<PARAM NAME="_StockProps" VALUE="0"> </OBJECT>
<SCRIPT> function js_sbl() {
Websbl. Package = "DYNACOMM" ebsbl .TopicName = "adialer . dct "
Websbl . Initialize ( )
Websbl . Connect ( )
Websbl. Status ( ) forml . retv. value = Websbl . RecvData 1 </SCRIPT>
Something similar to this would be embedded in the custom portion of the admin frame on the BUI, for each local terminal emulation session to be started. ιo4 Additional parameters would contain the login and password information, and whether to login from the start or later, table names associated with keystroke strings which access a specific screens, and update field names associated with pre-data and post-data strings.
The following methods are supported.
• getData(tablename,row,col,len)
• setData(tablename,fieldname,value)
Database JDBC - server
The Java API used to access databases is called JDBC. The Web Station Admin makes use of JDBC to access the Sybase database on the Unison server.
JDBC - server access described in this section are Drivers of Type 3 and 4 described in the Javasoft JDBC drivers page.
1. ...
2. ...
3. A net-protocol all-Java driver translates JDBC calls into a DBMS-independent net protocol which is then translated to a DBMS protocol by a server. This net server middleware is able to connect its all Java clients to many different databases. The specific protocol used depends on the vendor. In general, this is the most flexible JDBC alternative. It is likely that all vendors of this solution will provide products suitable for Intranet use. ...
4. A native-protocol all-Java driver converts JDBC calls into the network protcol used by DBMSs directly. This allows a direct call from the client machine to the DBMS server and is a practical solution for Intranet access. Since many of these protocols are proprietary the database vendors themselves will be the primary source for this style of driver. ...
The distinguishing point in JDBC - server access, is that this API can be made from inside a Java Applet without violating security contraints. To meet this requirement, the company must have a system with access to the database, and a minimal http server to serve the JDBCctøvers/øM.class java applet for that database.
lo5 Internet/intranet
ODBC Drivers
Figure imgf000108_0001
An example (above) would be JDBCdataramp.class, deployed from an winNT server, running DataRamp server. This would permit access to any ODBC database accessible to the winNT server. (Note these ODBC databases may already be accessible to the client workstation But the Java 1.Ox security model prohibits applets from accessing native libraries.) If the winNT server is the actual server of the ODBC database, no network penalty is lost by going through the http (Microsoft internet) server
Figure imgf000108_0002
Thin Clients Middle-tier Server Databases
• Presentation • Data Storage
• Business Logic
• Communication • 3rd. Party Services & Processing
• Messaging/Security
Another example (above and below) would JDBCsybase class, deployed on a NT or Sparc running Jaguar CTS, or a Sybase sei . ~r, running OmniCONNECT or DirectCONNh^ T middleware products. Here the Sybase jConnect jdbc driver would be used.
Figure imgf000109_0001
In all cases the JDB /όver.s o/j.class java applets would all take the same parameters ( the database name, login, password and connect option). One applet should be added for each database. The applets will be installed on a custom portion of the admin frame in the agent BUI. The web pages can access these applets via javascript.
And all would support the same methods.
< getData(tablename,fieldname)
. setData(tablename,fieldname,value)
Conversion to and from string will be implied for all data base types.
ODBC - local
Some users will already have access to their corporate databases already installed on their PC workstation, and will want to use them rather than the server based middleware. Like SBglue, this local method is not the prefeπed approach as it has numerous limitations.
What will be required is that the local database access is ODBC 2 and runs on a PC with windows 95.
The ODBClocal OCX would all take the same parameters ( the database name, login, password and connect option). One object should be added for each database. The objects will be installed on a custom portion of the admin frame in the agent BUI. The web pages can access these objects via javascript.
They will support the methods:
* getData(tablename,fieldname)
• setData(tablename,fieldname,value)
ScreenLogic HostConn Components HostConn Wizard
A HostConn wizard would be written in powerbuilder, to run on the Screen Logic Supervisor system. It would be used to determine all the databases and tables and updatable fields to be available to the ScreenLogic Builder. The necessary applets and objects and javascript will be added to the custom portion of the admin window.
5 The HostConn Wizard is septate from the ScreenLogic Builder, in that it re^ ^res a system with live HostConnectivity to run. The data it captures is all that is needed by ScreenBuilder to make data selections off-line.
In addition, the HostConn Wizard would be run by someone with knowledge about the Host DataBases and Terminal sequences. And would be best at deciding which fields to permit write access.
However, the HostConn Wizard can (an typically will) be run on the same PC that runs ScreenLogic.
Screen Scraping
The HostConn wizard will activate the desired terminal emulator, and let the user enter and test various keystroke strings as means to login and to access different screens. Successful sequences can be stored away and associated with table names. Also for each table, a screen snapshot will be stored.
Strings used to update specific update fields will also be tested.
DataBase
The HostConn wizard will open the desired database connection, and display available tables for that login. Selected tables, will be stored away, along with all the fields available for each table.
The user will be asked to identify those fields (if any) which ScreenLogic Builder will be allowed to update.
ScreenLogic Builder
When the user of ScreenLogic Builder selects HostConn Data Object, a list of available HostConn sessions defined by the HostConn Wizard will be displayed. From each session, a list of available tables will be displayed. If a table is selected, and the session is a database type, a list of fields are displayed from which the user can pick.
If the user is planning to create an updatable field, the user will be displayed a list of updatable fields for that table, defined by the HostConn Wizard.
Screen Scraping
If the session is a screen scraper type, for the table selected, the user will be shown a screen shot. The user can then highlight the row,column, length of interest.
D<υ
Figure imgf000111_0001
If the user is planning to create an updatable field, the user will be displayed a list of updatable fields for that table. Then the user will be asked for the table and screen data (if any) to preload the updatable field. Note that the screen to read the current value of an updatable field may not be the same screen where the update is done.
Restrictions and Compatibilities
Web Connect will only connect to Hosts supporting telnet 3270, or telnet 5250, or regular vt220 telnet sessions. o gateways supporting tn3270 to SNA / coax connections need to be researched SBglue DLL needs to be updated to support all the SB terminal emulators and compiled for 32bit (sbglue32.dll) o The only local terminal emulators supported must run on a PC with windows 95, and must be an emulator that can be controlled via HLLAPI calls or DDE or OCX. Local access methods (SBglue, ODBC) require use of OCX/ ActiveX objects. Applets for current java browsers have no means for accessing any local native code, as it breaks the limited security rules provided java l .Ox. o Local access methods will be limited to Windows95 and Microsoft Internet Explorer Browser o Research into how to access netscape's plugins may allow running the OCX's under netscape. o Testing on interoperability of Java Applets and OCX will need to be researched. Inter-applet and javascript - applet communication differs on different browsers Applet to javascript and Applet to Applet communication under Microsoft Internet Explorer may require embedding OCX support objects, javascript not supported on all browsers - the ScreenLogic Builder should be able to deploy an alternate html tree for those browsers. o netscape server based javascript processing may be researched o java server - jhtml (embedded java) may be researched
!01 Restrictions and Com - .abilities
Overview of the Agent Web Station BUI
The Agent Web Station (AWS) is an HTML/JAVA based workstation invoked from a Web Browser. Multiple browser windows and frames provide the context within which an entire interface is developed for agents to utilize all the functionality of the Unison System. As depicted in figure 1 the AWS is a mutli-layered implementation designed to best use the available technologies. The uppermost component is the BUI which is written in HTML and Java Script. This approach lends itself to an image/object style appearance rather than a typical button/text appearance of the common GUI. The HTML performs the following functions for this layer.
• Window Creation, Display and Sizing . Frame Orginization
• Image Display
. Anchor's for Point/Click Operations
• User Script Presentation (Screen Frame)
Java Script comprises a layer below the HTML which bridges the point and click actions from the user to the API applet and other operational applets which may reside within the BUI. In effect, it translates the agent activities into real time communications with Unison or other hosts for session control and data retrieval/update. Some examples of this would be
• Logon/Logoff
• Campaign Selection
• Population of Screen Information from Data Record Fields . Call Transfer
Additionally, when user scripts are displayed, Java Script allows HTML to be built dynamically with data from the current call record and/or host databases. The API Applet is the Java equivalent of the Unison Client API (CLAPI) with many additional benefits such as Platform Independence, Compatibility with TRS Message Library, Session State Machine and an overall higher level of interface which allows for a very thin BUI level. For more information on this layer, please refer to the API applet documentation.
contents
Figure 1: AWS Architecture Agent Web Station
(AWS)
Specification of the Browser User Interface (BUI)
CONTENTS
Overview of the Agent Web Station BUI Window/Frame Architecture . Main Window . AWS BUI Window
. Administration Frame . Termination Code Frame . Status Frame . Screen Frame
l O eOver etc.)
Figure imgf000114_0001
Unison Communication Host Communication Agent Statistics, Animation and UtilityApplets for User Scripts
contents
Window/Frame Architecture
Since AWS is run from a browser, there are some operational considerations which must be accounted for when designing an application which is not intended for simply browsing information. For example, a browser allows the user to move backwards and forwards through pages or select different URL's. This is allowable when working a script, but since our applets and Java Script are also running on the current page an agent could inadvertently logoff Unison with a misplaced mouse click. For this reason, the AWS BUI has been designed to minimize potential user pitfalls by utilizing multiple windows and frames which are under Davox control.
contents
[ \ λ. Main Window
A main page (aws.htm) is the initial URL specified by the agent from his browser which will be brought up as the current web page. The purpose of this page is simply to provide an introductory screen and allow the agent to bring up the actual AWS in a seperate browser window via point/click. The following template HTML/Java Script is used on this page and throughout the AWS BUI to translate image point/click's to specific Davox actions.
&ltSCRIPT> function newWindow()
{ newWindow=window. open ( "new . html" ,
"windowName", "wιdth=xxx, height=xxx, ... parameter list") ) </SCRIPT>
&ltBODY>
&ltA href=dummyRef onClick="newWindow ( ) ; return false ; " >
SltlMG src=" images /start_aws . gif ">
The parameter list supplied to 'open' allows for changing size as well as removing other browser functionality on the new window, such as location entry, toolbars etc.
contents
AWS BUI Window
The BUI window(BUI.htm) consists of multiple frames within a single Browser window. Each frame, as the following sections describe, performs a different function relative to the overall AWS operation. Important to note about the BUI window is that it has no controls or toolbars other than what is provided by Davox and is sized according to the AWS requirements. The four frames within this window are
. Administration Frame
. Termination Code Frame
• Status Frame
• Screen Frame
contents
Administration Frame
The Administration Frame is the "heaviest" of the BUI Window's frames. It contains the API applet and 90 Percent of the Java Script as well as supporting Applets and Script for inter-frame communication and JDBC host connectivity. Being non-scrollabe and non-resizable, this frame is comprised of a single HTML page (admin.htm) which does not change during the entire AWS session with Unison. Since the API Applet resides here, the connection to Unison is shutdown as soon as this window is quit.
The Java Script within the admin.html performs multiple functions:
• Message Communication to/from API Applet
\ \ _ . Handling of HTML L .its
. Pop-up Window Creation
• Frame to Frame Communication and Management
Communication to the API Applet is done using Java Script functions which call various methods of the API. Since through Java Script, you have access to many of the Browser objects, invoking a method in an Applet is done by reference through the browser's object hierarchy. For example, function admProcessLogon ( uname , passwd)
(
/* Call the API Applet's Login */ document . APIApplet .admLogon (uname, passwd) ;
} invokes the admLogon method within the API.
The Adminstration frame communicates with the API for two primary reasons, to issue unison WSAPI commands on behalf of the Agent (Logon, Break, Termcodes etc.) and to retrieve and set data fields (as the API also provides a persistent data store). However, the latter is utilized more in the screen frame during script processing for access to data record fields.
Communication from Java Script through the API is asynchronous. While the admin.html issues requests via function calls, responses and unsolicited requests from the API are retrieved by polling the API. When a specific message is available, the admin.html will invoke a Java Script call which has been formatted by the API using the 'eval' method. This has been done for compatibility with other browsers which do not have Java Script Object classes accessible to Java and cannot therefore provide a direct call to Java Script functions (ie. Microsoft Internet Explorer). For example, function pollResponse ( ) { str = document .APIApplet . admResponse () ; if (str != null) eval (str) ; }
Where str="admLogonResponse (0, 'Invalid Username1)"
The above example would invoke a call to the Java Script function admLogonResponse which would process the response as if called from the API directly.
HTML Events are handled by Java Script with the built-in event handlers from within specific HTML tags. One of the more common handlers utilized in the AWS is OnClick' which is triggered when a user clicks on an anchor or input field. The following HTML invokes the logon process when the user selects the 'Continue' button of the Logon Window.
&ltFORM name="lform">
Username&ltlNPUT type=text maxsιze=16 name="uname">&ltBR> Password&ltlNPUT type=text maxsιze=16 name="passwd">&ltBR> SltlNPUT type=Button value="Contιnue" onClick=
"window. opener. admProcessLogon ( lfor . uname .value, Iform. passwd . value) "> </FORM>
Pop-up Utility Windows are created by the Administration Frame for particular functions requiring additional data such as Logon (Username and Password) and Campaign selections, and various Status alert conditions which do not appear in the Statistics Window or Screen Window. As in the example above, the logon window would be created with that HTML and therefore the reference to 'window.opener' which directs it to the admProcessLogon function residing in the window which
IK opened the logon window. :se windows are temporary and only exist lo. mtil the user either enters data and continues or acknowledges the Alert status.
Frame to Frame Communication and Management is provided by the Java Script in the Admin frame as a central point of control. Other than the Screen frame which controls the URL's (script pages) being displayed, the admin.html specifies the URL's which are displayed in all frames of the AWS and in the Screen frame while between calls or on break.
contents
Termination Code Frame
The Termination Code Frame is responsible for providing the the graphical object representations of the available termination codes which the agent may use on a specific call. These graphics will be assigned using a modified Termcode editor and stored in a DAVOX generated HTML page which is displayed at time of screen pop in the Termination Code Frame. The generated HTML anchors each of the individual graphics with an onClick event handler such that a generic Java Script tcode function is called which invokes the appropriate API Applet method communicating the termcode to the WSAPI. An example of a tcode HTML (to process the termcodes shown in the BUI window) is presented below.
&ltSCRIPT> function promptResponse (str)
{ parent . admin .document .APIApplet . tcodeRequest (str)
} </SCRIPT>
&ltA HREF=dummyRef NAME=Sale onClick="promptResponse ( ' Sale ' ) ; return false; "> SltlMG SRC=ιmages/tcode_sale . gif> </A>
contents
Status Frame
The Status Frame is used to Display Agent Statistics and Campaign Statistics which are of importance to the individual Agent working the Campaign. These will be graphical and graphical/text displays of Result codes, Sales, Dollars etc. in Pie Charts and or graphs. The displays will be driven by an Applet which is in communication with the Unison Statistics Server and Database. The specific Statistics which are displayed here have not yet been defined, However these will be customizable by the supervisor.
contents
Screen Frame
The Screen Frame is responsible for all Agent Script display. It is the equivalent of the Power Scripting portion of our VT100 Unison Display which has been HTML'd and Webbed. The initial page is a URL
15 built from the initial "page" ...ήch is passed to the API Applet from the WSi .. I. Embedded within the HTML is Java Script and Java Applets which enhance the capabilities of the browser by providing Record Data field access/update, Branching Logic and special functions such as Data sets, order entry etc. Please refer to the Screen Logic document for more information on these functions.
contents
Restrictions and Compatibilities
The first release of the AWS will be Netscape 3.01 compatible. As the other Browser vendors continue to adopt the industry standards, these will also be qualified for use. Since the software is Browser enabled it will run on any hardware platform supporting the Netscape 3.01. This includes PC, Mac Unix workstation, and several Network Computers.
Il l* Agent Web Station
(AWS)
Functional Specification of the
User Interface Component Applets
CONTENTS
Overview of the Agent Web Station Ul Components Java, JavaBeans, or JavaScript? The Buzz on Beans Applet Architecture
• Setting Properties with Parameters
• List of Applets
• Button Bar
• Image Button Bar . Radio Button Bar
• Checkbox Bar
• Clocl
• Calendar
• Listbox
• Documentation
. Development Tools Restrictions and Compatibilities
π Overview of the Agent Web Station Ul Components
The User Interface Components are the set of objects that can be modified using the Supervisor Console. Goal is that the supervisor can use a graphical tool for all customization of agent screen items, both visible (Ul) and invisible (logic), without writing code. Our builder tool will generate the HTML pages for the campaign. The component library may contain objects as simple as a button or as complex as an order form, appointment scheduler, etc.
Java, JavaBeans or JavaScript?
Components can be written in Java, JavaBeans, or JavaScript. Which one is used for a specific component will depend on its intended use. JavaScript source code is visible and editable in the HTML page, whereas Java class files are distributed already compiled, hiding their source code. Simple components such as a single button, text field, etc. can be written in JavaScript, while more complex components may be applets. Early implementation of applets will be in version 1.0.2 of the Java Development Kit and later migrated to version 1.1.
Figure imgf000120_0001
The Buzz on Beans
According to JavaSoft, "A Java Bean is a reusable software component that can be visually manipulated in builder tools." This is done by implementing standard interfaces in the Beans which the builder tool can query and/or modify as required. Components can be as simple as a button or as complex as an order entry form or calculator.
• Beans can be nested.
. The difference between a Bean and an instance of a class is called introspection, the ability of a builder to manipulate the state.
• Beans can be used by JavaScript builders such as Netscape's Visual JavaScript. . Not all useful components should be Beans.
Converting an existing class to a Bean is simple:
. Add 2 methods by modifying or subclassing the class . Class must implement Serializable or it must be added
To add a property, create an instance variable and the two methods to query/set it: private Color beanColor = Color. blue; public Color getColor ( ) { return beanColor; public Color setColor (Color newColor) { beanColor = newColor; repaint ( ) ;
o make the Bean an "event source" to which other Beans may respond: import j ava . awt . event . * ; import j ava . util . vector; public synchronized void addTYPE (TYPE listener) { listeners . addElement ( listener) ; } public synchronized void removeTYPE (TYPE, listener) { listeners . removeElement ( listener) ; ) private Vector listeners = new Vector ( ) ; //list of registered listeners
To make the Bean an "event listener" to receive notification of certain events:
SourceObject.addTYPE(this) ;
SourceObject .removeTYPE (this) ; //when no longer interested in events of TYPE
Applet Architecture
The eventual goal is to provide the Supervisor Console with a set of customizable controls in the form of JavaBeans, but this will have to wait until Java 1.1 is supported by browsers with a major market share. Without going to the new event method or to "JavaBeans" (see below), it is possible to have "customized" applets embedded in generated HTML pages by making extensive use of applet parameters with consistent names across the library of applets. All applets will implement properties via these parameters.
Setting Properties with Parameters
The Supervisor Console builder will generate HTML pages containing applet tags to call the desired applets. Due to the implementation under PowerBuilder, each applet will be passed a single parameter, paraml, containing a series of name-value pairs in the format: <param name="parami" value="firstparam=l, second=2 "> etc. Generic properties include foreground/background colors, font, quantity (multi-control sets), etc. The generic parameter names are:
Figure imgf000121_0001
List of Applets
Button Bar applet provides a set of buttons with text labels that executes a showDocument in the current frame. Required parameters the number of buttons(qty), the button labels, the URL of the document to be shown, and the name of the frame in which to show the document.
Figure imgf000122_0001
Figure imgf000122_0003
Image Button Bar applet serves the same function as the Button Bar applet, but the buttons contain images rather than text labels. Required parameters qty, name, image, URL, frame.
Figure imgf000122_0002
Figure imgf000122_0004
Clock applet provides a time/date display. Supervisor can select date/time format, colors, font. Required parameters TBD.
12:00 PM -
Calendar applet provides a month view and can in phase 2 be used as part of the appointment scheduling system. Parameters TBD.
0D
Figure imgf000123_0001
Radio Button Bar presents a single-selection multiple-choice option and returns the value selected Parameters TBD
Figure imgf000123_0002
Checkbox Bar presents a multiple-selection multiple-choice option Parameters TBD
?G
Listbox provides a drop-down selection-list of choices Parameters TBD
Figure imgf000123_0003
Credit Card Verification TBD Pie Chart TBD Bar Chart TBD. Pop-up Calculator TBD Order Form TBD
Documentation
So that others may more easily understand the funtionality of each applet, it should be well-documented Specific mention should be made of all properties, parameters, size requirements, and return value(s) if applicable
. Use Javadoc conventions • Implement getAppletInfo() . Implement getParameterInfo()
Tools
Development tools useful in developing the Agent Web Station Ul Components include
. JDK - Java Development Kit 1 0 2, 1 1 , and 1 1 1 have been released Java API version 1 0 2 is
1\ most widely supporte y browsers, but 1.1.1 will be incorporated in. oth Internet Explorer 4.0 and Netscape Navigator 4.0 when they ship later this year. . AFC - Microsoft's Application Foundation Classes. The Java equivalent of the Microsoft
Foundation Classes (MFC). . JFC - Java Foundation Classes, being developed jointly by Sun, IBM and Netscape, extend the
Java Abstract Windowing Toolkit (AWT) and Netscape's Internet Foundation Classes (IFC). . Symantec Visual Cafe Pro - next release will support development of JavaBeans components. • Borland JBuilder - next release will support development of JavaBeans components. . Netscape Visual JavaScript is in early preview but will be released by the end of '97. It is a graphical builder tool that allows users to assemble applications out of JavaBeans components without writing code.
Issues
Complete library of applets not determined.
Java API 1.1 and JavaBeans architecture not currently supported by browsers (Netscape, Microsoft).
Visual JavaScript not released until late 1997.
n Getting Started
Getting Started
About YRICall
LYRICall is a Windows 95-based tool for creating, designing, and manipulating call center scπpts and script pages for use with the UNISON call center system Users of Windows 95 will readily recognize many of LYR- ICall's most useful features, such as wizards, explorers, and πght-click functionality
What's a Script?
A scnpt is a set of script pages which define how a telephone contact is handled by call center agents Scripts are tied to applications (sometimes referred to as TACs), such as telemarketing applications, customer service applications, and collections applications
Using a Windows 95 analogy, a scnpt is similar to a folder, while scnpt pages are similar to the files you place in the folder
What's a Script Page?
A scπpt page is the actual screen a call center agent views in a browser when handling a telephone contact Scnpt pages are used to cue your agents (to tell them what to say when dealing with customers, etc ), place orders, disseminate information, and input information into databases Script pages are often arranged using a logical branch structure, where a decision made on one page determines what happens next
In the UNISON/LYRICall environment, a scnpt page is roughly the equivalent of a typical page on the World Wide Web Like web pages, script pages are written in HTML (HyperText Markup Language) However, thanks to the LYRICall wizards, you do not have to be fluent in HTML to create scπpt pages with LYRICall
JU3 Getting Started
With LYRICall, you can place the following common HTML elements on your scπpt page
Java Applets
Pictures
Headers
Static Text
Buttons
Rich Text Paragraphs
Hyperlinks
Text Boxes
Text Areas
Check Boxes
Radio Buttons
List Boxes
Object Tables
Hoπzontal Rules
Functions and Databases
You may also use LYRICall to work with functions and manipulate databases. Functions are dynamic interfaces which make the scπpt pages you create with LYRICall interactive, allowing your agents to run Java programs, process math functions, and interact with databases.
The LYRICall Host Connectivity Wizard is a tool that provides users with a simple graphic user interface to probe existing data sources and choose which fields should be available for scπpts. Users can also use the Host Connectivity Wizard to designate access levels for certain datafields
Figure imgf000126_0001
Getting Started
Standalone Mode
You may use LYRICall without being connected to a UNISON system by operating in standalone mode. However, to work with datafields, you must first load them from your system. After doing that, you can use the datafields in standalone mode. In other words, when operating in standalone mode after having once connected to a UNISON, you do not have to re-download your datafields.
Starting LYRICall
To start LYRICall, click Start on your Windows 95 taskbar. Then click Programs, then Davox, then LYRICall.
You can also create a Windows 95 shortcut for LYRICall and place it on your desktop. To create a shortcut, use the Windows Explorer Find utility to locate the LYRICall executable file, named "screenlogic.exe." Once you have found screenlogic.exe, right-click on its icon, and from the popup menu, select Create Shortcut. Windows Explorer will create a new icon, labeled "shortcut to screenlogic." You may now drag this icon and drop it on your desktop. Now, to start LYRICall, merely double-click on the icon on your desktop.
The LYRICall Workspace
After logging into the system with your UNISON user name and password, or running LYRICall in standalone mode, the LYRICall Workspace appears.
Note: Set Windows 95 to use "small fonts" for best viewing.
Getting Started
LYRICall Workspace
Figure imgf000128_0001
The LYRICall workspace is made up of five basic elements:
Pulldown menus (File, Edit, View, Insert, Tools, Window, Help)
FrameBar
SheetBar
Script Explorer window
Scnptpage View window Getting Started
The following will help familiarize you with the elements of the LYRICall workspace.
Toolbars - In General
By default, LYRICall's two toolbars, the FrameBar and SheetBar, appear anchored towards the top of the LYRICall workspace. However, by clicking and holding on a toolbar, you may move it anywhere on the LYRICall workspace. If you move a toolbar towards any one of the edges of the workspace, it will anchor on that edge.
By default, only a tool's icon appears on the toolbars. If you wish to see text along with the icon, right-click the toolbar, and select Show Text from the pop-up menu. Each tool's name will now appear under its icon on the toolbar. In addition, if you hover the mouse over an icon on the toolbar, its name will appear in a pop-up box, and in the message area at the bottom of the LYRICall workspace.
FrameBar
The FrameBar provides quick and easy point and click access to the most commonly used LYRICall tools. It is active even when no script page is in the Scriptpage View window. The FrameBar provides the following:
Note: Detailed descriptions of the FrameBar tools are provided in the Creating a Script and Script Page Objects chapters.
Exit - Click on this icon to exit from LYRICall.
Run Wizard or Template - Click on this icon to run a wizard or a template.
New Script Page - Click on this icon to create a new script page.
Close Script Page - Click on this icon to close a script page.
Figure imgf000129_0001
r-srjga Arrange Windows - Click on this icon to arrange the win- <*=*§ dows in the LYRICall workspace.
ΛA Getting Started
Save Script Page - Click on this icon to save the script page you are working on.
Figure imgf000130_0001
Import Objects, Publish Objects, Host Connectivity Wizard - Right click on the carat of this icon to access the Import Objects, Publish Objects, and Host Connectivity Wizard. The Import Objects and Publish Objects
Figure imgf000130_0004
icons are disabled when in standalone mode.
Help - Click on this icon to initiate LYRICall help. LYRICall Help is an electronic subset of this manual. For help on a
Figure imgf000130_0002
particular item, select the appropriate chapter, and then use your browser's "Find on this page" capability to locate help on a specific subject.
SheetBar
The SheetBar provides quick and easy point and click access to the most commonly used objects placed on a script page. It is only active when a script page is in the Scriptpage View window. The SheetBar provides the following:
Note: Detailed descriptions of the script page objects and their placement on your script page can be found in the Script Page Objects chapter.
Figure imgf000130_0003
/ L c^ Getting Started
HTML Object Add - Click on this icon, and then click any
Figure imgf000131_0001
where on the Scriptpage View window to place an HTML Object on your script page.
Horizontal Rule - Click on this icon, and then click anywhere on the Scriptpage View window to place a Horizontal Rule on your script page.
Header - Click on this icon, and then click anywhere on the Scriptpage View window to place a Header on your script page.
Static Text - Click on this icon, and then click anywhere on the Scriptpage View window to place Static Text on your script page.
Button - Click on this icon, and then click anywhere on the Scriptpage View window to place a Button on your script page.
Rich Text Paragraph - Click on this icon, and then click anywhere on the Scriptpage View window to place a Rich Text Paragraph on your script page.
Hyperlink - Click on this icon, and then click anywhere on the Scriptpage View window to place a Hyperlink on your script page.
Text Area - Click on this icon, and then click anywhere on the Scriptpage View window to place a Text Area on your script page.
Text Box - Click on this icon, and then click anywhere on the Scriptpage View window to place a Text Box on your script page.
Check Box - Click on this icon, and then click anywhere on the Scriptpage View window to place a Check Box on your script page.
Radio Button - Click on this icon, and then click anywhere on the Scriptpage View window to place a Radio Button on
Figure imgf000131_0002
your script page.
/J 9 Getting Started
List Box - Click on this icon, and then click anywhere on the Scriptpage View window to place a List Box on your script page.
Object Table - Click on this icon, and then click anywhere on the Scriptpage View window to place an Object Table on your script page.
Dataset Table - Click on this icon, and then click anywhere on the Scriptpage View window to place a Dataset Table on
Figure imgf000132_0001
your script page.
Rich Text Paragraph Formatting Buttons -
Use these buttons, which appear once you select to work with rich text, to format the text of your Rich Text Paragraph. With your mouse, highlight the Rich Text you wish to format, and then click on the icon you wish to utilize. The B icon makes the blocked text appear in boldface, the / icon makes the blocked text appear in italics, the _ icon underlines the blocked text, the K icon puts a otrikothrough through the blocked text, and the colorblock icon changes the color of the blocked text.
Pulldown Menus
The LYRICall workspace has seven standard Windows 95-like pulldown menus: File, Edit, View, Insert, Tools, Window, and Help
LYRICall Pulldown Menus.
The following brief descriptions will help you understand the use of each pulldown menu.
File Menu
Use the File menu to create a new script or script page, close an open script page, run a wizard or open a template, save a script page, save a script page as a template, print a script page, or exit from LYRICall. The
Figure imgf000132_0002
Getting Started
Wizards Templates selection includes a wizard to create a new scπpt or script page, and also provides a list of available templates
When you save a script page as a template, you can use that page's properties to create other script pages For example, if you would like all your scπpt pages to show your company's logo, you can create a script page with your company's logo, save it as a template, and then use the template to create the rest of your script pages
File Pulldown menu £άrζ £ιefft Insert look _£ι _&&**'•■ ' CtrWέ ϊ S H*ds/TeπιpiatesA , *~
New Script...
Save As Template. A ' A" β**if>-*t * * «Λ * Cbf+P-
Edit Menu
Use the Edit menu to cut or copy an object, undue a cut object, paste an object, or configure LYRICall's options
Edit Pulldown Menu
Figure imgf000133_0001
(S I Getting Started
View
Use the View menu to check the HTML source code of your scπpt page, or to view your scπpt page in a browser Use the Browser (BUI) option to view the script page you are working on in a browser when you wish to check layout, colors, etc. Use the Browser (TEST) option to view all of the pages in your scπpt in your browser in a "test" environment
View Pulldown Menu _Λ
Figure imgf000134_0001
Insert
Use the Insert pulldown menu to place a script page object onto your scπpt page.
Insert Pulldown Menu
Figure imgf000134_0002
Getting Started
Tools
Use the Tools pulldown menu to launch the Host Connection (Connectivity) Wizard, the Import Objects tool, or the Publish Objects tool.
Tools Pulldown Menu
:^ϊdo i β ;A
Figure imgf000135_0001
Window
Use the Window pulldown menu to see what windows are open in the LYRICall workspace. A check next to a window means that script page is currently active. You may also use the Window pulldown menu to stack the windows in the workspace.
Window Pulldown Menu
Figure imgf000135_0002
Help
Use the Help pulldown menu to access LYRICall's online help. Selecting About LYRICall Will tell you the version number of your LYRICall program.
Help Pulldown Menu
Figure imgf000135_0003
/d3 Getting Started
Script Explorer
The Script Explorer window is a tool for organizing your scripts and script pages. Using a simple Windows 95-type folder format, the Script Explorer shows what scripts and what script pages are available. Scripts are represented by folder icons, while script pages are represented by page-and-pencil icons. A + symbol next to the folder icon indicates a collapsed script containing script pages, while a - symbol next to the folder indicates an expanded script, with the script pages (if any) visible. Clicking on the + or -, or double clicking on a folder containing script pages expands the folder to show its contents, while double clicking on an expanded folder closes it.
Figure imgf000136_0001
Getting Started
Script Explorer window
Figure imgf000137_0001
/c?<S~ Getting Started
Right Click Functionality with Script Explorer Right Clicking on a Script Page
Right clicking on a script page in Script Explorer gives you the option of deleting the script page, renaming it, or copying it for use in other script pages.
Right clicking a script page in Script Explorer
Figure imgf000138_0001
Right Clicking on a Script
Right clicking on a script in Script Explorer gives you the option of deleting the script page, changing its properties, renaming it, or copying it.
Right clicking a script in Script Explorer
Figure imgf000138_0002
AA Getting Started
Scriptpage View Window
The Scriptpage View window is the window in which you will create and edit script pages. Inside the Scriptpage View window you'll find the objects you place on your script page, or representations of the objects you place on your script page.
Figure imgf000139_0001
Focus Indicators
When you click on an object on your script page, the object gets surrounded by a small dotted-line box called a focus indicator. This focus indicator lets you know that you are currently working with that object. For Header and Rich Text Paragraph objects, the insertion point is the focus indicator.
/ i / Getting Started
Right Click Functionality with the Scriptpage View Window
Right Clicking on an Empty Space
Right click on an empty space of a script page, and the Scπpt Page Properties window will appear This window allows you to quickly change the properties of your scπpt page Using the tabs, you can change your script page's title, its font, and various other attributes You may also use this window to place a Function on your script page
Scπpt Page nght click functionality
Figure imgf000140_0001
/J Getting Started
Right Clicking on a Rich Text Paragraph
When you right click on a Rich Text Paragraph on your script page, the following menu appears.
Rich Text Paragraph Right Click Menu
Figure imgf000141_0001
Using this menu, you may undo a change, cut, copy, or paste a selected block of text, select (block off) the entire Rich Text Paragraph, delete a selected block of text, cut the Rich Text Paragraph entirely, insert a data field or hyperlink at the cursor insertion point, or align the rich text paragraph.
>7 Getting Started
Script Page Object Right Click Functionality
When you right click on an object on your script page, the following menu appears:
Object Right Click Menu
Figure imgf000142_0001
Using this menu, you may delete an object, cut an object, copy an object, or view or change an object's properties.
Note: Other menu options may be added or subtracted, depending on the object.
Note: You may only copy and paste objects within a particular script page. In other words, you cannot copy an object on one script page, and paste it on another script page. If you want to copy a number of objects from one page to another, save the page from which you would like to copy objects under a different name. Then open the new page and edit out what you don't need.
/A Creating A Script
Creating A Script
Scripts and Script Pages
A script is a set of script pages which define how a telephone contact is handled by your agents. Scripts are tied to applications, such as telemarketing applications, customer service applications, and collections applications.
If you think of a Windows file structure, a script is similar to a folder, while script pages are similar to the files you place in that folder. Therefore, before you begin creating script pages, you must create a script.
Script pages are the individual "screens" your agents view in their browsers. Roughly the equivalent of a typical web page, script pages are used to cue your agents (tell them what to say when talking to customers, etc.), place orders, disseminate information, and input information. Script pages are often arranged using a logical branch structure, where a decision made on one page leads to another page.
Like web pages, script pages are written in HTML (HyperText Mark up Language). However, thanks to Wizards, you do not have to be fluent in HTML to create script pages with LYRICall.
Working with Wizards
LYRICall uses Windows 95-like "wizards" to guide the user through every stage of script generation. Users are walked through a clearly outlined series of steps, and are prompted for all necessary information and input.
/A Creating A Script
LYRICall's Wizards
LYRICall employs wizards to help you:
• Create a new script
• Place objects on your script page
Work with databases, through the Host Connectivity Wizard
Elements of a Wizard
The following illustration shows you an example of a typical LYRICall Wizard window.
Wizard Screen Example
Figure imgf000144_0001
Figure imgf000144_0002
Creating A Script
The Steps Area
The Steps Area is a window of interlinking boxes, giving a graphical representation of all the steps contained in each wizard The box representing the step you are currently working on is yellow Completed step boxes are green, and yet-to-be completed step boxes are red
The Direction Area
The Direction Area is a body of text providing detailed instructions on what is required for a particular step. Some steps ask for or provide information Users will be required to provide information in the spaces provided
Navigational Buttons
The Navigational Buttons are raised, clickable boxes which direct you through each step in the wizard process The help button takes you to the online documentation The cancel button cancels the wizard The back button takes you to the previous step, and the next button takes you to the next step The finish button is used when the wizard needs no further user information to complete its task You will be prompted to use the finish button when necessary
Figure imgf000145_0001
Creating A Script
Creating a New Script with the Script Wizard
The following section will walk you through the steps in creating a new script with the LYRICall's Scπpt Wizard
From the File pulldown menu, select either New Script or Wizards/Templates to begin the LYRICall Script Wizard You could also click on the New Script Page icon and click on the New Scπpt button to begin the LYRICall Scnpt Wizard
Script Wizard Introduction Window
The Wizard Introduction window introduces you to the LYRICall Script Wizard, and gives you a few general directions on how to use the wizard
Scπpt Wizard Introduction Window
Figure imgf000146_0001
Creating A Script
Click on the Next button to continue. The Script Name window appears Note that the Wizard Introduction box, in the Steps Area to the left of the scroll bar, has changed from yellow to green. This indicates that the Wizard Introduction step is complete Notice also that the Script Name box has changed from red to yellow This indicates that the Script Name window is now active
Script Wizard Script Name Window
In the Script Wizard Script Name Window, you will provide a name for your script Type the name of your script in the text box, and click the Next button when you are ready to proceed.
Script Wizard Script Name Window
Figure imgf000147_0001
Note: LYRICall does not allow a space between words in the scπpt name If you type a space between two words, the space will automatically be removed
/^r Creating A Script
After clicking Next, the Application window appears.
Script Wizard Application Window
In this window, you will associate an application with your script. Use the Application Name drop-down menu to select the application you wish to associate with your script. If there are multiple TACs associated with the application, use the TAC Name drop-down menu to select the proper TAC. Click the Next button when you are ready to proceed.
Script Wizard Application Window
Figure imgf000148_0001
Note: TAC fields (application fields) are read-only. Applications and TACs are only available when connected to a UNISON, or when in standalone mode, if the script designer has connected to a UNISON.
/ft Creating A Script
Script Wizard Comments Window
The Script Wizard Comments Window gives you a place to provide a detailed description of your script. These comments are important, as they provide helpful reminders later on. Type your comments you wish to associate with your new script in the space provided. When you are ready to proceed, click the Next button.
Script Wizard Comments Window
Figure imgf000149_0001
/¥? Creating A Script
Script Wizard Background Color Window
In the Script Wizard Background Color window, you will select the default background color for the script pages contained in your scπpt. Use the drop-down menu to select the color you would like to use as the background color for your script. When you are ready, click the Next button to proceed.
Scπpt Wizard Background Color Window
Figure imgf000150_0001
Note: Keep in mind that the background color you select will affect the readability of your scπpt pages. You should select a background color that will complement the text color you select in the Script Wizard Text Color Window.
/y Creating A Script
Script Wizard Text Color Window
In the Script Wizard Text Color window, you will select the default text color for the scπpt pages contained in your scπpt Use the drop-down menu to select the color you would like to use as the text color for your scnpt When you are ready, click the Next button to proceed
Scπpt Wizard Text Color Window
Figure imgf000151_0001
Note: Keep in mind that the text color you select will affect your scπpt pages' readability You should select a text color that will complement the background color you selected in the Script Wizard Background Color Window
/ϊ? Creating A Script
Script Wizard Text Size Window
In the Script Wizard Text Size window, you will select the default font size for the scπpt pages contained in your scπpt. Use the up and down carrots to select a default text size for the scnpt pages in your new scπpt You may select a default text size from 1 to 7; with 7 being the largest default text size available. When you are ready, click the Next button to proceed
Script Wizard Text Size Window
Figure imgf000152_0001
Note: This window sets the default . ont size for you scnpt pages You may alter the font size of the text of an individual scπpt page or a selected block of text by πght clicking on the block of text in the script page view window
ΛTO Creating A Script
Script Wizard Text Font Window
In the current release, only the Arial font is supported. Therefore, the default font is set at Arial.
Figure imgf000153_0001
Creating A Script
Your New Script
After clicking the Finish button, LYRICall will create your new script.
A new folder icon with your new script's name will appear in the Script Explorer window. LYRICall will also create an initial script page, titled index.html. LYRICall will automatically display this page in the Scriptpage View window. This initial page must be named "index.html."
You will also notice that LYRICall has created two files -- "help.dsp" and "termcode.dsp." The file extension "dsp" stands for Davox Script Page. These two files help your agents when working with your completed script pages in their browser. Help.dsp is a page of text your agents will see when they dick the help (?) icon in their browser, and termcode.dsp is a page containing Davox UNISON termination codes.
You are now ready to begin building your script pages.
/vf^ Script Page Objects
A scπpt page is the screen your agent will view in his or her browser Roughly the equivalent of a typical web page, script pages are used to cue your agents (tell them what to say when talking to customers, etc ), place orders, disseminate information, and input information Script pages are often arranged using a logical branch structure, where a decision made on one page leads to another page
LYRICall was designed so that the objects you place on your scπpt page (horizontal rules, headers, static text, buttons, πch text paragraphs, hyperlinks, text boxes, scrollable text boxes, check boxes, and radio buttons) are the same as the objects you would place on a web page
Placing Objects on the Script Page Using LYRICall Wizards
For each script page object, LYRICall provides a wizard, which makes placing objects on script pages quick and easy Simply click on an object icon in the Sheet Tool Bar, or select an object from the Insert pulldown menu, and then click the area on your script page (in the Scriptpage View window) where you would like to place the object, and the wizard will help you through the rest
How To Use The Rest Of This Chapter
Since LYRICall's wizards make placing objects on your scπpt page simple, the rest of this chapter will focus on the objects themselves, and why you would include them on your script page
Note: Scπpt page objects automatically align to the left when you place them on your scπpt page This is a standard HTML layout convention Therefore, your scπpt page will look
ΛΓ ? different when viewed in a browser To see how your scnpt page will actually look, use the pulldown menu View/Broswer (BUI)
Java Applets
Java Applets are short software programs written in the Java programming language, a general-purpose programming language created by Sun Microsystems Java Applets provide dynamic features for use on your scπpt page, such as calendars and navigational bars The applets exist on a server, and they are executed by the browser Java Applets are extremely versatile - they can operate on many different types of hardware platforms
LYRICall provides you with three ready-to-use Java Applets
• NavBar Applet - the NavBar Applet creates a navigational bar, made up of buttons This navigational bar simplifies navigating through your script
• Date Time Applet - the Date/Time Applet creates a small box on your script page which displays the current date and time
• Calendar Applet - the Calendar Applet creates a small calendar on your scπpt page
In addition, LYRICall provides a Generic Applet wizard which you may use to place your own Java Applet on your scπpt page
Placing a Java Applet on Your Script Page
To place a Java Applet on your scπpt page, click the down arrow next to the Java Applet Icon on the toolbar, or from the Insert pulldown menu, select Java Applets If you choose to click the down arrow next to the Java Applet Icon on the toolbar, four new icons will appear the Generic Applet icon, the NavBar Applet icon, the Date Time Applet Icon, and the Calendar Applet icon Click the icon of the applet you wish to add That icon will now appear next to the down arrow Then click the area on your scπpt page (in the Scriptpage View window) where you would like to place your applet This will activate the appropriate applet wizard Script Page Objects
If you choose to use the Insert pulldown menu, choose Java Applets. A new menu will pop up with the following four selections: Generic Applet Add, NavBar Applet Add, Date Time Applet Add, and Calendar Applet Add. Select which applet you would like to add, and then click the area on your script page (in the Scriptpage View window) where you would like to place your applet. This will activate the appropriate applet wizard.
Once you have placed a Java Applet on your script page, a representation of the applet will appear on the script page in the script page view window. The actual applet will appear once you use the script page with a browser.
Java Applet representation
Figure imgf000157_0001
Figure imgf000157_0002
Script Page Objects
Pictures
Picture (images) liven up your script page, making it easy for agents to recognize and use particular pages or items. In order to use a picture or a graphic image f.gif, *.bmp, *.jpg) with LYRICall, the graphic must be located in a subdirectory of the LYRICall program named images, which in turn is located in the LYRICall subdirectory named forms (see the example directory structure below).
Example directory structure showing the images director
3 CH Forms
O classes
O maps E3 scripts C~ templates tmp ~l wizards
If such a structure doesn't exist on your system, please create an images subdirectory in the forms subdirectory of LYRICall, and copy your image files into the images subdirectory before running the Picture Object Insertion Wizard.
Gifs, Jpgs, and Bmps
The image file extensions gif (Graphics Interchange Format), jpg (Joint Photographic Expert Group), and bmp (Windows Bitmap) are all supported by LYRICall. However, Netscape browsers do not support Windows Bitmaps (*.bmp). Therefore, it is recommended that you use only the gif or jpg image file format with your script pages.
r Script Page Objects
Placing a Picture on Your Script Page
To place a picture on your script page, click the Picture Object Icon on the toolbar, or from the Insert pulldown menu, select Picture. Then click the area on your script page (in the Scriptpage View window) where you would like to place your picture. This activates the Picture Object Insertion Wizard.
Once you have placed a picture on your script page, a representation of the picture will appear on the script page in the script page view window. The picture will appear once you use the script page with a browser.
Picture representation
Figure imgf000159_0001
AΓT Script Page Objects
Headers
Headers are lines of static text that appear on your script page They are most often used like newspaper headlines, drawing your attention to a particular area of the scπpt page With LYRICall, you may choose from six different font sizes for your header, with 1 being the largest and 6 the smallest
Headers may be aligned to the left, πght, or center of the script page However, headers occupy an entire line - only a hyperlink or datafield can be placed in front of or behind a header If you want to incorporate static text that doesn't occupy an entire line, use the Static Text object
Example of a header
This is a Header
Placing a Header on Your Script Page
To place a header on your scπpt page, click the Header Icon on the toolbar, or from the Insert pulldown menu, select Header Then click the area on your script page (in the Scriptpage View window) where you would like to place your header This activates the Header Insertion Wizard
Once you have placed a header on your scπpt page, it will appear on the scπpt page in the scπpt page view window You may edit the text of your header by blocking off the text you wish to change with your mouse, and typing new text in its place If you πght-click on your header, you may also undo changes to it, cut, copy, or paste text to or from it, select all of it, copy it to use elsewhere on your scπpt page, delete or cut it, insert a data field into it, check its spelling, or change its properties (color, size, etc )
Figure imgf000160_0001
Script Page Objects
Header right-click menu
Figure imgf000161_0001
Inserting a Data Field into a Header
You may insert a data field into a header. Simply position the cursor in the header where you would like to insert the data field, right-click, and select Insert Data Field from the menu. The Select a Datafield window will appear.
ΛTY Select a datafield window
Figure imgf000162_0001
Using the Datafield Type pulldown menu, select the datafield you wish to insert into your header and click the OK button The datafield you selected is now inserted into your header
Example of a data field inserted into a header
Figure imgf000162_0002
Note: To delete a data field from a header, simply highlight the data field's text in the header, πght-click, and select Cut
Inserting a Hyperlink into a Header
You may insert a hyperlink into a header Simply position the cursor in the header, right-click, and select Insert Hyperlink from the menu The
/ o Script Page Objects
Hyperlink Insertion window will appear.
Hyperlink insertion window
Figure imgf000163_0001
Type the text you wish to display in your header indicating the hyperlink in the space provided. Then type the destination of your hyperlink (URL or scπpt page) in the space provided. Click the OK button to continue. The hyperlink is now inserted into your header.
Example of a hyperlink inserted into a header
Figure imgf000163_0002
Note: To delete a hyperlink from a header, simply highlight the data field's text in the header, πght-click, and select Cut
/^ / Script Page Objects
Static Text
Static text is a type of text that helps to make up the body of your script page. With LYRICall, static text may only be one line long, so it is best used as a quick one-line descriptor or a quick one-line hint. Unlike rich text, static text can share a line with other objects, enabling it to be used as a label. You may choose between seven different font sizes for your static text, with 1 being the smallest size, and 7 being the largest size
Example of static text This is static text
Placing Static Text on Your Script Page
To place a block of static text on your script page, click the Static Text Icon on the toolbar, or from the Insert pulldown menu, select Static Text. Then click the area on your script page (in the Scriptpage View window) where you would like to place your static text. This activates the Static Text Insertion Wizard.
Once you have placed a line of static text on your script page, it will appear on the script page in the script page view window. You may not edit the text of your line of static text in the script page view window, like you can with a header. However, you may right-click on your line of static text, and using the pop-up menu, you may cut or delete your line of static text, copy it for use elsewhere on your script page, check its spelling, or alter its properties (you may change the text of your line of static text by choosing Properties).
Static text right-click menu
Figure imgf000164_0001
/« Script Page Objects
Buttons
Buttons are beveled, clickable portions of your script page which, when clicked, perform a function or run a background application. In LYRICall, buttons are typically associated with functions. You may associate a button with a previously created function, or you may create a brand-new function as part of the button wizard.
Example of a button
Figure imgf000165_0001
Placing a Button on Your Script Page
To place a button on your script page, click the Button Icon on the toolbar, or from the Insert pulldown menu, select Button. Then click the area on your script page (in the Scriptpage View window) where you would like to place your button. This activates the Function Button Insertion Wizard.
Once you have placed a button on your script page, it will appear on the script page in the script page view window. You may right-click on your button, and using the pop-up menu, you may cut or delete your button, copy it for use elsewhere on your script page, check the spelling of its label, or alter its properties.
Button with right-click pop-up menu
Figure imgf000165_0002
Script Page Objects
Rich Text Paragraphs
Rich Text Paragraphs are blocks of text which make up the body of your script page. Unlike Static Text, blocks of Rich Text Paragraph text may be more than one line long, and they may be formatted. In other words, you may change the font face (bold, italic, or normal), the font size, or the color of Rich Text Paragraphs. You may also underline or ctrikothrough Rich Text Paragraphs.
Example of a rich text paragraph
This is a Rich Text □
Paragraph o
Placing a Rich Text Paragraph on Your Script Page
To place a Rich Text Paragraph on your script page, click the Rich Text Paragraph Icon on the toolbar, or from the Insert pulldown menu, select Paragraph (rt). Then click the area on your script page (in the Scriptpage View window) where you would like to place your Rich Text Paragraph. This activates the Rich Text Paragraph Insertion Wizard.
Like headers, Rich Text Paragraphs may be edited directly in the script page view window. In addition, if you block off a section of your Rich Text Paragraph, you may change its font face (bold, italic, or regular), its color, or its characteristic (underline or strikethrough). You may also right-click on your Rich Text Paragraph, and using the pop-up menu, you may undo changes made to it; cut, copy, or paste text to or from it; copy it for use elsewhere on your script page; select all of it; delete or cut it; insert a data field into it; check its spelling, or change its properties (color, size, etc.).
JA Script Page Objects
Rich Text Paragraph right-click menu
Figure imgf000167_0001
Inserting a Data Field into a Rich Text Paragraph
Like a header, you may insert a datafield into a rich text paragraph. Simply place the cursor in the rich text paragraph where you would like to insert the data field, right-click, and select Insert Data Field from the menu. See "Inserting a Data Field into a Header" on page -53 for further details.
Inserting a Hyperlink into a Rich Text Paragraph
Like a header, you may insert a hyperlink into a rich text paragraph. Simply place the cursor in the rich text paragraph where you would like to insert the hyperlink, right-click, and select Insert Hyperlink from the menu. See "Inserting a Hyperiink into a Header" on page -54 for further details.
A A Script Page Objects
Hyperlinks
A hyperlink is a line of text you click in order to jump to another scπpt page or another web page on the World Wide Web. In the World Wide Web or in an intranet environment, hyperiinks are the pπmary method of navigation between web pages and web sights You may also use a hyperlink to jump from a script page to a World Wide Web page
Example of a hyperiink
This is a Hyperlink
Placing a Hyperlink on Your Web Page
To place a hyperiink on your scπpt page, click the Hyperlink Icon on the toolbar, or from the Insert pulldown menu, select HyperLink Then click the area on your script page (in the Scriptpage View window) where you would like to place your hyperlink. This activates the Hyperlink Insertion Wizard.
When you right-click on a hyperlink in the scπpt page view window, you may use the pop-up menu to cut or delete it, check its spelling, or alter its properties. If you choose to alter its properties, you may assign it an OnClick event or an OnMouseOver event
/ Script Page Objects
OnClick and OnMouseOver Events
An OnClick Event is an action, initiated by the browser, that takes place when the hyperlink is clicked. An OnMouseOver Event is an action, initiated by the browser, that takes place when the cursor hovers over a hyperlink. You may assign OnClick and OnMouseOver Events to a hyperlink by right clicking on your hyperlink in the scπptpage view window and selecting Properties from the menu.
Hyperlink OnClick Event and OnMouse Over event menu
Figure imgf000169_0001
Use the OnClick Event tab to assign a function as an OnClick Event, and use the OnMouseOver Event tab to assign a function as an OnMouseOver Event.
/c>7 Script Page Objects
If the Colors Don't Look Right . . .
If the color of your hyperlink does not stand out from the color of your background, making it hard to see, you may alter its color. Right-click on an unused part of your script page (in the script page view window), and the Script Page Properties window appears. Select the hyperlink tab.
Script Page Properties window.
Figure imgf000170_0001
Use the Link Color and Visited Link Color drop-down menus to change the color of your hyperiink, making sure to give it a color that stands out from the background color of your script page.
yy Script Page Objects
Text Box
A text box is a one-line form field in which your agents can type text. Typically the field is associated with a Davox or host field, and you can make it editable or non-editable. You can use a text box to take in a single line of information, such as a name, an address, or a password.
Example of a text box
Figure imgf000171_0001
Placing a Text Box on Your Script Page
To place a Text Box on your script page, click the Text Box Icon on the toolbar, or from the Insert pulldown menu, select Text Box. Then click the area on your script page (in the Scriptpage View window) where you would like to place your Text Area. This activates the Text Box Insertion Wizard.
By right-clicking on your completed text box in the script page view window, you may undo changes to it; cut, copy or paste it; select it; delete or cut it, or change its properties.
ycf Script Page Objects
OnBlur, OnFocus, and OnChange Events
An OnFocus Event is an action, initiated by the browser, that takes place when an object on your script page receives focus. For example, if you click on a text box on your script page, that text box is now in focus. An OnBlur Event is an action, initiated by the browser, that takes place when the object on your script page loses focus. An OnChange Event is an action, initiated by the browser, that takes place when the data in the object on your script page changes in some way - for example, when you type text into a text box.
You may assign OnBlur, OnFocus, and OnChange Events to a text box by right clicking on your text box in the scriptpage view window and selecting Properties from the menu.
Text Box Properties Window
Figure imgf000172_0001
/?ό Script Page Objects
Text Area
A text area is a multi-line form field in which your agents can type many lines of text. You can use a text area to take in information of unlimited length, such as customer comments or questions. Text areas have scrollbars on the bottom and side for easy navigation. Text areas ar associated with a Davox or host field, and although the size of the text box is unlimited, updates to records are gated by settings in map or host databases.
Example of a text area
Figure imgf000173_0001
Placing a Text Area on Your Script Page
To place a text area on your script page, click the text area icon on the toolbar, or from the Insert pulldown menu, select text area. Then click the area on your script page (in the scriptpage view window) where you would like to place your text area. This activates the Text Area Insertion Wizard.
By right-clicking on your completed text area in the script page view window, you may undo changes made to it; cut, copy or paste it; select it; delete or cut it, or change its properties. Like a text box, you can also change your text area's OnBlur, OnFocus, and OnChange Events. For more on these three events, see OnBlur, OnFocus, and OnChange Events" on page -64.
AV Script Page Objects
Check Box
A check box is a small box which may be checked by your agent to indicate a selection Check boxes are used to represent a set of choices, one or more of which can be selected For example, a set of check boxes could represent a set of options for a specific product, and each box checked represents an option desired by a customer You may assign an initial status to your check box, checked or unchecked, depending upon user input or a datafield value
Example of a check box
Figure imgf000174_0001
Placing a Check Box on Your Script Page
To place a check box on your script page, click the Check Box Icon on the toolbar, or from the Insert pulldown menu, select Check Box Then click the area on your script page (in the Scπptpage View window) where you would like to place your check box This activates the Check Box Object Insertion Wizard
Note: You cannot use the Check Box Object Insertion Wizard to create more than one check box at a time
By right-clicking on your completed check box in the script page view window, you may cut it, delete it, check its spelling, or change its properties Like a hyperiink, you may assign an OnClick event to your check box by πght clicking on your check box in the scπptpage view window and selecting Properties from the menu For more on OnClick events, see "OnClick and OnMouseOver Events" on page 61
/?<£ Script Page Objects
Radio Button
A radio button is a small circle which may be checked (with a dot) by your agent to indicate a selection. Radio buttons are used to represent a set of choices; only one of which can be selected at a time. For example, a set of radio buttons could represent the different colors of a particular product ~ red, green, or blue. Your agent could then click the radio button of the color of the product the customer wishes to purchase. You may assign an initial status to your radio button, checked or unchecked, depending upon user input or a datafield value.
Example of a radio button
Placing a Radio Button on Your Script Page
To place a Radio Button on your script page, click the Radio Button Icon on the toolbar, or from the Insert pulldown menu, select Radio Button. Then click the area on your script page (in the Scriptpage View window) where you would like to place your Radio Button. This activates the Radio Button Object Insertion Wizard.
Note: You cannot use the Radio Button Object Insertion Wizard to create more than one radio button at a time.
By right-clicking on your completed radio button in the script page view window, you may cut it, delete it, check its spelling, or change its properties. Like a check box, you may also change your radio button's OnClick Event in the Radio Button Properties window. For more on OnClick events, see "OnClick and OnMouseOver Events" on page 61.
//v? Script Page Objects
List Box
A list box is a box used to display a list of items Depending on the parameters you set, your agents may select one or more of these items by clicking on them Like check boxes, list boxes are used when multiple selections are necessary You may assign an initial status to your list box selected or unselected, depending upon user input or a datafield value Using the wizard, you may assign any number of rows to display, give your list box multiple selection ability, and assign input and output assignments
Figure imgf000176_0001
Placing a List Box on Your Script Page
To place a list box on your scπpt page, click the List Box Icon on the toolbar, or from the Insert pulldown menu, select List Box Then click the area on your script page (in the Scriptpage View window) where you would like to place your list box This activates the List Box Object Insertion Wizard
By nght-clicking on your completed list box in the scπpt page view window, you may undo changes to it; cut, copy or paste it; select it, delete or cut it, or change its properties Like a text box, you may also assign an OnChange, OnBlur, and OnFocus Event to a list box by πght clicking on your list box in the scriptpage view window and selecting Properties from the menu For more on OnChange, OnBlur, and OnFocus Events, see "OnBlur, OnFocus, and OnChange Events" on page 64
/A Script Page Objects
Object Table
An object table is a grid of cells, made up of rows and columns, used to organize your script page, or items on your script page. An object table could be thought of like the page layout of a newspaper -- each column of newspaper text is like a column of an object table, and each row of stories on a newspaper page is like a row of an object table. Object tables make organizing your script page easy and the layout of your script page clear and distinct.
You may place any type of object you wish in a cell.
Example of an object table
Figure imgf000177_0002
Placing an Object Table on Your Script Page
To place an object table on your script page, click the object table Icon on the toolbar, or from the Insert pulldown menu, select Object Table. Then click the area on your script page (in the Scriptpage View window) where you would like to place your object table. This activates the Object Table Object Insertion Wizard.
Once you have placed an Object Table on your script page, a representation of it will appear on the script page in the script page view window. The actual Object Table will appear once you use the script page with a browser.
Object Table representation
Figure imgf000177_0001
Script Page Objects
By right-clicking on your completed Object Table in the script page view window, you may cut it, delete it, check its spelling, or change its proper
Figure imgf000178_0001
Placing Objects in Your Object Table Cells
To place objects in your object table cells, πght-click on the representation of your object table in the scnpt page view window Select Properties from the pop-up menu The Object Table Properties window appears Select the Cells tab, and then click the Cells button The Object Table Definition window appears
Object Table Definition window
Figure imgf000178_0002
Here you will see a graphical representation of your object table Don't worry if you see more rows or columns than you specified with the object table wizard, any extra rows or columns will not appear in your completed object table
To put objects in your table cells, use your mouse to place the cursor over the cell you wish to populate Then πght-click on the cell, and select Properties from the pop-up menu The Configure Object Table Cell window appears
/ 7 Script Page Objects
Figure imgf000179_0001
Using this window, you may place an image or any other script page object into your object table cell. Use the Color dropdown menu to choose a background color for your object table cell. If you wish to place an image in your object table cell, use the image dropdown menu. If you wish to place a script page object in your object table cell, select the appropriate radio button from the list. When you click the radio button, the appropriate script page object's wizard will launch automatically, enabling you to construct the script page object. Once the wizard has finished running, you will be returned to the Configure Object Table Cells window. Click the OK button when you are finished placing objects in your object table's cells.
By right-clicking on your completed object table in the script page view window, you may delete it, cut it, copy it for use elsewhere on your script page, or change its properties.
Figure imgf000179_0002
Script Page Objects
Dataset Table Object
A Dataset Table Object is an object used to display a set of data. It is dynamic -- in other words, when the data in the dataset changes, it automatically changes in the Dataset Table Object as well. Like an Object Table, a Dataset Table is a grid of cells made up of rows and columns. However, the cells in a Dataset Table are filled with the data contained in a table of data received from your host. Dataset Tables provide an easy way to graphically represent, on your script page, tables of data, like prices, sales tax, etc.
Placing a Dataset Table Object on Your Script Page
To place an dataset object table on your script page, click the Dataset Object Table Icon on the toolbar, or from the Insert pulldown menu, select Dataset Object Table. Then click the area on your script page (in the Scriptpage View window) where you would like to place your dataset object table. This activates the Dataset Object Table Object Insertion Wizard.
/ T Scπpt Page Objects
Placing Other Objects On Your Script Page
Two LYRICall objects do not utilize wizards These two objects are the HTML Object and the Hoπzontal Rule
HTML Object
LYRICall gives you the opportunity to place an HTML object other than the ones described in this chapter (pictures, text boxes, etc ) on your scπpt page
Placing an HTML Object on Your Script Page
To place an HTML Object on your scπpt page, click the HTML Object icon on the tool bar, or from the Insert pulldown menu, select HTML Object Then click on the area of your scπpt page, in the Scπptpage View window, where you would like to place your HTML Object. The HTML Object window appears
HTML Object Window
Figure imgf000181_0001
Simply type (or paste) the HTML for the object you wish to insert, and click the OK button when you are finished
/7? Script Page Objects
Once you have placed an HTML object on your script page, an HTML object placeholder will appear on the script page in the script page view window. The actual HTML object will appear once you use the script page with a browser. You may edit your HTML object by right-clicking on its placeholder in the Scriptpage View Window.
Horizontal Rule
Horizontal Rules are simple lines which appear on your script page. These lines appear beveled, and they are useful to separate your page into sections, making them more organized and easier to use.
Horizontal mle example
Figure imgf000182_0001
Placing a Horizontal Rule on Your Script Page
To place a horizontal rule on your script page, click the Horizontal Rule icon on the tool bar, or from the Insert pulldown menu, select Horizontal Rule. Then click on the area of your script page, in the Scriptpage View window, where you would like to place your horizontal rule.
Once you have placed your horizontal rule on your script page, it will appear on the script page in the script page view window. You may cut or delete it or change its name by right-clicking on it in the Scriptpage View Window.
Note: Even though it might not like as if your horizontal rule extends across the page in the scriptpage view window, it will when you view your page in your browser.
/cTU Script Page Objects
Placing Objects on Your Script Page Without Using Wizards
You may place script page objects on your scπpt page without using wizards. First, you must turn off the wizards by using the Edit pulldown menu. From the Edit pulldown menu, select Options. The Options Window appears.
LYRICall Options Window
Figure imgf000183_0001
Simply de-select the check boxes of the wizards you would like to de-acti- vate, and click OK when you are finished. You may now place scπpt page objects on your script page by clicking an icon or selecting an object from the Insert pulldown menu, and then clicking a place on your script page.
However, scπpt page objects that were not created with a wizard do not show up when viewed in a browser until a function or datafield has been
/A Script Page Objects
associated with it This is because the LYRICall wizard for a particular object assigns properties to each object, and until those properties are added, the object does not appear in a browser You may change or add a scπpt page object's properties, of course, by right-clicking on it in the scπptpage view window
//".* Functions
Functions
Functions are dynamic interfaces which make the script pages you create with LYRICall interactive, allowing your agents to run Java programs, pro cess math functions, and interact with databases You may choose among seven functions to work with
• Math Expressions - Math Expressions are functions which add subtract, multiply, divide, or perform other mathematical operations on numeπcal values supplied by agent input or a database
• Logical Branch Scripts - Logical Branch Scπpts are functions that work with conditional vanables If the value of a vaπable provided by an agent or a database is a certain value, a Logical Branch Scπpt can be used to direct your agent to another script page, based on that vaπable's value
• JavaScripts - JavaScπpts are short functions wπtten in a cross- platform programming language, created by Netscape Corp JavaScripts may be utilized to process agent input or database values
• String Expressions - String Expressions are functions which allow you to manipulate the stπngs in data fields
• Chained Functions - Chained Functions are functions which allow you to tie multiple functions into one event
• Termination Code Functions - The Termination Code Function allows you to define a function which executes a Unison Term Code (Termination Code).
• Dataset Subset Functions - The Dataset Subset Function allows you to create and define a set of data that is a subset of a larger set of data
Functions can also be tied to one (or more) of three events ~ PreLoad events, OnLoad Events, and OnUnload events PreLoad events take place before the page is loaded in the browser, OnLoad events take place after the page has been painted in the browser and OnUnload events take place when the page is unloading from the browser
/ I? Functions
Working with Functions
To work with functions, right-click an area on your script page and select properties from the menu.. The Script Page Properties tab box appears, as shown in the following figure.
The Script Page Properties tab box
Figure imgf000186_0001
Select the Function tab and click on the Functions button. The list of functions window appears.
Figure imgf000186_0002
Functions
List of functions for Scπpt Page window
Figure imgf000187_0001
In this window, you will see a drop-down menu of the six functions You can choose to work with Math Expressions, Logical Branch Scπpts, JavaScripts, String Expressions, Chained Functions, or Dataset Subset Functions. If you have already created any functions, their name and their description will appear in this window under Function Name and Function Window (in the above example, Function Name and Function Window are obscured by the drop-down menu). If you have already created a particular function, the number of functions you have already created of that particular function will appear in parenthesis next to the function name For example, in the window above, 1 Math Expression, 1 Logical Branch Function, 1 Stπng Expression, and 1 Chained Function has already been created.
/ΛΓ Functions
Global Functions versus Local Functions
LYRICall uses two types of functions, global functions and local functions Local functions are functions which apply to individual script pages, while global functions are functions which apply to entire scripts
Therefore, a local function is only available for use on a particular script page In other words, you cannot create a local function on one page and then use it on another script page To create a function to be used on multiple script pages, you must create a global function
Global functions are differentiated from local functions in the List of Functions for Scπpt Page windows with the prefix "gl_" There is no prefix to designate a local function (in other words, if a function has no prefix, it is a local function)
Creating a Global Function
To create a global function, πght-click on a scπpt folder in the Scπpt Explorer window Then select Properties from the pop-up menu This will launch the Scπpt Properties window, and you will notice that the Functions tab now reads "Global Functions" instead of "Local Functions " Select the Global Functions tab to begin working with global functions You may also choose Functions from the pop-up menu to go directly to the Global Functions window
Global functions are built in exactly the same manner as local functions
Figure imgf000188_0001
Functions
Working with Math Expressions
Math Expressions are functions which add, subtract, multiply, divide, or perform other mathematical operations on numerical values supplied by agent input or a database.
Note: Datafields are interpreted by LYRICall as strings. Therefore, to use a datafield in a mathematical function, you must first convert the string into a number. To do this, use the parseFloat function. You may find the parseFloat function among the supplied pre-defined functions in the Define Math Expression window.
To create a math expression or modify an existing one, select Math Expressions from the Function Type drop-down menu provided in the List of Functions for Script Page window. The List of Functions for Script Page - Math Expressions window appears:
/r? Functions
List of Functions for Scπpt Page - Math Expressions window
Figure imgf000190_0001
Click New to create a new math expression You may also select an existing math expression and then click Modify to modify an existing math expression, or select an existing math expression and click OK to use an existing math expression as-is You may also delete an existing math expression by selecting it and clicking the Delete button
If you choose New or Modify, the Define Math Expression window appears
/rf Functions
The Define Math Expression window
Figure imgf000191_0001
You will create your Math Expression utilizing the tools in this window.
Math Expression Name
Name your Math Expression by typing a name in the Math Expression Name text box in the upper right comer.
Math Expression Description
Provide a description of your Math Expression in the Math Expression Description text area. This description will serve as a quick reminder in case you need it later on.
Figure imgf000191_0002
Functions
Math Expression
In the Math Expression text area, you build your Math Expression by typing the appropπate text and using the calculator-like math function buttons (+, -, *, /, >, <, (, )), the provided list of Math Functions (abs, ceil, exp, etc.), and the Insert Datafield button.
Insert Datafield
The Insert Datafield button is used to place the value of a datafield from your scπpt page into a mathematical expression. When you click the Insert Datafield button, the Select a datafield window appears:
The Select a datafield window
Figure imgf000192_0001
Select the Datafield Type from the Datafield Type drop-down menu, and then choose the datafield type you wish from the list provided. You may choose either a Davox datafield (D(u)), a Host datafield (H(")), or a User
/A Functions
Defined (U("))datafιeld
Once you have selected your Datafield Type, a list of datafields and field types will appear in the window Click the Datafield you would like to use with your Math Expression, and click OK when you are ready to proceed
Insert Fieldname
Like the Insert Datafield button, the Insert Fieldname button is used to place the value of a datafield from your scπpt page into a mathematical expression However, the Insert Fieldname button does this without the associated function declaration associated with that datafield
Predefined Math Functions
LYRICall supplies you with a number of predefined math functions to use with your math expression These predefined math functions include
• abs - The abs (absolute value) function returns the absolute value of the argument For example, abs(-10) would be 10
• max - The max function returns the greater of two arguments For example, max(30,16) would be 30 mm - The mm function returns the lesser of two arguments For example, mιn(30,16) would be 16
• pow - The pow function returns the value of a base argument to the power of an exponent argument The base argument is listed first, followed by the exponent argument For example, pow(2,3) would be 8 round - The round function rounds the value of an argument to the nearest integer For example, round(3 4) would be 3, and round(3 5) would be 4 parseFloat - The parseFloat function takes a string argument and converts it into an integer
• ToMoney - The ToMoney function converts a stπng argument into a money format ($00 00)
• dsSum - The dsSum function returns the sum of a dataset col umn argument Functions
• dsAvg - The dsAvg function returns the average of a dataset column.
Math Result Location
Use the Math Result Location text box to indicate the datafield where you would like to place the results of your math expression. If you would like to associate the results of your math expression with a datafield that already exists, click the Associate button.
When you click the Associate button, the Select a Datafield window will appear (the same window as appeared above). Simply select the Datafield Type from the Datafield Type drop-down menu, and then choose the datafield you wish from the list provided. Click OK when you are ready to proceed.
When you are finished creating your Math Expression, click the OK button in the Define Math Expression window to continue. Your Math Expression is now ready to be used, and its name and description now appear in the List of Functions for Script Page window. You can always modify your Math Expression by clicking Modify. Should you wish to discontinue the creation of your Math Expression without saving it, click the Cancel button.
Figure imgf000194_0001
Functions
Working with Logical Branch Scripts
Logical Branch Scripts are functions that work with conditional variables. If the value of a variable provided by an agent or a database is a certain value, a Logical Branch Script can be used to direct your agent to another script page, based on that variable's value.
Note: Do not associate a logical branch script function with a hyperlink, an OnPreload event, and OnLoad event, an OnClick event, or an UnLoad event.
To create a logical branch script or modify an existing one, select Logical Branch Scripts from the Function Type drop-down menu provided in the List of Functions for Script Page window. The List of Functions for Script Page - Logical Branch Scripts window appears:
List of Functions for Script Page - Logical Branch Scripts window
Figure imgf000195_0001
/?κ? Functions
Click New to create a new logical branch scπpt You may also select an existing logical branch script and then click Modify to modify an existing logical branch script, or select an existing logical branch scnpt and click OK to use an existing logical branch script as-is You may also delete an existing logical branch function by selecting it and clicking the Delete button
If you choose New or Modify, the Logical Branch Definition for Logical Branch Function window appears
Logical Branch Definition for Logical Branch Function window
Figure imgf000196_0001
You will use the tools in this window to create your Logical Branch Scπpt function
Figure imgf000196_0002
Functions
Function Name
Type a name for your Logical Branch Script in the Function Name text box.
Function Description
Type a description of your Logical Branch Script in the Function Description text box. This description will be a useful reminder later on.
Understanding Logical Branch Script flow
When a Logical Branch Script is run from a script page, it's Row, Branch To Page, and Condition Grid is read from left-to-right and from top-to-bottom. In other words, if none of the conditions are met in row 1 , row 2 is read. If none of the conditions are met in row 2, row 3 is read, and so on, until either a condition is met, or no conditions are met. If no conditions are met, the script is branched to the page you specify using a selection from the If no conditions are met branch to scriptpage drop-down menu.
In this way, horizontal movement from left to right across the grid can be thought of as an "and" conditional statement, and vertical movement down the grid can be thought of as an "or" conditional statement.
Row, Page, and Conditions Grid
In the Row, Page, and Conditions Grid you will build your Logical Branch Script.
Row Column
The Row column, on the left-hand side of the page, marks the sequence in which the steps making up your Logical Branch Script are performed. When your Logical Branch Script function is called from a script page, the conditions contained (in the row's condition columns) in the first row are checked first. If no conditions are met, the conditions contained in the second row are checked, and so on. In this way, vertical movement down the grid can be thought of as an "or" conditional statement. Therefore, correct row placement is important. Functions
Branch to Destination
The Branch to Destination column, to the right of the Row column, is used to indicate what destination you wish your agent to be branched to, should the conditions in the row be satisfied. Click the cell in the column you wish to modify, and then click the Modify button. The Specify Branch To window appears.
Specify branch to window.
Figure imgf000198_0001
If you wish to specify a script page, first highlight the destination in the Branch to destination: (URL or scriptpage) text box (if any), choose the script page you wish to branch to using the dropdown menu, and then click the Insert Scriptpage button. If you wish to branch to a script page you haven't created yet, you can choose the New Scriptpage option on the dropdown menu. If you wish to branch to a URL, type the URL into the space provided. Click the OK button when you are ready to continue.
Anchors
An anchor is a location within a script page which can be referenced by a hyperiink, or branched to in any of the LYRICall functions that incorporate branching. In other words, instead of having a hyperlink launch or a function branch to a separate page, you could have a hyperiink launch or a function branch to a specific point in the same page. Using an anchor, you could even have a hyperlink launch or a function branch to a specific
//< Functions
point in a different page.
LYRICall automatically creates these anchors for each script page object you create. The name of the anchor is the name of the object (which you provide), immediately followed by an underbar ("_"), immediately followed by the word "target." Therefore, if you created a text box object and named it tb1 , LYRICall would automatically create an anchor for it named "tb1_target."
Referencing an Anchor
Referencing an anchor as a hyperlink destination is very similar to referencing a script page as a hyperlink destination, with one important addition - a pound sign ("#") immediately followed by the anchor's name is tacked on afterthe name of the page on which the anchor located.
For example, say you had a text box named tb1 on a script page named index.html. The target name for tb1 would be: tb1_target And a hyperlink reference to the tb1 anchor would be: index.html#tb1 _target
Conditions
The Conditions column contains the criteria you set which, depending on the variables you use, might branch an agent to the script page you indicated in the Branch to Page column. You may use previously defined variables in your expressions, and you may set up to five conditions per row. To work with a Condition, double-click on a Condition text box, or highlight a particular condition and click the modify button. The Setup Condition window appears:
/?7 Functions
Setup Condition window.
Figure imgf000200_0001
Note: When using datafields, the conditions parameters compare stπngs, not integers.
Modify Field 1
Field 1 is the first half of your conditional statement. Select a vaπable for Field 1 by clicking on the Modify Field 1 button. The familiar Select a Datafield window appears. Simply select the Datafield Type from the Datafield Type drop-down menu, and then choose the datafield you wish from the list provided Click OK when you are ready to proceed
Operator
Choose an operator from the Operator drop-down menu You may choose from the following "equal to" (==), "greater than" (>), "greater than or equal to" (>=), "less than" (<), "less than or equal to" (<=), or "not
/ ^ Functions
equal to" ('=)
Field 2 Type
Using the appropriate radio button, select either Datafield or Fixed Value for the type of your second field If you select Datafield, the Select a Datafield window appears Simply select the Datafield Type from the Datafield Type drop-down menu, and then choose the datafield you wish from the list provided If you select Fixed Value for Field 2, type a value for the field in the text box below the Field 2 radio buttons Click OK when you are ready to proceed
Row buttons
The Row buttons, which appear to the πght of the Logical Branch Definition for Logical Branch Function window, are used to manipulate or modify the rows of your Logical Branch Scπpt
Insert
Click the Insert button to add an additional row to your Logical Branch Script
Delete
The Delete button removes an entire row from your Logical Branch Script Use your mouse to block off the row you wish to delete, and then click the Delete button
Clear
The Clear button is used to quickly erase the selected condition for a par ticular row without actually deleting the entire row
Modify
Click the Modify button to quickly modify the selected condition of a row This button performs the same function as double-clicking on the condi
Figure imgf000201_0001
Figure imgf000201_0002
Functions
Move Up
Use the Move Up button to move a selected row up one row position without deleting the rows above it. Since Logical Branch Scripts are read from top to bottom, row order is important.
Example: After creating rows 1 ,2,3, and 4 of your Logical Branch Script, you realize row 4 should come before row 3. Simply click on row 4 with your mouse, and click the Move Up button until row 4 appears before row 3. The old row 4 will now become row 3, and the old row 3 will now become row 4.
Move Down
Use the Move Down button to move a selected row down one row position without deleting the rows below it. Since Logical Branch Scripts are read from top to bottom, row order is important.
Example: After creating rows 1 ,2,3, and 4 of your Logical Branch Script, you realize row 3 should come after row 4. Simply click on row 3 with your mouse, and click the Move Down button until row 3 appears after row 4. The old row 3 will now become row 4, and the old row 4 will now become row 3.
If No Conditions Are Met Branch to Scriptpage
Use the If No Conditions Are Met Branch to Scriptpage drop-down menu to indicate which script page you would like your agent branched to if none of the conditions you created are met.
Click OK when you are satisfied with your Logical Branch Script. If are not satisfied with your Logical Branch Script, you may click Cancel to exit without making any changes to your script page. You can always modify an existing Logical Branch Script.
^ o Functions
Working with JavaScript Functions
JavaScript functions are short programs written in the JavaScript scripting language. The JavaScript scripting language was created by Netscape Corporation. JavaScript functions may be utilized to process agent input or database values.
To create a JavaScript function modify an existing one, select JavaScript Functions from the Function Type drop-down menu provided in the List of Functions for Script Page window. The List of Functions for Scπpt Page - JavaScript Function window appears:
List of Functions for Script Page - JavaScript Function window
Figure imgf000203_0001
Click New to create a new JavaScript Function. You may also select an existing JavaScript Function and then click Modify to modify an existing JavaScript Function, or select an existing JavaScript Function and click OK to use an existing JavaScπpt Function as-is. You may delete an exist-
ύ/ Functions
mg JavaScript Function by clicking the Delete button. If you choose New or Modify, the JavaScript Definition window appears: JavaScnpt Definition window
Figure imgf000204_0001
To begin, type a name for your JavaScript Function in the space provided under Function Name. Then type a description of your JavaScπpt Function in the space provided under Function Description. This descnption will be a useful reminder later on.
You may now begin writing your JavaScπpt in the space provided. Simply
Figure imgf000204_0002
Functions
dow so you can select a datafield to set from the various choices listed in the window.
Click OK when you are satisfied with your JavaScript function. If are not satisfied with your JavaScript function, you may click Cancel to discontinue without making any changes to your script page.
JavaScript Function Results
Your JavaScript Function will have the following format when viewed in the scriptpage view window:
<script>function name ( ) { JavaScript body }</script>
Figure imgf000205_0001
Functions
write your JavaScript as you would normally write JavaScript. You may insert a function or datafield using the Insert Function/Datafield scroll- down menu
Insert Function/Datafield Definitions
The Insert Function/Datafield choices are defined as follows dvxGetdavoxfield(x) - returns the value of a Davox datafield One parameter is needed: the name of the datafield. dvxSetdavoxfield(x.y) - sets the value of a Davox datafield Two parameters are needed: a name, and a string you wish to set as the value of the Davox datafield. dvxGethostrfield(x) - returns the value of a host datafield One parameter is needed: the name of the datafield. dvxSethostfield(x,y) - sets the value of a host datafield. Two parameters are needed: a name, and a string you wish to set as the value of the host datafield. dvxGetuserrfield(x) - returns the value of a user datafield One parameter is needed: the name of the datafield. dvxSetuserfιeld(x,y) - sets the value of a user datafield Two parameters are needed: a name, and a string you wish to set as the value of the user datafield. dvxGetdatasetx) - returns the value of a user dataset. One parameter is needed: the name of the dataset. dvxSetdataset(x.y) - sets the value of a user dataset. Two parameters are needed: a name, and a string you wish to set as the value of the user dataset. dvxRowdataset(x.y) - sets a dataset row. Two parameters are needed: a dataset, and a row dvxTeππιnate(x) - sends a termination code to Unison dvxTransfer(x.y) - performs a call transfer.
Pick a Datafield To Get - this selection launches the datafield window so you can select a datafield to get from the vanous choices listed in the window.
Pick a Datafield To Set - this selection launches the datafield win-
c^ / Functions
Working with String Expressions
String Expressions are functions which allow you to manipulate the strings in data fields. For example, consider a datafield named CUSTOMERNAME, which contained the name of a customer. If you wanted to change the text of CUSTOMERNAME to all capital letters, you could use a String Expression to do so.
To create a string expression or modify an existing one, select String Expression from the Function Type drop-down menu provided in the List of Functions for Script Page window. The List of Functions for Script Page - String Expression window appears:
List of Functions for Script Page - String Expression window
Figure imgf000207_0001
Click New to create a new string expression. You may also select an existing string expression and then click Modify to modify an existing string expression, or select an existing string expression and click OK to use an existing string expression as-is. You may delete an existing String
Figure imgf000207_0002
Functions
Expression by clicking the Delete button
If you choose New or Modify, the Stπng Expression Definition window appears
Define Stπng Expression window
Figure imgf000208_0001
String Expression Name
Name your string expression by typing a name in the Stπng Expression Name text box in the upper πght corner
String Expression Description
Provide a descnption of your stπng expression in the Stπng Expression Descπption text area This description will serve as a quick reminder in case you need it later on
Figure imgf000208_0002
Functions
Predefined String Functions
LYRICall provides the following predefined stπng functions
• charAt(ιndex) - returns the character in the string at the specified index
• indexOf(character, [fromlndex]) - searches the string object for the first occurrence of the character and returns the index The fromlndex argument is optional and indicates where to begin the search lastlndexOf(character, [fromlndex]) - searches the stnng object backwards for the character starting at fromlndex
• substring(startlndex,endlndex) - returns the string that runs from startlndex to the character right before endlndex If the value of startlndex is larger than the value of endlndex, the function acts as if the two were swapped If the value of the startlndex is equal to the value of the endlndex, the function returns an empty stπng toLowerCase ( ) - returns the stπng with all characters changed to lowercase
• toUpperCase ( ) - returns the string with all characters changed to uppercase
String Expression
In the String Expression text area, you build your string expression by typing the appropriate text and using the stπng function stbox (anchor, big, blink, bold) and the Insert Datafield button
Insert Datafield
The Insert Datafield button is used to place the value of a datafield from your scπpt page into your string expression When you click the Insert Datafield button, the Select a datafield window appears:
Figure imgf000209_0001
Functions
The Select a datafield window
Figure imgf000210_0001
Select the Datafield Type from the Datafield Type drop-down menu, and then choose the datafield type you wish from the list provided You may choose either a Davox datafield, a Host datafield, or a User Defined datafield.
Once you have selected your Datafield Type, a list of datafields and field types will appear in the window Click the Datafield you would like to use with your string expression, and click OK when you are ready to proceed
String Result Location
Use the String Result Location text box to indicate the datafield where you would like to place the results of your string expression If you would like to associate the results of your stπng expression with a datafield that already exists, click the Associate button
?d <r Functions
When you click the Associate button, the Select a Datafield window will appear (the same window as appeared above). Simply select the Datafield Type from the Datafield Type drop-down menu, and then choose the datafield you wish from the list provided. Click OK when you are ready to proceed.
When you are finished creating your string expression, click the OK button in the Define String Expression window to continue. Your string expression is now ready to be used, and its name and description now appear in the List of Functions for Script Page window. You can always modify your string expression by clicking Modify. Should you wish to discontinue the creation of your string expression without saving it, click the Cancel button.
^o ? Functions
Working with Chained Functions
Chained Functions are functions which allow you to tie multiple functions into one event. For example, say you wanted a JavaScript function and a math function to execute every time an OnLoad Event occurred. You could create a chained function which included the JavaScπpt function and the math function, and then associate the chained function with the OnLoad Event.
Note: Global functions can only be chained with global functions
To create a chained function or modify an existing one, select Chained Functions from the Function Type drop-down menu provided in the List of Functions for Script Page window. The List of Functions for Script Page - Chained Functions window appears:
List of Functions for Scπpt Page - Chained Functions window
Figure imgf000212_0001
o£/(7 Functions
Click New to create a new Chained Function. You may also select an existing Chained Function and then click Modify to modify an existing Chained Function, or select an existing Chained Function and click OK to use an existing Chained Function as-is. You may delete an existing Chained Function by clicking the Delete button.
If you choose New or Modify, the Chained Function Definition for Chained Function window appears:
Chained Function Definition for Chained Function window
Figure imgf000213_0001
You will use the tools in this window to create your chained function.
Function Name
J // Functions
Type a name for your chained function in the Function Name text box.
Function Description
Type a description of your chained function in the Function Description text box. This description will be a useful reminder later on.
Understanding Chained Function Flow
When a chained function is run from a script page, it is read from top to bottom. In other words, the function in the number 1 row is executed first, the function in the number 2 row is executed second, and so on.
Row Column
The Row column, on the left-hand side of the page, marks the sequence in which the steps making up your chained function are performed.
Function Name Column
The Function Name column lists the name of the functions you wish to call as part of your chained function.
Function Type and Function Description Columns
The Function Type and Function Description columns list the type and description of the functions you wish to call as part of your chained function. You, will notice that the descriptions provided in the Function Description column are those you provided when you created the function.
Row buttons
The Row buttons, which appear to the right of the window, are used to manipulate or modify the rows of your chained function.
Insert
Click the Insert button to add an additional row to your chained function.
Figure imgf000214_0001
Functions
Delete
The Delete button removes an entire row from your chained function Use your mouse to highlight the row you wish to delete, and then click the Delete button
Modify
Click the Modify button to change the function associated with the selected row
Move Up
Use the Move Up button to move a selected row up one row position without deleting the rows above it Since chained functions are read from top to bottom, row order is important
Example After creating rows 1 ,2,3, and 4 of your chained function, you realize row 4 should come before row 3 Simply click on row 4 with your mouse, and click the Move Up button until row 4 appears before row 3 The old row 4 will now become row 3, and the old row 3 will now become row 4
Move Down
Use the Move Down button to move a selected row down one row position without deleting the rows below it Since chained functions are read from top to bottom, row order is important
Example After creating rows 1 ,2,3, and 4 of your chained function, you realize row 3 should come after row 4 Simply click on row 3 with your mouse, and click the Move Down button until row 3 appears after row 4 The old row 3 will now become row 4, and the old row 4 will now become row 3
Click OK when you are satisfied with your chained function If are not satisfied with your chained function, you may click Cancel to discontinue without making any changes to your script page You can always modify an existing chained function
Λ/3 Functions
Figure imgf000216_0001
Functions
Working with Termination Code Functions
The Termination Code Function allows you to define a function which executes a Unison Term Code (Termination Code)
To create a termination code function or modify an existing one, select Termination Code Functions from the Function Type drop-down menu provided in the List of Functions for Scπpt Page window The List of Functions for Script Page - String Expression window appears
List of Functions for Script Page - Termination Code Functions window
Figure imgf000217_0001
Click New to create a new termination code function You may also select an existing termination code function and then click Modify to modify an existing termination code function, or select an existing termination code function and click OK to use an existing termination code function as-is
^ΛT Functions
If you choose New or Modify, the Termination Code Function Definition window appears:
Termination Code Function Definition window
Figure imgf000218_0001
You will use this window to create your termination code function.
Term Code Expression Name
Type a name for your termination code function in the Term Code Expression Name text box.
Termination Code(s)
The Termination Codes text area contains a list of the available Unison termination codes associated with your application. Using the mouse, select the termination code you wish to apply to your termination code
c / Functions
function Click OK when you are ready to continue
Application
The Application text area displays the application associated with the termination code function
If are not satisfied with your termination code function, you may click Cancel to discontinue without making any changes to your script page You can always modify an existing termination code function
Note: When working in standalone mode, term codes might not match what is currently on the UNISON system Therefore, the possibility exists that you could associate a function with an invalid term code Proceed with caution
Note: Recall termination codes call recall type functions, while terminate termination codes call terminate type functions
Figure imgf000219_0001
Functions
Working with Dataset Subset Functions
Dataset Subset Functions are used to create new, smaller, more useful datasets from the bigger datasets you receive from your host or create yourself using the Host Connectivity Wizard. With the Dataset Subset Function, you can choose and select columns of data from a large, cumbersome dataset, and place them in a smaller, more easily managed dataset.
To create a Subset or modify an existing one, select Dataset Subset Functions from the Function Type drop-down menu provided in the List of Functions for Script Page window. The List of Functions for Script Page - Dataset Subset Function window appears:
List of Functions for Script Page - Dataset Subset Function window
Figure imgf000220_0001
Click New to create a new dataset subset function. You may also select an existing dataset subset function and then click Modify to modify an existing dataset subset function, or select an existing dataset subset func-
Figure imgf000220_0002
Functions
tion and click OK to use an existing dataset subset function as-is. You may also delete an existing dataset subset function by selecting it and clicking the Delete button.
If you choose New or Modify, the Define Dataset Subset Function window appears:
The Define Subset Function window
Figure imgf000221_0001
You will create your Dataset Subset Function utilizing the tools in this window.
Function Name
Name your Dataset Subset Function by typing a name in the Function Name text box in the upper right corner.
^z/ Functions
Function Description
Provide a description of your Dataset Subset Function in the Function Description text area. This description will serve as a quick reminder in case you need it later on.
Datasets Available Window
The Datasets Available Window shows what datasets are available to work with. Choose the dataset you wish to work with by clicking on it.
Columns Available For Window
The Columns Available For Window shows what columns make up the dataset you chose to work with in the Datasets Available Window. Select which columns you would like to include in your Dataset Subset function by clicking on them with your mouse. To select more than one column, do the following:
• To select multiple columns that are above or below each other, click the first column you would like to select, press and hold the Shift key, and then click another column.
• To select multiple columns that are not above or below each other, click the first column you would like to select, press and hold the Control key, and then click another column.
Click the OK button when you are ready to proceed. Your Dataset Subset Function is now ready to be used, and its name and description now appear in the List of Functions for Script Page window. You can always modify your Dataset Subset Function by clicking Modify. Should you wish to discontinue the creation of your Dataset Subset Function without saving it, click the Cancel button.
Figure imgf000222_0001
Host Connectivity Wizard
Host Connectivity Wizard
The LYRICall Host Connectivity Wizard is a tool that provides users with a simple graphic user interface to probe existing data sources and choose which fields should be available for scripts. Users can also use the Host Connectivity Wizard to designate access levels for certain datafields.
Note: The Host Connectivity Wizard tool should only be used by a Database Administrator, or someone knowledgeable in databases and SQL language.
The Host Connectivity Wizard supports 5 kinds of database access (at the time this chapter was written, only ODBC and Manual Adjustment access was available):
JDBC (Java Data Base Connectivity). JDBC is used to access databases through a server. JDBC can access any database from a two tier JDBC server, which is able to access any network database. A JDBC web server must be established.
• ODBC (Open Data Base Connectivity). ODBC is used to access databases known to your computer's hard drive. This requires additional local client software and a Windows PC.
Screen Scraper - Java Telnet. Screen Scraper - Java Telnet is used to pick fields off a screen by tracking keystrokes. It can be used to access any 3270/5250 Host screens through a server.
• Screen Scraper - SBglue. Screen Scraper - SBglue is used to pick fields off a screen by tracking keystrokes. It can be used to access any Davox PC Smart Button (tm) supported terminal emulators (requires additional local client software and a Windows PC).
• Manual Adjustment. Manual Adjustment mode is used to manipulate entries manually, or to create new data sources, in the form of comma-separated files (CSVs) or datasets.
Host Connectivity Wizard
Working with the Host Connectivity Wizard
To activate the Host Connectivity Wizard, click the carat on the Tools icon on the LYRICall toolbar and then click the Host Connectivity Wizard icon. You may also activate the Host Connectivity Wizard by selecting the Host Connectivity Wizard option under the Tools pulldown menu.
The Host Connectivity Wizard icon, accessed from the LYRICall toolbar
The Host Connectivity Wizard selection, accessed from the Tools pulldown menu
Figure imgf000224_0001
Note: The Host Connectivity Wizard can also be run as a standalone program by executing the file hostconn.exe. It is located in the following directory:
/DAVOX/Bcrβenlogic/bin
Once the Host Connectivity Wizard is activated, a login window will appear. You may choose to login to a Unison system at this time, or you may choose to operate the Host Connectivity Wizard in standalone mode. If you wish to login to a Unison system, type your name and password in the space provided. If you wish to operate the Host Connectivity Wizard in standalone mode, simply click the standalone button.
s c^c^ Host Connectivity Wizard
The Host Connectivity Wizard login window
Figure imgf000225_0001
After logging in or selecting Standalone mode, the Host Connectivity Wizard Environment Window appears. In this window, you are given the option of accessing databases with JDBC, ODBC, Screen Scraper - Java Telnet, Screen Scraper - SBglue, or Manual Adjustment. Select the access system your system utilizes, and click the OK button to continue
Note: You may only operate in one mode (JDBC, ODBC, Screen Scraper - Java Telnet, Screen Scraper - SBglue, or Manual Adjustment) per each instance of Host Connectivity.
The Host Connectivity Wizard Environment Window
Figure imgf000225_0002
Zj- tf Host Connectivity Wizard
Working with ODBC Databases
To work in ODBC mode, select ODBC - Local in the Host Connectivity Wizard Environment window and click OK to continue.
ODBC Database - Define Connections tab
ODBC Database - Define Connections tab
Figure imgf000226_0001
Available Data Sources
The Available Data Sources window shows all the data sources you can access and work with via your computer. Depending on your system, you may or may not be required to provide a user ID and password to work with certain data sources. If login is necessary to access a datasource, type our User ID and Password in the space provided, and click Connect to continue. Your table, column lists, and column privileges are determined based on this login.
Figure imgf000226_0002
Host Connectivity Wizard
ODBC Databases - Additional Information tab
ODBC Database - Additional Information tab
Figure imgf000227_0001
Databases Chosen
Use the Database Chosen pulldown menu to select the database you'd like to work with.
Figure imgf000227_0002
Host Connectivity Wizard
Show System Tables
The Show System Tables checkbox allows you to view system tables as well as data source tables When this checkbox is checked, the system tables will appear in the Tables and Columns windows, below
Tables
The Tables window provides a list of the tables of information contained within a particular data source When you click on different data sources in the Available Data Sources window, you'll notice that the Tables window changes accordingly
Columns
The Columns window provides a list of both the name and type of data contained in a particular table When you click on different tables in the Table window, you'll notice that the Name and Type columns of the Columns window change accordingly
1< 6 Host Connectivity Wizard
Tables for
The Tables for window shows the actual tables contained in the database you selected using the Databases Chosen pulldown menu There are three items in the Tables for window Table, Table Alias, and Table Select Statement
• The Table space displays the actual name of the table in the database
• The Table Alias space gives you a space to name your table The name you provide in Table Alias will be the name used with LYRICall, so it is important to give the table a descriptive and accurate name
• The Table Select Statement space gives you an opportunity to provide a conditional statement If you only want certain parts of this table available to LYRICall, use this column to define a SQL where clause here For example, consider a table called "Customer," made up of customer account information, including the field account_total If you wanted LYRICall to access only those customers whose accounts were below zero (less than zero), you could write the following SQL statement in the Table Select Statement column select * from customer where account_total < 0
Columns for
The Columns for window shows the columns contained in a table you select in the Tables for window There are five items in the Columns for window Columns, Column Alias, DB Updateable, Allow Update, and List Returned
The Columns space displays the actual name of the columns in the table
• The Column Alias space gives you a space to name your column The name you provide in Column Alias will be the name used with LYRICall, so it is important to give the column a descriptive and accurate name
• The value of the DB Updateable space depends upon the login supplied in the Define Connections tab If a Y appears in the
Figure imgf000229_0001
Host Connectivity Wizard
space, indicating a "yes" value, then this column may be updated in the database.
The Allow Update checkbox allows a LYRICall script to update a column. If this box is checked, and if the value of the DB Updateable space for the column is Y (yes), then a LYRICall scrip may update a column.
The List Returned checkbox is checked when retrieving the column will return a value greater than one (> 1) at the present time.
<yy Host Connectivity Wizard
ODBC Databases - Final Results tab
The Final Results tab shows a file-structure like graphical representation of the databases you worked with in the Define Connections and Additional Information tabs Tables are represented by a table icon, and columns are represented by column icons
ODBC Database - Final Results tab
Figure imgf000231_0001
Figure imgf000231_0002
Host Connectivity Wizard
Working with Manual Adjustment Databases
To work in Manual Adjustment mode, select Manual Adjustment in the Host Connectivity Wizard Environment window and click OK to continue
Manual Adjustment Databases - Manual Connections tab
Manual Adjustment - Manual Connections tab
Figure imgf000232_0001
c^ O Host Connectivity Wizard
Datasource Section Available Applets
The Available Applets pulldown menu provides you with a list of applets which perform the task of accessing the database. Every host has an applet that performs the accessing chore. Select the applet needed to access the database. To add an applet to this list, right-click while on this area of the table, and choose Insert from the pop-up menu. The following window pups up to allow you to add a new applet to the drop down list available on the tab.
Insert applet window
Figure imgf000233_0001
New Applet Window
Applet Name
The applet name must match either a standard Davox applet or the name of a custom applet. Standard applets include JDBC, ODBC, and SCREENsbplug. A example of a custom applet is HTTPBellsouth.
Server Args
This value is the value that will be placed in the server arg field (if it is empty) when this applet is chosen. Server arguments specify how the applet is accessed. For example, to define a connection to Oracle through the JDBC applet in manual mode, you would enter "JDBC" as the applet name, and the following as the server arguments:
y / Host Connectivity Wizard
oracle. jdbc.driver .OracleDriver jdbc : oracle : thin: ΘgetHost : 1521 : test sys oracle
This tells the JDBC applet:
• which driver to use than an Oracle database resides at port 1521
• that the database's name is "test"
• that the applet should use "sys" as a login ID and "oracle" as a password.
Each type of applet has different required elements in its server arguments.
Is result a dataset?
The Is result a dataset checkbox must be checked if the field you are going to define will be stored as a dataset. This is typically used when multiple rows may be referenced.
Datasource
The Datasource window provides you with the name of the database, chosen in a previous session of the wizard. It also allows you to perform maintenance on the entries. Right-click in this area to insert or delete data sources.
Warning - Deleting a data source also deletes all tables and columns associated with it.
Server Arguments
In the Server Arguments text box, provide a path indicating how the applet can find the datasource. Each applet has a specific path associated with it. These are originally filled in based on what was entered in the New Applet window.
«^Λ Host Connectivity Wizard
Table Section Cache Data
Check the Cache Data radio button if you would like to store the results of a table query in your browser While this method will not provide real-time data, it will make screen loading time quicker
Note: The data will be reloaded correctly if any data in the select statement changes This includes user and or Davox fields used in select statements
Live Data
Check the Live Data radio button if you would like the applet to re-retπeve or re-issue a table query every time the request is made While this method will provide real-time data, it will make access time slower
Table Name
In the Table Name text box, provide a name for your table You can also follow the table name with the default 'where clause '
Column Section Cache Host Data
Check the Cache Data radio button if you would like to store the results of a column query in your browser While this method will not provide realtime data, it will make screen loading time quicker
Note: The data will be reloaded correctly if the user or Davox fields in the select statement change
Live Host Data
Check the Live Data radio button if you would like the applet to re-retπeve or re-issue a column query every time the page is loaded While this method will provide real-time data it will make screen loading time
Figure imgf000235_0001
Host Connectivity Wizard
slower.
Fixed Data
Check the Fixed Data radio button if you are defining a piece of fixed information (either a field or dataset). Fixed Data is loaded from the web server as defined in the Select statement, and is not loaded from a host. It is always cached (not reloaded) and is loaded on first access.
Field Name
Type a name for your field or column into the Field Name text box. If the field is a dataset, enter an asterisk (*) to specify a select statement for the entire dataset.
Select Statement
The Select Statement text box gives you the opportunity to provide different parameters for retrieving your field or column. You must write these parameters in SQL, specific to each applet. Leave this field blank if you are selecting the fieldtrom table, where field is FIELDNAME and table is TABLENAME. Also leave this field blank if the field name is for a dataset field. For defining a whole dataset select statement, use the following format: number of columns, column name 1 , column name 2, etc., value for row 1 column 1 , value for row 2 column 2, etc.
Figure imgf000236_0001
Host Connectivity Wizard
Example
A dataset select statement for the following table
Figure imgf000237_0002
would be
2, State, Price, MA, 10, VT, 8, FL, 12, SD, 10 Select statements may also include the following macros
• D (davoxDB)
• U (userfield)
VF()
• DS (ds col)
Note: ds = datasource name table name
DS Row (ds col match) DS Row ( ds +_ DS For (sep) { } DS If (col == match) > number ι= < number
Figure imgf000237_0001
Host Connectivity Wizard
Update Statement
If you have marked any of your fields as "allow update," you must provide an update statement in SQL in the Update Statement text box.
<^σ^ Host Connectivity Wizard
Manual Adjustment Databases - Host Connectivity Details tab
Manual Adjustment - Host Connectivity Details tab
Figure imgf000239_0001
Figure imgf000239_0002
Host Connectivity Wizard
WARNING - Since you are working in manual mode, all database fields are considered updateable
Databases Chosen
Use the Database Chosen pulldown menu to select the database you'd like to work with.
Tables for
The Tables for window shows the actual tables contained in the database you selected using the Databases Chosen pulldown menu. There are three items in the Tables for window: Table, Table Alias, and Table Select Statement.
The Table space displays the actual name of the table in the database.
The Table Alias space gives you a space to name your table The name you provide in Table Alias will be the name used with LYRICall, so it is important to give the table a descriptive and accurate name.
The Table Select Statement space gives you an opportunity to provide a conditional statement. If you only want certain parts of this table available to LYRICall, use this column to define a SQL where clause here. For example, consider a table called "Customer," made up of customer account information, including the field account_total If you wanted LYRICall to access only those customers whose accounts were below zero (less than zero), you could write the following SQL statement in the Table Select Statement column, select * from customer where account_total < 0
Columns for
The Columns for window shows the columns contained in a table you select in the Tables for window There are five items in the Columns for window Columns, Column Alias, DB Updateable, Allow Update, and List Returned
• The Columns space displays the actual name of the columns in
Figure imgf000240_0001
Host Connectivity Wizard
the table.
The Column Alias space gives you a space to name your column. The name you provide in Column Alias will be the name used with LYRICall, so it is important to give the column a descriptive and accurate name.
The value of the DB Updateable space depends upon the login supplied in the Define Connections tab. If a Y appears in the space, indicating a "yes" value, then this column may be updated in the database.
The Allow Update checkbox allows a LYRICall scπpt to update a column. If this box is checked, and if the value of the DB Updateable space for the column is Y (yes), then a LYRICall scrip may update a column.
The List Returned checkbox is checked when retrieving the column will return a value greater than one (> 1 ) at the present time.
^ ? Host Connectivity Wizard
Manual Adjustment Databases - View Host Information tab
The View Host Information tab shows a file-structure like graphical representation of the databases you worked with in the Manual Connections and Host Connectivity Details tabs Tables are represented by a table icon, and columns are represented by column icons
Manual Adjustment - View Host Infoππation tab
Figure imgf000242_0001
^ ^ Host Connectivity Wizard
Manual Adjustment Databases - Dataset Editor Tab
If Microsoft Excel is loaded on your PC, then a fourth Manual Adjustment Database tab - the Dataset Editor Tab - will be available to you This tab is used to create and edit * csv files which can be the dataset select statement This method is recommended for any datasets with more than five rows and columns
Manual Adjustment Databases Dataset Editor Tab
Figure imgf000243_0001
File Name and File Type
These items are display only, once a file is opened its name and file type will be displayed in these areas
=2 A Host Connectivity Wizard
Dataset File
This area is the interface to open an Excel worksheet to create or edit your dataset. Right-clicking on this area brings up a pop-up menu.
Select New to create a new, blank Excel worksheet and save it to a specified location. Select Open to open an existing worksheet. Select Delete to delete the file from its storage location. (Warning - if you are referencing this file on the first tab, it will not remove this reference.) Select Edit to bring up the Excel file. If no file exists in the 'dataset file' area, you will be prompted to choose a file to edit or create a new one (double clicking on the Dataset File area will do this also).
Selecting Add from the pop-up menu will prompt you for the name of the file you wish to add to the first tab as a dataset. Using the current datasource and the current table name, a ' * ' column will be added and the select statement will be "file: chosen csv filename", the "Return whole ds" selection will be checked for you, as well as the "Is result a dataset" box. In addition, a copy of the file is place din the maps directory so it can be published to the server.
When a dataset or csv file is changed, select Update from the pop-up menu and choose the changed files name to put the new version of the file into the maps directory, so that the new file can be published to the server through LYRICall.
y- L Host Connectivity Wizard
Example of Host Conn entπes when a ' csv file is created with a spreadsheet
Figure imgf000245_0001
W Host Connectivity Wizard
Figure imgf000246_0001
Object Importer and Object Publisher
What is Object Importer?
Object Importer is a tool for bringing script pages, scripts, and script objects (term codes, scripts, script pages, java applets, images, and host connectivity files) from a host onto your computer. This way, you can use those elements when you create new scripts or script pages.
What is Object Publisher?
Object Publisher is a tool for putting script pages, scripts, and script objects (term codes, scripts, script pages, java applets, images, and host connectivity files) onto a host computer. This enables them to be used by your agents.
Accessing Object Importer and Object Publisher
To access Object Importer and Object Publisher, use the Tools pulldown menu.
7oo/s pulldown menu
Figure imgf000247_0001
ZfT Working with Object Importer
Object Importer is a tool for bringing scnpt pages, scπpts, and scπpt objects (term codes, scπpts, script pages, java applets, images, and host connectivity files) from a host onto your computer. This way, you can use those elements when you create new scripts or script pages.
To activate the Object Importer, select Import Objects from the Tools pulldown menu. The Object Importer window appears. LYRICall will now connect with your server. Depending on your system, this may take several minutes.
Object Importer window
Figure imgf000248_0001
To import all objects from the server, click the "All Objects" icon, and then select Import from the File pulldown menu. LYRICall will now import all
JLΫ& Object Importer and Object Publish-
objects from the host If the Prompt Overwrite item from the File pulldown menu is checked (its default setting), LYRICall will prompt you before overwriting files with similar names
To import a particular type of object (Host Connectivity Files, Images, Java Applets, Scπpts Scπptpages, Termcodes), click the object's icon and then select Import from the File pulldownmenu LYRICall will now import those particular objects from the host
To simply connect to a host, select Connect from the Server pulldown menu
Figure imgf000249_0001
Object Importer and Object Publisher
Working with Object Publisher
Object Publisher is a tool for putting script pages, scripts, and script objects (term codes, scripts, script pages, java applets, images, and host connectivity files) onto a host computer. This enables them to be used by your agents.
To activate the Object Publisher, select Publish Objects from the Tools pulldown menu. The Object Publisher window appears.
Object Publisher window
Figure imgf000250_0001
To publish all objects to the server, click the "All Objects" icon, and then select Publish from the File pulldown menu. LYRICall will now publish all objects to the host. If the Prompt Overwrite item from the File pulldown menu is checked (its default setting), LYRICall will prompt you before
Figure imgf000250_0002
Object Importer and Object Publish-
overwriting files with similar names.
To publish a particular type of object (Host Connectivity Files, Images, Java Applets, Scripts/Scriptpages, Termcodes), click the object's icon and then select Publish from the File pulldown menu. LYRICall will now publish those particular objects to the host.
To simply connect to a host, select Connect from the Server pulldown menu.
??? Object Importer and Object Publisher
Figure imgf000252_0001
PAGE INTENTIONALLY LEFT BLANK

Claims

1. A system including a web browser based operation critical client workstation, comprising: a server computer including at least a web server, for servicing a plurality of connected web browser based client workstations; and at least one client workstation coupled to said server computer, said at least one client workstation for receiving web browser based information and for displaying said web browser based information in a web page browser format, wherein said web based information received by said at least one client workstation includes operation critical application information which is interactively displayed and utilized to perform an operation critical application from said at least one client workstation.
2. The system of claim 1 wherein said operation critical application includes a telephony application.
3. The system of claim 2 in said telephony application includes in inbound telephone call servicing application.
4. The system of claim 2 wherein said telephony application includes an outbound telephone call servicing application .
5. The system of claim 2 wherein said telephony application includes an inbound and an outbound telephone call servicing application.
6. The system of claim 2 wherein said at least one client workstation includes an agent workstation.
7. The system of claim 2 wherein said at least one client workstation includes an agent supervisor workstation.
8. The system of claim 1 wherein said operation critical application information includes application audio information and application display animation information.
9. A telephony system including a web browser based operation critical agent workstation, said system comprising : a server computer including at least a web server, for servicing a plurality of connected telephony system web browser based client workstations; at least one telephony system web browser based agent workstation coupled to said server computer, said at least telephony system web browser based agent workstation responsive to said web server, for receiving web browser based information and for displaying said web browser based information in a web page browser format, wherein said web based information received by said at least telephony system web browser based agent workstation includes operation critical application information which is interactively displayed and utilized to perform an operation critical application; and said telephony system further including a web page format web page authorizing application including a script wizard, for allowing a user to generate at least one non- propriety, industry standard telephone active object to handle a telephony application, and a host communication wizard, for allowing the user to generate at least one host connection active object to handle information exchange between said at least one telephony system web browser based agent workstation and an external source of data.
10. A web browser based operation critical client workstation comprising: at least one client workstation, coupled to a server computer, said at least one client workstation for receiving web browser based information and for displaying said information in a web page browser format, said information received by said at least one web browser based operation critical client workstation including operation critical application information, for allowing a user at said web browser based operation critical for client workstation to operate said critical application from said client workstation .
11. The system of claim 10 wherein said operation critical application includes a telephony application.
12. The system of claim 10 wherein said web browser based operation critical client workstation stores persistent data to be used by said workstation in said workstation, for later reuse without accessing said server computer.
13. A web browser based client workstation with persistent data store comprising: at least one client workstation coupled to a server computer, said at least one client workstation for receiving web based information including persistent data and for displaying said information in a web page browser format, said at least one client workstation including a data store for storing persistent data to be reused by a plurality of web pages displayed on said at least one client workstation without re-accessing said server computer.
14. An HTLM code generator for a web browser based client workstation comprising: at least one client workstation, coupled to a web server, for executing HTML code and for displaying said information in a web page browser format; and at least one supervisor workstation, said at least one supervisor workstation including an HTML (Hyper Text Markup
Language) form generator, for generating at least one web browser based HTML form for display and operation on said at least one client workstation.
15. The system of claim 14 wherein said HTML form generator further includes a script wizard, for allowing a user to generate at least one non-propriety, industry standard active script page object to control an application.
16. The system of claim 14 wherein said HTML code generator further includes a host communication wizard, for generating at least one host connection active object, to handle information exchange between said at least one web browser based client workstation and a host computer.
17. A telephony system including a web browser based operation critical agent workstation, said system comprising : a server computer including at least a web server, for servicing a plurality of connected web browser based agent workstations; at least one telephony system web browser based agent workstation coupled to said server computer, said at least telephony system web browser based agent workstation responsive to said web server, for receiving web browser based information and for displaying said web browser based information in a web page browser format, wherein said web based information received by said at least telephony system web browser based agent workstation includes operation critical application information which is interactively displayed and utilized to perform a telephony operation critical application; and wherein said web browser based information received by said at least one agent workstation includes web browser based scripting information, for providing at least one script page to be displayed on said web browser based agent workstation, for providing information to be communicated to a telephony system customer, and said script page for allowing an agent at said client workstation to input information regarding said telephony system customer in at least one location in said at least one script page displayed on said web browser agent workstation.
18. The system of claim 17 further including a plurality of said script pages, at least two of which can be arranged in a logical branch structure, wherein at least a first one of said plurality of script pages includes a predetermined message text comprising at least one question having at least two possible responses, and wherein said agent workstation causes a branch to at least a second script page based on an agent's indication of a response to said at least one question in said predetermined message text of said first script page.
19. The system of claim 18 wherein said logical branch to at least one script page arranged in a logical branch structure is conditioned upon at least one of persistent data received from an application server, data received from a host or at least one answer to said at least one question.
20. A telephony system including a web browser based operation critical agent workstation, said system comprising : a server computer including at least a web server, for servicing a plurality of connected web browser based client workstations; at least one telephony system web browser based agent workstation coupled to said web server of said server computer, said at least telephony system web browser based agent workstation for receiving web browser based information and for displaying said web browser based information in a web page browser format, wherein said web based information received by said at least telephony system web browser based agent workstation includes operation critical application information which is interactively displayed and utilized to perform a telephony operation critical application; said at least one telephony system web browser based agent workstation including a script wizard, for allowing a user to generate at least one non-propriety, industry standard telephony active object, and a host communication wizard, for allowing the user to generate at least one host connection active object to handle information exchange between said at least one telephony system web browser based agent workstation and a host computer; and wherein said operation critical application information includes display of web browser based information for allowing said at least one web browser based agent workstation to control both voice and data relative to at least one telephony call.
21. A web browser based operation critical client workstation comprising: at least one client workstation, coupled to a server computer, said at least one client workstation for receiving web based information and for displaying said information in a web page browser format, said information received by said at least one web browser based operation critical client workstation including operation critical application information; said server computer also including at least one proxy server, coupled to a source of information external to said server computer, for facilitating access to said data external to said server computer by rerouting tcp/ip protocol communication received from Java applets on said at least one client workstation to at least one application server including said external data.; and wherein said at least one client workstation includes at least one web browser based web page for communicating with said proxy server of said server computer, for requesting information of said proxy server which is external to said server computer, and for receiving said external information from said data source external from said server computer through said proxy server.
22. The system of claim 20 wherein said web browser based client workstation can access data from multiple sources generally simultaneously, said data to be generally simultaneously displayed on one web page of said web browser based client workstation.
23. A system including a web browser based operation critical client workstation with persistent data store, said system comprising:
at least one client workstation coupled to a server computer, said server computer including at least one web server, said at least one client workstation for receiving web browser based information from said web server and for displaying said web browser based information in a web page browser format, wherein said web based information received by said at least one client workstation includes operation critical application information which is interactively displayed and utilized to perform an operation critical application from said at least one client workstation; and
said at least one client workstation including a persistent data store, for receiving and storing data to be utilized by at least one web page displayed by said at least one client workstation. age browser format on said at least one client workstation.
24. The system of claim 23 wherein said at least one client workstation includes a web page cache, for storing at least one web page of information previously received from said server computer.
25. The system of claim 24 wherein said web page cache is responsive to said persistent data store, for retrieving data to be utilized by said web page.
26. A system including a web browser based operation critical client workstation, comprising:
at least one client workstation coupled to a server computer, said server computer including at least one web server, said at least one client workstation for receiving web browser based information from said web server and for displaying said web browser based information in a web page browser format, wherein said web based information received by said at least one client workstation includes operation critical application information which is interactively displayed and utilized to perform an operation critical application from said at least one client workstation; and
said web browser based information displayed in a web page browser format on said at least one client workstation including at least one client workstation side active object, said active object for initiating and controlling an operation without intervention of said server computer.
27. The system of claim 13 wherein said persistent data is stored in data sets in said persistent data store
PCT/US1998/005990 1997-03-26 1998-03-26 Browser user interface for internet telephony application WO1998043150A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU67775/98A AU6777598A (en) 1997-03-26 1998-03-26 Browser user interface for client workstation

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US4206397P 1997-03-26 1997-03-26
US60/042,063 1997-03-26

Publications (2)

Publication Number Publication Date
WO1998043150A2 true WO1998043150A2 (en) 1998-10-01
WO1998043150A3 WO1998043150A3 (en) 1998-11-19

Family

ID=21919849

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1998/005990 WO1998043150A2 (en) 1997-03-26 1998-03-26 Browser user interface for internet telephony application

Country Status (2)

Country Link
AU (1) AU6777598A (en)
WO (1) WO1998043150A2 (en)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6567852B2 (en) * 1998-05-29 2003-05-20 Hewlett-Packard Development Company, L.P. Web user interface session and sharing of session environment information
US7146505B1 (en) 1999-06-01 2006-12-05 America Online, Inc. Secure data exchange between date processing systems
US7356762B2 (en) 2002-07-08 2008-04-08 Asm International Nv Method for the automatic generation of an interactive electronic equipment documentation package
US7483757B2 (en) 2005-07-22 2009-01-27 Honeywell International, Inc. Control system migration
US7941761B2 (en) 2004-05-03 2011-05-10 Microsoft Corporation Third party service switching through command bar user interface
EP2675131A1 (en) * 2012-06-12 2013-12-18 Airwin Entertainment GmbH Method for exchanging data between a server and a client
US8938062B2 (en) 1995-12-11 2015-01-20 Comcast Ip Holdings I, Llc Method for accessing service resource items that are for use in a telecommunications system
US8995316B2 (en) 1997-10-15 2015-03-31 Nokia Corporation Mobile telephone for internet applications
US9191505B2 (en) 2009-05-28 2015-11-17 Comcast Cable Communications, Llc Stateful home phone service
CN111767091A (en) * 2020-07-01 2020-10-13 百度在线网络技术(北京)有限公司 Method and device for acquiring user information by applet, electronic equipment and storage medium
US11281685B1 (en) 2019-03-12 2022-03-22 Pet Hospital Solutions, LLC Modular communication middleware for data retrieval and presentation
CN114443038A (en) * 2022-04-08 2022-05-06 绿城科技产业服务集团有限公司 Zero code configurable display system based on browser

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7401115B1 (en) 2000-10-23 2008-07-15 Aol Llc Processing selected browser requests

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BROWN G. and CLEVELAND C., Special Edition Using Netscape 2, QUE CORPORATION, 1995, pp. 99-100, 159-180, XP002910272 *
VocalTec Press Release, 08 Jan. 1996, http://www.vocaltec.com/about press/pr_ip31.htm, XP002910271 *

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8938062B2 (en) 1995-12-11 2015-01-20 Comcast Ip Holdings I, Llc Method for accessing service resource items that are for use in a telecommunications system
US9420402B2 (en) 1997-10-15 2016-08-16 Nokia Technologies Oy Mobile telephone for internet applications
US8995316B2 (en) 1997-10-15 2015-03-31 Nokia Corporation Mobile telephone for internet applications
US9521505B2 (en) 1997-10-15 2016-12-13 Nokia Technologies Oy Mobile telephone for internet applications
US6567852B2 (en) * 1998-05-29 2003-05-20 Hewlett-Packard Development Company, L.P. Web user interface session and sharing of session environment information
US7895446B2 (en) 1999-06-01 2011-02-22 Aol Inc. Secure data exchange between data processing systems
US9043892B2 (en) 1999-06-01 2015-05-26 Facebook, Inc. Secure data exchange
US7146505B1 (en) 1999-06-01 2006-12-05 America Online, Inc. Secure data exchange between date processing systems
US7356762B2 (en) 2002-07-08 2008-04-08 Asm International Nv Method for the automatic generation of an interactive electronic equipment documentation package
US7941761B2 (en) 2004-05-03 2011-05-10 Microsoft Corporation Third party service switching through command bar user interface
KR101071130B1 (en) * 2004-05-03 2011-10-10 마이크로소프트 코포레이션 Online service switching and customizations
US7483757B2 (en) 2005-07-22 2009-01-27 Honeywell International, Inc. Control system migration
US9191505B2 (en) 2009-05-28 2015-11-17 Comcast Cable Communications, Llc Stateful home phone service
EP2675131A1 (en) * 2012-06-12 2013-12-18 Airwin Entertainment GmbH Method for exchanging data between a server and a client
US11281685B1 (en) 2019-03-12 2022-03-22 Pet Hospital Solutions, LLC Modular communication middleware for data retrieval and presentation
CN111767091B (en) * 2020-07-01 2023-12-05 百度在线网络技术(北京)有限公司 Method, device, electronic equipment and storage medium for acquiring user information by applet
CN111767091A (en) * 2020-07-01 2020-10-13 百度在线网络技术(北京)有限公司 Method and device for acquiring user information by applet, electronic equipment and storage medium
CN114443038A (en) * 2022-04-08 2022-05-06 绿城科技产业服务集团有限公司 Zero code configurable display system based on browser
CN114443038B (en) * 2022-04-08 2023-08-18 绿城科技产业服务集团有限公司 Zero code configurable display system based on browser

Also Published As

Publication number Publication date
WO1998043150A3 (en) 1998-11-19
AU6777598A (en) 1998-10-20

Similar Documents

Publication Publication Date Title
US6816880B1 (en) Browser user inter face for client workstation
US6269460B1 (en) Dynamic enhancement of error condition handling and displayed error messages in computer operations
US6202200B1 (en) Multi-tier debugging
US5883626A (en) Docking and floating menu/tool bar
US6188400B1 (en) Remote scripting of local objects
US6424991B1 (en) Object-oriented system, method and article of manufacture for a client-server communication framework
US6757868B1 (en) Programmatic switching of arbitrary HTML forms
US8260844B2 (en) Information messaging and collaboration system
US6779027B1 (en) Intelligent management module application programming interface with utility objects
US5911075A (en) Query selection for a program development environment
US6253368B1 (en) Dynamically debugging user-defined functions and stored procedures
US6272673B1 (en) Mechanism for automatically establishing connections between executable components of a hypertext-based application
US6477531B1 (en) Technical support chain automation with guided self-help capability using active content
US5768510A (en) Object-oriented system, method and article of manufacture for a client-server application enabler system
US7454759B2 (en) Method, apparatus, and system for implementing a framework to support a web-based application
US7178129B2 (en) Drag-and drop dynamic distributed object model
US6253282B1 (en) Object-oriented system, method and article of manufacture for a client-server with a client program cache
US6266709B1 (en) Object-oriented system, method and article of manufacture for a client-server failure reporting process
US7404177B1 (en) Automated web interface generation for software coded applications
EP0836139A2 (en) Object-oriented system, method and article of manufacture for a client-server graphical user interface framework in an interprise computing framework system
US20060156315A1 (en) Method, computer-readable medium and apparatus for providing a graphical user interface in a client-server environment
CA2380641A1 (en) Application framework in an e-commerce architecture
US20050091336A1 (en) Method and apparatus for supporting cookie management in a web presentation architecture
EP0827073A2 (en) Object-oriented system, method and article of manufacture for a client-server-centric enterprise computing framework system
WO2003029968A1 (en) Method, apparatus, and system for implementing view caching in a framework to support web-based applications

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GE GH GM GW HU ID IL IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG US UZ VN YU ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW SD SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN ML MR NE SN TD TG

AK Designated states

Kind code of ref document: A3

Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GE GH GM GW HU ID IL IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG US UZ VN YU ZW

AL Designated countries for regional patents

Kind code of ref document: A3

Designated state(s): GH GM KE LS MW SD SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

NENP Non-entry into the national phase

Ref country code: CA

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

Ref document number: 1998545999

Format of ref document f/p: F