The embodiments described herein relate to applications running on a processor and, more particularly, an application for providing functionality on a smart phone, tablet, or other portable computing device.
Conventional mobile phone technology requires a caller to take a chance on disturbing a called party because of lack of information about the called party's current location or time zone. Consequently a caller may place a call to the called party in San Francisco at 8 PM, with no way of knowing the called party is currently in London where the time is 4 AM.
Each patent, patent application, and/or publication mentioned in this specification is herein incorporated by reference in its entirety to the same extent as if each individual patent, patent application, and/or publication was specifically and individually indicated to be incorporated by reference.
Embodiments include a client device configured for telephone communications and including an application or software that configures the client device to, in response to receiving an input to initiate a telephone call to a selected contact, receive data of the selected contact. The client device determines a current time of the selected contact based on a location corresponding to the selected contact, and determine from the data of the selected contact and the current time an appropriate time to call the selected contact. A display generated at the client device includes a message comprising message data representative of the appropriate time to call the selected contact.
Embodiments described herein include an application or component running on a processor of an electronic device, for example a smart phone, tablet computer, or other personal computing device, that simplify and automate determination of the actual local time for an address book contact with which a communication session is to be initiated. The communication session includes but is not limited to a Web call, Voice-over Internet Protocol (IP) (VoIP) call, and sessions using a messaging application or other communication protocols, to name a few. As used herein, the term “initiator” or “initiating device” refers to a device initiating a communication session, and the term “receiver” or “receiving device” refers to a device to which the communication session is directed.
Using conventional technology, a user of an initiating device attempting to reach another at a receiving device (represented by a “contact” or “contact information” in the initiating device) via a communication session is required to manually look-up and determine the local time of the receiving device and determine if it is an appropriate time (e.g., business hours, etc.) to initiate contact with that device. This is generally performed, for example, by accessing the contact information corresponding to the receiving device and using at least a portion of the contact information (e.g., area code, city code, country code, zip code, etc.) to determine the local time of the receiving device. The challenges under the conventional technology include, for example: cumbersome to look up a contact's local time, especially given that each contact may have a different set of available parameters that can be used; error prone since at any point in the process the user could make a mistake and determine the wrong local time for the contact; time consuming to perform the look up manually. These challenges are exacerbated if the user engages in frequent long-distance or international communication sessions (e.g. calls).
The systems and methods of an embodiment, also referred to herein as “CallOrNot” or the “CallOrNot application”, use the available information of a receiver and/or contact to determine its current time zone instead of the conventional manual look-up process described herein. The application or methods of an embodiment, also referred to herein as the “alerting application”, uses local contact information (e.g., stored on the initiating device) and/or data received from the receiving device to provide one or more of rapid and reliable lookup of the actual local time at the target device, peace of mind when contacting someone in a different time zone, or when someone is traveling, time savings, especially when contacting long-distance frequently, and accurate local time of the contact even if they're on the road (if opted in to provide their real-time location or time zone).
In the following description, numerous specific details are introduced to provide a thorough understanding of, and enabling description for, the systems and methods described. One skilled in the relevant art, however, will recognize that these embodiments can be practiced without one or more of the specific details, or with other components, systems, etc. In other instances, well-known structures or operations are not shown, or are not described in detail, to avoid obscuring aspects of the disclosed embodiments.
The presence of the alerting app on the receiver is optional as described above. When the alerting app is installed on the initiator but is not present on the receiver, processes using the alerting app begin when a contact is selected, designated, or otherwise specified at the initiator. The alerting app performs a lookup of the local time zone of the selected contact using any combination of area code, city code, country code, zip code, address, etc. The lookup of an embodiment uses at least one of a locally stored or coupled database, or a remote database or other application coupled (e.g., web-based, app-based, server-based, etc.) to the initiator.
Alternatively, the alerting app performs a lookup of the local time zone of the selected contact using information or data derived or received from social media apps and/or platforms. For example, the alerting app uses data from information posted by a contact on social media platforms. As another example, the alerting app uses data (e.g., metadata, etc.) derived from recent emails from the contact.
Upon determining the local time zone of the selected contact, the alerting app applies any necessary adjustment or correction (e.g., apply daylight savings information, etc.) to the contact's local time zone, and determines the contact's local time via a time zone database hosted on or coupled to the initiator. The alerting app of an embodiment presents the contact's local time within the receiver's communication application (e.g., telephone app, messaging app, web conferencing software, etc.). If the contact has optionally specified an alert time window (e.g. 8 am-6 pm) during which contact is desired, the alerting app further notifies the initiator based on this information (e.g., that contact is about to be initiated outside of the desirable time window, etc.). The alerting time window can also be set by default by the system, with the ability for it to be changed by the contact at any time.
As an optional feature of the alerting app of an embodiment, the receiver, while travelling outside of its normal location of residence, can optionally choose to provide its actual (real-time) time zone or location, either manually or automatically via its communication system. The provided time zone or location information is provided directly to the initiator or, alternatively, via at least one intermediate device. In this manner, the initiator is provided with accurate position or location information when the contact is actually “roaming”. Note that a contact may optionally provide geographically-constrained information from which its time zone can be determined (e.g., time zone, city, state, difference relative to Greenwich Mean Time (GMT), etc.) instead of actual position or location information, for privacy reasons.
When the alerting app is installed on both the initiator and the receiver devices, processes at the initiator using the alerting app begin when a contact is selected, designated, or otherwise specified at the initiator. Under this embodiment, the alerting apps on each of the initiator and receiver devices exchange data regarding current location, meaning that the initiator includes up-to-date information on the receiver's location. The location information exchanged may be limited based on a geographical constraint (e.g., time zone, city, state, difference relative to Greenwich Mean Time (GMT), etc.) for privacy reasons. The information is exchanged directly and/or through a proxy server, gateway, or other hosted service, but is not so limited.
The alerting app uses the information received from the alerting app of the receiver device to determine the actual time zone of the selected contact. This function may comprise nothing more than evaluating actual location information to determine time zone at that location, or using any difference information of the geographically-constrained data to calculate the time zone.
Upon determining the local time zone of the selected contact, the alerting app applies any necessary adjustment or correction (e.g., apply daylight savings information, etc.) to the contact's local time zone, and determines the contact's local time. The alerting app of an embodiment presents the contact's local time within the receiver's communication application (e.g., telephone app, messaging app, web conferencing software, etc.). If the contact has optionally specified an alert time window (e.g. 8 am-6 pm) during which contact is desired, the alerting app further notifies the initiator based on this information (e.g., that contact is about to be initiated outside of the desirable time window, etc.).
The embodiments described herein, upon determining the local time zone of the selected contact, present the contact's local time within the receiver's communication application, but the embodiment is not so limited. As an alternative to presenting the contact's local time at the initiator, the alerting app of an alternative embodiment presents a message at the initiator that informs the user that it is not appropriate to attempt to establish communication with the contact at the current time, but does not present the contact's local time. In another alternative embodiment, the alerting app blocks or prevents the initiator from attempting to establish communication with the contact at the current time, and presents a message at the initiator that informs the user that it is not an appropriate time to communicate with the contact, but again does not present the contact's local time.
Using the selected contact data, the alerting app accesses the current time zone data received from the receiver, or determines the current receiver time zone from contact data and/or other data representative of contact 204. The alerting app presents at initiator the current local time of the receiver and, optionally, any warnings generated in accordance with the local time of receiver 206.
The location setting control 304 controls a location used by CallOrNot in determining an appropriate time of a call. Activation of the location setting control 304 enables a caller to see the current time at the actual geographical location of the called party. When the location setting control 304 is deactivated, a caller is prevented from seeing the current time at the actual geographical location of the called party and, instead, is presented a time based on contact information of the called party in the caller's device.
The time range setting controls 306 and 308 include a time range activation control 306 and a time setting control 308. The time range activation control 306 controls a state of the time range notification function. Consequently, activation of the time range activation control 306 enables display of an ideal time range for receipt of a call as established by the called party. The time setting control 308 enables a user to set or input times (e.g., earliest, latest, etc.) establishing a time range or period during which he/she wishes to receive calls. The time setting control 308 is functional regardless of whether a user chooses to share information about his/her current location, and the time range appropriate for calls is determined based on contact information of the called party in the caller's device.
In this example use case, Bob needs to call Alice. Bob will get via his client device different amounts of feedback about whether the call should be placed based on the CallOrNot settings on Alice's client device. Bob has activated CallOrNot and he knows Alice's primary address (e.g., work address, home address, etc.). In this example, Alice does NOT give permission for other people to know her current location and Alice has selected the appropriate settings in the CallOrNot application. Also, Alice may not be using the CallOrNot feature in which case her current location would not be available to callers. Therefore, the CallOrNot application uses the current time 402 for Alice based on Alice's address in Bob's contact database.
Based on the current time determined for Alice, the CallOrNot application displays whether the time is appropriate for a call to be placed. If Alice has specified in her settings appropriate times for receiving calls then the appropriate message 404 regarding a call is displayed according to that setting; otherwise if Alice has provided no information about her preferred contact times, CallOrNot uses a standard time or range of times (e.g. 7 AM to 9 PM, 9 AM to 5 PM, etc.).
As the call is being placed at Bob's device, alternate contact options 406 are displayed. The call continues being placed if Bob ignores the alternate contact options 406. If Bob selects one of the alternate options to initiate contact with Alice (e.g., send text message, send electronic mail (email), reminder to call at another time, cancel call, place call anyway, etc.), the call is terminated and the alternate contact option is opened or initiated. The alternate contact options upon termination of the call, for example, include CallOrNot opening the text application and generating a text message template pre-addressed to Alice, opening the email application and generating an email message template pre-addressed to Alice, opening the calendar application and generating a calendar event to call Alice, and taking no action.
In this example use case, Bob is placing a call to Alice. Bob will get via his client device different amounts of feedback about whether the call should be placed based on the CallOrNot settings on Alice's client device. Bob has activated CallOrNot and he is presented with the current time 502 at Alice's actual geographical location because Alice has selected the appropriate settings in the CallOrNot application to enable callers to see her actual location. Based on the current time at Alice's actual location, CallOrNot displays whether the time is appropriate for a call to be placed. If Alice has specified in her settings appropriate times for receiving calls then the appropriate message 504 regarding a call is displayed according to that setting; otherwise if Alice has provided no information about her preferred contact times, CallOrNot uses a standard time or range of times (e.g. 7 AM to 9 PM, 9 AM to 5 PM, etc.).
As the call is being placed at Bob's device, alternate contact options 506 are displayed. The call continues being placed if Bob ignores the alternate contact options 506. If Bob selects one of the alternate options to initiate contact with Alice (e.g., send text message, send electronic mail, reminder to call at another time, cancel call, place call anyway, etc.), the call is terminated and the alternate contact option is opened or initiated. The alternate contact options upon termination of the call, for example, include CallOrNot opening the text application and generating a text message template pre-addressed to Alice, opening the email application and generating an email message template pre-addressed to Alice, opening the calendar application and generating a calendar event to call Alice, and taking no action.
Continuing with examples in which Bob calls Alice,
Embodiments herein include an application running on a processor of a client device configured for telephone communications. The application configures the client device to, in response to receiving an input to initiate a telephone call to a selected contact, receive data of the selected contact. The application configures the client device to determine a current time of the selected contact based on a location corresponding to the selected contact. The application configures the client device to determine from the data of the selected contact and the current time an appropriate time to call the selected contact. The application configures the client device to generate a display at the client device including a message comprising message data and a plurality of contact options. The message data is representative of the appropriate time to call the selected contact. The plurality of contact options include messaging options and calling options.
Embodiments herein include a method comprising: an application running on a processor of a client device configured for telephone communications, wherein the application configures the client device to, in response to receiving an input to initiate a telephone call to a selected contact, receive data of the selected contact; determine a current time of the selected contact based on a location corresponding to the selected contact; determine from the data of the selected contact and the current time an appropriate time to call the selected contact; and generate a display at the client device including a message comprising message data and a plurality of contact options, wherein the message data is representative of the appropriate time to call the selected contact, wherein the plurality of contact options include messaging options and calling options.
The data of the selected contact includes data included in a database accessed by the client device.
The data of the selected contact includes data received at the client device from a remote client device, wherein the remote client device includes a client device of the selected contact.
The data of the selected contact includes data received at the client device from a corresponding application of the remote client device, wherein the corresponding application corresponds to the application.
The corresponding application is configured to include a user interface comprising a plurality of controls, wherein a first control of the plurality of controls is configured to control provision of the data to the client device.
A second control of the plurality of controls is configured to control provision of the appropriate time to the client device.
A third control of the plurality of controls is configured to control input of an earliest time of the appropriate time.
A fourth control of the plurality of controls is configured to control input of a latest time of the appropriate time.
The data of the selected contact includes data included in a database accessed by the client device, and data received at the client device from a remote client device, wherein the remote client device includes a client device of the selected contact.
The current time includes an actual time based on a location that is a current actual location of the selected contact.
The current time includes a time based on contact data of the selected contact.
The current time includes one of an actual time based on a location that is a current actual location of the selected contact, and a time based on contact data of the selected contact.
The current time includes the actual time based on the current actual location of the selected contact when the data of the selected contact includes data received at the client device from the remote client device of the selected contact.
The current time includes the time based on the contact data of the selected contact in the absence of the data received at the client device from the remote client device of the selected contact.
The plurality of contact options include at least one of an option to proceed with the initiated call, an option to cancel the initiated call, an option to text message the selected contact in lieu of placing the initiated call, an option to electronic mail message the selected contact in lieu of placing the initiated call, and an option to generate a calendar event including the selected contact in lieu of placing the initiated call.
The messaging options include an option to text message the selected contact in lieu of placing the initiated call.
The method comprises, in response to selection of the option to text message, generating a text message template pre-addressed to the selected contact.
The messaging options include an option to electronic mail message the selected contact in lieu of placing the initiated call.
The method comprises, in response to selection of the option to electronic mail message, generating an electronic mail message template pre-addressed to the selected contact.
The messaging options include an option to generate a calendar event including the selected contact in lieu of placing the initiated call.
The method comprises, in response to selection of the option to generate a calendar event, generating a calendar event template using data of the selected.
The calling options include an option to cancel the initiated call.
The calling options include an option to proceed with the initiated call.
Embodiments herein include a system comprising a client device including a first processor and configured for telephone communications. The first processor is running an application. The system includes a remote client device including a second processor and configured for telephone communications. The second processor is running the application. The application configures the client device and the remote client device to, in response to receiving an input at the client device to initiate a telephone call to a selected contact at the remote client device, receive data of the selected contact. The application configures the client device and the remote client device to determine a current time of the selected contact based on a location corresponding to the selected contact. The application configures the client device and the remote client device to determine from the data of the selected contact and the current time an appropriate time to call the selected contact. The application configures the client device and the remote client device to generate a display at the client device including a message comprising message data and a plurality of contact options. The message data is representative of the appropriate time to call the selected contact. The plurality of contact options include messaging options and calling options.
Embodiments herein include a system comprising: a client device including a first processor and configured for telephone communications, wherein the first processor is running an application; a remote client device including a second processor and configured for telephone communications, wherein the second processor is running the application; wherein the application configures the client device and the remote client device to, in response to receiving an input at the client device to initiate a telephone call to a selected contact at the remote client device, receive data of the selected contact; determine a current time of the selected contact based on a location corresponding to the selected contact; determine from the data of the selected contact and the current time an appropriate time to call the selected contact; and generate a display at the client device including a message comprising message data and a plurality of contact options, wherein the message data is representative of the appropriate time to call the selected contact, wherein the plurality of contact options include messaging options and calling options.
The data of the selected contact includes data included in a database accessed by the client device.
The data of the selected contact includes data received at the client device from the remote client device, wherein the remote client device includes a client device of the selected contact.
The data of the selected contact includes data received at the client device from a corresponding application of the remote client device, wherein the corresponding application corresponds to the application.
The corresponding application is configured to include a user interface comprising a plurality of controls, wherein a first control of the plurality of controls is configured to control provision of the data to the client device.
A second control of the plurality of controls is configured to control provision of the appropriate time to the client device.
A third control of the plurality of controls is configured to control input of an earliest time of the appropriate time.
A fourth control of the plurality of controls is configured to control input of a latest time of the appropriate time.
The data of the selected contact includes data included in a database accessed by the client device, and data received at the client device from the remote client device, wherein the remote client device includes a client device of the selected contact.
The current time includes an actual time based on a location that is a current actual location of the selected contact.
The current time includes a time based on contact data of the selected contact.
The current time includes one of an actual time based on a location that is a current actual location of the selected contact, and a time based on contact data of the selected contact.
The current time includes the actual time based on the current actual location of the selected contact when the data of the selected contact includes data received at the client device from the remote client device of the selected contact.
The current time includes the time based on the contact data of the selected contact in the absence of the data received at the client device from the remote client device of the selected contact.
The plurality of contact options include at least one of an option to proceed with the initiated call, an option to cancel the initiated call, an option to text message the selected contact in lieu of placing the initiated call, an option to electronic mail message the selected contact in lieu of placing the initiated call, and an option to generate a calendar event including the selected contact in lieu of placing the initiated call.
The messaging options include an option to text message the selected contact in lieu of placing the initiated call.
The application configures the client device and the remote client device to, in response to selection of the option to text message, generate a text message template pre-addressed to the selected contact.
The messaging options include an option to electronic mail message the selected to contact in lieu of placing the initiated call.
The application configures the client device and the remote client device to, in response to selection of the option to electronic mail message, generate an electronic mail message template pre-addressed to the selected contact.
The messaging options include an option to generate a calendar event including the selected contact in lieu of placing the initiated call.
The application configures the client device and the remote client device to, in response to selection of the option to generate a calendar event, generate a calendar event template using data of the selected.
The calling options include an option to cancel the initiated call.
The calling options include an option to proceed with the initiated call.
The components described herein can be located together or in separate locations. Communication paths couple the components and include any medium for communicating or transferring files among the components. The communication paths include wireless connections, wired connections, and hybrid wireless/wired connections. The communication paths also include couplings or connections to networks including local area networks (LANs), metropolitan area networks (MANs), wide area networks (WANs), proprietary networks, interoffice or backend networks, and the Internet. Furthermore, the communication paths include removable fixed mediums like floppy disks, hard disk drives, and CD-ROM disks, as well as flash RAM, Universal Serial Bus (USB) connections, RS-232 connections, telephone lines, buses, and electronic mail messages.
Aspects of the systems and methods described herein may be implemented as functionality programmed into any of a variety of circuitry, including programmable logic devices (PLDs), such as field programmable gate arrays (FPGAs), programmable array logic (PAL) devices, electrically programmable logic and memory devices and standard cell-based devices, as well as application specific integrated circuits (ASICs). Some other possibilities for implementing aspects of the systems and methods include: microcontrollers with memory (such as electronically erasable programmable read only memory (EEPROM)), embedded microprocessors, firmware, software, etc. Furthermore, aspects of the systems and methods may be embodied in microprocessors having software-based circuit emulation, discrete logic (sequential and combinatorial), custom devices, fuzzy (neural) logic, quantum devices, and hybrids of any of the above device types. Of course the underlying device technologies may be provided in a variety of component types, e.g., metal-oxide semiconductor field-effect transistor (MOSFET) technologies like complementary metal-oxide semiconductor (CMOS), bipolar technologies like emitter-coupled logic (ECL), polymer technologies (e.g., silicon-conjugated polymer and metal-conjugated polymer-metal structures), mixed analog and digital, etc.
It should be noted that any system, method, and/or other components disclosed herein may be described using computer aided design tools and expressed (or represented), as data and/or instructions embodied in various computer-readable media, in terms of their behavioral, register transfer, logic component, transistor, layout geometries, and/or other characteristics. Computer-readable media in which such formatted data and/or instructions may be embodied include, but are not limited to, non-volatile storage media in various forms (e.g., optical, magnetic or semiconductor storage media) and carrier waves that may be used to transfer such formatted data and/or instructions through wireless, optical, or wired signaling media or any combination thereof. Examples of transfers of such formatted data and/or instructions by carrier waves include, but are not limited to, transfers (uploads, downloads, e-mail, etc.) over the Internet and/or other computer networks via one or more data transfer protocols (e.g., HTTP, HTTPs, FTP, SMTP, WAP, etc.). When received within a computer system via one or more computer-readable media, such data and/or instruction-based expressions of the above described components may be processed by a processing entity (e.g., one or more processors) within the computer system in conjunction with execution of one or more other computer programs.
Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense as opposed to an exclusive or exhaustive sense; that is to say, in a sense of “including, but not limited to.” Words using the singular or plural number also include the plural or singular number respectively. Additionally, the words “herein,” “hereunder,” “above,” “below,” and words of similar import, when used in this application, refer to this application as a whole and not to any particular portions of this application. When the word “or” is used in reference to a list of two or more items, that word covers all of the following interpretations of the word: any of the items in the list, all of the items in the list and any combination of the items in the list.
The above description of embodiments of the systems and methods is not intended to be exhaustive or to limit the systems and methods to the precise forms disclosed. While specific embodiments of, and examples for, the systems and methods are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the systems and methods, as those skilled in the relevant art will recognize. The teachings of the systems and methods provided herein can be applied to other systems and methods, not only for the systems and methods described above. The elements and acts of the various embodiments described above can be combined to provide further embodiments. These and other changes can be made to the systems and methods in light of the above detailed description.
This application claims the benefit of U.S. Patent Application No. 62/109,253, filed Jan. 29, 2015. This application claims the benefit of U.S. Patent Application No. 62/160,415, filed May 12, 2015. This application claims the benefit of U.S. Patent Application No. 62/199,378, filed Jul. 31, 2015.
Number | Date | Country | |
---|---|---|---|
62109253 | Jan 2015 | US | |
62160415 | May 2015 | US | |
62199378 | Jul 2015 | US |