The present invention generally relates to systems and methods for organizing a user's address book contacts, and more particularly to systems and methods for organizing address book contacts on a mobile computing device and populating the address book.
A cloud based data service provides a mobile device the ability to define one or more sources of contact data and fetch a set of composite contacts populated in the cloud. The cloud based service automatically aggregates one or more “similar” contacts into a “composite” contact.
Many mobile devices provide the ability to set up contact providers within a contact manager application, which in turn handles all the synchronization of contacts and merge, de-duplication on the device itself. This is an expensive effort if performed on the constrained device. The system and method of the present invention pushes the unit of work (fetching and merging of contacts from one or more contact providers) to the cloud and thereby removes the burden from the device. Additionally, since the work is done in the cloud, it is easier to extend the functionality without having to change the software on the device.
For the purposes of illustrating the present invention, there is shown in the drawings a form which is presently preferred, it being understood however, that the invention is not limited to the precise form shown by the drawing in which:
A system and method of maintaining an address book for a handheld computer or other mobile devices in a shared, scalable computing resource is described. The method includes receiving a request to setup contact provider data from the handheld computer at the shared, scalable computing resource. The request is received via a secure wireless communication protocol having authentication of an identity of the handheld computer. The method includes fetching and storing the address book data on the shared, scalable computing resource as a part of overall system. The method further includes fetching the combined data from the same or a second computing device.
As used herein, the “cloud” or “cloud computing” provides computation, software, data access, and storage services that do not require end-user knowledge of the physical location and configuration of the system that delivers the services. Parallels to this concept can be drawn with the electricity grid, wherein end-users consume power without needing to understand the component devices or infrastructure required to provide the service.
Cloud computing is delivery model for information technology services based on Internet protocols, and it typically involves provisioning of dynamically scalable and often virtualized resources. It is a byproduct and consequence of the ease-of-access to remote computing sites provided by the Internet. This may take the form of web-based tools or applications that users can access and use through a web browser as if the programs were installed locally on their own computers.
Cloud computing delivers applications via the internet or other communication channels, which are accessed from a web browser, while the software and data are stored on servers at consolidated or distributed remote locations. Most cloud computing infrastructures consist of services delivered through shared data-centers and appear as a single point of access for consumers' computing needs.
The present invention allows mobile device users to have a consolidated view of their contacts across various networks, including social networks such as Facebook™, Google™, etc. This consolidated contact view of a user's contacts is considered to be a critical building block for offering other community-related features such as sharing, lending, and social-review. The process of gathering, syncing, and aggregating the users' contact data is preferably performed periodically by back-end components, and persisted in a cloud. This data is made available to the device(s) by exposing Web Service end-points deployed in the cloud services layers.
The system of the present invention provides an infrastructure that is deployed in the cloud and allows the user to access the users' contact data from multiple networks. The system supports the periodic syncing, aggregation, and persistence of the users' contacts data in the cloud, to be made available to the users' devices on demand. The system enables the syncing interval to be configurable across networks, so that social data from different networks can be synced at different frequencies.
The Address Book in the Cloud (ABC) system of the present invention is embodied in the cloud and is used by the software stack of the registered mobile device of users to enhance applications with social networking capabilities. At a higher-level, this service enables the device user to fetch his/her contacts information from various social networks such as Google™, LinkedIn™, Facebook™, etc., and persist the contacts data in a merged format in the cloud. Any updates that happen on the networks for the user's contacts data are synced automatically by the service, and made available for the device user periodically through notification, and on demand.
An Address Book in the Cloud (ABC) engine and databases 40 reside on the server(s) in the cloud system 30. The ABC engine 40 includes an interface 50, preferably a web interface, for communicating with the user's device 10 and for performing services requested by the user via her device 10. The ABC engine 40 also include a Fetch engine 60 that employs interfaces 65 for interfacing with the various social networks 25 (e.g., Facebook™, LinkedIn™ . . . ). As further described below, some of these services with respect to the social networks 25 include fetching and synchronizing information about the user's contacts. This information is merged and updated in the ABC database 45, which can reside in a user's digital locker on the cloud servers. The user's digital locker contains all of the user's information relative to the system (e.g., books he owns, preferences, contacts . . . ).
As further described below in regard to the use cases, the ABC Engine 40, through the interface 50, provides the following services to the user through a social settings application 20 on the user's device 10: Administration 51, Settings 52, Setup 53, Link 54 and Unlink 55. Further, the ABC Engine 40 also provides the services to get a user's contacts 42 and update a user's contacts 44. These services do not require the user interface 50. These services communicate with a Contact Sync application 18 on the user's device 10, which is controlled by the Contact Application 15, also on the user' device 10.
The ABC Engine 40 supports the following three major use cases:
Add/Remove networks: The user can add or remove a social network 25 from his ABC configuration using the Link 54 and Unlink 55 functions in the ABC Engine 40. The addition of a network 25 for contacts data aggregation requires network-level authorization by the user to access his data on the particular social network 25. That is to say, the user must provide the ABC Engine 40 with the credentials (e.g., user ID and password) to enable the ABC Engine to access the social network 25 on the user's behalf. Once a social network 25 is added, the ABC Engine 40 automatically and periodically synchronizes the contacts data at a predefined interval that can be set by the user. The synchronization can be either one way or two ways, i.e., the ABC Engine 40 can update its ABC database 45 with new contacts or changed contacts that it finds on a social network 25, and it can also update the contacts on the social network 25 with the new contacts or changed contacts that exist in its database 45.
Fetch Contacts: Using the Contacts application 15 resident on the user's device 10, the user can request a list of his contacts. Optionally the user can specify some filter criteria such as a particular network 25, the name of a particular contact, etc. These fetch requests are handled by the Get Contacts service 42 and the Fetch Engine 60 in the ABC Engine 40.
Scheduled Synching: A backend component, Scheduler Service 25, is operable with the Fetch Engine 60 in the ABC Engine 40 to manage the synching of the user' contacts at specified intervals. The synching frequency is specific to the particular network 25 and is configurable by the user. The Notification Service 37 provides the user with notifications when new or updated contacts have been added or changed in the user's contact list.
The three use cases described above are architecturally significant and, in part, determine the structure and relationships of the major elements of the ABC Engine 40. Extensions to these use cases are possible, and can be addressed with minor changes to the ABC Engine 40 elements. The sections below describe the sequences corresponding to each of these use cases between high-level components that participate in them.
Use-Case—Add Network
In this use case, the device user is interested in adding an external social network 25 to his ABC configuration.
If the user is a registered user, the ABC service 200 redirects 210 the user to the network authorization web/mobile page from Account Services 202 where the user can enter his network credentials. On successful authentication 215, the Account Services 202 authorizes the cloud to access the user's contacts data on the network by issuing a special access token. The ABC Service 200 then places an asynchronous request for network addition to the ABC Sync Engine 204. The request status is marked ‘in-process’ and a corresponding response 220, 225 is communicated to the device 10. The response 225 redirects the ABC client application 15 to the social network 25 to be added.
If the user is not registered, the ABC service 200 is not able to recognize the device 10 as belonging to a valid customer ID. In this case, the request status is marked ‘warning’ and a response with a message prompting the user to register the device is communicated to the device.
Upon receipt of the response 225, the ABC client application 15 contacts the social network 25 and requests authorization 230. The social network 25 then requests 235 the user's credentials, e.g., user ID and password. In response, the ABC client application 15 provides 240 the credentials that had been supplied by the user. Once the user is authenticated on the social network 25, the social network responds 245 with an access token for use on the social network 25. The ABC client application 15 posts 250 the social network access token to the ABC service 200, which persists 255 the access token in the cloud.
With the token in hand, the ABC service 200 autonomously contacts 260 the ABC Sync Engine 204 to initiate the contact sync process with the social network 25. This contact with the social network 25 is autonomous because it is the ABC Sync Engine 204 in the cloud 30 that is logging onto the social network 25, not the user. The ABC Sync Engine 204, on receiving the ‘add network’ message for a specific social network makes API calls 265, on behalf of the user, to fetch the contacts data. The social network 25 returns 270 with the user's contact data found on the social network 25. The ABC Sync Engine 204 informs 275 the ABC service 200 that the contacts were successfully retrieved and the ABC service 200 informs 280 the ABC client application 15 that the sync process is in progress. The list of contacts are synched and then merged 285 with other contacts data persisted on the cloud by ABC Sync Engine 204. Once the sync and merge process is completed, ABC Sync Engine 204 contacts 290 Notification Engine 37, which informs the user that the process is completed.
Use-Case—Remove Network
In the process illustrated in
The user starts the ABC client application 15 on the device 10 and selects a ‘Remove Social Network’ menu option. From a list of supported social networks 25 (e.g., Google™, Facebook™, LinkedIn™, etc.), she picks one and clicks ‘Remove.’ The ABC client application 15 makes the ‘remove network’ request 300 to the ABC Contacts service 350 on the cloud 30.
The ABC Contacts service 350 receives the ‘remove network’ request and places an asynchronous request 305 for network removal to the ABC Sync Engine 204. The request status is marked ‘in-process’ and a corresponding response 310 is communicated 315 to the device 10.
The ABC Sync Engine 204, on receiving the ‘remove network’ message for a specific social network 25 removes 320 from the cloud's database the profiles of the user's contacts that were obtained from the specified network 25. This is followed by a new contacts aggregation 325 from the remaining networks for the user resulting in a new merged contacts list for the user.
On successful aggregation, the ABC Sync Engine 204 places a ‘success’ status message in the queue of the device Notification Engine 37 for delivery to the user.
Use-Case—Fetch Contacts
In the process illustrated in
The user starts the ABC client application 15 on the device 10 and selects a ‘Get Contacts’ menu option. Optionally the user selects additional criteria such as ‘search by name’, ‘search by network’ etc. The ABC client application 15 makes a ‘get contacts’ request 405 to the ABC Contacts Service 400 on the cloud 30. The ABC Contacts Service 400 receives the request and queries 410 the cloud's database for the registered account corresponding to the device 15. The query returns the list of contacts which is forwarded 415 to the device 10 in the payload protocol specified in the request (e.g., Google Protocol Buffer (GPB) or JavaScript Object Notation (JSON)). The client application 15 is then able to display the list of contacts received from the ABC Contact Service 400.
Use-Case—Scheduled Synching
In the process illustrated in
As an initialization step 510, the ABC Sync Scheduler component 500 loads 515 scheduler configuration data representing the sync-intervals for various networks 25. ABC Sync Scheduler 500 then sets up 520 triggers for running the synch and merge operation. ABC Sync Scheduler 500 then contacts 525 Account Services 202 asking for all users that have an ABC configuration that requires synchronization. Account Services 202 returns 530 the list of configured users to ABC Sync Scheduler 500.
On firing of the trigger, the ABC Sync Scheduler' makes an asynchronous request 535 to the ABC Sync Engine 204. The ABC Sync Scheduler 500 is notified 540 that the process is in progress. For each configured user, the ABC Sync Engine 204 fetches 545, 550 the contacts from all of the networks 25 configured for that user. The ABC Sync Engine 204 identifies deltas (changes), if any, and syncs/merges 555 these changes into the user's contact list in the cloud database. If there have been changes, ABC Sync Engine 204 notifies the device user by placing a message in the notification queue of the Notification Engine 37. If there is no change in the contacts data since the previous synching, there will not be a notification to the device 10.
As shown in
Although the present invention has been described in relation to particular embodiments thereof, many other variations and other uses will be apparent to those skilled in the art. It is preferred, therefore, that the present invention be limited not by the specific disclosure herein, but only by the gist and scope of the disclosure.
This application claims benefit under 35 U.S.C. §119(e) from U.S. Provisional Patent application No. 61/406,969, filed on Oct. 26, 2010, the entirety of which is incorporated by reference herein.
Number | Date | Country | |
---|---|---|---|
61406969 | Oct 2010 | US |