1. Field of Art
The disclosure generally relates to the field of voice communication using an electronic device, and more particularly to systems, methods, and user interfaces for controlling voice communication.
2. Description of Art
Voice communication using an electronic device, for example, a mobile device is well known. A problem with voice communication using a mobile device is that initiating voice communication can be difficult and time consuming. For example, if one party to the communication is not available at the exact time the other party tries to initiate the communication they may engage in “phone tag” in which each party leaves a voicemail message for the other indicating availability. Other methods for dealing with this problem include leaving text or email messages instructing the party to call back at a particular time or arrange for a call at a particular time. However, as quantities of those messages increase, they can be ignored, inadvertently suppressed or forgotten so that the opportunity to establish a subsequent call is lost. Similarly, information displayed regarding “missed calls” on mobile devices is ineffective and incomplete because it is unclear whether the caller is currently available for a call back.
The disclosed embodiments have advantages and features that will be more readily apparent from the detailed description, the appended claims, and the accompanying figures (or drawings). A brief introduction of the figures is below.
The Figures (FIGS.) and the following description relate to preferred embodiments by way of illustration only. It should be noted that from the following discussion, alternative embodiments of the structures and methods disclosed herein will be readily recognized as viable alternatives that may be employed without departing from the principles of what is claimed.
Reference will now be made in detail to several embodiments, examples of which are illustrated in the accompanying figures. It is noted that wherever practicable similar or like reference numbers may be used in the figures and may indicate similar or like functionality. The figures depict embodiments of the disclosed system (or method) for purposes of illustration only. One skilled in the art will readily recognize from the following description that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles described herein.
Disclosed by way of example embodiments is controlled electronic communication. The controlled electronic communication can be as a system, method and/or a computer program product (e.g., a computer readable storage medium that stores instructions executable by one or more processing units). The environment for facilitating controlled electronic communication includes a controlled communication server, a network, and clients with associated users. The controlled communication server receives, via the network, an initiation request from a client of a primary user. The initiation request is a request by the primary user to begin a communication session with one or more secondary users. In response to receiving the initiation request, the controlled communication server creates an availability status of the primary user that reflects an availability of the primary user to initiate the communication session. The availability status of a user is unique to a particular communication session, so a user may have several availability statuses corresponding to many communication sessions. In one embodiment, a user's availability status changes from available for communication to unavailable for communication when the controlled communication server is aware that a user is unavailable (e.g., by user request, by expiration of a time range, by participation in another communication session, etc.). The controlled communication server also transmits, via the network, a communication request to a client of a secondary user. The secondary user may indicate the secondary user's availability to initiate the communication session by accepting the communication request via the user interface of the client of the secondary user. If the communication request is accepted, which may take place after a period of delay, the controlled communication server receives an availability notification from the client of the secondary user. In response to receiving the availability notification, the controlled communication server determines the availability status of the primary user. If the primary user is available, the controlled communication server sends a confirmation notification to the client of the secondary user. The confirmation notification includes instructions to commence the communication session.
Controlled communication server 100 facilitates, via network 100, controlled communication between clients 130 and correspondingly the users of them. Network 110 is any suitable network and may include data and/or telecommunication networks (including mobile communication networks). In some configurations, clients 130 communicate via a wired or wireless communication network to a network service provider, and communicate with controlled communication server 100 through the Internet. In certain configurations, clients 130 can communicate directly with one another without network 110 as indicated in
In one embodiment, client 130 has a software application that is used to facilitate communication with the controlled communication server 100. In some configurations, clients 130 communicate with the controlled communication server 100 using short message service (SMS) or a browser application on the client 130.
The machine may be a server computer, a client computer, a personal computer (PC), a tablet PC, a set-top box (STB), a smartphone, an internet of things (IoT) appliance, a network router, switch or bridge, or any machine capable of executing instructions 224 (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute instructions 224 to perform any one or more of the methodologies discussed herein.
The example computer system 200 includes one or more processing units (generally processor 202). The processor 202 is, for example, a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), a controller, a state machine, one or more application-specific integrated circuits (ASICs), one or more radio-frequency integrated circuits (RFICs), or any combination of these. The computer system 200 also includes a main memory 204. The computer system may include a storage unit 216. The processor 202, memory 204 and the storage unit 216 communicate via a bus 208.
In addition, the computer system 206 can include a static memory 206, a display driver 210 (e.g., to drive a plasma display panel (PDP), a liquid crystal display (LCD), or a projector). The computer system 200 may also include alphanumeric input device 212 (e.g., a keyboard), a cursor control device 214 (e.g., a mouse, a trackball, a joystick, a motion sensor, or other pointing instrument), a signal generation device 218 (e.g., a speaker), and a network interface device 220, which also are configured to communicate via the bus 208.
The storage unit 216 includes a machine-readable medium 222 on which is stored instructions 224 (e.g., software or program code) embodying any one or more of the methodologies or functions described herein. The instructions 224 may also reside, completely or at least partially, within the main memory 204 or within the processor 202 (e.g., within a processor's cache memory) during execution thereof by the computer system 200, the main memory 204 and the processor 202 also constituting machine-readable media. The instructions 224 may be transmitted or received over a network 226 via the network interface device 220.
While machine-readable medium 222 is shown in an example embodiment to be a single medium, the term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store the instructions 224. The term “machine-readable medium” shall also be taken to include any medium that is capable of storing instructions 224 for execution by the machine and that cause the machine to perform any one or more of the methodologies disclosed herein. The term “machine-readable medium” includes, but not be limited to, data repositories in the form of solid-state memories, optical media, and magnetic media.
When using controlled electronic communication, to facilitate various functions, a user can create an account. The account information can be maintained in account data store 335, which is one means of performing this function. Account data store 335 can store profile information for registered users. Each user is associated with a unique user identifier, such as a userID, a user name, or a user number. A user's user identifier is assigned by account module 330. Available user identifiers are stored in account data store 335. Alternatively, account module 330 may generate new user identifiers based on previously assigned user identifiers.
In one embodiment, account data store 335 includes account management information, such as account type, e.g., free or paid; usage information for each user, e.g., security settings; personal configuration settings; etc. Account module 330 can be configured to update and/or obtain user account details in account data store 335. An account can be associated with multiple clients 130. Account module 330 can be configured to interact with any number of other modules in controlled communication server 100. Account data store may include characteristics of clients 130. Characteristics include hardware model information, network capabilities, operating system information, messaging and notification capabilities, and the like.
In some embodiments, a user can access controlled electronic communication via a web interface generated by user interface module 340. For example, the user can navigate in a web browser to a web address provided by controlled communication server 100.
In various embodiments, client information module 300 receives, handles, and sends client information. An example of client information is an initiation request. For example, an initiation request is sent by a client 130A if a user of client 130A requests to initiate communication with a user of another client 130B. In one embodiment, client information module 300 stores a record of each initiation request in request data store 305.
Another example of client information is an availability status of a user of a client 130. An availability status indicates whether a user is available to initiate voice communication. In one embodiment, client information module 300 stores a record of each availability status in status data store 315 for later retrieval by status module 310. A client 130 may send an availability status to client information module 300 as part of an initiation request. Additionally, a client 130 may send an availability status in response to an availability request sent by client information module 300. For example, client 130A includes an availability status of ‘available’ as part of an initiation request to initiate communication with client 130B. The availability status of the user of client 130A is updated in status data store 315. In response to client information module 300 receiving the initiation request from client 130A, an availability request is sent to client 130B. In response, client 130B sends an availability status of ‘available’ to client information module 300. The availability status of the user of client 130B is updated in status data store 315. Status module 310 detects that the availability status of both clients is ‘available,’ and thus sends a notification to client 130A, which includes instructions to initiate communication.
Client application 400 includes user interface module 405, client module 410, status module 415, request module 420, and local data store 425. In one embodiment, user interface module 405 generates an interface through which information is entered and displayed. The generated interface is provided to the user by display 450. Client application 400 stores content accessed from a data store at controlled communication server 100 in local data store 425. Communication module 460 is configured for electronic communication via network 110. In some embodiments, communication module 460 allows inter-device audio and/or video communication over a mobile communication network. In other embodiments, communication module 460 uses the Internet for inter-device audio and/or video communication. In various embodiments, client module 410 communicates with various components of client 130, including network interface 455, communication module 460, and operating system 465. In one embodiment, client module 410 is configured to communicate with communication module 460 to place an audio and/or video call to another device. For example, responsive to server contact module 415 receiving a notification from controlled communication server 100 that includes instructions to initiate communication, client module 410 instructs communication module 460 to initiate communication.
In various embodiments, requests and notifications are sent by controlled communication server 100 and client 130 using messaging services or other communication services (e.g., SMS messages, native device messages, internal messages, etc.). Examples of native device messaging systems include iOS Notifications by APPLE INC., Cupertino, Calif. and Android Notifications by GOOGLE INC., Mountain View, Calif. Internal messages are sent when the client application 400 of a client has an active message-data connection with controlled communication server 100. An active message-data connection typically exists if the client application of the system is open and displayed on the client.
In various embodiments, the initiation request indicates an availability time range during which the initiating user will be available to begin the communication session. In one embodiment, the availability time range may be specified by the user via a user interface provided by client application 400. Client information module 300 stores a request record in request data store 305. The request record includes the user identifiers of the initiating user and any secondary users, as well as whether each user is a required user or an optional user.
Status module 310 creates 505 availability status entries for the initiating user and the secondary user(s) for the communication session in status data store 315. In one embodiment, the availability status of the initiating user is set to ‘available’ in status data store 315. In one embodiment, the availability status of the secondary user(s) is set by default to ‘unavailable’. The availability status entries are unique to the particular communication session, and accordingly, each user may have multiple availability status entries, each corresponding to one of several communication sessions.
The availability status entry for the initiating user may have an associated entry corresponding to the initiating user's availability within an availability time range. In one embodiment, status module 310 changes the availability status of the initiating user to ‘unavailable’ if the current time is not within the availability time range. The availability time range may be pre-set by the initiating user in the client application 400.
Client information module 300 sends 510 a communication request to a client 130 of each user in the request record that has an availability status of ‘unavailable’ in status data store 315. In another embodiment, client information module 300 sends 510 a communication request to all users in the request record. In one embodiment, the communication request is displayed to the recipient by a user interface of client application 400. In various embodiments, the communication request displays other users associated with the communication request, including the initiating user, and allows the recipient to accept or reject the communication request. Accepting the communication request indicates that the recipient is available to begin a communication session with the other participants. In one embodiment, if a required user rejects the communication request (e.g. by not accepting the request, by explicitly denying the request, etc.), the request is terminated and the communication session will not begin. If an optional user rejects the communication request, the availability status of the optional user stays at ‘unavailable’ and the request and session may proceed normally but without the optional user's participation. In another embodiment, if a required user rejects the communication request, other users are prompted to continue with the request and communication session without the participation of the required user. In one embodiment, the recipient is also able to set an availability time range via a user interface of client application 400. In various embodiments, communication request data is stored in request data store 305, local data store 425, or both, and availability status data is stored in status data store 315, local data store 425, or both.
Client information module 300 receives 515 a communication acceptance from a recipient of the communication request. In step 520, status module 310 updates 520 the status of the accepting user in status data store 315. In some embodiments, status module 310 also stores an availability time range of the accepting user in status data store 315. In one embodiment, status module 310 changes the availability status of the accepting user to ‘unavailable’ if the current time is not within the availability time range.
Status module 310 determines 525 the availability status of all users associated with the communication session from status data store 315. If all required users have an availability status of ‘available’, client information module 300 sends 530 a confirmation notification to the accepting user. The confirmation notification includes instructions to begin the communication session with the available users. Available users may include both required users and optional users with an availability status of ‘available’. In one embodiment, the instructions are received by client module 410, which communicates the instructions to communication module 460 to begin the communication session. If not all required users have an availability status of ‘available’, the process returns to step 510. In another embodiment, if two or more users have an availability status of ‘available’, the available users are given an option to begin the communication session without the unavailable users. Client information module 300 sends a communication request to each unavailable user unless the user has not yet responded to a prior communication request or the user is an optional user and has rejected a prior communication request. The process continues until it reaches step 530 or until all users besides the initiating user have rejected the communication request.
The controlled electronic communication as disclosed provides benefits and advantages that include reducing time and effort expended toward initiating voice communication between two or more parties. For example, the disclosed configuration allows a second party that is unable to take a call or message from a first party to set up a particular time and communication identifier for the first party to retry. Moreover, if the first party is not available at that requested time, the first party can communicate, through a user interface as disclosed, the first party's particular time and communication identifier.
Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order illustrated. Structures and functionality presented as separate components in example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein.
Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms, for example, as illustrated in
In various embodiments, a hardware module may be implemented mechanically or electronically. For example, a hardware module may comprise dedicated circuitry or logic that is permanently configured (e.g., as a special-purpose processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations. A hardware module may also comprise programmable logic or circuitry (e.g., as encompassed within a general-purpose processor or other programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
The various operations of example methods described herein may be performed, at least partially, by one or more processors, e.g., processor 202, that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions. The modules referred to herein may, in some example embodiments, comprise processor-implemented modules.
The one or more processors may also operate to support performance of the relevant operations in a “cloud computing” environment or as “software as a service” (SaaS). For example, at least some of the operations may be performed by a group of computers (as examples of machines including processors), these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., application program interfaces (APIs).)
The performance of certain of the operations may be distributed among the one or more processors, not only residing within a single machine but possibly deployed across a number of machines. In some example embodiments, the one or more processors or processor-implemented modules may be located in a single geographic location (e.g., within a home environment, an office environment, or a server farm). In other example embodiments, the one or more processors or processor-implemented modules may be distributed across a number of geographic locations.
Some portions of this specification are presented in terms of algorithms or symbolic representations of operations on data stored as bits or binary digital signals within a machine memory (e.g., a computer memory). These algorithms or symbolic representations are examples of techniques used by those of ordinary skill in the data processing arts to convey the substance of their work to others skilled in the art. As used herein, an “algorithm” is a self-consistent sequence of operations or similar processing leading to a desired result. In this context, algorithms and operations involve physical manipulation of physical quantities. Typically, but not necessarily, such quantities may take the form of electrical, magnetic, or optical signals capable of being stored, accessed, transferred, combined, compared, or otherwise manipulated by a machine. It is convenient at times, principally for reasons of common usage, to refer to such signals using words such as “data,” “content,” “bits,” “values,” “elements,” “symbols,” “characters,” “terms,” “numbers,” “numerals,” or the like. These words, however, are merely convenient labels and are to be associated with appropriate physical quantities.
Unless specifically stated otherwise, discussions herein using words such as “processing,” “computing,” “calculating,” “determining,” “presenting,” “displaying,” or the like may refer to actions or processes of a machine (e.g., a computer) that manipulates or transforms data represented as physical (e.g., electronic, magnetic, or optical) quantities within one or more memories (e.g., volatile memory, non-volatile memory, or a combination thereof), registers, or other machine components that receive, store, transmit, or display information.
As used herein any reference to “one embodiment” or “an embodiment” means that a particular element, feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
Some embodiments may be described using the expression “coupled” and “connected” along with their derivatives. For example, some embodiments may be described using the term “coupled” to indicate that two or more elements are in direct physical or electrical contact. The term “coupled,” however, may also mean that two or more elements are not in direct contact with each other but still co-operate or interact with each other. The embodiments are not limited in this context.
As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, method, article, or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Further, unless expressly stated to the contrary, “or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present).
In addition, use of “the,” “a,” or “an” are employed to describe elements and components of the embodiments herein. This is done merely for convenience and to give a general sense of the invention. This description should be read to include one or at least one and the singular also includes the plural unless it is obvious that it is meant otherwise.
Upon reading this disclosure, those of skill in the art will appreciate still additional alternative structural and functional designs for a system and a process for facilitating controlled electronic communication through the disclosed principles herein. Thus, while particular embodiments and applications have been illustrated and described, it is to be understood that the disclosed embodiments are not limited to the precise construction and components disclosed herein. Various modifications, changes and variations, which will be apparent to those skilled in the art, may be made in the arrangement, operation and details of the method and apparatus disclosed herein without departing from the spirit and scope defined in the appended claims.