Methods and apparatus to provide contact management with directory assistance

Methods and an apparatus for providing contact management with directory assistance. An example method obtains a directory assistance service record associated with a user, wherein the directory assistance service record includes at least a first data object associated with a directory listing and a second data object associated with the user; queries a first directory with the first data object to obtain listing information associated with the directory listing; and stores the obtained listing information in a second directory as one or more contact records associated with the second data object.

TECHNICAL FIELD

This disclosure relates generally to contact management and, more particularly, to methods and apparatus for providing contact management with directory assistance.

BACKGROUND

When using communications systems, individual users are generally interconnected via user devices that are associated with a unique identifier to enable communication among multiple nodes within the communication systems. For example, in a telecommunication system, the identifier is commonly referred to as a “telephone number,” which is dialed or inputted with an originating user device to reach a user device (e.g., a telephone) at a particular network termination point associated with the identifier. Given the enormous number of user devices and users within communications systems, each user may desire to retain these identifiers in an accessible medium, such as an electronic address book. Electronic address books may be networked to allow accessibility from a plurality of user devices or transferred to store in local memory of a user device. Electronic address books are commonly formatted in a data structure relating one or more records with varying information, such as addresses, names, etc.

Directory assistance services are commonly used in communication systems to provide listing information to communication systems users. Generally, directory assistance services use a directory or a database containing names, addresses, and telephone numbers for respective users. For example, in the North American public switched telephone network, a user desiring particular listing information dials a directory assistance access code, for example “411,” and connects with a directory assistance service. The user generally provides listing information such as a name (e.g., business name, surname, etc.) and/or locality information (e.g., zip codes, state names, cities, etc.) associated with a desired listing record. If the directory assistance service matches the listing information to a particular listing record, a human operator or a recorded message file communicates additional listing information (e.g., a telephone number) associated with the particular listing record to the user. However, to use the requested telephone number in the future, the user must memorize the listing information, manually record the listing information, or call back to the directory assistance service.

After the directory assistance service communicates the additional listing information to the user, the directory assistance service creates a billing feed to charge a particular user for the service. This billing feed may include a phone number or any other unique account identifier for the user and the phone number provided for the matched listing. Generally, this billing feed is sent to a customer records information system (“CRIS”), which bills and records the directory service usage.

DETAILED DESCRIPTION

An example communication system100to provide directory assistance with contact management for users of the example system100is illustrated inFIG. 1. The example system100ofFIG. 1is useful to provide directory assistance with contact management among diverse user devices (e.g., analog phones, digital phones, voice-over-Internet-Protocol (“VoIP”) phones, cellular phones, personal computers, personal digital assistants (“PDAs”), MP3 players, set-top-boxes (“STBs”), etc.). Additionally, the example system100ofFIG. 1is useful to provide contact management among many users, each of whom may be associated with one or more user device(s).

The example communication system100is configured to provide contact management by storing listing information associated with the use of a directory assistance (“DA”) service to a network device (e.g., a database server, a file server, etc.) that can be accessed or transferred among a plurality of user devices. For example, a directory service provider may include an automated system or human operator that responds to a user who places a telephone call. The user may then request a telephone number by providing particular listing information (e.g., city name, state name, business name, surname, etc.) associated with the telephone number. The example automated system or human operator then queries one or more directories or databases to match the provided listing information with a telephone number. When a match is determined, the example automated system or human operator provides the requested telephone number with any other listing information to the user.

As described below, the listing information provided to the user (e.g., a telephone number) and other associated listing information (e.g., mailing address, city name, state, etc.) can be stored as a contact record and associated with the user in a network device (e.g., a database server, a file server, a network address book, etc.). In one example embodiment, the example communication system100determines additional listing information with an example reverse lookup function using one or more data objects (e.g., a telephone number) from a billing record generated from the usage of the directory assistance service. In an additional example embodiment, the example communication system100is configured to transfer this stored information from the network device to one or more user devices associated with a particular user on an aperiodic basis (e.g., based on event-based procedure(s), etc.) or a periodic basis (e.g., based on scheduled procedure(s), etc.).

Turning toFIG. 1, the example communication system100FIG. 1is shown as a simplified block diagram with components of hardwired and/or wireless communications networks102and103.FIG. 1also shows the interaction between user devices112,114,116, and118associated with a particular user110, an operator position130, a directory132, a directory assistance (“DA”) management system134, and a contact directory136. The example communication system100is illustratively shown with the network102configured as an example public switched telephone network, which communicatively couple the user110with the operator position130through user devices112and114, switches104and109, and communication links140,142, and144. As is well known to those of ordinary skill in the art, the example network102may be configured as any network that enables voice and/or data communication among user(s) and a directory assistance service, such as wireless mobile telephone networks, VoIP networks, etc.

The example communication system100is also shown with the network103, which may be implemented as one or more networks (e.g., local-area networks (“LANs”), wide-area networks (“WANs”), metropolitan-area networks, the Internet, digital subscriber line (“DSL”) networks, cable networks, power line networks, wireless communication networks, wireless mobile telephone networks, wireless fidelity (“Wi-Fi”) networks, and/or satellite networks). The network103is shown with data links158,156,154, and152, which communicatively couple the contact directory136, SSP104, and user devices116and118. The data links152-158may employ applications, protocols, networks, and/or hardware to communicatively couple each of the user devices112-118including, for example, hardwired or wireless communication schemes. For example, the user device116may be implemented with a personal computer or set-top-box that communicatively couples with the contact directory136and data link154via the Internet to exchange data using a common markup language, such as HyperText Markup Language (“HTML”), Extensible Markup Language (“XML”), etc. Additionally or alternatively, the user device118may be implemented with a mobile phone that communicatively couples with the contact directory136and data link154via a Wireless Application Protocol and a Wireless Markup Language.

As shown, each of the communication links140and142is coupled with a terminating user device112and114, which may include PDAs, cellular telephones, personal computers, television set-top-boxes, and telephone (e.g., an analog telephone, a digital telephone, a VoIP telephone), or any other user device that enables voice and/or data communication over the public switched telephone network102. Similarly, the additional network103is shown coupled with terminating devices116and118, which may include PDAs, cellular telephones, personal computers, television set-top-boxes, and telephone (e.g., an analog telephone, a digital telephone, a VoIP telephone), routers, switches, or any other device that enables voice and/or data communication over the network103.

In the example communication system100, each of the example user devices112-118has one or more unique device identifiers to distinguish the respective example user devices112-118from one another as well as from other user devices, thereby enabling communication between multiple nodes on the network. A device identifier may generally identify a network termination point that connects to one or more user devices (e.g., a telephone number may connect a number of telephones). The device identifier associated with a user device may be a unique alpha-numeric or numeric identifier (e.g., a telephone number, a byte address, an Internet Protocol (“IP”) Address, a Mobile Identification Number, etc.). For example, each of the user devices112and114coupled with the PSTN102may be assigned a ten digit number that is associated with a specific telephone line140and142shown inFIG. 1. To identify one or more user devices (e.g., the user devices112-118) with a particular user (e.g., the user110), the device identifiers may be associated with a single record in a data structure. As described below, the record may then be uniquely distinguished and associated with a particular user by a user identifier, such as a user name, a user number, and/or any other unique identifier. Also described below, one or more user devices and device identifiers may be associated with multiple users and, thus, multiple records in a data structure, such as a telephone service and telephone number may be shared with multiple users.

The PSTN102incorporates the advanced intelligent network (“AIN”). Some of the components of the advanced intelligent network are shown inFIG. 1to illustrate at least a part of the advanced intelligent network (“AIN”)102of a typical local exchange carrier. The advanced intelligent network (“AIN”) uses the signaling system 7 (“SS7”) network for signal or system control message transport. The components thereof are well known to those skilled in the art. Generally, a plurality of central offices is provided in a typical public switched telephone network102. As shown inFIG. 1, a central office may include an electronic switch104known to those skilled in the art as a service switching point (“SSP”). The number of SSP switches depends on the number of users to be served by the public switched telephone network. An SSP is the AIN component of a typical electronic central office switch used by a local exchange carrier. The terms “SSP” and “switch” are generally used interchangeably and are understood to refer to a telecommunications switch having AIN capability and which may be utilized for connecting communication links or trunk circuits146.

Much of the intelligence, and the basis for many of the enhanced features of the PSTN102, resides in the local service control point (“SCP”)108that is coupled to signal transfer point (“STP”)106and the SSP104via SS7 data links148and149. Among the functions performed by the service control points is maintenance of network databases used in providing enhanced services. Service control points, such as SCP108, normally implement high volume routing services, such as call forwarding, number translating, and routing. In most local exchange carrier networks, service control points are only used for database look up and routing services that take place prior to the logical completion of the call (i.e., the provision of a ringing signal to the called user and ring back to the calling user).

Directory assistance is a well-known service in public switched telephone network102, and is generally identified in North America with a telephone number, such as “411” or “555-1212.” Directory assistance as discussed herein may also be configured on the networks, as discussed above in connection with network103ofFIG. 1in the example communication system100ofFIG. 1.

To provide directory assistance services, the PSTN102ofFIG. 1includes a switch109that is coupled with an operator position130through the data link144. The switch109is shown as an example Traffic Operator Position System (“TOPS”) switch to provide call routing and switching along with directory assistance services. In the PSTN102, the user110may dial a particular telephone number on the user device112, which is routed via the SSP104and the TOPS switch109to communicatively couple the user110with hardware, software, and/or firmware used by a human operator at the operator position130. Similarly, the user110may be routed to a voice activated system (not shown) configured with hardware, software, and/or firmware to provide directory assistance via text-to-speech (“TTS”) or speech recognition systems. An example operator position130is discussed in detail below in connection withFIG. 2.

The example communication system100also includes directory server(s)132that can be queried to obtain listing information via the data links160and162, which communicatively couple the directory server(s)132with the operator position130and the DA management system162. The data links160and162may employ applications, protocols, networks, and/or hardware including, for example, hardwired or wireless Ethernet communication scheme, which is well known and, thus, is not described in greater detail herein. The directory server(s)132include one or more data structures including listing information such as telephone numbers, first and last names, business names, business descriptions, email addresses, mailing addresses, etc. The directory server(s)132may be implemented using, for example, a look-up table, a relational database, or any other suitable structure for storing data. Similarly, the directory server(s)132may comprise removable media disk drives, hard disk drives, network drives, and/or any other suitable storage devices. As discussed above, a human operator or voice activated system at the operator position130performs a query on the directory server(s)132, which may include matching particular listing information such as names (e.g., person and/or business names) and localities (e.g., cities, states, zip codes, etc.).

Also illustratively shown in the example communication system100is a directory assistance management system134that provides contact management for users of DA services (e.g., the example user110), administers billing for the usage of DA services, and/or supports any other service to monitor and manage the usage of DA services within the PSTN102ofFIG. 1. As discussed in detail below in connection withFIG. 3, the directory assistance management system134may include servers such as, for example, application servers, database servers, file servers, etc. Additionally, the directory assistance management system132may contain a variety of databases such as, for example, mainframe databases, client-server databases, and/or any other electronic store of data supported on any memory device (e.g., removable media disk drives, hard disk drives, network drives). The DA management system134is shown coupled with the TOPS switch109, the directory server(s)132, and the contact directory136via the data links162,164, and166. The data links162-166may employ applications, protocols, networks, and/or hardware including, for example, hardwired or wireless Ethernet communication scheme, which is well known and, thus, is not described in greater detail herein.

The example communication system100also includes a contact directory136, which is discussed in detail below in connection withFIG. 5. As discussed below, the contact directory136is configured such that the user110and the DA management system134can obtain existing contact information from and/or provide new contact information to the contact directory136. The contact directory136includes one or more data structures including contact records for a particular user, which may contain information such as telephone numbers, first and last names, business names, business descriptions, email addresses, mailing addresses, and/or navigational coordinates. Additionally, the contact directory136may contain other individually customizable fields that can be configured to store electronic information relating to a particular person and/or business. The contact directory136may be implemented using, for example, a look-up table, a relational database, or any other suitable structure for storing data. Similarly, the contact directory136may comprise removable media disk drives, hard disk drives, network drives, and/or any other suitable storage devices. As previously discussed, the contact directory136is coupled with the network103and the DA management system134via the data links158and166.

FIG. 2depicts an example operator position130ofFIG. 1that is configured to provide DA services in the example communication system100ofFIG. 1. More particularly, the example operator position130ofFIG. 2includes a network interface device202that may include hardware and/or software such as, for example, a data link layer of a wired Ethernet or any other suitable physical connection to communicatively couple the data links144and160; a calling line identifier200to determine a particular device identifier associated with the user devices112and114and/or the communication links140and142ofFIG. 1(e.g., a telephone number for the user devices112and communication link140ofFIG. 1); a DA processor206to generate a directory assistance service record that contains one or more data objects to register a DA service transaction (e.g., a telephone number of a user to be billed and a telephone number of a matched listing); and one or more input/output device(s)204to enable a human operator interaction with the operator position130ofFIG. 2(e.g., a keyboard, a mouse, a graphical monitor, a microphone, a speaker or headset, etc.). Also, the operator position130ofFIG. 2includes a system interface208that may employ common applications and/or hardware to communicatively couple the caller identifier200, network interface202, I/O devices204, and DA processor206. The operation of the example operator position130ofFIG. 2is discussed below in connection withFIG. 6.

FIG. 3depicts an example DA management system132ofFIG. 1configured to provide contact management for users of DA services (e.g., the example user110), administer billing for the usage of DA services, and/or support any other service to monitor and manage the usage of DA services within the PSTN102ofFIG. 1. The DA management system132ofFIG. 2includes a directory assistance service record (“DASR”) parser300that obtains a directory assistance service record from the TOPS switch106ofFIG. 1and replicates the data objects from the directory service record for processing in the DA management system132ofFIG. 2; a customer records information system (“CRIS”)302to administer the billing for DA service usage and any other billing services associated with the PSTN102ofFIG. 1; and a contact directory processor304provide one or more interface(s) to read data from the directory132ofFIG. 1and to read and write data to the contact directory166ofFIG. 1. The operation of the DA management system132ofFIG. 2is discussed below in connection withFIG. 6.

FIG. 4depicts an example directory data structure400that associates listing information in the example directory server(s)132ofFIG. 1. The example directory data structure400includes listing information fields402-414, which contain listing information to define the respective listing records420-424. In particular, the first name field402contains “JOHN,” the last name field404contains “DOE,” the mailing address field406contains “123 FIRST ST”, the city field408contains “FRANKLIN,” the state field410contains “TX,” the zip code field412contains “77856,” and the telephone number field414contains “979-555-1000” to define the listing record420. Additionally or alternatively, the listing information associated with a listing record in the example directory data structure400may include email addresses, business names, business descriptions, navigational coordinates, etc. (not shown). Also, persons of ordinary skill in the art will understand that such textual descriptions can alternatively or additionally be implemented by codes and/or other designations.

FIG. 5depicts an example contact directory data structure500that interrelates listing information to one or more contact records associated with a particular user of the example communication system100ofFIG. 1(e.g., example user110ofFIG. 1), which may be located in the example contact directory136ofFIG. 1. The example contact directory data structure500may be implemented as a network electronic address book, which can communicatively couple with one or more clients (e.g., the user devices112-118) to transfer or synchronize one or more contact records. The example contact directory data structure500contains a user table502to store data objects that define a particular user including a user name field510to uniquely identify the user, an account identifier field512to associate any number of accounts or device identifiers with the user, and a password field513to allow unique access to the contact directory136. Also, the example contact directory data structure500includes a contact table511to store data objects in the respective fields514-528, which associates listing information into a contact record that relates with a particular user defined in the user table502.

For example, the user table502contains an example record504associated with the example user110ofFIG. 1that includes “USER110” in the user name field510, “555-555-1000” (e.g., the phone number associated with the phone112) in the account identifier field512, and “USER110PASSWORD” in the password field513. The contact table511is shown with an example contact record506associated with the example user110ofFIG. 1that includes “USER110A” in the contact identifier field514, “JEAN” in the first name field516, “DOE” in the last name field518, “123 FOURTH ST” in the mailing address field520, “MADISON” in the city field522, “FL” in the state field524, “32340” in the zip code field526, and “850-555-1000” in the telephone number field528. Persons of ordinary skill in the art will understand that such textual descriptions can also be implemented by codes and/or other designations. The contact table511is also shown with an unpopulated contact record508, which is discussed in detail below. Additionally or alternatively, the listing information associated with a contact record in the example contact directory data structure500may include multiple telephone numbers, email addresses, business names, business descriptions, navigational coordinates, or other individually customizable fields (not shown). As explained below, a user (e.g., user110ofFIG. 1) associated with a particular contact record (e.g., the contact records506and508ofFIG. 5) can write additional information to the example contact directory data structure500, which may not be available as listing information (e.g., private contact information).

FIG. 6depicts an example sequence diagram illustrating the functionality of the communication system100ofFIG. 1providing directory assistance with contact management. The example system process ofFIG. 6begins with the user110ofFIG. 1dialing a particular number with the user device112ofFIG. 1to the SSP104ofFIG. 1(e.g., the user110ofFIG. 1dials “411” into telephone112ofFIG. 1) (step602). The SSP104ofFIG. 1then routes the communication of the user device112ofFIG. 1to the TOPS switch109ofFIG. 1(step604), which communicatively couples the user110ofFIG. 1with the example operator position130ofFIG. 1(step606). Once the example operator position130ofFIG. 1is communicatively coupled with the user110ofFIG. 1, the calling line identifier200ofFIG. 2identifies the device identifier associated with the user device112ofFIG. 1or other such unique identifiers associated with the user110ofFIG. 1. The example user110ofFIG. 1communicates to a human operator at the operator position130ofFIG. 1particular listing information, such as locality information (e.g., a city name, a state name, a zip code, etc.) and/or other such listing information (e.g., a business name, a surname, a first and last name, etc.). For example, the user110ofFIG. 1may communicate to the operator a last name of “DOE” and a zip code of “04441.” The operator may then enter the provided listing information to one or more string objects (i.e., one or more particular sequences of symbols, digits, and/or other characters) using one or more of the I/O device(s)204ofFIG. 2(e.g., a mouse, a keyboard, a microphone, etc.) into the DA processor206ofFIG. 2. The DA processor206ofFIG. 2may provide respective fields for each string to relate to a particular listing field in the directory server(s)132ofFIG. 1(e.g., a one-to-one correlation with the first name field402, the last name field, the mailing address field406, the city field408, the state field410, the zip code field412, and the telephone number field414ofFIG. 4).

Thus, the DA processor206ofFIG. 2queries the directory server(s)132ofFIG. 1to determine respective matches with the entered string objects via, for example, an application programming interface (“API”) that enables queries and/or data exchanges between the DA processor206ofFIG. 2and the directory server(s)132ofFIG. 1(step608). The query of the directory server132ofFIG. 1may be implemented as a lookup function, which is generally associated with directories to enable a query of a known a name and/or locality of a person or business to whom a telephone number is registered, which then retrieves the telephone number. The directory server(s)132ofFIG. 1analyzes, for example, the listing records420-424and, in this instance, the respective last name fields404and zip code fields412to determine matching listing information. In this example, a match for the listing record424is determined from the matching last name of “DOE” and zip code of “04441” in the respective fields404and412. Thus, the directory server(s)132ofFIG. 1returns some or all of the listing information from fields402-414associated with listing record424(e.g., first name of “JACK”, mailing address of “123 THIRD ST”, city name of “GREENVILLE”, state name of “ME”, and/or telephone number of “207-555-1000”) to the DA processor206ofFIG. 2(step610). Although this example provides an exact match of listing information, the directory server(s)132ofFIG. 1may provide sequential string matching algorithms as near matching (e.g., matching a number of characters or sequence of characters within a string) and index matching (e.g., ranking a subset of characters or sequence of characters within a string), or any such current or future string matching algorithms.

The DA processor206ofFIG. 2then sends the returned listing information to one or more of the I/O devices204to audibly, textually, or visually communicate the listing information for the human operator and/or the user (step612). For example, the human operator may communicate the matched listing information (e.g., the telephone number of “207-555-1000”) to the user110ofFIG. 1and/or offer to directly connect the user110ofFIG. 1. The operator may also perform several additional queries with new or modified listing information communicated from the user. When the example communication between the user110ofFIG. 1and the operator position130ofFIG. 2completes, the DA processor206ofFIG. 2creates a directory assistance service record to register the usage of the DA service by the example user110ofFIG. 1. In particular, the DA processor206ofFIG. 2generates a directory assistance service record to register, for example, the telephone number of “555-555-1000” associated with the user device112ofFIG. 1and the telephone number of “207-555-1000” from the matching listing record424ofFIG. 4. Persons of ordinary skill in the art will readily understand that the directory assistance service record may include textual or other data objects to register the use of directory assistance. Also, the directory assistance service records may include any syntactical language capable of describing and structuring data objects such as, for example, extensible markup language (“XML”), HyperText Markup Language (“HTML”), character delimited string, etc.

The DA processor206ofFIG. 2sends the directory assistance service record from the example operator position130ofFIG. 1via the TOPS switch106ofFIG. 1to the example DA management system134ofFIG. 1and, more particularly, the DASR parser300ofFIG. 3(step614). The DASR parser300ofFIG. 3then duplicates the information from the directory assistance service record to simultaneously execute multiple tasks. For example, the DASR parser300ofFIG. 3passes one or more data objects from the directory assistance service record to the CRIS302ofFIG. 3to update a particular user account in a financial accounting system (e.g., debit the accrued expense account associated with user110ofFIG. 1to reflect the usage of directory assistance) (step616). The DASR parser300ofFIG. 3also passes one or more data objects from the directory assistance service record (e.g., the telephone number of “555-555-1000” associated with the telephone112ofFIG. 1) to the contact directory processor304ofFIG. 3(step618).

The contact directory processor304ofFIG. 3then queries the contact directory136ofFIG. 1to determine if user110ofFIG. 1has an associated user record in the contact directory136ofFIG. 1(step620). For example, the contact directory processor304ofFIG. 3sends the string of “555-555-1000” to the contact directory136ofFIG. 1, which analyzes the user records and, in particular, the account identifier field512to determine a match for a record associated with the example user110ofFIG. 1. In this example, a match for the user record504is determined, which identifies one or more records associated with user110ofFIG. 1(e.g., the contact records506and508ofFIG. 5). The contact directory136ofFIG. 1then returns a logic value or other such signifier to the contact directory processor304ofFIG. 3to identify an associated user record, for example, the username “USER110” or the contact identifier “USER110B” for the user110ofFIG. 1(step622). Alternatively, the contact directory may return a Boolean value such as, for example, a false signifier (e.g., “0”) for no determined match or a true signifier (e.g., “1”) for a determined match.

Although this example provides an exact match of the account identifier field512, the contact directory136ofFIG. 1may provide sequential string matching algorithms as near matching (e.g., matching a number of characters or sequence of characters within a string) and index matching (e.g., ranking a subset of characters or sequence of characters within a string), or any such current or future string matching algorithms. Also, the contact directory processor304ofFIG. 3may query the contact directory136ofFIG. 1with any syntactical language capable of describing and structuring data objects from a directory assistance service record such as, for example, extensible markup language (“XML”), HyperText Markup Language (“HTML”), or any other such markup language or character delimited string.

The contact directory processor304ofFIG. 3also uses one or more data objects from the directory assistance service record (e.g., the telephone number of “207-555-1000” associated with the matching listing record424ofFIG. 4) to query the directory server(s)132ofFIG. 1(step624). The query of the contact directory processor304ofFIG. 3may be implemented as a reverse lookup function, which is generally associated with directories to enable a query with a known telephone number, which then retrieves a name and/or address of a person or business to whom the telephone number is registered. The directory server(s)132ofFIG. 1analyze, for example, the listing records420-424and, in this instance, the telephone number field414ofFIG. 4to determine matching listing information. In this example, a match for the listing record424is determined from the string of “207-555-1000” in the telephone number field414. Thus, the directory server(s)132ofFIG. 1returns some or all of the listing information from fields402-414associated with listing record424(e.g., first name of “JACK”, last name of “DOE”, mailing address of “123 THIRD ST”, city name of “GREENVILLE”, state name of “ME”, zip code of “04441” and/or telephone number of “207-555-1000”) to the contact directory processor304ofFIG. 3(step626). As the telephone number originated from the directory server(s)132ofFIG. 1and, more particularly, the directory data structure400ofFIG. 4, the contact directory processor304ofFIG. 3is provided a relative certainty for determining matching listing information using the example reverse look-up function described above.

With the additional listing information returned from the query and the identification of user record504ofFIG. 5in the contact directory136ofFIG. 1, the contact directory process304ofFIG. 3stores the returned listing information as contact record508in the contact directory136ofFIG. 1(step628). In particular, the contact directory processor304ofFIG. 3stores the returned listing information associated with listing record424ofFIG. 4(e.g., “JACK” from the first name field402, “DOE” from the last name field404, “123 THIRD ST” from the mailing address field406, “GREENVILLE” from the city field408, “ME” from the state field410, “04441” from the zip code field412, “207-555-1000” from the telephone number field414ofFIG. 4) to the respective fields516-528in contact record508ofFIG. 5. Thus, listing information provided from directory service usage and additional listing information associated with the listing record is stored as a contact record and associated with the example user110ofFIG. 1in the contact directory136ofFIG. 1. The contact directory processor304may also be configured to identify a contact record as a contact stemming from a DA service request, for example, the contact table510ofFIG. 5may only store contacts records associated with DA service requests and/or an additional field in contact table510may be populated with “DA contact” (not shown).

As previously stated, the example communication system100ofFIG. 1may be configured to transfer the content of the contact directory136ofFIG. 1to an associated user device prior to and/or after a user request. For example, the user device112ofFIG. 1may be a VoIP telephone, which may on an aperiodic basis (e.g., based on event-based procedure(s), etc.), a periodic basis (e.g., based on scheduled procedure(s), etc.), or real-time basis to obtain or receive updated contacts from the contact directory136ofFIG. 1. Similarly, the contact directory136ofFIG. 1may be implemented with API(s) to enable users to communicatively couple and interact with the contact directory136ofFIG. 1. Example of such interfaces may include providing graphic user interfaces via a browser or other such common programs to enable user interaction on user devices, such as, for example, VoIP phones, cellular phones, personal computers, personal digital assistants, MP3 players, set-top-boxes, or any other device which may audibly or visually communicate data objects to a user.

Such an interface may provides a user (e.g., users110ofFIG. 1) to access designated contact directory data structures within the example contact directory136ofFIG. 1through one or more user devices (e.g., the user devices112-116). The interface may use, for example, a web-based or HTML user interface to accept input and provide output by generating web pages that are transported via the Internet and viewed by the user using a web browser program, a telephone user interface to accept input (e.g., a tone-dialed response) and provide output by generating telephone voice that is transported via a telephone network and heard by the user using a telephone, or any other hardware, software, or firmware that enables the user devices112-118ofFIG. 1to enable inputs that allow a user to control the contact directory136ofFIG. 1and outputs that allow the contact directory136ofFIG. 1to produce the effects of the control. To this end, the interface also may include one or more example authentication mechanisms and/or protocols to authenticate a particular user seeking to access the example contact directory136ofFIG. 1. Example mechanism(s) and/or protocol(s) that can be employed may include requiring entry of a unique identifier (e.g., the user name “USER110” of the user name field510ofFIG. 5) and password (e.g., the password “USER110PASSWORD” of the password field513ofFIG. 5) associated with a particular data structure (e.g., the contact data structure500ofFIG. 5), and/or using a user device (e.g., the user device112ofFIG. 1) having a device identifier uniquely associated with a field in data structure (e.g., the account identifier field512ofFIG. 5). After authenticating a user, the interface enables the authenticated user to provide, delete, and/or change one or more fields and/or records in the contact directory136ofFIG. 1via the example user devices112-118or other user devices, as discussed above in the example communications system100ofFIG. 1.

Flow diagrams representative of example processes configured to implement the example operator position130ofFIG. 1and the DA management system134ofFIG. 1are shown inFIGS. 7 and 8. In these examples, the processes may be implemented as machine readable instructions in the form of one or more example programs for execution by a processor, such as the processor805shown in the example processor system900ofFIG. 9. The processes may be embodied in software stored on a tangible medium such as a CD-ROM, a floppy disk, a hard drive, a digital versatile disk (“DVD”), or a memory associated with the processor905, but persons of ordinary skill in the art will readily appreciate that the entire processes and/or parts thereof could alternatively be executed by a device other than the processor905and/or embodied in firmware or dedicated hardware in a well known manner. For example, any or all of the example operator position130ofFIG. 1, the DA management system134ofFIG. 1, the directory server(s)132ofFIG. 1, and the contact directory136ofFIG. 1could be implemented by firmware, hardware, and/or software. More particularly, the calling line identifier200, network interface202, I/O devices204, and DA processor206of the example operator position130ofFIG. 2along with the DASR parser300, CRIS302, and contact directory processor304of the example DA management system134ofFIG. 3may be implemented by firmware, hardware, and/or software. Further, although the example processes are described with reference to the flow diagrams illustrated inFIGS. 7-8, persons of ordinary skill in the art will readily appreciate that many other methods of implementing the example processes may alternatively be used. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, or combined. Similarly, the execution of the example processes and each block in the example processes can be performed iteratively.

The example process700ofFIG. 7provides an example execution sequence that may be performed by the example operator position130ofFIG. 1to provide DA service for a user (e.g., the example user110ofFIG. 1) and record the use of the DA service by the user. The example process800ofFIG. 8provides an example execution sequence that may be performed by the example DA management system134ofFIG. 1to provide contact management for a user of DA services (e.g., the example user110), administer billing for the usage of DA services, and/or any other electronic services to monitor the usage of DA services.

The example process700ofFIG. 7begins at block702where the example operator position130ofFIG. 1communicatively couples a user, who may dial a particular telephone number (e.g., “411,” “555-1212,” etc.) with an operator, which provides the example operator position130ofFIG. 1with the device identifier associated with the user device. After the user and the operator are communicatively coupled (block702), the example operator position130ofFIG. 1receives particular listing information (e.g., city name(s), state name(s), zip code(s), business name(s), surname(s), first and last name(s), etc.) from the user. The operator position130ofFIG. 1then queries the directory server(s)132ofFIG. 1with the user-provided listing information, which may employ any such sequential string matching algorithms such as near matching (e.g., matching a number of characters or sequence of characters within a string), index matching (e.g., ranking a subset of characters or sequence of characters within a string), or any such current or future string matching algorithms.

The operator position130ofFIG. 1then receives the results of the query from the directory server(s)132ofFIG. 1(block706) and provides the listing information to the user (block706). If the operator position130ofFIG. 1receives a communication that the provided listing information is incorrect (e.g., a negative verbal response from a user, a particular tone-dialed response from a user device, etc.), the operator position130ofFIG. 1provides the user an option for an additional directory query (block710). If the operator position130ofFIG. 1receives a communication to indicate an additional directory query (e.g., an affirmative verbal response from a user, a particular tone-dialed response from a user device, etc.), the operator position130ofFIG. 1repeats blocks702-708to perform an additional query with new or additional listing information received from the user.

If the operator position130ofFIG. 1receives a communication that the provided listing information is correct (e.g., an affirmative verbal response, a particular tone-dialed response from a user device, etc.), the operator position130ofFIG. 1generates a directory assistance service record to register the usage of the DA service by the user (block712), which is sent to the DA management system134ofFIG. 1. The directory assistance service record may include one or more data objects such as, for example, a telephone number for the user to be billed and a telephone number of the provided listing information. After a directory assistance service record is generated and sent (block712) or the operator position130ofFIG. 1receives a request from the user for no additional directory queries (e.g., an affirmative verbal response from a user, a particular tone-dialed response from a user device, etc.) (block710), the process700ends and/or returns control to a higher-level process.

The example process800ofFIG. 8begins at block802where the DA management system134ofFIG. 1obtains a directory assistance service record, which may be generated from the example operator position130ofFIG. 1. After obtaining the directory assistance service record (block802), the DA management system134ofFIG. 1duplicates one or more data objects from the directory assistance service record to any additional processes for parallel processing. For example, the DA management system134ofFIG. 1may duplicate the directory assistance service record to a billing process. After duplicating one or more data objects from the directory assistance service record to create any parallel processes (block804), the DA management system134ofFIG. 1performs a query on the contact directory136ofFIG. 1to determine if one or more users specified by the data objects from the directory assistance service record has a record in the contact directory136ofFIG. 1(block806). For example, the DA management system134ofFIG. 1may query the contact directory136ofFIG. 1for a record containing a particular telephone number or other such unique user identifier associated with a user from the directory assistance service record. The DA management system134ofFIG. 1may also query the contact directory136ofFIG. 1and identify a plurality of records associated with a particular telephone number or other such unique identifier from the data object(s) of the directory assistance service record.

If the DA management system134ofFIG. 1does not identify a record associated with the user from the directory assistance service record in block808, the DA management system134ofFIG. 1ends the process800and/or returns control to a higher-level process. Alternatively, if the DA management system134ofFIG. 1identifies a record associated with the user from the directory assistance service record in block808, the DA management system134ofFIG. 1performs a query of the directory server(s)132ofFIG. 1with one or more data objects from the directory assistance service record (block810). For example, the DA management system134ofFIG. 1may query the directory server(s)132ofFIG. 1with a telephone number from the directory assistance service record.

The DA management system134ofFIG. 1then obtains some or all of the listing information associated with the listing record returned from the directory server(s)132ofFIG. 1(block812). For example, the DA management system134ofFIG. 1may obtain first names, last names, mailing addresses, city names, state names, zip codes, multiple telephone numbers, email addresses, business names, business descriptions, navigational coordinates, or any other listing information that can be stored in the directory server(s)132ofFIG. 1. After the listing information is obtained in block812, the DA management system134stores the listing information as one or more contact records in the contact directory136ofFIG. 1(block814). For example, the DA management system134may store the listing information to a contact record that is associated with the user of directory assistance. The DA management system134may also store the listing information to a plurality of contact records, each of which is associated with a different user record in the contact directory136ofFIG. 1(e.g., multiple user records associated with a common data object, such as multiple users associated with a telephone number). The DA management system134also may store the new contact record in a particular table specified for DA service contacts or populate a particular field to differentiate the new contact record as contact associated with DA service usage.

FIG. 9is a schematic diagram of an example processor platform900that may be used and/or programmed to implement any or all of the example operator position130ofFIG. 1, the DA management system134ofFIG. 1, the directory server(s)132ofFIG. 1, and the contact directory136ofFIG. 1. More particularly, any or all of the calling line identifier200, network interface202, I/O devices204, and DA processor206of the example operator position130ofFIG. 2along with the DASR parser300, CRIS302, and contact directory processor304of the example DA management system134ofFIG. 3may be implemented by the example processor platform900. For example, the processor platform900can be implemented by one or more general purpose single-thread and/or multi-threaded processors, cores, microcontrollers, etc. The processor platform900may also be implemented by one or more computing devices that contain any of a variety of concurrently-executing single-thread and/or multi-threaded processors, cores, microcontrollers, etc.

The processor platform900of the example ofFIG. 9includes at least one general purpose programmable processor905. The processor905executes coded instructions910present in main memory of the processor905(e.g., within a random-access memory (“RAM”)915). The coded instructions910may be used to implement the instructions represented by the example processes ofFIGS. 7 and 8. The processor905may be any type of processing unit, such as a processor core, processor and/or microcontroller. The processor905is in communication with the main memory (including a read-only memory (“ROM”)920and the RAM915) via a bus925. The RAM915may be implemented by dynamic RAM (“DRAM”), Synchronous DRAM (“SDRAM”), and/or any other type of RAM device, and ROM may be implemented by flash memory and/or any other desired type of memory device. Access to the memory915and920may be controlled by a memory controller (not shown).

The processor platform900also includes an interface circuit930. The interface circuit930may be implemented by any type of interface standard, such as an external memory interface, serial port, general purpose input/output, etc. One or more input devices935and one or more output devices940are connected to the interface circuit930.

At least some of the above described example methods and/or apparatus are implemented by one or more software and/or firmware programs running on a computer processor. However, dedicated hardware implementations including, but not limited to, application specific integrated circuits, programmable logic arrays and other hardware devices can likewise be constructed to implement some or all of the example methods and/or apparatus described herein, either in whole or in part. Furthermore, alternative software implementations including, but not limited to, distributed processing or component/object distributed processing, parallel processing, or virtual machine processing can also be constructed to implement the example methods and/or apparatus described herein.

It should also be noted that the example software and/or firmware implementations described herein are optionally stored on a tangible storage medium, such as: a magnetic medium (e.g., a magnetic disk or tape); a magneto-optical or optical medium such as an optical disk; or a solid state medium such as a memory card or other package that houses one or more read-only (non-volatile) memories, random access memories, or other re-writable (volatile) memories; or a signal containing computer instructions. A digital file attached to e-mail or other information archive or set of archives is considered a distribution medium equivalent to a tangible storage medium. Accordingly, the example software and/or firmware described herein can be stored on a tangible storage medium or distribution medium such as those described above or successor storage media.

To the extent the above specification describes example components and functions with reference to particular standards and protocols, it is understood that the scope of this patent is not limited to such standards and protocols. For instance, each of the standards for Internet and other packet switched network transmission (e.g., Transmission Control Protocol (“TCP”)/Internet Protocol (“IP”), User Datagram Protocol (“UDP”)/IP, HyperText Markup Language (“HTML”), HyperText Transfer Protocol (“HTTP”)) represent examples of the current state of the art. Such standards are periodically superseded by faster or more efficient equivalents having the same general functionality. Accordingly, replacement standards and protocols having the same functions are equivalents which are contemplated by this patent and are intended to be included within the scope of the accompanying claims.

This patent contemplate examples wherein a device is associated with one or more machine readable mediums containing instructions, or receives and executes instructions from a propagated signal so that, for example, when connected to a network environment, the device can send or receive voice, video or data, and communicate over the network using the instructions. Such a device can be implemented by any electronic device that provides voice, video and/or data communication, such as a telephone, a cordless telephone, a mobile telephone, a cellular telephone, a Personal Digital Assistant (“PDA”), a set-top box, a computer, and/or a server.

Additionally, although this patent discloses example systems including software or firmware executed on hardware, it should be noted that such systems are merely illustrative and should not be considered as limiting. For example, it is contemplated that any or all of these hardware and software components could be embodied exclusively in hardware, exclusively in software, exclusively in firmware or in some combination of hardware, firmware and/or software. Accordingly, while the above specification described example systems, methods and articles of manufacture, persons of ordinary skill in the art will readily appreciate that the examples are not the only way to implement such systems, methods and articles of manufacture. Therefore, although certain example methods, apparatus and articles of manufacture have been described herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus and articles of manufacture fairly falling within the scope of the appended claims either literally or under the doctrine of equivalents.