This invention relates to service creation via a graphical user interface, and in particular to graphical interface based software for creating communication service agents.
In an office environment there is typically at least one network having a plurality of user terminals permitting office workers to carry out tasks. Various forms of structured data, such as files, databases, e-mail messages, voice mail messages and others can be accessible to the office workers via the network. It will be appreciated however that different office workers or different users of the network have different needs in relation to the structured data. For example, a product sales representative may need to be able to quickly e-mail out product brochures while not accidentally e-mailing out a confidential company document. A real estate agent offering to clients an automated information system for obtaining property listing information may need to be able to easily update the behavior of this system.
Just as different office workers or different users of the network have different needs in relation to structured data, so too are individuals' call handling needs generally unique. Individuals served by voicemail and messaging systems need personalized call processing, and therefore the voicemail and messaging systems that do a better job of addressing this need are more desirable. In addition, since individual users work with different contacts (either internal or external to their organization), it is desirable to provide message handling that is customizable based on personal contacts. Users of known systems cannot personalize call-flow behavior for calls arriving at their desktop phone in any extensible manner. Typical systems available today permit users to change greetings, in some cases using rules based on time-of-day and the source of the call, to configure limited notification rules (pager, etc.) based on restrictive criteria, and possibly create simple single-layer menus or forwarding options for callers. Typically, those systems also only function as configured while the user's computer is attached to their network. Other systems allow system administrators to write custom scripts, often in custom programming languages, to instruct private branch exchanges (PBXs) to direct calls to custom computer telephone integration (CTI) systems that execute those scripts. This requires that the system administrator have extensive knowledge and experience. The system administrator's time is also consumed writing frequent iterations and redeveloping scripts for the user as a result of miscommunications, changes of desire, etc. Furthermore, many of the custom, non-integrated CTI systems do not interact effectively with voice mail and personal contact management systems.
In the broader context of structured data, there exist commercially available solutions for creating services that work with data sources. Many of these solutions only permit the user of the services to dictate the functionality of the created services in a limited manner. Other solutions require one or more software interfaces to be written in text. This is done by a programmer or other domain expert in computer code using a specific syntax. Software written in text languages such as C, C++, Java, C# or CGI are then either compiled to become a module within a software system, or are interpreted by a software module that reads text.
There is a need for a service editor that permits computer users knowledgeable in computer-based office productivity tools, but not proficient in any computer programming language or any database system, to create dynamic services that work with structured data.
According to one example of the invention, a computer readable medium is used in a computer system. The computer system has at least one display device, at least one input device operated by a computer user and at least one storage device having structured data. The computer readable medium includes code executable in the system to provide a service editor for use by the computer user. The service editor is for creating at least one interactive service and has a graphical user interface (GUI). The GUI permits the computer user to build a flow map defining the interactive service. The flow map is displayable on the display device and includes a plurality of elements connected together by flow lines. At least one of the elements incorporates a customizer for assisting the computer user in further defining the interactive service. Operations on the structured data are effectuated by the interactive service.
According to another example of the invention, there is provided a method for creating an interactive service. The method is carried out in a computer system having at least one display device and includes the steps of:
An embodiment of the present invention provides a communication system that permits users within an office to personalize call processing and notification based on personal contacts, and permits personalization of call flow in an extensible manner, without requiring extensive knowledge of the system by the user.
According to another example of the invention, there is provided a communications system for use in conjunction with a telephone system connectable to a telephone network, the telephone system supporting a plurality of extension telephones connected thereto and used by a plurality of users with personal computers connected to a computer network. The system includes a CTI (computer telephony integration) server connected to the computer network, the CTI server executing a server program that executes computer instructions for handling calls to at least selected ones of the plurality of extension telephones; and a client program installed on the personal computers, each client program having means for configuring the server program to execute the computer instructions for handling calls to an extension telephone of the user.
According to another example of the invention, there is provided a method of permitting an individual user of an extension telephone to configure the handling of calls to the extension telephone, the extension telephone being connected to a telephone system connected to a telephone network. The method includes steps of: communicatively connecting a client program operated by the individual user to a server program that executes on a CTI server configured to receive notice of the calls to the extension telephone and to control handling of the calls; creating a call flow map that defines how the calls are to be handled using the client program operated by the individual user; and operating the client program to store the call flow map on the CTI server.
According to another example of the invention, there is provided a method for processing calls to a plurality of extension telephones in a communications system that includes a network; a CTI server connected to the network; a telephone system connected to the CTI server and to a telephone network; and a plurality of extension telephones connected to the telephone system. The method includes steps of: receiving the call at a CTI server, which executes a predetermined service defined by a user of a destination extension telephone for the call using a client program; and handling the call at the CTI server in accordance with the predetermined service.
According to yet another example of the invention, there is provided a computer readable medium storing program instructions executable by a client computer in a server/client computing model, including: program instructions for communicatively connecting the client computer to a server program executing on a CTI server; program instructions for permitting a user of an extension telephone served by a telephone system to which the CTI server is connected to create at least one call flow map for controlling calls to the extension telephone; and program instructions for saving call flow maps created by the user on the CTI server.
Further features and advantages of the present invention will become apparent from the following detailed description, taken in combination with the appended drawings, in which:
a is a block diagram of client program components of the system deployed on the client computer shown in
b is a schematic diagram of a window of a main user interface of the client program shown in
a, 5b, 5c and 5d are a sequence of diagrams showing connection of service editor elements to create a call flow map;
a, is a block diagram of a server program shown in
b, is a block diagram of components of the server program shown in
a, is a block diagram of components of the server program shown in
b, is a schematic diagram of user profile data shown in
It will be noted that throughout the appended drawings, it is possible that like features are identified by like reference numerals.
In this patent document, the term computer system can mean different things including 1) a network; and 2) interoperating computer devices at a workstation or home office.
The environment 100 also includes a CTI (computer telephone interface) server 120, having a server program 121. The CTI server 120 is connected to the telephone system 108 and the network 122. An email server 118 is also connected to the network 122. The CTI server 120 may be, for example, a Nortel Norstar KSU® having a Dialogic® D/82JCT-U card. The email server 118 may be, for example, a Microsoft Exchange® server.
a is a block diagram of client software components 200 utilized by the system in accordance with one embodiment of the invention. The client software components 200 include a mail and contact management system 202 and a client program 210. The mail and contact management system 202, which may be Microsoft Outlook®, or a third party PIM (personal information manager) for example, has toolbar and menu extensions 204, a voice form 206 and a fax form 208. The client program 210 has an administration user interface 212, a fax viewer 214, a fax cover page editor 216, a fax printer driver 218, a main user interface 220, an announcement editor 222 and a service editor 224. In an embodiment of the invention, interactive services are created using a graphical service development interface, and (as is discussed in subsequent paragraphs) the service editor 224 can include this type of interface.
The service editor 224, as well as the other above-mentioned software, could be stored on a CD, CD-R, etc. recognizable by a personal computer when inserted into one of its drives. One skilled in the art will also appreciate that the software (perhaps in a different form) could also be stored on other computer readable media. An example of an alternative medium would be the hard disk of a computer.
Software such as the service editor 224 can be sold as a computer program product including an instruction manual. The instruction manual can be electronic in the form of one or more Adobe® or Word™ format files. If the service editor can create interactive services to permit a computer system to provide e-mails and/or text messages to a remote person, than the instruction manual accompanying this service editor could provide instructions for creating these services. If the service editor is sold as a package designed to assist a real estate professional, than the instruction manual accompanying this service editor could provide instructions for creating services designed to assist the real estate professional. In such a case the software package might also include communications management software such as CallAttendant Office™ produced by Objectworld of Ottawa, Canada.
b shows a window 230 of the main user interface 220 shown in
In one embodiment, service elements are computer objects that contain attributes and methods specific to a certain operation, function, or purpose, and they are the object classes from which interactive services are derived. Service elements can be input/output communication path components, data sourcing components, operators on data items or communications paths, and/or actions. While service elements can be object-based representations of generic computer system or communication media functions, service elements can also inherit and contain with themselves, services based on other service elements.
There is a set of service elements in the call flow map 300, in particular, there is a set of five service elements. An interactive service is a set of service elements that are invoked in a given sequence or pattern given a stimulus. The stimulus can be, but is not limited to: the creation of a media/data/signaling channel, information received via a media/data/signaling channel, queries from an entity using a media/data/signaling channel, data values returned from an external source via a media/data/signaling channel, or time stimulus generated locally or remotely via a media/data/signaling channel. The manner in which an interactive service is invoked depends on the stimuli associated with the media, data and signaling channels.
In
The second element 320 includes a header 322 that has an input connector pin 318, an icon 322a, a title 322b, and a T-bar 322c; a first section 324 having an output connector pin 328; and a second section 326. The third element 336 includes a header 338 having a first input connector pin 332, a second connector pin 334, an icon 338a, a title 338b and a T-bar 338c; a first section 340 having an output connector pin 346; a second section 342 having an output connector pin 352; and a third section 344 having an output connector pin 358. The fourth element 364 includes a header 366 that has an icon 366a, a title 366b, a T-bar 366c, a first input connector pin 350 and a second input connector pin 356; and a section 368 having an output connector pin 370. The fifth element 372 includes a header 374 having an input connector pin 362, an icon 374a, a title 374b, and a T-bar 374c; a first section 376 having an output connector pin 380; and a second section 378 having an output connector pin 382. The output connector pin 312 is connected to the input connector pin 318 by flow line 314 (the terms flow line and connector are used interchangeably in this application, and they mean the same thing). The output connector pin 316 is connected to the input connector pin 334 by connector 317. The output connector pin 328 is connected to the input connector pin 332 by connector 330. The output connector pin 346 is connected to the input connector pin 350 by connector 348. The output connector pin 352 is connected to the input connector pin 356 by connector 354. The output connector pin 358 is connected to the input connector pin 362 by connector 360.
a and 5b show a step in the creation of a call flow map. An element 506 is dragged and dropped using a cursor 504, by selecting an element name 502 from the palette tool 404 and displaying the output connector pin 312. The element 506 is automatically created and displayed, and the connector 508 is automatically created between the output connector 312 and the input connector 510.
Because the interactive service is created in part by “dragging and dropping” of service elements, the user interface of the illustrated embodiment is referred to as a graphical user interface (GUI). It will be understood however that not all GUIs are characterized by “dragging and dropping”. Also the illustrated service elements are not simply icons (however it would be possible for certain service elements to so be). Specifically, dashboard style customizers are incorporated into the illustrated service elements for assisting the computer user in further defining the interactive service. A customizer can include one or more radio button sets, text input fields, check boxes and drop-down selectors. A radio button set is so called because a computer user selects a particular option to the exclusion of the other options. A drop-down selector is so called because the selections are revealed (drop down) once the selector is clicked on.
c and 5d show the creation of a connection 512, which is created by selecting the output pin 514 using the mouse 116a (
a is a block diagram of components of the server program 121 shown in
b is a block diagram of the applications and communications management systems 700 shown in
a is a block diagram of the data management systems 800 shown in
b is a block diagram 850 of an example of the user profile data 836 shown in
In one example of the invention, there is provided a communication system that permits users within an office to have personalized call processing and notifications that are customizable based on personal contacts. It also permits personalization of call flow behavior in an extensible manner, without requiring extensive knowledge of the system by the user.
In another example of the invention, there is provided a system and methods that permits a user 110 to create a call flow map and a call handling behavior using the service editor 230 (
In yet another example of the invention, it is possible for the user 110 to use features available in the server program 121 in their personalized message handling services. The user can customize their call flow so that it responds differently to different contacts in the user's personal contact management system.
The server program 121 is the principal processing component of the system, and provides personal data storage for each user. Users operate their client computers 116, which are connected to the TCP/IP-based LAN 122, to communicate with the server program 121 to configure and modify their personal call answering behaviors. The user's computer 110 executes the client program 210, and the CTI server 120 executes the server program 121 in accordance with a client/server model well known in the art.
The exemplary call flow map 300 shown in
The ‘Play One-time Message’ element 302 (
The call control element 320 activates the ‘Play Mailbox Greeting’ 322b, which plays audio over the calling line to the caller based on an announcement object or a greeting, as selected by the user 110. It will be understood that the element 320 may perform a derived function and may also contain within itself objects defined by other service elements.
The user 110 using the element 320 selects the desired option by setting the appropriate fields 324. The user 110 also specifies 326 whether the caller can skip over the audio by pressing a DTMF (dual-tone multiple-frequency) key on their phone, or are unable to terminate the announcement object or greeting. The call flow always passes from the call control element 320 through connector pin 328, and follows the attached connection 330 to the connector 332 to an ‘Advanced Menu’ call control element 336.
The ‘Advanced Menu’ call control element 336, labeled ‘Advanced Menu’ 338b, permits the caller to enter DTMF digits until a specified timeout occurs. In this example, the timeout is configured as 0.0 seconds 340. This causes the call flow to pass straight through to the connector pin 346 if a DTMF digit has not been entered prior to entry to the ‘Advanced Menu’ element. This configuration of the call control element 336 permits the caller to press ‘*’ during their greeting if they would like to manage their mailbox. This behavior is provided by configuring a key (DTMF tone) in the advanced menu element 336 as ‘*’ 344, and connecting 360,362 a ‘Manage Mailbox’ element 372 to the associated connector pin 358 by dragging the call control element 372 onto the connector pin 358, as described above. The ‘unlisted key’ option 342 is also enabled so that DTMF tones (or keys) other than those listed explicitly in the ‘Advanced Menu’ element (in this case, ‘*’) will pass through the associated connector pin 352. In summary, if the caller presses the ‘*’ key on their phone during the one-time message or audio prompt played by the ‘Play Announcement’ element 320, the call will follow the connection 360 to the ‘Manage Mailbox’ element 372, otherwise, if they press any other key on their phone, or press nothing at all, which follows the timeout connector pin 346, the call will follow the connections 348,354 to the connected 350,356 ‘Take Message’ element 364.
The ‘Take Message’ element 364 records audio from the call until specified termination conditions 368 are met. It will store the audio as a voice message in the specified mailbox 368, which may reside on an external email server 844,846 (
The ‘Manage Mailbox’ element 372 prompts the caller to enter a password. The password is then matched against the password for the selected mailbox 376. If the password matches, the caller is able to check messages, and perform other mailbox management functions on the selected mailbox. Once, the caller leaves mailbox management, the call flow follows the adjacent connector pin 380. Since the connector pin 380 is not connected to any other elements, the call will be disconnected. If the password does not match, too many attempts are made, or the caller cancels password entry so that access is canceled 378, the call follows the adjacent connector pin 382. Since the connector pin 382 is not connected to any other elements, the call will be disconnected.
Each of the call control elements 304,322,338,366,374 include the icons 304a,322a,338a,366a,374a, which provide a graphical representation of the type of call control element, and the labels 304b,322b,338b,366b,374b, which permit the user to describe each element in their own words, if desired. Each call control element also includes T-bar control 304c,322c,338c,366c,374c that permits the user 110 to adjust a viewable size for the element, and a help button 304d,322d,338d,366d,374d which permits the user 110 to access help documentation for the specific element type.
The operation of the client program 210 will be described with reference to
For server based contact management systems, both the client program 210 and the server program 121 access the contact management system 202.
In one embodiment of the invention, Microsoft Outlook™ is used as the email and contact management system 202 in conjunction with Microsoft Exchange® as the email server 118, contacts are stored as a special type of message in a folder called Contacts in the user's mailbox. MAPI (messaging application programming interface) is used to access the mailbox, folder, and individual messages. Properties of the message are read to retrieve information about the personal contacts.
The main user interface 220 displays in the window 230 various data objects that represent data objects stored on the CTI server computer 120. Those data objects are manipulated in a known way, much like file objects in Windows Explorer®. The objects are stored in a file system-like structure as shown in
The service object 252 (
To modify a service object, the user 110 double-clicks on the service object using the mouse 116a. This will cause the client program 210 to retrieve the service data object 252 from the server program 121. Once the data has been retrieved from the CTI server 120, the client program 210 opens the service editor 224 on the service data object 252. The server data object is stored on the client computer 116 as a service file. The data format for this file consists of a sequence of Microsoft Foundation Classes (MFC) CObject-based element classes that have been serialized to disk as part of a document, which is done using standard techniques. The specific details of the file format are not important so long as both the server and client program use the same method of storage and retrieval. After the user has completed editing the service object 252, the data is retrieved to the server for storage.
The user may create, delete, rename, and modify all data objects that are stored on the server. In addition, a single service object 252 may be activated on the user's extension telephone 112. This is done by either dragging the desired service object to the line status bar 260 located as a separate pane at the bottom of the user's main window 230 and dropping it on the active service area 264 (implemented using standard drag and drop techniques), or by selecting the Activate service menu item 272 while the desired service object 252 is selected in the pane 250 displaying the list of service objects (implemented using standard context menus). Both these procedures cause the client program 210 to instruct the server program to activate the specified service object for call processing on the user's telephone extension. Activation of the service is performed by modifying the user's profile data 836. The client program sends a command to the server indicating that the user's profile 836 should be changed so that the desired service object becomes the active service.
In addition to service objects 252, the user 110 may manipulate the following other objects: announcements (audio files played over the phone to callers), fax documents, fax cover page templates, one-time messages, fax queue entries, and event log archives. These are all performed in a similar manner to that described above for service objects.
It should be noted that elements within service objects often refer to other objects within the user profile including announcements, contacts, fax documents, and fax cover pages templates. Each of these objects within the service object is referred to by an object reference. The object reference is much like a file name path for referring to files on a disk, however, each user's object space is restricted to objects that they can manipulate and see. All of the objects in each user's profile are distinct and are manipulated independently from objects in other user's profiles. In one embodiment of the invention, the server program is responsible for ensuring that a user may not manipulate, or even see, objects in other user's profiles.
The service editor 224 permits the user 110 to manipulate call flow behavior using call flow maps 300. As shown in
A feature of the service editor 224 is that each element presents all of the data required to configure it on the same screen, as the connections are made. This is done in a manner that makes creating a call flow map simple and easy for the user 110. Another distinct feature about call control elements that are available for a user 110 to use while constructing a call flow map is that call control elements are high level implementations of control logic. This greatly simplifies the learning required by an end user, while only marginally limiting the capabilities available to the user 110.
The service editor 224 also provides the user 110 with the ability to show or hide extra details about elements in the service that they do not need to see at any given time. This permits the user to reduce or increase the information presented on the screen to ease in the management and modification of a service.
The following (Table 1) is a list of some elements that are available to users 110:
With respect to the “Voice Mail” service element in Table 1, an interactive service including this service element would likely be a service acting in place of someone who would answer the phone at a particular phone extension. One skilled in the art will appreciate that the Voice Mail service element is an example of a service element that can terminate communication sessions that occur on voice-based media. Other types of service elements can terminate communication sessions that occur on other types of media.
More generally, interactive services that can be created in accordance with an embodiment of the invention can act in place of, or represent, the user identity in a method appropriate for the media type. For the media types that are supported, such interactive services act in place of or in transit for the identity as a part of a communications session.
The service editor 224 also provides an overview pane 402 that permits the user 110 to view an entire service 300 as it is created. This permits a user 110 creating large services to have an overview of the flow of the service, and to understand where a currently displayed area 406 of the service fits into the entire service.
The client program 210 communicates with the server program 121 using a protocol that operates over TCP (transport control protocol) The protocol supports a set of general behaviors shown in Table 2, which can be implemented using techniques known to those skilled in the art:
The client program 210 maintains one TCP connection to the CTI server 120 for management and control functions (as in sending the above commands, and handling their replies). A separate TCP connection is established as required when file data is transferred for an object. This is implemented using common TCP and FTP-style (file transfer protocol) semantics.
The server program 121 is created as either a Windows NT® service or a Unix® daemon (a program that runs in the background and is managed by an operating system) so that it may be run automatically at system start-up, and without specific need for a user to logon to the computer. The server program 121 also stores configuration data in a folder on a disk in the computer so that it may retain its settings between restarts of the computer. The server program 121 is implemented as a multi-threaded application, permitting it to perform parallel actions at the same time. Many different sub-systems within the server program 121 run their own threads to perform background processing, or to actively wait for input data before performing processing related to that input data.
The server program 121 creates management objects 704 that create a TCP listening socket through the connection acceptor 706 (
An embodiment of the invention utilizes common computer telephony hardware to integrate with communication systems. The hardware is provided with a programming API that permits developers to interact with the hardware in such a way as to perform operations such as placing a call, answering a call, detecting DTMF digits, and playing and recording audio.
An embodiment of the invention uses specific integration techniques for different telephone systems. Integration is accomplished either through specific digital integration, or in-band detection of DTMF digits over analogue channels to determine a reason for a call arriving at an integration port (or channel) between the telephony and interface 920 (
Once the call arrives from the telephone system 108 to the telephony card interface 920, the communication system management interfaces 930 utilize the information made available by the telephone system 108 to determine which extension the call arrived from. It then consults its user profile data storage 834 to determine how to go about answering the call. The service is then loaded into memory, and executed by the service execution engine 714.
In order for a call to arrive at the telephony and interface 920, the communication system must be programmed accordingly to direct the call correctly for the desired circumstances (such as the user not answering their phone). The server program 121 automatically programs the telephone system 108 to direct the calls accordingly. Different integration methods are used for different types of telephone systems to accomplish this, however, the management interface presented to the administrator is very similar or identical, regardless of the type of telephone system that is connected to the call-processing server. A compatibility layer that isolates the system management functions and call processing layers from the telephone system and other device specific functionality enables the consistency in the management interface. The compatibility layer, which includes communication system programming reduces management overhead, and simplifies the process of installation, configuration, and general use of the system in accordance with an embodiment of the invention.
An embodiment of the invention also enables integration with an email system for storage of voice and fax messages. This functionality is referred to as unified messaging. The integration of the email system is provided by a messaging layer that hides the specific details of the messaging system and provides a common abstract interface that can be used by call processing layers of the server program 121 to perform the desired processing requested by the end user 110. Contact management integration is provided in a similar manner, so that regardless of the system used by the user, the integration and call processing layers used for executing services, are able to function.
The messaging layers are built by first constructing an abstract set of objects that provide the following behavioral interfaces: Messaging System 812, Mailbox 816, Mailbox Message Iterator 818, and Message Data 814. For each messaging system that is to be supported, a refinement of each abstract interface is implemented such that behavior is implemented correctly. The interfaces are adapted to handle email, fax, and voice messages. Voice and fax messages are treated as special types of email messages that have attachments containing the voice and fax data, sent with a regular email message body and header. Table 3 details functionality of each of the interfaces identified above:
The contact management interface is built using a slightly different version of the same style of system. The abstract set of interfaces that are constructed include: Contact System 804, Contact Database 806, Contact Iterator 808, and Contact Information 810. A significant difference arises because all contact management systems are server based. Consequently, a special contact system (and related interfaces) is implemented to provide local caching of client-side contact data. As with the messaging system, for each contact management system that is to be supported, each of the interfaces for providing specific behavior are implemented. One significant difference between the messaging system 812 interface and the contact management system 804 interface is that there is no requirement for the data in the contact management system to be modifiable by the server program 121. The server program 121 only needs to be able to read and refer to information contained in the call management system. Table 4 details the functionality of each of the interfaces identified above:
These contact and messaging layers are used by the service execution system to provide the functionality of an embodiment of the invention.
Execution commences once it has been determined that a call arriving at one of the CTI server's 120 integration ports is determined to be for a user's extension telephone 112, and that the user 110 has activated a service object. Service execution is performed using three main components. These components are the Service Execution Engine and State Machine 714, the Voice Call, and the Call Processing Tools 718.
The Voice Call is a mid-level layer that provides a telephone system and telephony card independent interface to the port used to process the call. The Call Processing Tools 718 are a set of utility functions that provide a range of common functions that are used by a number of elements of the server program 121 to implement behaviors in response to telephone calls. The Service State Machine 714 is responsible for translating the call flow map (composed of elements and connections) into a sequence of calls to the Call Processing Tools 718 and Voice Call functions, in order to provide the behavior required for the service elements.
A service is executed by implementing a pseudo-state machine 714, where each call control element (for example, call control elements 302,320,336,364,372 shown in
The system disclosed in this patent document operates one ormore server programs 1118 that can operate interactive services or service agents 1119 (for convenience only one service agent 1119 is illustrated) that communicate with one or more terminal entities 1120, be they human or automated, that use one or more terminal devices 1121 that facilitate communications via supported communications media, data and/or signaling channels. The terminal devices 1121 may be telephones or computers with communications interfaces that may be voice driven, text driven, etc.
One skilled in the art will appreciate that for telephony the media can include wire-line, IP and wireless telephony defined by the International Telecommunications Union (such as CSS7, H.323, GPRS and others), methods defined by the Internet Engineering Task Force (such as SIP and others) and methods proprietary to specific vendors (be they Private Branch Exchanges or proprietary IP communications systems such as Skype). Also, two examples of non-audio media types are text-based messaging systems (for example, instant messaging) and web-based text interfaces, as defined by the World Wide Web Consortium.
The system disclosed in this patent document communicates with one or more database servers 1122 over the computer network 1117. The server 1122 contains a database program 1123 that operates on one or more databases 1124 described by one or more database schemas 1124a. The server program 1118 allows users 1113 to build the service agents 1119 that can access the databases 1124 using abstractions of the database schemas 1124a.
Users 1113 of the system 1110 can create service agents 1119 that that can communicate with terminal entities 1120. Users can create service agents using a client program 1132 such as the program described previously in
Service agents 1201 (for convenience only one service agent 1201 is illustrated) access the CDAL 1202. The CDAL provides a common interface for data access that is independent of the actual kind of data being used.
The server 1110 can contain DALs 1203, 1206, 1209 for data source types Open Database Connectivity (ODBC), Extensible Markup Language (XML) and file respectively. DAL is an initial abstraction of the data source, and in one embodiment is a software module written in a text language by a domain expert.
With respect to the ODBC DAL 1203, it contains an ODBC-based query mechanism and data parser 1204 that is linked by computer software program libraries to a corresponding ODBC driver 1205. The ODBC Driver 1205 can be provided by the vendor of an ODBC compliant database system. It will be understood that each ODBC driver is mated with a specific ODBC Query/Parser.
Communication with one or more databases 1214 that exist within the server 1212 is through an ODBC access service 1216. Different ODBC compliant database servers require different ODBC drivers. Due to deficiencies in the design of the ODBC specification, ODBC individual drivers may require different authentication credentials or offer different functionality. The abstracting of ODBC data sources with one or more DALs can alleviate this deficiency.
With respect to the XML Web Service DAL 1206, it contains an XML-based query mechanism and data parser 1207 that is linked via computer software program libraries to a web services client 1208 that conforms to the specifications of web service provider 1219. XML Web Services are accessed via a Hypertext Transfer Protocol (HTTP) compliant server 1218 that acts as a front end for the web service provider 1219. The web service itself acts as an access point to one or more database 1220.
Web Services is a collection of protocols and standards as defined by the World Wide Web Consortium. Protocols include the XML (Extensible Markup Language) protocol, Simple Object Access Protocol (SOAP) and a number of other protocols including SOAP Message Transmission Optimization Mechanism (MTOM) and others. Each protocol undergoes version changes which in turn support different functions. Individual XML Service Providers often support only one protocol version or are missing certain sub-components completely. The abstracting of XML data sources with one DAL for each specified XML Data Source can alleviate these deficiencies.
The server 1110 can contain one or more of the DALs 1209 for file data sources. The DAL 1209 contains a file query mechanism and data parser 1210 specific to the data source that is linked by computer software program libraries to a corresponding file service client 1211. Examples of file service clients include the Server Message Block (SMB) protocol supported by the Microsoft Windows™ family, the FTP protocol and the HTTP protocol for file transfers. At least one DAL exists for each supported file type.
The server 1110 can also contain one or more DALs 1225 for Custom Databases not supported by ODBC or XML. The DAL 1225 contains a file query mechanism and data parser 1226 specific to the custom database that is linked by computer software program libraries to a corresponding database service client 1227. Examples of custom databases include Object-Oriented databases such as Microsoft Active Directory and the Lightweight Directory Access Protocol. At least one DAL exists for each supported custom database.
The server 1110 can also contain one or more User-Data DALs 1228 for User-Defined Data Tables. The DAL contains a query mechanism and data parser 1229 for either ODBC, XML, File or Custom Database Data Sources that is linked by computer software program libraries to a service client 1230.
The service agent 1328 contains one or more service elements 1309 which can communicate a data request 1309a to a data service element 1310. A data service element is a special type of service element. Also, a data service element is an object that obtains and operates upon data that can be acted upon in a common representative form by a CDAL. In one embodiment, data service elements are the common source for external data for all interactive services defined by users of the system. Administratively defined data sources can have data retrieved from them by data service elements. Also, data service elements can modify these data sources (add, change and delete) and can select from sets of values within such data sources. It will be understood that the data service element object has attributes that depend on the data source.
The data service element 1310 requests data from a CDAL 1313 using as a data source one of the offered data sources that is made available by a data source selector component 1312. The data source selector component 1312 communicates a query request 1312a to the appropriate DAL 1325. The query request 1312a is one that can be understood by that data access layer. A query/parser mechanism 1314 then translates the request into a manner understood by a service client 1315 which then forwards the query to a database service provider 1316 that uses a query/parser mechanism 1317 of a database 1318 to perform operations 1317a, either reading, setting or creating appropriate database fields or objects 1320 in an appropriate table 1319 in the correct database 1318. The database system query/parser mechanism 1317 returns results of the request via the service provider interface 1316 to the service client 1315 in the DAL 1325. The DAL Query/Parser mechanism 1314 translates this response into a response 1314a readable by a data filter 1323 in the CDAL 1313. The data filter 1323 reduces the response data to a set that meets the criteria in the data request 1309a if the data has not been previously filtered to these criteria by originating database server 1322 in its query/parser mechanism 1317.
In one embodiment, the data filter 1323 abstracts the data filtering mechanisms commonly seen in relational databases such that equivalent common filtering is performed for all data sources whether they support filtering mechanisms or not. The filtered response 1323a is returned to the data service element 1310 in a manner that is consistent for all data sources.
Thus, the data service element 1310 can effectuate operations on a data source. These operations include:
1. Retrieving data objects from within the data source.
2. Updating or modifying data objects that exist within the data source, including:
3. Retrieving, modifying or deleting a group of objects based on queries that return filtered responses. Queries can be based on, but not be limited to:
The combination of unanimous data source abstraction, unanimous data access abstraction and unanimous filtering allows any data source that can be supported by a DAL to be accessed in a way that might not otherwise be possible.
Flow Maps Other than Call Flow Maps
Flow maps that are call flow maps are characterized in that typically the interactive service created communicates with a human end user as the entity, and the communication is via an interactive voice response (IVR) system with audio telephony as the media and signaling channels. However, flow map building can also be used to create other types of interactive services where communication may or may not be with a human, where the interactive services may or may not be components in an IVR system, where the media and signaling channels may or may not be audio telephony.
Another special type of flow map is a database operation flow map. For this type of flow map, the primary function of the created service is to effectuate one or more database operations.
In one embodiment, a domain expert (usually an administrator) will define specific data sources that can be accessed by a particular service agent. The administrator's definition can include database specifics such as database schema, table and field information as well as authentication and security information. Software facilitating this process is disclosed in a U.S. patent application entitled DATA SOURCE ACCESS EDITOR AND NETWORK DATA MANAGEMENT METHOD being concurrently filed on the same day, which application is incorporated by reference herein in its entirety.
Glossary of Acronyms Used
The embodiments of the invention described above are intended to be exemplary only. The scope of the invention is therefore intended to be limited solely by the scope of the appended claims.
This is a continuation-in-part of U.S. patent application Ser. No. 09/991,794 entitled COMMUNICATION SYSTEM WITH PERSONALIZED CALL HANDLING filed Nov. 26, 2001, the entire contents of which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
Parent | 09991794 | Nov 2001 | US |
Child | 11070119 | Mar 2005 | US |