Patent Publication Number: US-7908261-B2

Title: Method and apparatus for context based querying

Description:
RELATED APPLICATIONS 
     This is a continuation of prior U.S. patent application Ser. No. 10/084,390, filed Feb. 27, 2002, now U.S. Pat. No. 6,976,017, titled “METHOD AND APPARATUS FOR CONTEXT BASED QUERYING.” Applicant claims the right to priority under 35 U.S.C. § 119(e) based on Provisional Patent Application No. 60/272,122, entitled “VOICE MAIL INTEGRATION WITH INSTANT MESSENGER,” filed Feb. 27, 2001; Provisional Patent Application No. 60/272,167, entitled “DEVICE INDEPENDENT CALLER ID,” filed Feb. 27, 2001; Provisional Patent Application No. 60/275,667, entitled “CALENDAR CALLING AGENT,” filed Mar. 13, 2001; Provisional Patent Application No. 60/275,719, entitled “CALENDAR CALLING AGENT,” filed Mar. 13, 2001; Provisional Patent Application No. 60/275,020, entitled “METHOD AND APPARATUS FOR INTEGRATED BILLING VIA PDA,” filed Mar. 13, 2001; Provisional Patent Application No. 60/275,031, entitled “METHOD AND APPARATUS FOR UNIFIED COMMUNICATIONS MANAGER VIA INSTANT MESSAGING,” filed Mar. 13, 2001; and Provisional Patent Application No. 60/276,505, entitled “METHOD AND APPARATUS FOR CONTEXT BASED QUERYING,” filed Mar. 19, 2001, and all of which are expressly incorporated herein by reference in their entirety. 
     The present application also relates to U.S. patent application Ser. No. 10/083,792 entitled “VOICE MAIL INTEGRATION WITH INSTANT MESSENGER,” filed Feb. 27, 2002; U.S. patent application Ser. No. 10/083,884, entitled “DEVICE INDEPENDENT CALLER ID,” filed Feb. 27, 2002; U.S. patent application Ser. No. 10/083,822, entitled “METHOD AND APPARATUS FOR A UNIFIED COMMUNICATION MANAGEMENT VIA INSTANT MESSAGING,” filed Feb. 27, 2002; U.S. patent application Ser. No. 10/083,793, entitled “METHOD AND APPARATUS FOR CALENDARED COMMUNICATIONS FLOW CONTROL,” filed Feb. 27, 2002; U.S. patent application Ser. No. 10/084,121, entitled “CALENDAR-BASED CALLING AGENTS,” filed Feb. 27, 2002; U.S. patent application Ser. No. 10/083,798, entitled “METHOD AND APPARATUS FOR INTEGRATED BILLING VIA PDA,” filed Feb. 27, 2002; and U.S. patent application Ser. No. 10/084,002, entitled “METHOD AND APPARATUS FOR DIAL STREAM ANALYSIS,” filed Feb. 27, 2002, and all of which are expressly incorporated herein by reference in their entirety. 
    
    
     DESCRIPTION OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates generally to context based querying and, more particularity, to methods and apparatus for querying a database to determine desired contact information, e.g., a phone number, based on the context of the query. 
     2. Background of the Invention 
     Many users and businesses rely upon directory services to determine contact information such as phone numbers. For example, a user may call a directory services number, e.g., “411”, to determine a phone number of a particular person or business. For example, the user may provide a name of a person or entity, city, and state for that person or entity to obtain the desired phone number. 
     Unfortunately, using such search inputs based on name, city, and state requires a large field of search in order to determine the desired phone number. In addition, when using such a large field of search, numerous matches for the query may result. This can be problematic if multiple phone numbers are provided having the same name, which makes it difficult to determine the phone number to use. 
     Moreover, some phone numbers are kept private and are not available for searching. Thus, in these instances, a user may not be able to search private phone numbers using a directory service. 
     SUMMARY OF THE INVENTION 
     In accordance with the principles of the present invention, a method for context-based retrieval is provided. The method comprises: storing information associated with subscribers and usable to determine contexts associated with an information request; storing contact information; receiving from a requester the information request including identifying information associated with the requester; comparing the requester identifying information to determine whether the requester is one of the subscribers for which information has been stored; determining a context for the request when it is determined that the requester is one of the subscribers for which information has been stored; and providing the requester with a response to the information request selected from the stored contact information based on a condition associated with the determined context for the request. 
     In accordance with another embodiment consistent with the principles of the present invention a method for performing a context based query to find information in a directory for a destination is provided. The method comprises: receiving information identifying a user; receiving a query request for to find information for the destination from the user; determining a context for the query request; obtaining information in the directory related to the destination based on the context of the query request; and providing the obtained information regarding the destination to the user. 
     In accordance with another embodiment consistent with the principles of the present invention, an apparatus for context-based retrieval comprises: a first storage system for storing information associated with subscribers and usable to determine contexts associated with an information request; a second storage system for storing contact information; a receiver for receiving from a requester the information request including identifying information associated with the requester; a processor for comparing the requester identifying information to determine whether the requester is one of the subscribers for which information has been stored and to determine a context for the request when it is determined that the requester is one of the subscribers for which information has been stored; and a transmitter for providing the requester with a response to the information request selected from the stored contact information, based on a condition associated with the determined context for the request. 
     In accordance with another embodiment consistent with the principles of the present invention, a system for context-based retrieval comprises: means for storing information associated with subscribers and usable to determine contexts associated with an information request; means for storing contact information; means for receiving from a requester the information request including identifying information associated with the requester; means for comparing the requester identifying information to determine whether the requester is one of the subscribers for which information has been stored; means for determining a context for the request when it is determined that the requester is one of the subscribers for which information has been stored; and means for providing the requester with a response to the information request selected from the stored contact information, based on a condition associated with the determined context for the request. 
     In accordance with another embodiment consistent with the principles of the present invention, a computer readable medium capable of configuring a device to perform a method for context-based retrieval is provided. The method comprises: storing information associated with subscribers and usable to determine contexts associated with an information request; storing contact information; receiving from a requester the information request including identifying information associated with the requester; comparing the requester identifying information to determine whether the requester is one of the subscribers for which information has been stored; determining a context for the request when it is determined that the requester is one of the subscribers for which information has been stored; and providing the requester with a response to the information request selected from the stored contact information, based on a condition associated with the determined context for the request. 
     It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram of a data processing and telecommunications environment, in accordance with methods and apparatus consistent with the principles of the present invention; 
         FIG. 2  is a block diagram of a data terminal, in accordance with methods and apparatus consistent with the principles of the present invention; 
         FIGS. 3   a - 3   m  are exemplary screen shots in accordance with methods and apparatus consistent with the principles of the present invention; 
         FIG. 4  is a block diagram of a service center, in accordance with methods and apparatus consistent with the principles of the present invention; 
         FIG. 5  is an exemplary record table used for a context based query, in accordance with methods and apparatus consistent with the principles of the present invention; 
         FIG. 6  is a block diagram of a voice network, in accordance with methods and apparatus consistent with the principles of the present invention; and 
         FIG. 7  is a flow diagram of performing a context based query, in accordance with methods and apparatus consistent with the principles of the present invention. 
     
    
    
     DETAILED DESCRIPTION 
     In accordance with the principles of the present invention, methods and apparatus for querying a database to determine desired contact information, e.g., a phone number, based on the context of the query are provided. By using the context of the query, a directory system can look at patterns of user action and requests and pre-provided user information. Also, by using context-based querying, the field of search for the query may be reduced significantly and, thus, allow users to obtain desired information more quickly and efficiently. Moreover, based on user registration, private phone numbers can be quickly provided when the user has been authenticated and approved for disclosure of private phone numbers. In particular, when processing a query for a phone number, methods and apparatus consistent with the present invention evaluate the context of the query in addition to the query itself to obtain results for to the user. 
     Reference will now be made in detail to exemplary embodiments of the present invention, examples of which are illustrated in the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts. 
       FIG. 1  is a block diagram of a data processing and telecommunications environment, in accordance with methods and apparatus consistent with the principles of the present invention. The data processing and telecommunications environment  100  may include a data network  102 , a voice network  104 , a service center  106 , and a service center database  108 . As shown, a user  110  may use a data terminal  112  to interface data network  102 . In addition, user  110  may use phones  114 ,  116 , and  118  to interface with voice network  104 . For example, calling party  120  may use phone  122  to call user  110  at any one of phones  114 ,  116 , and  118 . 
     Data network  102  provides communications between the various entities depicted in environment  100  of  FIG. 1 , such as data terminal  112  and service center  106 . Data network  102  may be a shared, public, or private network and encompass a wide area or local area. For example, data network  102  may be implemented on a network, such as the Internet. 
     Voice network  104  provides telephony services, for example, to allow calling party  120  to place a telephone call to user  110 . For example, voice network  104  may be implemented using a network, such as the Public Switched Telephone Network (“PSTN”). Alternatively, voice network  104  may be implemented using voice-over Internet Protocol (“VoIP”) technology. In addition, voice network  104  may be implemented using both the PSTN and VoIP technology consistent with the principles of the present invention. Voice network  104  is described in further detail with reference to  FIG. 6 . 
     Service center  106  provides a platform for managing communications over data network  102  and voice network  104 . In addition, service center  106  provides gateway functions, such as code and protocol conversions, to transfer communications between data network  102  and voice network  104 . Service center  106  may be implemented using a combination of hardware and software. For example, service center  106  may be implemented using a plurality of a general purpose computers or servers coupled by a network (not shown). Although service center  106  is shown with direct connections to data network  102  and voice network  104 , any number and type of network elements may be interposed between service center  106 , data network  102 , and voice network  104 . Service center  106  is described in further detail with reference to  FIG. 4 . 
     Service center database  108  contains information regarding user  110 . For example, service center database  108  may contain information including, an identifier for user  110 , a password, one or more email addresses for user  110 , one or more instant messaging identifiers for user  110 , and one or more telephone numbers, such as for phones  114 ,  116 , and  118 . Additionally, service center database  108  may contain configuration information that indicate rules for how and when communications are forwarded, such as telephone calls over voice network  104 . Additionally, service center database  108  may include a user profile database, a directory database, or a link to a directory service database. Service center database  108  may be implemented as an Oracle™ database using a combination of known hardware and software, such as Proliant™ servers and EMC storage devices. 
     Data terminal  112  provides user  110  an interface to data network  102 . For example, data terminal  112  may be implemented using any device capable of accessing the Internet, such as a general purpose computer or personal computer equipped with a modem. Data terminal  112  may also be implemented in other devices, such as the Blackberry™, and Ergo Audrey™. Furthermore, data terminal  112  may be implemented in wireless devices, such as pagers, mobile phones (with data access functions), and Personal Digital Assistants (“PDA”) with network connections. 
     Data terminal  112  also allows user  110  to communicate with service center  106 . For example, user  110  may use instant messaging (“IM”) to communicate with service center  106 . IM is a communications service implemented over the Transmission Control Protocol and Internet Protocol (“TCP/IP”) suite to create a private communication channel. Although there is no accepted universal IM standard, an appropriate IM model may be found in RFC 2778, M. Day et al., The Internet Society (2000), titled “A Model for Presence and Instant Messaging,” which describes a model for providing instant messaging services. There are several known IM systems including America OnLine Instant Messenger (“AIM”) and Microsoft Network Messenger Service (“MSNMS”). In addition to IM services, data terminal  112  may use other aspects of TCP/IP including the hypertext transfer protocol (“HTTP”); the user datagram protocol (“UDP”); the file transfer protocol (“FTP”); the hypertext markup language (“HTML”); and the extensible markup language (“XML”). 
     Data terminal  112  may communicate directly with service center  106 . For example, a client application may be installed on data terminal  112 , which directly communicates with service center  106 . Alternatively, data terminal  112  may communicate with service center  106  via proxy  124 . Data terminal  112  is described in further detail with reference to  FIG. 2 . 
     Proxy  124  provides an intermediate communications service for data terminal  112  and service center  106 . Proxy  124  may act on behalf of user  110  to interface service center  106  and provides functions, such as authentication services, and protocol translation services. For example, user  110  may be a MSNMS subscriber and proxy  124  may be a MSNMS server. User  110  may then use MSNMS IM services to indirectly interface service center  106 . As another example, proxy  124  may be a web site. User  110  may provide information, such as information for call forwarding patterns, to proxy  124  via web pages and secured using secured sockets layer (“SSL”). Proxy  124  may then establish an SSL session with service  106  and provide the information from user  110 . 
     Phones  114 ,  116 ,  118 , and  122  interface voice network  104 . Phones  114 ,  116 ,  118 , and  122  may be implemented using known devices, including wireline phones and mobile phones, such as wireless phones. Although phones  114 ,  116 ,  118 , and  122  are shown directly connected to voice network  104 , any number of intervening elements, such as a private branch exchange (“PBX”), may be interposed between phones  114 ,  116 ,  118 , and  122  and voice network  104 . 
       FIG. 2  is a block diagram of a data terminal, in accordance with methods and apparatus consistent with the principles of the present invention. As shown, data terminal  112  includes a central processing unit (CPU)  200 , a memory  202 , a storage module  204 , a network interface  206 , an input interface  208 , an output interface  210 , an input device  212 , and an output device  214 . 
     CPU  200  provides control and processing functions for data terminal  112 . Although  FIG. 2  illustrates a single CPU, data terminal  112  may include multiple CPUs. CPU  200  may also include, for example, one or more of the following: a co-processor, memory, registers, and other processing devices and systems as appropriate. For example, CPU  200  may be implemented using a Pentium™ processor provided from Intel Corporation. 
     Memory  202  provides a primary memory for CPU  200 , such as for program code. Memory  202  may be embodied with a variety of components of subsystems, including, a random access memory (“RAM”), and a read-only memory (“ROM”). For example, when data terminal  112  executes an application installed in storage module  204 , CPU  200  may download at least a portion of the program code from storage module  204  into memory  202 . As CPU  200  executes the program code, CPU  200  may also retrieve additional portions of program code from storage module  204 . 
     Storage module  204  provides mass storage for data terminal  112 . Storage module  204  may be implemented with a variety of components or subsystems including, for example, a hard drive, an optical drive, a general-purpose storage device, a removable storage device, and/or other devices capable of storing information. Further, although storage module  204  is shown within data terminal  112 , storage module  204  may be implemented external to data terminal  112 . 
     Storage module  204  includes program code and information for data terminal  112  to communicate with service center  106 . Storage module  204  includes program code for a calendar application  220 , such as Group Wise provided by Novell Corporation, or Outlook provided by Microsoft Corporation; a client application  218 , such as a MSNMS client, or AIM client; and an Operating System (OS)  216 , such as the Windows Operation System provided by Microsoft Corporation. In addition, storage module  204  may include other program code and information (not shown), such as program code for TCP/IP communications; kernel and device drivers; configuration information, such as a Dynamic Host Configuration Protocol (DHCP) configuration; a web browser, such as Internet Explorer provided by Microsoft Corporation, or Netscape Navigator provided by Netscape Corporation; and any other software that may be installed on data terminal  112 . 
     Network interface  206  provides a communications interface between data terminal  112  and data network  102 . Network interface  206  may receive and transmit communications for data terminal  112 . For example, network interface  206  may be a modem, or a local area network (“LAN”) port. 
     Input interface  208  receives input from user  110  via input device  212  and provides the input to CPU  200 . Input device  212  may include, for example, a keyboard, a microphone, and a mouse. Other types of input devices may also be implemented consistent with the principles of the present invention. 
     Output interface  210  provides information to user  110  via output device  214 . Output device  214  may include, for example, a display, a printer, and a speaker. Other types of output devices may also be implemented consistent with the principles of the present invention. 
       FIGS. 3   a - 3   m  illustrate exemplary screen shots of user interfaces to implement voice main integration with instant messenger. As shown in  FIG. 3   a , the screen shot provides a current location portion  300  for indicating that communications should be directed to the “AT HOME” location. Current location  300  may also indicate other locations, such as, for example, “AT WORK, “IN CAR”, and “ON TRAVEL.” Such locations can be based on predetermined choices or user configurable choices. The screen shot also provides a new message portion  302  that lists the number and type of new messages. In particular, new message portion  302  shows that there is “1 New EMAIL”, “2 NEW VOICE MAILS”, “2 NEW NOTIFICATIONS”, and “3 NEW CALLS RECEIVED”. New message portion  302  can also provide the last phone numbers dialed and the date they were dialed. 
     The screen shot also provides a search portion  304  that allows a user to search for contact information regarding a particular person. For example, search portion  304  provides “FIRST NAME”, “LAST NAME”, “CITY”, and “STATE” search inputs to find contact information of a particular person. The screen shot also provides a tools portion  306  that gives a user options to modify various aspects of the communications service. These options may include “REACH ME”, “ACCOUNT MANAGEMENT”, and “PROFILE” options. The “REACH ME” option allows a user to change where a user is to be contacted shown in the current location portion  300 . The “ACCOUNT MANAGEMENT” option allows a user to modify information such as billing information associated with a called party. The “PROFILE” option allows a user to modify how communications are forwarded. 
     As shown in  FIG. 3   b , the screen shot shows a user interface for a device manager. The screen shot shows a device manager portion  310  that allows a user to view and to change phone number settings. For example, the user can change at “WORK” and “AT HOME” phone number settings. Device manage portion  310  also provides a “CURRENT FEATURES” option that lists features being used. Such features include “CALL FORWARDING”, “69”, and “CALL WAITING”. The user also has the option to “ADD FEATURES” or “ADD NUMBERS”. The screen shot also provides a other devices portion  312  that allows a user to manage devices which are not associated with a particular location. Other devices portion  310  lists “CELL PHONE”, “PAGER”, and “HANDHELD” devices as other devices in which a user can manage. For each device, a user can view the number for the other device and associated “CURRENT FEATURES” for the other device. Other devices portion  310  also provides a “SYNCHRONIZE” option and “ADD DEVICE” option for the user. 
     As shown in  FIG. 3   c , the screen shot shows a user interface for an address book. The screen shot shows an address list portion  315  that lists contact information for the user. For example, the contact information may include “NAME”, “ADDRESS”, “EMAIL”, and “INSTANT MESSENGER” information. The screen shot also shows a record information portion  317  that displays a specific record for a contact. The user has the option to “UPDATE” the record. The screen shows also provides a search window to search for contact information and a calendar. 
     As shown in  FIG. 3   d , the screen shot shows the user interface of  FIG. 3   c  with a pull-down menu  320  that provides a number of options for a user to contact a selected person consistent with the present invention. For example, the user can contact the selected person using such options as “SEND PAGE”, “CALL”, “EMAIL”, and “INSTANT MESSAGE”. Pull-down menu  320  also provides a “REMOVE” and “UPDATE” option to modify contact information in the address book. 
     As shown in  FIG. 3   e , the screen shot shows the user interface of  FIG. 3   c  with a pop-up window  325  that provides a number of inputs to modify contact information for a person in the address book. Pop-up window  325  is shown to update a record for “TOM SERVINI” using, e.g., “NAME”, “EMAIL”, and “PHONE NUMBER” inputs. Pop-up window  325  may also provide a “COMMENTS” window for the user to input a comment. 
     As shown in  FIG. 3   f , the screen shot shows a user interface for a message center panel having a summary portion  330  that lists messages received in a “RECEIVED:” column, the subject of the received messages in a “SUBJECT:” column, and the name of the persons who sent the messages in a “FROM:” column. Summary portion  330  may also provide other types of information such as the date/time the message was received, the data size of the message, or an attachment indicator. Additionally, summary portion  330  may provide a summary of recent e-mails or instant messages received by the user. Summary portion  330  also provides a number of options to process the messages. For example, the user may select a “PRINT MESSAGE”, “FORWARD”, “REPLY”, “REPLY ALL”, or “NEW MESSAGE” option for the listed messages in summary portion  330 . The screen shot also shows a detail view portion  332  that provides the details of a selected message. For example, the details of an email message from “KEVIN.TROTTIER” are shown. Detail view portion  332  also provides a “REPLY” option to reply to the viewed message. 
     As shown in  FIG. 3   g , the screen shot shows a user interface for a message center panel having a summary portion  340 , which is similar to summary portion  330  of  FIG. 3   f . Summary portion  340  provides summary information applicable to voice mails in a “NUMBER:”, “FROM:” and “RECEIVED:” column. The screen shot also shows a detail portion  342  that allows a user to playback the voice message. Detail portion  342  also allows the user to “DELETE” or “SAVE” the voice message. 
       FIG. 3   h  shows a screen shot of a message center panel having a message summary list portion  350  that lists a summary of messages received. The screen shot also shows a message detail portion  352  that displays detail of a message.  FIG. 3   i  shows a screen shot of a user interface having a device summary portion  355  that lists the devices in use by the user and a device detail portion  357  that allows the user to configure a particular device. For example, the user may configure the number of times to ring the “HOME  1 ” or “CELL PHONE” device. 
       FIG. 3   j  shows a screen shot of the user interface of  FIG. 3   i  having a pop-up window  360  for adding a device. The screen shot also shows a detail portion  362 , which is similar to detail portion  357  of  FIG. 3   i .  FIG. 3   k  shows a screen shot of the user interface of  FIG. 3   i  having a pop-window  370  that provides an “UPDATE RECORD” option for a user to modify the sequence of devices being called. 
       FIG. 3   l  shows a screen shot of a user interface for account management having an overview portion  380  allow a user access to summary information regarding a user&#39;s account. For example, overview portion  380  a user to access “PREVIOUS BALANCE”, “CURRENT CHARGES”, “BASIC CHARGES”, “LONG DISTANCE CHARGES”, and “WIRELESS CHARGES” summary information. The screen shot also shows a message portion  382  displays messages regarding the user&#39;s account. For example, a message such as “Your bill is past due” can be displayed in message portion  382 . 
       FIG. 3   m  shows a screen shot of a user interface for profile management having a customer profile portion  390 , which displays a customer&#39;s profile. The customer&#39;s profile may include information such as “Customer Name:”, “Account Number:”, “Address” and “Phone:” information. The screen shot also shows a personal profile portion  392  that displays a user&#39;s personal profile. The personal profile may include “Name:”, “Address”, etc. information. The screen shot also shows a business profile portion  394  that displays a business profile. The business profile may include information such as “Company”, “Job Title:” etc. information. These profiles can be kept confidential and updated to include any other type of profile information. 
       FIG. 4  is a block diagram of a service center, in accordance with methods and apparatus consistent with the principles of the present invention. As shown, service center  106  includes firewalls  400  and  402 , a data interface server  404 , a management server  406 , a voice interface server  408 , a calendar server  410 , and query server  450 . 
     Firewalls  400  and  402  provide security services for communications between service center  106  and data network  102 , and between service center  106  and voice network  104 , respectively. For example, firewalls  400  and  402  may restrict communications between data terminal  112  and one or more servers within service center  106 . Any security policy may be implemented in firewalls  400  and  402  consistent with the principles of the present invention. Firewalls  400  and  402  may be implemented using a combination of known hardware and software, such as the Raptor Firewall provided by the Axent Corporation. Furthermore, firewalls  400  and  402  may be implemented as separate machines within service center  106 , or implemented on one or more machines external to service center  106 . 
     Data interface server  404  provides interface services between service center  106  and data terminal  112 . For example, data interface server  404  may exchange TCP/IP communications, such as IM communications or XML information which include call forwarding patterns from user  110 . Data interface server  404  may also interface proxy  124  to indirectly exchange communications with data terminal  112 . 
     Management server  406  controls operation of service center  106  and provides access services to service center database  108 . For example, management server  406  may store information, such as call forwarding patterns, received from data interface server  404  into service center database  108 . Management server  406  may also service queries to service center database  108 , for example, from data interface server  404  or voice interface server  408 . 
     Voice interface server  408  provides interface services between service center  106  and voice network  104 . For example, voice interface server  408  may exchange information, such as call forwarding patterns, between service center database  108  and voice network  104 . Voice interface server  408  may provide the information to voice network  104  using one or more protocols. For example, voice interface server  408  may use TCP/IP, or the Signaling System  7  (“SS 7 ”) protocol. 
     SS 7  is a telecommunications protocol defined by the International Telecommunication Union (“ITU”). SS 7  is an “out-of-band” signaling protocol using a system of nodes called Service Switching Points (“SSP”), Signal Transfer Points (“STP”), and Service Control Points (“SCP”). “Out-of-band signaling” is signaling that does not take place over the same path between switching elements as the connection, and instead uses separate digital channels between SS 7  nodes. SS 7  allows voice network  104  to provide enhanced functions, such as call forwarding; caller-ID; three-way calling; wireless services such as roaming and mobile subscriber authentication; local number portability; and toll-free/toll services. 
     Calendar server  410  provides services to calendar application  220  on data terminal  112 . For example, calendar server  410  may provide email services, directory services, and calendar information, such as schedule information, to data terminal  112 . Calendar server  410  may operate in conjunction with data interface server  404  to exchange, for example, call forwarding patterns with data terminal  112 . 
     Query server  450  provides context based querying services over data network  102  or voice network  104  by providing access to service center database  108 . Directory database provides information related to contact information including, phone numbers, email addresses, etc., similar to information included in a phone book. For example, in one embodiment query server  450  and service center database  108  provide an on-line query tool for the Verizon Superpages SM  query tool accessible at a website, e.g., www.verizon.com. Query server  450  may be implemented as a web server using known hardware and software. Directory database may be implemented, e.g., as an Oracle™ database. Although query server  450  is shown with a direct connection to service center database  108 , any number of intervening devices, such as, hubs, routers, servers, firewalls, etc., may also be interposed between query server  450  and service center database  108 . 
     Query server  450  may also include a context processor  455  to determine the context of each query. A context of a query may be determined based upon the identity of the user making the query and the circumstances surrounding the query. For example, the context may be determined based upon information contained in service center database  108  such as: a user&#39;s home address; a user&#39;s work address; a user&#39;s home phone number; a user&#39;s employer; a history of recent queries by a user; a history of calls made by a user; or a history of calls received by a user. The context may also be determined based upon information provided from SCP  600 . Once determined, the context is used by query server  450  in addition to the search criteria of the query to narrow the domain of search in service center database  108 . For example, a query with search criteria requesting the phone number of “John Smith” may be limited to a context of only those Smiths in Boston based upon the area code of a user&#39;s home phone number. As another example, Caller-ID information received from SCP  600  may indicate that user  110  has received numerous calls in the Boston area and, thus, context processor  455  may determine that user  110  is located in Boston and use the Boston area as the context. 
     When submitting a query, query server  450  may also use various authentication schemes, e.g., a user ID and password, to prevent an unauthorized person from impersonating user  110 . Other security measures, such as encryption, are also consistent with the principles of the present invention. Once authenticated, context processor  455  may then limit the domain of search for a query and/or allow access to private information to which user  110  is authorized to access. For example, based on the login and password, context processor  455  may allow user  110  to query for private home phone numbers, e.g., of a friend, in a particular city. 
     Context processor  455  may continuously maintain a context for user  110  by dynamically monitoring the behavior of user  110 . For example, a subsequent query from user  110  requesting the phone number for a Joe&#39;s Pizza may be limited to those restaurants in Boston based upon the recent history of previous queries by user  110 . The context of a query may be dynamically determined based upon data provided in call signaling, such as, automatic number identification (ANI) information or signaling system  7  (SS 7 ) messages, e.g., from SCP  600 . However, any of a wide variety of algorithms and information for determining the context of a query is in accordance with the principles of the present invention. 
     Context processor  455  may be implemented as hardware or software within query server  450 . For example, in one embodiment context processor  455  is implemented as a daemon process executed as part of the software for query server  450 . 
     User  110  may submit a query to query server  450  via either voice network  104  or data network  102 . For example, user  110  may use phone  114  to call a directory assistance service which may then establish a session with query server  450  via service center  106  to process the query. 
     In an alternative, user  110  may use a user terminal  112  to access query server  450  over data network  102 . User terminal  112  may be implemented using internet appliances such as the Blackberry™, and Ergo Audrey™. Similarly, user terminal  112  may be implemented using pagers, wireless phones (with data access functions), web browsers, Personal Digital Assistants (“PDA”) with network connections, and any device capable of browsing the Internet. User terminal  112  may also include an application, such as, a web browser, general purpose, or custom software programs. User terminal  112  may communicate with query server  450  using known communications protocols over data network  102 . For example, query server  450  may use XML to communicate with user terminal  112 . 
     Although  FIG. 4  shows separate servers within service center  106 , service center  106  may be implemented using any combination of hardware and software. For example, service center  106  may implement data interface server  404 , management server  406 , voice interface server  408 , calendar server  410 , and query server  450  as software applications installed on a single machine. In addition, service center  106  may access one or more servers remotely across a network. 
       FIG. 5  illustrates a record table  500  containing information stored in a service center database  108  used by the query server  450  consistent with methods and apparatus consistent with the present invention. Table  500  includes a User ID column  502 , a current location column  504 , a recent incoming calls column  506 , a recent outgoing calls column  508 , and a recent query results column  510 . 
     User ID column  502  identifies one or more users associated with the service center  106 . For example, a user ID may be used to determine an account for phone  114  from which a request is being made. In addition, user ID column  502  allows query server  450  to correlate multiple recent events with a particular user. 
     Current location column  504  identifies the location from which the user is making a request. This location can include user terminal  112 , home phone  114 , office phone  116  or mobile phone  118 . 
     Recent incoming calls column  506  indicates the phone number from which a user has received calls. Recent outgoing calls column  508  indicates the phone numbers to which the user has made calls. Recent query results column  510  indicates the results of recent queries made by the user. These recent calls and results can be used to analyze calling patterns to provide more targeted results. 
       FIG. 6  is a block diagram of a voice network, in accordance with methods and apparatus consistent with the principles of the present invention. As shown, voice network  104  includes a service control point (“SCP”)  600 , service transfer points (“STP”)  602  and  604 , service switching points (“SSP”)  606 ,  608 ,  610 , and  612 , and a configuration database  614 . 
     Voice network  104  may be implemented using the PSTN and SS 7  as a signaling protocol. As noted above, the SS 7  protocols allows voice network  104  to provide features, such as call forwarding; caller-ID; three-way calling; wireless services such as roaming and mobile subscriber authentication; local number portability; and toll-free/toll services. The SS 7  protocol provides various types of messages to support the features of voice network  104 . For example, these SS 7  messages may include Transaction Capabilities Applications Part (“TCAP”) messages to support event “triggers,” and queries and responses between SCP  600  and SSPs  606 ,  608 ,  610 , and  612 . 
     SCP  600  provides interface services into configuration database  614  related to processing of calls within voice network  104 , and interface services between voice interface server  408 . SCP  600  provides translation and routing services of SS 7  messages to support the features of voice network  104 , such as call forwarding. In addition, SCP  600  may exchange information voice interface server  408  in service center  106  using TCP/IP or SS 7 . For example, SCP  600  may receive configuration information from voice interface terminal  408  which requests one or more call forwarding patterns in voice network  104 . SCP  600  may then configure the call forwarding patterns in voice network  104  using one or more SS 7  messages, such as TCAP messages, to set triggers in SSPs  606 ,  608 ,  610 , and  612 . 
     SCP  600  may be implemented using a combination of known hardware and software. Although SCP  600  is shown with a direct connection to service center  106 , any number of network elements including routers, switches, hubs, etc. may be used to connect SCP  600  and service center  106 . 
     STPs  602  and  604  relay SS 7  messages within voice network  104 . For example, STP  602  may route SS 7  messages between SSPs  606 ,  608 ,  610 , and  612 . STP  602  and  604  may be integrated as adjunct to an SSP, e.g., SSPs  606 ,  608 ,  610 , and  612 , or may be implemented as a separate machine. In addition, STP  602  and  604  may provide security functions, such as security checks on incoming/outgoing SS 7  messages. STP  602  may also provide other functions, such as acquisition and storage of traffic/usage statistics. STP  602  may be implemented using known hardware and software from manufacturers such as NORTEL.TM. and LUCENT Technologies.TM. 
     SSPs  606 ,  608 ,  610 , and  612  provide an interface between voice network  104  and phones  114 ,  116 ,  118 , and  122 , respectively, to setup, manage, and release telephone calls within voice network  104 . SSPs  606 ,  608 ,  610 , and  612  may be implemented as a voice switch, an SS 7  switch, or a computer connected to a switch. SSPs  606 ,  608 ,  610 , and  6104  exchange SS 7  signal units to support a telephone call between calling party  120  and user  110 . For example, SSPs  606 ,  608 ,  610 , and  612  may exchange SS 7  messages, such as TCAP messages, within message signal units (“MSU”) to control calls, perform database queries to configuration database  614 , and provide maintenance information. 
     Configuration database  614  comprises one or more known databases to support the features of voice network  104 . For example, configuration database  614  may include a call management service database; a line information database (LIDB); a business services database; a home location register; and a visitor location register. 
       FIG. 7  shows a flow diagram of performing a context based query, in accordance with methods and apparatus consistent with the principles of the present invention. User  110  initiates a query (step  700 ). To initiate a query, user  110  can send a request to query server  450  for the phone number of a desired call destination. This query may be initiated via the voice network or the data network. For example, user  110  can initiate the query by making a call to service center  106 . User  110  can provide identifying information and parameters for the query to service center  106 . Service center  106  then translates the user provided information, e.g., using voice recognition algorithms, and forwards the user&#39;s identifying information and query parameters to query server  450 . Alternatively, user  110  may provide identifying information and parameters of the query via user terminal  112  to data network  102 , such as accessing a website on the Internet, e.g., www.verizon.com. 
     The identifying information and the parameters of the query are forwarded to query server  450 , e.g., from service center  106  or user terminal  112  (step  702 ). The identifying information may include a variety of information. For example, the identifying information may include: a user&#39;s name; address; phone number; email address; or password. In addition, information from service center database  108  may also be included in the identifying information. 
     The identification information is authenticated (step  704 ). For example, query server  450  determines that user  110  is a registered user of the query service. This authentication may be based upon a password or personal identification number, or looking up the identification information in service center database  108 . If user  110  is not a registered user then query server  450  discards the request (step  716 ). 
     If user  110  is a registered user, then context processor  455  retrieves the profile of the user from service center database  108  (step  706 ). For example, the user&#39;s profile may indicate he/she resides in Boston, Mass. and often searches for phone numbers in Waltham, Mass. 
     Context processor  455  uses the profile information to determine the context of the query (step  708 ). The context of a query may be determined based upon the identity of the user making the query and the circumstances surrounding the query. For example, if the user&#39;s profile indicates he/she resides in Boston and often searches in Waltham, then the context may limit the query to Boston and Waltham. A query with search criteria requesting the phone number of a John Smith may be limited to only those Smiths in Boston based upon the context of a query from a person residing in Boston. As another example, a query requesting the phone number for a Joe&#39;s Pizza may be limited to those restaurants in Waltham based upon the recent history of other queries submitted by the user. 
     Query server  450  executes the query, where it searches, based on context, for a result to the query (step  710 ). Query server  450  determines if the query has been resolved (step  712 ). Resolution can be achieved by finding a relatively small number of matches for the query parameters and the context. These numbers may be configured by user  110  or may vary based upon information requested in the query. 
     If the query cannot be resolved, then user  110  may be redirected (step  718 ). Query server  450  may determine that the query cannot be resolved when the number of candidate results is greater than a threshold number or there a 0 candidate results found. The threshold number may be configured by user  110 , set according to a default by query server  450  (or by service center  106 ), or varied based upon the information requested in the query. For example, user  110  may be redirected to a calling center where an operator can request further information from user  110 . Alternatively, query server  450  may request additional information from user  110  in order to resolve the query. 
     If the query is resolved, then the result of the query, e.g., the phone number of a call destination, is provided to user  110  (step  714 ). In addition, query server  450  may provide several of the candidate results to provide user  110  more information regarding the query. Other known techniques for providing query results such as relevance ranking may also be used. Other known techniques for providing query results such as relevance ranking may also be used. The user may have the call automatically initiated to the call destination (step  718 ) or hang up and manually contact call destination directly. Query server  450  may also provide the result via data network  102 , such as using an E-mail, a web page, instant message, etc. Furthermore, query server  450  may determine that the result should only be conditionally provided to the user. For example, in the event the result of the query is a private listing such as an unlisted home phone number, or a person&#39;s direct extension at work, query server  450  may request additional authentication information from user  110  or refer to a list in service center database  108  that indicates user  110  is approved to receive the listing. If query server  450  approves user  110  to receive the result, then the result is provided to user  110 . If server query server  450  does not approve user  110 , then the session of user  110  may be redirected or dropped. 
     Although specific components of the present invention have been described, one skilled in the art will appreciate that the methods and apparatus consistent with the present invention may contain additional or different components. Other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims.