# Patent

## Title
Displaying and activating telephone numbers

## Abstract

There are disclosed methods and apparatus for displaying telephone numbers included in data units. The data units are scanned for telephone numbers. The telephone numbers are automatically identified within the data units. When the telephone numbers are displayed as part of displays of the data units, the telephone numbers are conspicuously rendered.

## Background
RELATED APPLICATION INFORMATION
This application claims priority from Provisional Patent Application No. 60/471,535 filed May 19, 2003, which is incorporated herein by reference.
This application is a continuation of U.S. patent application Ser. No. 10/614,394, filed Jul. 3, 2003, which is incorporated herein by reference.


NOTICE OF COPYRIGHTS AND TRADE DRESS
A portion of the disclosure of this patent document contains material which is subject to copyright protection. This patent document may show and/or describe matter which may or may not become trade dress of the owner. The copyright and trade dress owner has no objection to the facsimile reproduction by any one of the patent disclosure as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright and trade dress rights whatsoever.
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to enhancing displayable text.
2. Description of Related Art
A graphical user interface or GUI is a graphical representation or presentation of information. Various options that provide the user with the ability to manipulate information and data may be presented in a GUI that may consist of a window or menu. For example, customer information such as a customer name, contact name, address, and zip code may be presented to a user in a visually appealing manner such that the words “Customer Name” appear next to a text field box with a space for a name, the words “Contact Name” appear next to a text field box with a space for a name, the word “Address” appears next to a text field box with a space for an address, and the words “Zip Code” appear next to a text field box with a space for a zip code. The field names (i.e., Customer Name, Contact Name, Address, and Zip Code) may be displayed in a specific font or color with the text field boxes (or the information in the text field boxes) in the same or different font or color. Thus, the GUI provides for the display of the information.
Commonly, a GUI representation of information is displayed in a window with several standard components that are displayed regardless of the type, style, or content of the information to be displayed by the GUI. A display may be contained within a frame. The top of the window may have a title bar for which a title may be specified. Below title bar may be a menu bar. The menu bar may be associated with various capabilities. The menu bar may have various submenus. Each submenu may be a menu itself or a command that can be selected by the user.
A “web browser” is an application program used for viewing HTTP (web) files and navigating through linked web files. The web files may include hyperlinks which, when activated by the user cause a corresponding web page to be displayed. Hyperlinks may also cause other events, such as the launching of programs or routines (e.g., causing a blank email message to be opened with a predefined address).
Efforts have been made in integrating the Web with telephony applications. One such popular application is the placing of telephone calls from PC to a regular telephone. A user can place a call to a regular telephone from the Web using Dialpad (Dialpad Communications, Inc.) or Net2Phone (Net2Phone, Inc.). In these applications, a user must manually enter a telephone number each time he wishes to initiate a call, or pick a telephone number from a structured list stored by and only available from the dialing application. In view of the success of such products and services, one could conclude that the users were satisfied and there has been no motivation to seek other solutions.
Some companies, in conjunction with their sales and customer-support efforts, have added a “call me” or “call-back” function to their web sites. With these functions, a user who browses to the company's web site may then manually enter his own telephone number and other information into a web page. The company's computers then initiate the call back to the user.



DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of an environment in accordance with the invention.
FIG. 2 is a data flow diagram in accordance with the invention.
FIG. 3 is a flow chart of a method of displaying a telephone number as an active object in accordance with the invention.
FIG. 4 is a flow chart of a method of displaying an object associated with a telephone number as an active object in accordance with the invention.



DETAILED DESCRIPTION OF THE INVENTION
Throughout this description, the embodiments and examples shown should be considered as exemplars, rather than limitations on the apparatus and methods of the present invention.
Description of the System
Referring now to FIG. 1, there is shown a block diagram of an environment in accordance with the invention. The system includes a client computer 100, a data network 120, a web server 130, a gateway 140, a switch 150, a public switched network (PSN) 160 and plural telephones 170.
The client computer 100 may comprise a general purpose computer. The client computer 100 may be, for example, a PC running a Microsoft Windows operating system. The client computer 100 may include an output device, such as a display 101, and an input device, such as a keyboard 102 and/or a pointing device 103 (e.g., mouse, track ball, light pen, or data glove). The client computer 100 may be a computing device such as a workstation, server, portable computer, personal digital assistant (PDA), computing tablet, two-way messaging device (e.g., BlackberryTM), smart display terminal, and the like. The client computer 100 connects with and communicates on the data network 120 and includes an interface therefore. The client computer 100 may comprise an assembly of devices, such as a television and a set-top box which interfaces to the data network 120.
The client computer 100 includes software and/or hardware for providing the functionality and features of the invention. The client computer 100 may therefore include one or more of: logic arrays, memories, analog circuits, digital circuits, software, firmware, and processors such as microprocessors, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), programmable logic devices (PLDs) and programmable logic arrays (PLAs). The hardware and firmware components of the client computer 100 may include various specialized units, circuits, software and interfaces for providing the functionality and features of the invention. The invention may be embodied in whole or in part in software which operates on the client computer 100 and may be in the form of an application program, an applet (e.g., a Java applet), a browser plug-in, a COM object, a dynamic linked library (DLL), a script, one or more subroutines, an operating system component or service, or a terminate and stay resident program (TSR). The hardware and software of the invention and its functions may be distributed such that some components are performed by the client computer 100 and others by other devices.
The data network 120 provides lower layer network support for the client computer 100 to interact with other devices, including the web server 130 and the gateway 140. The data network 120 is packet-switched and may comprise a common or private bi-directional data network, and may be, for example the Internet.
The web server 130 may be of the type known in the art and has the ability to serve web pages to the client computer 100, as requested in the manner known in the art. It should be appreciated that the web server 130 is representative of any source of web pages available to the client computer 100. Thus, for example, the web server 130 could be accessible from the Internet, or it could be a part of an intranet and represents any number of web servers.
The PSN 160 is a common carrier network which provides circuit switching and/or IP telephony between public users. The PSN 160 may be the public switched telephone network (PSTN). The PSN 160 may operate according to standards such as SS6 or SS7.
The telephones 170 may be ordinary analog telephones connected to the PSN. The telephones 170 may be digital devices (e.g., SIP devices or telephone sets connected through a PBX) for providing voice communications. The telephones 170 may also be wireless voice communications devices such as cell phones. There may be one or more telephones 175 located proximate the client computer 100, or in a location under common control of the user of the client computer 100. The telephone 175 is of the same type as the telephone 170.
The switch 150 may be a voice switch, circuit switch and/or an IP switch and may be compliant with standards such as SS6 or SS7. The switch 150 is compatible with the PSN 160, and has the ability to set up and tear down telephone connections in the PSN 160.
The gateway 140 interfaces between the packet-switched data network 120 and the switch 150. The gateway 140 may be a signaling gateway platform (SGP), which is an intelligent service exchange node that integrates services between circuit and packet networks. The gateway 140 may be integrated into the PSN 160 or the switch 150.
Description of the Methods
Referring now to FIG. 2, there is shown a data flow diagram in accordance with the invention. A unit of data 210 is passed through an object packager 220. The object packager 220 recognizes a telephone number in the data unit 210 and packages a phone number object 230 corresponding to the telephone number. The phone number object 230 may be embedded in the data unit 210, or may be separate.
The phone number object 230 may include one or more telephone numbers. For example, each telephone number in a data unit may correspond to a single object. Alternatively, each data unit may have a single phone number object for all of its telephone numbers. Alternatively, there may be a single phone number object for all telephone numbers identified by the client computer 100, or for all telephone numbers for a given application program.
By “data unit,” it is meant a defined group of data. The data unit 210 must be of a type which can include a telephone number which is displayable on a display (e.g., display 101 in FIG. 1) and thereby viewable by a human. The data unit 210 may consist only of contiguous text (e.g., an ASCII text file), or may consist of a mixture of displayable and non-displayable data (e.g., a word processing document). The data unit may be a file or may be part of a file. The data unit 210 may comprise a number of objects (e.g., contact information used in a contact management program). The text in the data unit 210 may be encoded, such as in ASCII. The data unit 210 may be, for example, an email message, an instant message (IM), a spreadsheet, a web page, a record in a contact management database, or a word processing document.
The phone number object 230 may include the telephone number and/or may include a reference to the telephone number within the data unit 210. The phone number object 230 is defined such that the telephone number is activatable. Once activated, a telephone call may be initiated from a trigger from the client computer 100 through the data network 120 to the switch 150 via the gateway 140. The telephone call may be a dual leg telephone call which connects the user's telephone 175 and one or more other telephones 170 via the PSN 160. In the dual leg telephone call, one leg is used to dial the user's telephone directly, while the other terminates the telephone call to a telephone associated with a telephone number associated with the displayed phone number object. That is, the trigger causes the switch to place a call to the user's telephone and a call to a telephone number associated with the displayed phone number object, and then bridge the two calls together. The trigger may identify the telephone numbers to be dialed.
Although the phone number object 230 may be considered as an “object” in the sense of object-oriented programming, the phone number object 230 may transcend the limitations of object-oriented programming. Thus, the phone number object 230 may represent, for example, a flag in a data structure which is used to indicate performance of a separate subroutine. The phone number object 230 may be viewed as including “hooks” for allowing initiation of telephone calls using the corresponding telephone number. The phone number object 230 therefore is a shorthand for an attachment between a displayed telephone number and telephone call initiation functions.
Referring now to FIG. 3, there is shown a flow chart of a method of displaying telephone numbers by the client computer 100 in accordance with the invention.
In a first step (step 310), a data unit is presented. A data unit may be “presented” when the data unit is passed to a functional unit which will perform later processing. In this case, the functional unit is considered to be passive. Alternatively, a data unit may be “presented” when a functional unit which will perform later processing fetches the data unit. In this case, the functional unit is considered to be active.
All data units available to the client computer 100 may be presented. However, it may be desirable to limit presentation of data units to those of certain characteristics. Presentation may be limited or triggered based upon data characteristics such as storage location (e.g., specified folders), file type, file format, data format or file size.
Presentation may also be limited or triggered based upon events, such as when particular application programs call up data units, or when data units are about to be displayed. When the user makes a selection (e.g., of an icon or option), such selection is referred to as an “event.” Upon the occurrence of an event, an action or command may be initiated.
Presentation may also be limited or triggered by a combination of data characteristics and events. For example, step 310 may be performed only on word processing documents, spreadsheet documents, email documents, instant messages (IM), contact files and web pages. Furthermore, step 310 may be further restricted such that it is performed only when the corresponding application is displaying the data unit.
Next, the data unit is scanned for telephone numbers (step 320). The data unit may be parsed or otherwise processed using one or more algorithms for identifying telephone numbers. For example, the data unit may be scanned for a series of numerals in the exact pattern “(XXX) XXX-XXXX.” Alternatively, a more generic algorithm would search for a series of four or more digits, with no intervening characters except a dash or matched parentheses. The particular algorithm used will depend on a number of factors, including the degree of desired accuracy, the processing capabilities of the client computer, the desired efficiency or speed, and the types of telephones numbers which should be identified.
After telephone numbers are identified (step 330), the telephone numbers may be wrapped as phone number objects (step 340).
Steps 330-340 may be performed on all or only a limited number of telephone numbers per data unit. Step 340 may be performed on all telephone numbers within a data unit, or may be limited to those telephone numbers having desired qualities.
The user may be provided with options to control which data units are processed. This may be useful if the display of a source document must remain true. For example, a user may wish that data units located in a particular folder, or having a particular file format, or having some format of file name, should be skipped. There may be available to the user a display of options, such that the display lists which applications and which file types are available for processing, and the user can make selections or deselections as desired. Also, data files may include an indicator that their display should not be altered.
Steps 310-340 are performed automatically, and may always begin or may always be completed before the data unit is displayed. Steps 310-340 may be performed in conjunction with, as a consequence of, or be triggered by a command, instruction or event to display the data unit. For example, a normal display function may be altered to cause steps 310-340 to be performed.
When the telephone numbers are displayed as part of a display of the data unit, the telephone numbers have a display attribute which renders the telephone numbers conspicuous to a user (step 350). Step 350 may be performed in a number of ways. In one alternative, a normal display of the data unit may be altered prior to display such that the telephone numbers will be conspicuous. For example, just prior to display of a web page, HTML tags and JavaScript may be added so that the telephone numbers will be displayed by the browser and provided with appropriate functionality (e.g. click-to-call). The format of the tags may follow the standard http://URL format, may have a custom format, or otherwise. The tags may include a target source which determines when and how the telephone call will be initiated.
In a second alternative, immediately after a normal display, the telephone numbers or the entire data unit may be redisplayed such that the telephone numbers are conspicuous. In a third alternative, the normal display of the telephone numbers may be overlaid with the conspicuous attributes.
A telephone number may be made conspicuous in many ways. For example, the displayed telephone number may have a distinctive color or font, or it may be underlined or highlighted. The telephone number may be displayed such that it appears identical or similar to a hyperlink. The display may be conspicuous at all times, or may be temporary, such as on mouse roll-over. The conspicuous display may be a “right-click” menu, so that when a user uses a mouse to click on the telephone number with a secondary mouse button, a menu of options may be displayed adjacent the telephone number.
Furthermore, different types of telephone numbers may have different attributes. For example, local and toll-free telephone numbers may be displayed in one color (e.g., green), and long distance telephone numbers may have a different color (e.g., blue).
Once displayed, the user may wish to activate the telephone number. Thus, an activation instruction by the user of a displayed telephone number may be detected (step 360). Next, a telephone call is caused to be initiated using the displayed telephone number (step 370). This initiation may be achieved by sending a call trigger to a switch to initiate a dual leg telephone call. In the dual leg telephone call, one leg is used to dial the user's telephone directly, while the other terminates the telephone call to a telephone associated with the displayed telephone number. That is, the trigger causes the switch to place a call to the user's telephone and a call to the displayed telephone number, and then bridge the two calls together.
Referring now to FIG. 4, there is shown a flow chart of a method of displaying an object associated with a telephone number as an active object in accordance with the invention. This method is useful, for example, for databases which have objects such as peoples' names associated with a telephone number. These objects are not telephone numbers or like telephone numbers, but because of their intended usage they are associated with a telephone number. For convenience, these objects will be referred to as “name objects.” The term “name objects” is not limited to names, though.
For example, contact management databases typically store records comprising a contact's name and one or more telephone numbers for the contact. In such a case, it may be desirable to provide streamlined activation of the associated telephone number if the user activates a display of the contact's name. In this example, the contact's name is a name object.
In a first step (step 410), a data unit is presented in the manner discussed with respect to step 310 (FIG. 3). Next, the data unit is scanned for name objects and telephone numbers (step 420), in a manner akin to that discussed with respect to step 320 (FIG. 3). After the name objects and telephone numbers are identified (step 430), the name objects may be wrapped as phone number objects (step 440).
Steps 430-440 may be performed on all or only a limited number of the name objects and the telephone numbers per data unit. Step 440 may be performed on all name objects and telephone numbers within a data unit, or may be limited to those name objects and/or telephone numbers having desired qualities.
Steps 410-440 are performed automatically, and may always begin or may always be completed before the data unit is displayed. Steps 410-440 may be performed in conjunction with, as a consequence of, or be triggered by a command, instruction or event to display the data unit. For example, a normal display function may be altered to cause steps 410-440 to be performed. Alternatively, steps 410-440 may be performed in a database system in conjunction with creating, modifying or accessing records.
When the name objects are displayed as part of a display of the data unit, the name objects have a display attribute which renders the name objects conspicuous to a user (step 450) in a manner akin to that discussed with respect to step 350 (FIG. 3).
Once displayed, the user may wish to activate the name object. Thus, an activation instruction by the user of a displayed name object may be detected (step 460). Next, a telephone call is caused to be initiated using the telephone number associated with the displayed name object (step 470). This initiation may be achieved by sending a call trigger to a switch to initiate a dual leg telephone call. In the dual leg telephone call, one leg is used to dial the user's telephone directly, and the other terminates the call to a telephone associated with the telephone number associated with the name object. That is, the trigger causes the switch to place a call to the user's telephone and a call to the telephone number associated with the displayed name object, and then bridge the two calls together. 
Although exemplary embodiments of the present invention have been shown and described, it will be apparent to those having ordinary skill in the art that a number of changes, modifications, or alterations to the invention as described herein may be made, none of which depart from the spirit of the present invention. All such changes, modifications and alterations should therefore be seen as within the scope of the present invention.

## Claims

1. A method of displaying telephone numbers by a client computer, the method performed within the client computer and comprising:
receiving a first telephone number associated with a first telephone, the first telephone distinct from the client computer
automatically scanning a data unit for telephone numbers
automatically identifying at least one telephone number within the data unit as an identified telephone number, wherein each of the identified telephone numbers is associated with one of a plurality of second telephones distinct from the client computer and distinct from the first telephone
embedding objects in the data unit, the objects to allow for initiation of telephone calls using the identified telephone numbers, wherein the objects define a function for sending a data trigger to a switch to initiate a dual leg telephone call between the first telephone and one of the second telephones
displaying the data unit, including conspicuously rendering the identified telephone numbers.

2. The method of displaying telephone numbers of claim 1 wherein the data unit comprises a web page.

3. The method of displaying telephone numbers of claim 1 further comprising:
detecting an activation of one of the identified telephone numbers by the user
initiating the dual leg telephone call between the first telephone and the second telephone associated with the activated identified telephone number.

4. The method of displaying telephone numbers by a client computer of claim 3
wherein the initiating comprises causing a dual leg voice telephone call to be initiated between the first telephone associated with a user of the client computer and the second telephone.

5. The method of displaying telephone numbers of claim 1
wherein the scanning, the automatically identifying, and the embedding are performed before the displaying.

6. The method of displaying telephone numbers of claim 1
wherein the conspicuously rendering is achieved according to a display attribute associated with the identified telephone numbers.

7. The method of displaying telephone numbers of claim 6,
wherein the display attribute comprises one or more from the group comprising a distinctive color, underlining, and a distinctive font.

8. The method of rendering telephone numbers as objects of claim 6,
wherein the display attribute comprises highlighting on mouse roll-over.

9. The method of rendering telephone numbers as objects of claim 5,
wherein the display attribute comprises a right-click menu.

10. The method of rendering telephone numbers as objects of claim 6,
wherein the display attribute is included in the object associated with the identified telephone numbers.

11. The method of displaying telephone numbers of claim 1
wherein the data units comprise web pages.

12. A client computer for displaying telephone numbers, the client computer comprising:
a user input device
a display device
a processor
a memory
wherein the processor and the memory comprise circuits and software for
receiving a first telephone number associated with a first telephone, the first telephone distinct from the client computer
automatically scanning data units for telephone numbers
automatically identifying the telephone numbers within the data units as identified telephone numbers, wherein each of the identified telephone numbers is associated with one of a plurality of second telephones distinct from the client computer and distinct from the first telephone
embedding objects in the data units, wherein the objects define a function for sending a data trigger to a switch to initiate a dual leg telephone call between one of the second telephones associated with one of the identified telephone numbers and the first telephone,
displaying the data units, including conspicuously rendering the identified telephone numbers.

13. The client computer for displaying telephone numbers of claim 12
wherein the data units comprise web pages.

14. The client computer for displaying telephone numbers of claim 12 further comprising circuits and software for
detecting an activation of a displayed telephone number by a user
initiating the dual leg telephone call between the first telephone and the second telephone associated with the activated identified telephone number.

15. The client computer for displaying telephone numbers of claim 14
wherein the data units comprise web pages.

16. The client computer for displaying telephone numbers of claim 14 wherein the initiating comprises
initiating a dual leg voice telephone call between the first telephone associated with a user of the client computer and the second telephone associated with the activated identified telephone number.

17. The client computer for displaying telephone numbers of claim 12,
wherein the scanning, the automatically identifying, and the embedding are performed before the displaying.

18. The client computer for displaying telephone numbers of claim 12,
wherein the conspicuously rendering is achieved according to a display attribute associated with the identified telephone numbers.

19. The client computer for displaying telephone numbers of claim 18,
wherein the display attribute comprises one or more from the group comprising a distinctive color, underlining, and a distinctive font.

20. The client computer for displaying telephone numbers of claim 18,
wherein the display attribute comprises highlighting on mouse roll-over.

21. The client computer for displaying telephone numbers of claim 18,
wherein the display attribute comprises a right-click menu.

22. The client computer for displaying telephone numbers of claim 18,
wherein the display attribute is included in the object associated with the telephone number.

23. A client computer including software to conspicuously display telephone numbers included in data units, the software which when executed by the client computer causes the client computer to perform operations comprising:
receiving a first telephone number associated with a first telephone, the first telephone distinct from the client computer
automatically scanning the data units for telephone numbers
automatically identifying the telephone numbers within the data units as identified telephone numbers, wherein each of the identified telephone numbers is associated with each of a group of second telephones distinct from the client computer and distinct from the first telephone
embedding objects in the data units, wherein the objects define a function for sending a data trigger to a switch to initiate dual leg telephone calls using the identified telephone numbers, wherein the telephone calls are between the first telephone and one of the second telephones
displaying the data units, including conspicuously rendering the identified telephone numbers.

24. The client computer of claim 23 including software to cause the client computer to perform further operations comprising:
detecting an activation of an identified telephone number by a user
initiating the dual leg telephone call between the first telephone and the second telephone associated with the activated identified telephone number.

25. The client computer of claim 24 wherein the initiating comprise
initiating a dual leg voice telephone call between the first telephone associated with a user of the client computer and the second telephone associated with the activated identified telephone number.

26. The client computer of claim 23,
wherein the data units comprise web pages.

27. The client computer of claim 23,
wherein the scanning, the automatically identifying, and the embedding are performed

28. The client computer of claim 23,
wherein the conspicuously rendering is achieved according to a display attribute associated with the identified telephone numbers.

29. The client computer of claim 28,
wherein the display attribute comprises one or more from the group comprising a distinctive color, underlining, and a distinctive font.

30. The client computer of claim 28,
wherein the display attribute comprises highlighting on mouse roll-over.

31. The client computer of claim 28,
wherein the display attribute comprises a right-click menu.

32. The client computer of claim 28, wherein the display attribute is included in the object associated with the identified telephone numbers.

33. The client computer of claim 28
wherein the data units comprise web pages.