Object-oriented call management

Through the object-oriented call object structure encapsulating and managing calls, the existing system lacks flexibility and inconvenient information sharing in call management is solved, and more efficient and flexible call management is achieved, and customer satisfaction and call processing efficiency is improved.

CN119728622APending Publication Date: 2025-03-28MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411858332.3
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2018-12-05
Filing Date
2019-11-26
Publication Date
2025-03-28

AI Technical Summary

Technical Problem

Existing systems lack flexibility in managing calls, cannot dynamically respond to changing call environments, and fail to effectively integrate call management and messaging among organizational members, resulting in low call processing efficiency and low customer satisfaction.

Method used

Improved management of calls is provided by encapsulating each call within an object-oriented structure called a call object. The call object encapsulates call-related data and behavior, allowing dynamic sharing and control of call information.

Benefits of technology

It realizes more flexible and efficient management of calls, improves call information sharing capabilities among multiple users across the messaging system, and enhances the organization's dynamic adaptability and customer satisfaction.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119728622A_ABST
    Figure CN119728622A_ABST
Patent Text Reader

Abstract

Methods and systems for object-oriented call management are disclosed. In one aspect, a system implements a plurality of call objects each encapsulating information related to an active call, each call object configured to display a call user interface, and a messaging system configured to provide messaging between a plurality of accounts, the messaging system is configured to distribute references to one or more of the plurality of call objects to at least some of the plurality of accounts and cause a call user interface to be displayed within at least one of the plurality of accounts, and is further configured to receive an input to select at least one of the controls of the call user interface and communicate the selection to a corresponding call object.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application. Its original application is a patent application submitted to the China Patent Office on June 4, 2021, with application number 201980080407.0, and the name of the invention is "Object-oriented call management". Background Art

[0002] The management of voice communications is critical to the success of many organizations. Voice communications provide an opportunity for direct communications between an organization and its customers. The experience of customers in these voice communications reflects directly on the organization itself and can be highly relevant in any ongoing relationship between an organization and its customers. For example, whether a customer continues to do business with a particular organization can be greatly influenced by the quality of voice communications with that organization. Therefore, there is a need for improved methods and systems that help organizations provide quality service by managing calls. BRIEF DESCRIPTION OF THE DRAWINGS

[0003] In the accompanying drawings, which are not necessarily drawn to scale, like numbers may describe similar components in different views. Like numbers with different letter suffixes may represent different instances of similar components. The accompanying drawings generally illustrate various embodiments discussed in this document by way of example and not limitation.

[0004] Figure 1 is an example user interface implemented by at least one disclosed embodiment.

[0005] Figure 2A is an example block diagram of data structures that may be implemented in one or more disclosed embodiments.

[0006] Figure 2B An object container is shown displaying objects contained therein, such as a call object (eg, 202).

[0007] Figure 2C is an object sequence diagram illustrating example interactions between a user interface, an object container, and two call objects.

[0008] Figure 3 is a block diagram illustrating a call flow that may be implemented in one or more disclosed embodiments.

[0009] Figure 4 is an example of a user interface that can be implemented in one or more disclosed embodiments.

[0010] Figure 5 Another user interface that may be implemented by one or more disclosed embodiments is shown.

[0011] Figure 6 One embodiment of a user interface that can be implemented in one or more disclosed embodiments is shown.

[0012] Figure 7 One embodiment of a user interface that can be implemented in one or more disclosed embodiments is shown.

[0013] Figure 8 One embodiment of a user interface that can be implemented in one or more disclosed embodiments is shown.

[0014] Fig. 9 One embodiment of dragging a call object from a first container to a second container is shown.

[0015] Fig.10 Another example of including a call object in an object container is shown.

[0016] Fig.11 Example data structures that may be implemented by one or more disclosed embodiments are shown.

[0017] Fig.12 is a flow chart of an example method for displaying a call user interface.

[0018] Fig.13 is a flow chart of a method for sharing call information among multiple users.

[0019] Fig.14 A block diagram of an example machine 1400 is shown, on which any one or more of the techniques (eg, methodologies) discussed herein may be performed. DETAILED DESCRIPTION

[0020] The following description and the accompanying drawings sufficiently illustrate specific embodiments to enable those skilled in the art to practice them. Other embodiments may incorporate structural, logical, electrical, process and other changes. Portions and features of some embodiments may be included in those of other embodiments, or replace those of other embodiments. The embodiments set forth in the claims encompass all available equivalents of those claims.

[0021] As mentioned above, the management of voice communications is critical to the success of an organization. The technical problem with existing systems is that they generally provide a strict paradigm for call management. For example, existing systems may implement user interfaces that present a consistent view of incoming calls, as well as a consistent set of UI controls presented on those user interfaces. If the first operator within an organization is unable to assist a particular caller, it may be difficult for the first operator to identify another individual within the organization who is available and more conducive to providing assistance. While the first operator searches for the appropriate contact, the caller waits. Therefore, both the first operator's time and the caller's time are actually wasted until the appropriate contact is determined. In some cases, the caller may be forgotten by the first operator and put on standby until the caller gives up, which of course results in an unsatisfactory experience. Therefore, there are technical problems with existing systems because they lack the flexibility to respond to changing call environments in a dynamic manner. In addition, because call management and messaging between organizational members are not integrated, these existing systems present other organizational and management challenges when communication between organizational members is required to properly manage dynamic call environments.

[0022] The disclosed embodiments solve these technical problems by providing a technical solution that provides improved management of calls by encapsulating each call in an object-oriented structure called a call object. The call object encapsulates both data and behavior related to the call. The data can define, for example, the called party and calling party information of the call. The data can also define, for example, the input stream and / or output stream of the call. The input stream can, for example, provide incoming audio data for the call from an external network such as a PBX-based or IP-based call network. The input stream can also provide incoming audio data from one or more users of a messaging system (e.g., 240 discussed below). The output stream of the call can provide data generated by the messaging system (e.g., 240) for the call. For example, when a user of the messaging system speaks as part of a call, this can generate output data that is written to the output stream. The data can then be distributed to other users within the messaging system and outside the messaging system via the output stream.

[0023] The behavior is encapsulated into a method by a pointer, which includes an algorithm and / or instructions for configuring a hardware processing circuit to implement the behavior. The behavior may include causing the display of one or more user interfaces related to the encapsulated call. Causing the display may include generating one or more network messages, for example, from a server, a backend, or a cloud implementation to a client device. Upon receiving the one or more network messages, the client device displays the user interface in response to the network message. The one or more network messages may include data that defines or identifies each user interface. In some other aspects, the "cause display" operation may be performed on a device that directly writes the displayed information to a display device such as a monitor directly connected to a device such as a laptop, a desktop, or a mobile device. Throughout this disclosure, causing display is used to avoid inferring that the display of the user interface must occur on an electronic display that is "hard-wired" to the device that performs the causing display operation. However, throughout this disclosure, the description of a user interface or user interface element being displayed does not mean that it is inferred that a specific component of the messaging system 240 is displaying the user interface element on a device that is hard-wired to the device that performs the function, but instead, it may indicate that the display is caused on a remote device that is connected to the device that performs the display operation via a soft connection via a network.

[0024] Through the present disclosure, these user interfaces may be collectively referred to as "(one or more) call user interfaces." For example, a call object may cause a call user interface to display call state information, such as the duration of the call or the state of the call. The state of the call may indicate, for example, whether the call is on hold or connected between at least two human callers. A call object may also cause the display of one or more user interface controls operable to control the call. For example, one user interface control may provide a control that allows a user to answer or answer a call. Another control may provide functionality to transfer a call to a specific number. Another control may provide barge into a call (e.g., allowing a user to listen to a live call (also known as silent monitoring) without the caller or another user knowing).

[0025] One advantage of implementing call objects in this manner is that it greatly improves the sharing of call information across multiple users of a messaging system. Additionally, since the sharing of call information is primarily determined dynamically by the user, the sharing of call information is more flexible than existing systems that define a rigid structure or user interface for call information.

[0026] For example, the disclosed embodiments provide for including a call object (or a reference to a call object) in an object container such as an email message, a text message, or a social network feed of a first user of a messaging system. When one or more other users receive the call object (or a reference to a call object) via an email, a text message, or a social network feed, these other users can then interact with the call via the included call object (or reference). For example, a remote method invocation (RMI) can be used to call an object. Alternatively, some embodiments can utilize .NET remoting or Windows Communication Framework (WCF) to achieve this.

[0027] In some embodiments, if a second user receives a reference to a call object via a social network feed, the second user may gain visibility to status information via a call user interface of the call, which may be displayed within the feed. The second user may decide to control the call in some manner based on their access permissions, such as joining or answering the call via one or more user interface controls that may be displayed as part of the call object's call user interface. Thus, by providing user-controllable dynamic call information sharing, the ability of an organization to dynamically adapt to active call needs may be greatly improved, thereby increasing customer satisfaction, and improving call handling efficiency, thereby further reducing employee time required to provide quality service.

[0028] Figure 1 1 is an example user interface implemented by at least one of the disclosed embodiments. Based on the access rights and / or group membership of the user 101, the user interface 100 is displayed to the user 101. The user interface 100 shows a plurality of cards, each showing contact information for a different individual or user. For clarity of explanation, only three cards are marked with labels 110a-c. Each of the cards 101a-c can be displayed (or caused to be displayed) by the underlying account profile object, which will be discussed in more detail below. The contact information of each card includes a photo (e.g., 111a), a name (e.g., 112a), a title (e.g., 113a), and an availability status indicator (e.g., 114a). Availability status indicators 114b-c are also identified for the cards 110b-c, respectively. As shown, the cards are organized into three groups 120a-c based on the group membership of the user 101. The cards can be organized according to the membership of each user represented by the corresponding card. For example, the cards displayed under group 120a may represent individuals included in the "Shared Lines" group 120a, while the cards displayed under group 120b represent users included in the "Favorites" group 120b.

[0029] To cause the display of the availability status indicators 114a-c for each individual or user, the user interface 100 may call one or more call objects associated with each individual. The call objects may cause the display of the availability status indicators 114a-c themselves, or provide information to the user interface 100, which may then cause the display of the information. These design elements will be further developed below.

[0030] Figure 2A is an example block diagram of data structures that may be implemented in one or more disclosed embodiments. Figure 2A A call object 202 is shown. Two object collections 204a-b are also shown. Object collections 204a-b each include one or more references 206 to a call object such as call object 202. 1..n and 207 1..n . Each of a plurality of call objects encapsulates information relating to an active call. The call is active in the sense that an end-to-end connection exists between the caller and the callee, and resources are allocated to maintain the connection. For purposes of this disclosure, a held call is considered active. A call object may be generated when a user of the messaging system initiates a call or an incoming call is received, for example, from a PBX or an external IP calling network. For example, when a call ends and there are fewer than two parties remaining in the call, the call object may be released or destroyed. For example, the dynamic memory allocated to the call object may be returned to a free memory pool and the reference to the call object may be deleted, for example, by a garbage collection process.

[0031] Each call object (e.g., 202) includes object-specific data 210a, which can store various information related to the respective call. For example, object-specific data 210a can store information about the source caller of the call, the time the call has been connected and / or on hold, caller ID information for the call, such as the caller's name and / or telephone number, addressing information for the call, and other information. Call object 202 also includes a vtable 209. The vtable 209 includes one or more pointers to methods 210b-d. Although Figure 2A The vtable 209 is shown to include three method pointers 210b-d, but those skilled in the art will appreciate that the vtable 209 may include any number of pointers to methods. The method pointers 210b-d point to display object methods 215b-d. The methods 215b-d may include instructions to configure the hardware processing circuitry to perform operations. Example methods 215b-d include instructions to configure the processing circuitry to display different variations of the call user interface. Figure 2AAs shown, method 215b displays the call user interface 220b. Method 215c displays the call user interface 220c. Method 215d displays the call user interface 220d.

[0032] A call user interface is a term used throughout this disclosure to describe a user interface displayed by a call object 202. When displayed, the call user interface can be used to graphically manipulate the underlying call object 202. For example, the call user interface can be dragged and dropped from one location or object container to another location or object container. Such operations on the call user interface, which is itself just a user interface, cause operations to occur on the call object that displays the call user interface. For example, graphically dragging the call user interface from one object container to a second object container can add a reference to the underlying call object that displays the call user interface to the second object container. In some aspects, this capability can be provided by "OnDrag()" and "OnDrop" methods implemented by the call object. These methods can be called by the user interface when the call user interface is appropriately dragged and dropped.

[0033] The call user interface can display one or more data related to the call represented by the underlying call object. For example, the call user interface can present information related to the source of the call, such as the source phone number or location, or messaging system 240 user, the duration of the call, the current state of the call, such as whether the call is on hold, being forwarded, or active for one or more users. The call user interface can also display one or more user interface controls, such as one or more buttons or other controls. One or more user interface controls can function to control the call in some manner. For example, a first user interface control can function to hold a call, forward a call, answer a call, transfer a call, monitor a call, or other call control functions.

[0034] The call object 202 may be invoked via a messaging system 240. The messaging system may support various messaging functions between multiple accounts. For example, the messaging system 240 may support email, instant messaging, and source-based communications between users. The messaging system 240 may implement multiple user interfaces, including those described above with reference to Figure 1 The user interface 100 discussed, or other user interfaces, such as user interfaces 300, 400, or 500, each of which will be discussed in more detail below. By invoking the call object 202, the user interfaces 100 and 300 can cause the display of one or more variations of the call user interface, such as Figure 2A. In general, the call user interface can display various information about the call encapsulated or represented by the call object 202. For example, the call user interface can display information identifying the call, such as the source phone number, the source geographic area, the source caller (e.g., a user identification, such as a name). The call user interface can also display one or more user interface controls. The controls can be configured to control the call represented by the underlying call object. As described above, the display of the call user interface can be conditioned on the access control associated with the user who invoked the method (e.g., 210a-c) of the call object 202.

[0035] Figure 2B An object container is shown displaying objects contained therein, such as a call object (eg, 202). Figure 2B An object container 252 is shown. Object container 252 may be included in, for example, an email message body, a text message body, or a feed, such as a feed displayed to one or more users of a social network that has subscribed to the feed. When the container is displayed by a hosting application (e.g., an email messaging application, a social networking application, a web browser, or a text messaging application), the hosting application may call a method of the container object that displays the container. An example display container method is shown in Figure 2B 254. When display container method 254 is called by the host application, it may call display object methods for each object contained in container 252. Figure 2B A display container method 254 is shown, which calls two display object methods, namely 215b for the first object 254a and the display object method 260 for the second object 254b. Figure 2A As discussed, object 254a may be a call object (eg, 202).

[0036] Figure 2C is an object sequence diagram illustrating example interactions between a user interface, an object container, and two call objects. Figure 2C The sequence diagram 260 shows a send user interface object 266, a receive user interface object 268, an object container 270, a call object 202a, and a call object 202b. The send user interface object 266 can send a message such as an email message, a text message, or a message feed to the receive user interface object 268. As part of constructing the message, the send user interface 266 can add one or more call objects to the object container 270. Figure 2CTwo call objects 202a-b are shown being added to an object container 270 via a call to an "AddObject()" method of the container 270. Each "AddObject()" method call 272a and 272b passes a reference to either the first call object 202a or the second call object 202b to add the corresponding object 202a-b to the object container 270. The sending user interface object 266 can then send the object container 270 to the receiving user interface object 268. The sending can be accomplished via email, text message, or by including the container 270 in a source (e.g., representing an account) to which the receiving user interface has access.

[0037] The receiving user interface 268 then displays the container 270 by calling the "DisplayContainer()" method 274 of the object container 270. As part of the "DisplayContainer()" method 274, the container 270 enumerates the list of objects contained in the container 270 and calls the "DisplayObject()" method for each object in the container. Figure 2C Container 270 is shown calling call object 202a "DisplayObject()" method 276a and call object 202b "DisplayObject()" method 276b. Call objects 202a-b may implement their "DisplayObject()" methods by displaying one of the call user interfaces discussed herein.

[0038] Figure 3 is a block diagram illustrating a call flow that may be implemented in one or more disclosed embodiments. Figure 3 Two users are shown, user 101 and user 401, both of which call display object method 215b. Figure 2A and Figure 2B Method 215b is discussed. User 1 101 has a particular set of access permissions, represented as box 310a. User 2 401 has a second set of access permissions, represented as box 310b. Access permissions 310a and 310b may be based on each of the respective user 101 and 401 positions within an organizational hierarchy, for example. For example, in some embodiments, first user 101 may be a supervisor of second user 401.

[0039] Figure 3 It is shown that method 215b can display different versions of the call user interface, displayed as call user interface 312a or 312b, depending on which access rights 310a or 310b the calling user (eg, 101 or 401) has.

[0040] Figure 44 is an example of a user interface that may be implemented in one or more of the disclosed embodiments. User interface 400 is displayed to user 401. User interface 400 is displayed to user 401 based on the access rights and / or group membership of user 401. User interface 400 shows cards for other users similar to user interface 100, as described above with respect to Figure 1 For example, user interface 400 includes also Figure 1 4. The user interface 400 also shows the cards organized into different groups 420a-b. The user 401 is a member of each of the groups 420a-b, so they are each displayed on the user interface 400.

[0041] Cards for certain users or individuals may be included in multiple groups. For example, card 110a is shown in both group 420a and group 420b. Figure 4 Also shown is a call user interface for an incoming call 402. The call user interface for the incoming call 402 includes user interface controls 404a-b that provide control over the incoming call. The call user interface for the incoming call 402 can be displayed (e.g., 202) by relying on an underlying call object. For example, the user interface 400 can call a "displayobject()" method of a call object to display the call user interface for the incoming call 402. Alternatively, the user interface 400 can generate the call user interface 402 itself based on data obtained from the underlying call object. These concepts will be further developed below.

[0042] Figure 5 Another user interface that may be implemented by one or more disclosed embodiments is shown. User interface 500 is displayed to user 501 based on the access rights and / or group membership of user 501. User interface 500 shows that Figure 1 The card 110b is shown in FIG. Figure 5 Also shown is the availability status indicator 114b ( Figure 5 Not shown, but in Figure 1 501. The hover user interface 501 may be displayed by an account profile object, which will be discussed in more detail below. A separate account profile object may display Figure 5 Each of the multiple cards shown in , including cards 110b and 110d.

[0043] The hover interface 510 includes a display of three call user interfaces 502a-c. The first call user interface 502a shows a held call and is presented using a different color than the unheld call user interfaces 502b and 502c.

[0044] The three calls displayed in the hover interface 510 may be associated with the user 520. For example, the hover user interface 510 enumerates a list of calls in which the user 520 represented by the card 110b is participating or associated. The call association table 1160 may support enumeration of a list of calls, as described below with respect to Fig.11 As discussed below Fig.11 As discussed, the disclosed embodiments can maintain associations between accounts and calls of messaging system 240. These associations can be used to determine which calls are displayed in hover interface 510, which is specific to user 520. Different hover interfaces can be presented when the cursor of user interface 500 is placed over different users.

[0045] Each call user interface displays a call logo 512 and controls 514a-c. For clarity of illustration, only the components of one call user interface are shown.

[0046] The hover interface 510 may also be supported by the call object, with each call represented by the call user interface 502a-c being supported by a hover interface. Figure 5 A method (eg, “OnHover()”) is called in the call UI 502a-c (not shown).

[0047] Figure 5 Also shown is a card 110d representing user 522. User 501 may have a different relationship with user 522 than with user 520. For example, user 501 may be a peer of user 522, while user 501 may be a supervisor of user 522. Thus, user 501 may be provided with increased visibility of user 520's call activity, as shown by hover menu 510, relative to reduced visibility of user 522's call activity, which may be implemented to show only a busy or available indication, as shown by indication 524.

[0048] Figure 6 One embodiment of a user interface that may be implemented in one or more of the disclosed embodiments is shown. Figure 6 A user interface 600 is shown that includes a feed 602. The feed 602 may be displayed to one or more users of a messaging system (eg, 240). Figure 6 A message source is shown as displayed to user 601. User 601 is one of one or more users of a messaging system. User interface 600 is displayed to user 601 based on user 601's access rights and / or group membership.

[0049] In some aspects, messaging system 240 may support a feed capability that allows one or more users or accounts of a messaging system (e.g., 240) to subscribe to (and unsubscribe from) a feed. When new information is added to the field, the new information may be displayed on the user interface of the subscribing account.

[0050] The information source 602 includes a call user interface 604. The call user interface 604 includes call identifier information 606, call duration information 608, and a user interface control 610, which is configured to control the call associated with the call user interface 604. The call user interface 604 is displayed by the underlying call object (e.g., 202) and is not visible in the information source 602 or the call user interface 604. A call object or a reference to a call object can be added to the information source 602 by a first user. The call object can be added to the information source 602 via, for example, a drag-and-drop operation, for example, as described below with respect to Fig.10 In short, a user can drag a call user interface displayed by a base call object from one data container to another data container. In various embodiments, the source data container of the call object for displaying the call user interface 604 can be a second source (not shown), an email message (not shown), or any other data container.

[0051] Figure 7 One embodiment of a user interface that may be implemented in one or more of the disclosed embodiments is shown. Figure 7 A user interface 700 is shown displayed to a user 701. The user interface 700 is displayed to the user 701 based on the access rights and / or group membership of the user 701. The user interface 700 shows four call user interfaces 702a-d. Each call user interface 702a-d displays call source information 704, user interface controls 706 for controlling the call, and call identification information 708. The information displayed by the call user interfaces 702a-d is based on the access rights and / or group membership of the user 701. The user interface 700 displays a list of representatives 705 of the user 701.

[0052] Figure 8One embodiment of a user interface that may be implemented in one or more of the disclosed embodiments is shown. The user interface 800 displays data to a user 801. The user interface 800 is displayed to the user 801 based on the access rights and / or group membership of the user 801. The data displayed in the user interface 800 is derived from at least a portion of the collection of call objects. The call user interfaces 804a-f identify a portion of the call objects included in the collection. Each call user interface 804a-f includes call identification information 806, a call source location 808, a queue time 810, and one or more user interface controls 812 for controlling the call. To maintain clarity of the drawings, the user interface 800 is displayed to the user 801 based on the access rights and / or group membership of the user 801. The data displayed in the user interface 800 is derived from at least a portion of the collection of call objects. The call user interfaces 804a-f identify a portion of the call objects included in the collection. Each call user interface 804a-f includes call identification information 806, a call source location 808, a queue time 810, and one or more user interface controls 812 for controlling the call. Figure 8 These items are identified in only one of the call user interfaces 804f, but exist in various forms for the other call user interfaces 804a-e displayed in the user interface 800. The user interface 800 also displays statistics 802a-h for the collection. The statistics 802a-f can be calculated based on information obtained from each call object within the collection. For example, the base call object (e.g., 202) can support methods that provide data such as the hold time of the call, whether the call was held and if so, for how long, whether the call has been answered, and other information that may be necessary to allow the collection to complete the statistics 802a-f.

[0053] Fig. 9 One embodiment of dragging a call object from a first container to a second container is shown. Fig. 9 shows that it is implemented as Figure 8 The first container of the queue 803. A user of the messaging system 240 can drag one of the displayed call user interfaces 804a-f to Fig. 9 The object container 905 is shown as the body of the email. Dragging a displayed call user interface 804f to the object container 905 has the following effect: a reference to the underlying call object (e.g., 202) that displays the call user interface 804f is included in the object container 905. The object container 905 can then be sent to another user of the messaging system 240 via email 910. Upon receipt of the email 910, the call can be accessed via the referenced call object contained in the container 905.

[0054] Fig.10 Another example of including a call object in an object container is shown. Fig.10An email message 1010 is shown that includes an object container 1005. The object container 1005 shown contains a reference to a call object that displays a call user interface 604. A user can drag the displayed call user interface 604 from the container 1005 to the information source 602. After the call user interface 604 is dropped onto the information source 602, a reference to the call object that displays the call user interface 604 is contained in the information source (object container) 601. Once contained in the information source 602, any other user viewing the information source 602 can access the call object, depending on the access permissions of the individual user.

[0055] Fig.11 Example data structures that may be implemented by one or more disclosed embodiments are shown. Fig.11 A data repository 1100 is shown. Although the following discussion of the data structures of the data repository 1100 describes these data structures as representing relational database tables, those skilled in the art will appreciate that these data structures may be implemented in various ways, depending on the embodiment. For example, in some embodiments, the data structures may be implemented as dynamic memory objects and organized via linked lists, or implemented in an unstructured data store.

[0056] Fig.11 The call object table 1101, container table 1120, account profile table 1130 and group table 1150 are shown. The call object table 1101 includes a call object identifier 1102, object data 1104, one or more method pointers 1106. 1..n Object identifier 1102 uniquely identifies a call object (e.g., 202). Object data 1104 stores information specific to a particular call. For example, object data 1104 may store information related to the callee and / or caller of the call represented by the call object (identified by call identifier 1102). Method pointer 1106 1..n Each of the method pointers 1106 points to an implementation of a method for delivering one or more services related to the call represented by the call object. 1..n The identified method may display one or more of the call user interfaces discussed above.

[0057] Container table 1120 includes container ID 1122 and call object ID field 1124. Container ID 1122 uniquely identifies an object container. An object container may include an email body, a text message, a source, or other object containers. Call object ID 1124 identifies a call object contained in the container. Call object ID 1124 may be cross-referenced with call object ID 1102.

[0058] The account profile table 1130 includes an account identifier 1132, credentials 1134, a subordinate group identifier 1136, a peer group ID 1138, a supervisor group identifier 1139, and a representative group identifier 1140. In some embodiments, the subordinate group identifier 1136, the peer group identifier 1138, the supervisor group identifier 1139, and the representative group identifier 1140 may be collectively referred to as an access privilege 1137. The subordinate group identifier 1136 identifies a group of subordinate accounts in the group table 1150 that identifies the account identified by the account identifier 1132. The peer group identifier 1138 identifies a group of peer accounts in the group table 1150 that identifies the account identified by the account identifier 1132. The supervisor group identifier 1139 identifies a group of supervisor accounts in the group table 1150 that identifies the account identified by the account identifier 1132. The representative group identifier 1140 identifies a group of representative accounts in the group table 1150 that identifies the account identified by the account identifier 1132. For example, agent group identifier 1140 may identify agent 705 of user 701 , for example.

[0059] The account profile table 1130 also includes a plurality of methods 1142 1..n Each row in the account profile table 1130 may store data defining an account profile object, which encapsulates the data and behavior of a particular account or user of the messaging system (eg, 240).

[0060] Account identifier 1132 uniquely identifies an account. Credentials 1134 store authentication credentials that must be provided before establishing a session for a call via (identified via account identifier 1132). Subordinate group ID 1136 identifies a group of subordinate accounts of the account identified by account ID 1132 in group table 1150. Peer group ID 1138 identifies a group of peer accounts 1132 of the account identified by the account ID in group table 1150. Supervisor group ID 1139 identifies a group of accounts of the supervisor of the account identified by account ID 1132 in group table 1150. Group IDs 1136, 1138, and 1139 may be used by the disclosed embodiments to determine which version of a call user interface is displayed to a user.

[0061] Each method pointer 1142 1..n Identifies one or more methods that implement behavior for a particular account profile.

[0062] The group table 1150 includes a group identifier 1152 and an account identifier 1154. The group identifier uniquely identifies a group. The account identifier 1154 identifies an account that is a member of the group identified by the group identifier 1152. Note that if there are multiple accounts 1132 in the group 1152, the same value of the group identifier 1132 may appear multiple times in the group table 1150. The group table 1150 may be used to identify accounts within one or more groups, such as described above with respect to Figure 4 The group table 1150 may also be used to identify accounts in one or more of the groups 120a-c, as discussed above with respect to the user interface 100 and Figure 1 discussed.

[0063] The call association table 1160 associates one or more calls with a specific account. The call association table 1160 includes an account identifier 1162 and a call object ID 1164. Each tuple in the call association table 1160 indicates that the account identified by the account identifier 1162 participated in a call identified by the call object identifier 1164 in some capacity. The association between the account and the call can be formed in various situations. For example, when a call is received with a called number indicating a phone number associated with a specific account, an association can be formed between the account and the call and recorded in the association table. When a user answers or breaks into a call, whispers or monitors a call, an association between the user account and the call can be formed and recorded in the call association table 1160. When the user associated with the account hangs up the phone, the association between the account and the call can be deleted.

[0064] The call association table 1160 may be used to implement the hover interface 510 described above. For example, when a mouse is hovered over a particular account profile, the call association table 1160 may be queried to identify calls associated with the identified account. Figure 5 In the example of FIG. 5 , each call object may be called based on the access rights of user 501 to display a call user interface.

[0065] The session table 1170 includes an account identifier 1162 and a session identifier 1164. Upon successful authentication of an account (e.g., 1132), a session may be established by assigning a new session ID 1164 and associating it with the account (e.g., 1162) via the session table. Operations on behalf of the user of the messaging system 240 may be performed within the session identified by the session ID 1164. The session may inherit access privileges (e.g., 1137) and group memberships (e.g., 1160) associated with the account (e.g., 1132).

[0066] Fig.12 is a flow chart of an example method for displaying a call user interface. Fig.12 One or more of the functions discussed may be performed by a hardware processing circuit. For example, instructions stored in a hardware memory may configure a hardware processing circuit to perform one or more of the functions discussed below.

[0067] In operation 1205, a method call is received on a call object. The method is called within a session associated with the first account. In other words, the method is called under the access rights provided to the first account. An illustrative example of operation 1205 is messaging system 240, as described above with respect to Figure 2A As discussed, one of the methods 215b-d is called by a reference to a call object (e.g., 202). When displaying a container that includes a call object, the messaging system 240 may indirectly call, for example, the displayObject() method of the call object. Figure 2B and Figure 2C Such an example is provided. The call object is associated with the second account. For example, in some aspects, the call object can be associated with the second account via the call association table 1160.

[0068] Decision operation 1210 determines whether the first account has a first set of access permissions relative to the second account. The access permissions may be related to (for example) the relationship between the first account and the second account. For example, as described above with respect to user interface 500 and Figure 5 As discussed, call user interfaces 502a-c may be displayed only when the viewing user (e.g., 501) has a particular relationship with the user associated with the call (e.g., user 520). For other users, such as the user represented by card 110d, a different display may be provided, such as only a busy or idle indication 510. These access permissions may be reflected by the data included in the account profile. For example, access permissions 1137 are shown as included in each account profile in the account profile table 1130. In some embodiments, the decision operation 1210 may consider whether the first account is one or more of a peer account (e.g., 1138), a subordinate account (e.g., 1136), a supervisor account (e.g., 1139), or a representative account (e.g., 1140) of the second account.

[0069] If the first account does have the first set of access permissions relative to the second account, process 1200 moves to block 1215, which causes the first version of the call user interface to be displayed. If the first account does not have the first set of access permissions relative to the second account, process 1200 moves from decision operation 1210 to operation 1220, which causes the second version of the call user interface to be displayed. Figure 5 Examples of two different versions of the call user interface are shown in Figure 5 As shown, user 501 may have a different set of access permissions relative to users 520 and 522. Therefore, a first call user interface (any one of 502a-c) is displayed to user 501 for user 520, while a second version of the call user interface (e.g., 524) is displayed to user 501 for user 522.

[0070] Fig.13 is a flow chart of a method for sharing call information between multiple users. Fig.13 One or more of the functions discussed may be performed by a hardware processing circuit. For example, an electronic hardware memory may store instructions that configure the hardware processing circuit to perform the following Fig.13 One or more of the functions discussed.

[0071] In operation 1305, a call object (e.g., 202) is generated for the call. The call object may be generated in response to the messaging system 240 receiving a call from an external network such as a PBX or an IP call network. The call object encapsulates data and behavior specific to the call. For example, the call object may include data defining the caller and / or callee of the call. The object may include data defining one or more input streams for the call and / or one or more output streams for the call. The call object may also encapsulate behavior by including a vtable that contains at least one pointer to a method. The method includes instructions to implement the behavior. At least one behavior encapsulated by the call object is the display of a call user interface. The call user interface includes call state information and / or at least one user interface control that is selectable to control the call. As described above, the call state information may indicate the source geographic location of the call, the name of the caller, a phone number or other address associated with the caller, the duration the call has been connected, the current state of the call, for example, whether the call is being transferred, on hold, or whether the activity is connected to at least one user in the messaging system (e.g., 240).

[0072] In operation 1310, a reference to a call object is included in an object container via the first account. For example, a user can insert a call object or a reference to the call object into a container. Operation 1310 can include establishing a first session for the first account. For example, an authentication credential for the first account can be received, and a session is established in response to the received authentication credential matching the authentication credential stored for the first account (e.g., 1134). The first session is then associated with the first account and can be operated based on access rights or privileges and group memberships of the first account (e.g., 1137 and / or group memberships defined by group table 1150).

[0073] In operation 1315, the container is assigned to at least one other (e.g., second) account. As described above, the object container may be included in a text message, an email message, or a source, such as a social network source or a source of a messaging system. The text message or email message may be sent from the second account to an address that provides access to the message. Alternatively, if the source is used for distribution, the second account may access the source (e.g., the second account may subscribe to the source). Operation 1315 may also include establishing a second session for the second account. This may include receiving a second authentication credential from the device and comparing the received credential with the credential stored for the second account. If the credential matches, the second session is established and inherits the access rights and group membership specified for the second account (e.g., 1137 and / or the group membership defined by the group table 1150).

[0074] In operation 1320, a call user interface implemented by the call object is displayed in at least one session associated with at least one account (e.g., a second account) corresponding to the receiving object container. One or more users who subscribe to the information source including the object container can view the user interface when viewing the information source. A user who receives a text message or email including the object container can view the user interface when viewing the received text message or email.

[0075] In operation 1330, a selection of at least one control of the call user interface is received from one of the accounts. For example, a user viewing an email, text, or feed including an object container may select a control displayed as part of the call user interface, such as described above.

[0076] In operation 1340, the call is controlled based on the selection. As previously discussed, based on the selection of UI controls displayed within the call user interface, several call operations are possible. These operations may include answering the call, ending the call, forwarding the call, barging in on the call, or other call operations.

[0077] Note that although the process 1300 discussed above describes allocating a call object from a first account to a second account, the process can be repeated for a third, fourth, fifth, or any number of additional accounts. Each distribution can use an email, text, or message mechanism to distribute the call object. In addition, email or text or message can be used to distribute the call object to multiple different accounts.

[0078] Fig.14A block diagram of an example machine 1400 is shown on which any one or more of the techniques (e.g., methods) discussed herein may be performed. In alternative embodiments, the machine 1400 may operate as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine 1400 may operate in the capacity of a server machine, a client machine, or both in a server-client network environment. In an example, the machine 1400 may act as a peer machine in a peer-to-peer (P2P) (or other distributed) network environment. The machine 1300 may be a personal computer (PC), a tablet computer, a set-top box (STB), a personal digital assistant (PDA), a mobile phone, a smart phone, a web appliance, a network router, a switch or bridge, a server computer, a database, a conference room device, or any machine capable of executing instructions (sequentially or otherwise) that specify operations to be performed by the machine. In various embodiments, the machine 1400 may perform the operations described above with reference to Figure 1-13 Further, while only a single machine is illustrated, the term “machine” should also be understood to include any collection of machines that individually or collectively execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein, such as cloud computing, software as a service (SaaS), and other computer cluster configurations.

[0079] As described herein, examples may include or may operate on a logic or multiple components, modules, or mechanisms (hereinafter referred to as "modules"). A module is a tangible entity (e.g., hardware) that is capable of performing a specified operation and may be configured or arranged in a certain manner. In one example, a circuit arrangement (e.g., internally or relative to an external entity such as other circuits) may be used as a module in a specified manner. In one example, all or part of one or more computer systems (e.g., independent, client or server computer systems) or one or more hardware processors may be configured by firmware or software (e.g., instructions, application portions, or applications) as a module that performs a specified operation. In one example, the software may reside on a machine-readable medium. In one example, the software, when executed by the underlying hardware of the module, causes the hardware to perform a specified operation.

[0080] Accordingly, the term "module" should be understood to include a tangible entity that is physically constructed, specifically configured (e.g., hardwired) or temporarily (e.g., temporarily) configured (e.g., programmed) to operate in a specified manner or to perform any part or all of the operations described herein. Considering an example in which a module is temporarily configured, each module need not be instantiated at any time. For example, where the module includes a general-purpose hardware processor configured using software, the general-purpose hardware processor can be configured as different modules at different times. The software can configure the hardware processor accordingly, for example, to constitute a particular module at one time instance and to constitute a different module at a different time instance.

[0081] The machine (e.g., computer system) 1400 may include a hardware processor 1402 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), a hardware processor core, or any combination thereof), a main memory 1404, and a static memory 1406, some or all of which may communicate with each other via an interconnection link (e.g., a bus) 1408. The machine 1400 may further include a display unit 1410, an alphanumeric input device 1412 (e.g., a keyboard), and a user interface (UI) navigation device 1414 (e.g., a mouse). In an example, the display unit 1410, the input device 1412, and the UI navigation device 1414 may be a touch screen display. The machine 1400 may additionally include a storage device (e.g., a drive unit) 1416, a signal generating device 1418 (e.g., a speaker), a network interface device 1420, and one or more sensors 1421, such as a global positioning system (GPS) sensor, a compass, an accelerometer, or other sensors. The machine 1400 may include an output controller 1428, such as a serial (e.g., universal serial bus (USB), parallel, or other wired or wireless (e.g., infrared (IR), near field communication (NFC), etc.) connection to communicate or control one or more peripheral devices (e.g., a printer, a card reader, etc.).

[0082] The storage device 1416 may include a machine-readable medium 1422 on which is stored one or more sets of data structures or instructions 1424 (e.g., software) embodied or utilized by any one or more of the techniques or functionality described herein. The instructions 1424 may also reside, in whole or in part, within the main memory 1404, within the static memory 1406, or within the hardware processor 1402 during their execution by the machine 1400. In an example, one or any combination of the hardware processor 1402, the main memory 1404, the static memory 1406, or the storage device 1416 may constitute a machine-readable medium.

[0083] Although the machine-readable medium 1422 is illustrated as a single medium, the term “machine-readable medium” may include a single medium or multiple media (eg, a centralized or distributed database, and / or associated caches and servers) configured to store one or more instructions 1424 .

[0084] The term "machine-readable medium" may include any medium capable of storing, encoding or carrying instructions for execution by the machine 1400 and causing the machine 1400 to perform any one or more of the techniques of the present disclosure or capable of storing, encoding or carrying data structures used by or associated with such instructions. Non-limiting examples of machine-readable media may include solid-state memory and optical and magnetic media. Specific examples of machine-readable media may include: non-volatile memory, such as semiconductor memory devices (e.g., electrically programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM)) and flash memory devices; disks, such as internal hard disks and removable disks; magneto-optical disks; random access memory (RAM); solid-state drives (SSD); and CD-ROM and DVD-ROM disks. In some examples, the machine-readable medium may include non-temporary machine-readable media. In some examples, the machine-readable medium may include machine-readable media that is not a transient propagation signal.

[0085] The instructions 1424 may also be sent or received over a communication network 1426 using a transmission medium via the network interface device 1420. The machine 1400 may communicate with one or more other machines using any of a variety of transmission protocols (e.g., frame relay, Internet Protocol (IP), transmission control protocol (TCP), user datagram protocol (UDP), hypertext transfer protocol (HTTP), etc.). Exemplary communication networks may include a local area network (LAN), a wide area network (WAN), a packet data network (e.g., the Internet), a mobile phone network (e.g., a cellular network), a plain old telephone (POTS) network, and a wireless data network (e.g., a wireless network called The Institute of Electrical and Electronics Engineers (IEEE) 802.11 series of standards, known as 16 series of standards), IEEE 802.15.4 series of standards, Long Term Evolution (LTE) series of standards, Universal Mobile Telecommunications System (UMTS) series of standards, peer-to-peer (P2P) networks, etc. In one example, the network interface device 1420 may include one or more physical jacks (e.g., Ethernet, coaxial, or telephone jacks) or one or more antennas to connect to the communication network 1426. In one example, the network interface device 1420 may include multiple antennas to use at least one of single-input multiple-output (SIMO), multiple-input multiple-output (MIMO), or multiple-input single-output (MISO) technology for wireless communication. In some examples, the network interface device 1420 may use multi-user MIMO technology for wireless communication.

[0086] As described herein, examples may include or may operate on a logic or multiple components, modules, or mechanisms. A module is a tangible entity (e.g., hardware) that is capable of performing a specified operation and may be configured or arranged in some manner. In one example, a circuit arrangement (e.g., internally or relative to an external entity such as other circuits) may be used as a module in a specified manner. In one example, all or part of one or more computer systems (e.g., independent, client, or server computer systems) or one or more hardware processors may be configured by firmware or software (e.g., instructions, application portions, or applications) as a module that performs a specified operation. In one example, the software may reside on a machine-readable medium. In one example, the software, when executed by the underlying hardware of the module, causes the hardware to perform a specified operation.

[0087] Example 1 is a system comprising: a hardware processing circuit; a hardware memory containing instructions that, when executed by the hardware processing circuit, control the system to implement: multiple call objects, each call object encapsulating information related to an active call, each call object being configured to display a call user interface, the call user interface including information related to its respective call, the information including call status information, and the call user interface being further configured to display at least one control, the at least one control being configured to control the call upon selection based on one or more access privileges of an account session displaying the call user interface, wherein control of the call includes at least one of forwarding the call or answering the call; and a messaging system configured to provide messaging between multiple accounts, the messaging system being configured to distribute references to one or more of the multiple call objects to at least some of the multiple accounts and causing a call user interface to be displayed within at least one of the multiple accounts, and being further configured to receive input of selecting at least one control of the call user interface and communicate the selection to the corresponding call object.

[0088] In Example 2, the subject matter of Example 1 optionally includes: wherein the messaging system is configured to receive a drag operation within a specific account, the drag operation identifying a specific call object in the call object set, and a drop operation to place the specific call object onto an object container.

[0089] In Example 3, the subject matter of Example 2 optionally includes: wherein the object container is the body of the message, and wherein the messaging system is configured to send the message to a recipient user and display the message within a recipient account of the recipient user, the display of the message including display of a call user interface for a specific call object.

[0090] In Example 4, the subject matter of Example 3 optionally includes: wherein the specific call object is configured to receive a selection of a user interface control displayed within the call user interface and control the call based on the selection.

[0091] In Example 5, the subject matter of one or more of Examples 2-4 optionally includes: wherein the object container is a message source, and wherein the messaging system is configured to display a call user interface for the specific call object within multiple accounts that display the message source.

[0092] In Example 6, the subject matter of Example 5 optionally includes: wherein the specific call object is configured to receive a selection of one of the at least one controls from one of the multiple accounts displaying the source of the message, and the one control is configured to answer the call on behalf of the one account.

[0093] In Example 7, the subject matter of one or more of Examples 2-6 optionally includes multiple account profile objects, each account profile object encapsulating data for a unique user account for the messaging system, and each account profile object is configured to display a call status for a corresponding unique user account within a viewing user account based on one or more access privileges of the viewing user account relative to the unique user account.

[0094] In Example 8, the subject matter of Example 7 optionally includes: wherein at least one account profile object includes a collection storing references to one or more call objects representing calls associated with its unique user, and is configured to display a call user interface for each of the one or more call objects within the viewing user account based on one or more access privileges of the viewing user account.

[0095] In Example 9, the subject matter of any one or more of Examples 1-8 may optionally include, wherein the call object collection is configured to store the call objects in a queue and display statistics of the queue.

[0096] Example 10 is a method comprising: generating a call object for a call, the call object encapsulating data specific to the call and behavior for displaying at least one call user interface, the call user interface displaying call status information and user interface controls for controlling the call; establishing a first session based on authentication credentials of a first account; in the first session, adding a reference to the call object to an object container; providing access to the object container to a second account; establishing a second session based on the authentication credentials of the second account; and in response to displaying the object container within the second session, causing at least one of the call user interfaces to be displayed within the second session.

[0097] In Example 11, the subject matter of Example 10 optionally includes: wherein providing the second account with access to the object container comprises: including the object container in a message; and sending the message to the second account.

[0098] In Example 12, the subject matter of one or more of Examples 10-11 may optionally include: wherein providing the second account with access to the object container includes: including the object container in a feed, and displaying the feed within the second session.

[0099] In Example 13, the subject matter of one or more of Examples 10-12 optionally includes: displaying a second call user interface for the call object within the first session, receiving a drag operation of the second call user interface and a drop operation on the second call user interface within the first session, and adding a reference to the call object to the object container in response to the drag and drop operation.

[0100] In Example 14, the subject matter of one or more of Examples 10-13 optionally includes: wherein displaying the at least one call user interface within the second session includes displaying a user interface control configured to transfer or answer the call after selecting the user interface control.

[0101] In Example 15, the subject matter of Example 14 optionally includes: wherein displaying the at least one call user interface includes displaying call status information within the at least one call user interface.

[0102] In Example 16, the subject matter of any one or more of Examples 10-15 optionally includes: receiving a drag operation on the at least one call user interface and a drop operation of the at least one call user interface within a second object container within the second session, providing access to the second object container to a third account, establishing a third session based on third authentication credentials of the third account, and causing display of at least one call user interface within the third session in response to providing access.

[0103] Example 17 is a device comprising: a module for generating a call object for a call, the call object encapsulating data specific to the call and behavior for displaying at least one call user interface, the call user interface displaying call status information and user interface controls to control the call; a module for establishing a first session based on authentication credentials of a first account; a module for adding a reference to the call object to an object container in the first session; a module for providing access to the object container to a second account; a module for establishing a second session based on the authentication credentials of the second account; and a module for causing display of at least one call user interface within the second session in response to display of the object container within the second session.

[0104] In Example 18, the subject matter of one or more of Examples 10-17 may optionally include: wherein the means for providing access to the object container to the second account is configured to include the object container in a message and send the message to the second account.

[0105] In Example 19, the subject matter of one or more of Examples 10-18 may optionally include: wherein the means for providing access to the object container to the second account is configured to include the object container in a feed and display the feed within the second session.

[0106] In Example 20, the subject matter of one or more of Examples 10-19 optionally includes: a module for causing display of a second call user interface for the call object in the first session; a module for receiving a drag operation of the second call user interface and a drop operation on the second call user interface within the first session, and a module for adding a reference to the call object to an object container in response to the drag and drop operation.

[0107] Accordingly, the term "module" should be understood to include a tangible entity that is physically constructed, specifically configured (e.g., hardwired) or temporarily (e.g., temporarily) configured (e.g., programmed) to operate in a specified manner or to perform any part or all of the operations described herein. Considering an example in which a module is temporarily configured, each module need not be instantiated at any time. For example, where the module includes a general-purpose hardware processor configured using software, the general-purpose hardware processor can be configured as different modules at different times. The software can configure the hardware processor accordingly, for example, to constitute a particular module at one time instance and to constitute a different module at a different time instance.

[0108] Various embodiments may be implemented in whole or in part in software and / or firmware. The software and / or firmware may take the form of instructions contained in or on a non-transitory computer-readable storage medium. Those instructions may then be read and executed by one or more processors to enable the operations described herein to be performed. The instructions may be in any suitable form, such as, but not limited to, source code, compiled code, interpreted code, executable code, static code, dynamic code, etc. Such computer-readable media may include any tangible, non-transitory media for storing information in a form readable by one or more computers, such as, but not limited to, read-only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory; etc.

Claims

1. A method for dynamically sharing a voice call within a messaging system, the messaging system using one or more hardware processors to support messaging functionality between multiple accounts of the messaging system, the method comprising: identifying an active voice call connected to a call participant, the active voice call connected between the call participant and a first account of the plurality of accounts of the messaging system; establishing a set of instructions associated with the active voice call, the set of instructions executable to cause display of a call user interface for the plurality of accounts of the messaging system, the call user interface including controls for interacting with the active voice call; generating a message including a reference to the set of instructions for the active voice call; transmitting, by the messaging system, the message to a second account of the plurality of accounts of the messaging system using the messaging function of the messaging system; causing, using the set of instructions, displaying the call user interface to the second account of the plurality of accounts of the messaging system to allow the second account of the plurality of accounts of the messaging system to interact with the active voice call; as well as In response to interaction with the call user interface by the second account of the plurality of accounts of the messaging system, a connection to the active voice call is established for the second account of the plurality of accounts of the messaging system.

2. The method according to claim 1, wherein: Identifying the active voice call includes: establishing, via a calling user interface, an outgoing voice call from the first account of the plurality of accounts of the messaging system; and An active voice call received by the call participant is identified.

3. The method according to claim 1, wherein: Identifying the active voice call includes: receiving an incoming voice call from the call participant; and The incoming voice call is connected to the first of the plurality of accounts of the messaging system as the active voice call through interaction with a call user interface by the first of the plurality of accounts of the messaging system.

4. The method according to claim 1, wherein: Establishing instructions for the active voice call includes generating a call object for the active voice call, the call object encapsulating data specific to the active voice call and instructions for displaying the call user interface.

5. The method according to claim 4, wherein: Transmitting a reference to the set of instructions via the messaging system comprises: generating an object container for the active voice call; adding a reference to the call object to the object container; and The object container is transmitted through the messaging system using the messaging function of the messaging system.

6. The method according to claim 1, wherein: The call user interface is a first call user interface, and wherein the set of instructions includes a first instruction executable to generate the first call user interface and a second instruction executable to generate a second call user interface different from the first call user interface, and wherein the method further comprises: transmitting, by the messaging system, a reference to the set of instructions to a third account of the plurality of accounts of the messaging system; and The second call user interface is caused to be displayed to the third account of the plurality of accounts of the messaging system to allow the third account of the plurality of accounts of the messaging system to interact with the active voice call.

7. The method according to claim 6, wherein: Causing display of a second call user interface includes selecting the second call user interface for display for the third account in the plurality of accounts in the messaging system based on credentials of the third account in the plurality of accounts in the messaging system.

8. The method according to claim 1, further comprising: causing display of the call user interface to the first account of the plurality of accounts of the messaging system; receiving input from the first account via the call user interface; In response to input received from the first account through the call user interface, the active voice call is transferred to the second account of the plurality of accounts of the messaging system.

9. The method according to claim 1, wherein: The call participants do not authenticate to the messaging system.

10. A system for dynamically sharing a voice call within a messaging system, the messaging system using one or more hardware processors to support messaging functionality between multiple accounts of the messaging system, the system comprising: one or more hardware processors; as well as One or more memories storing instructions that, when executed, cause the one or more hardware processors to perform operations comprising: identifying an active voice call connected to a call participant, the active voice call connected between the call participant and a first account of the plurality of accounts of the messaging system; establishing a set of instructions associated with the active voice call, the set of instructions executable to cause display of a call user interface for the plurality of accounts of the messaging system, the call user interface including controls for interacting with the active voice call; generating a message including a reference to the set of instructions for the active voice call; transmitting, by the messaging system, the message to a second account of the plurality of accounts of the messaging system using the messaging function of the messaging system; causing, using the set of instructions, displaying the call user interface to the second account of the plurality of accounts of the messaging system to allow the second account of the plurality of accounts of the messaging system to interact with the active voice call; and In response to interaction with the call user interface by the second account of the plurality of accounts of the messaging system, a connection to the active voice call is established for the second account of the plurality of accounts of the messaging system.

11. The system according to claim 10, wherein: The operation of identifying the active voice call includes: establishing, via a calling user interface, an outgoing voice call from the first account of the plurality of accounts of the messaging system; and An active voice call received by the call participant is identified.

12. The system according to claim 10, wherein: The operation of identifying the active voice call includes: receiving an incoming voice call from the call participant; and The incoming voice call is connected to the first of the plurality of accounts of the messaging system as the active voice call through interaction with a call user interface by the first of the plurality of accounts of the messaging system.

13. The system according to claim 10, wherein: Establishing instructions for the active voice call includes generating a call object for the active voice call, the call object encapsulating data specific to the active voice call and instructions for displaying the call user interface.

14. The system according to claim 13, wherein: The operation of transmitting a reference to the set of instructions through the message passing system includes: generating an object container for the active voice call; adding a reference to the call object to the object container; and The object container is transmitted through the messaging system using the messaging function of the messaging system.

15. The system according to claim 10, wherein: The call user interface is a first call user interface, and wherein the set of instructions includes a first instruction executable to generate the first call user interface and a second instruction executable to generate a second call user interface different from the first call user interface, and wherein the operations further include: transmitting, by the messaging system, a reference to the set of instructions to a third account of the plurality of accounts of the messaging system; and The second call user interface is caused to be displayed to the third account of the plurality of accounts of the messaging system to allow the third account of the plurality of accounts of the messaging system to interact with the active voice call.

16. The system of claim 15, wherein: The operation of displaying the second call user interface includes: based on the credentials of the third account in the multiple accounts of the messaging system, selecting the second call user interface for display for the third account in the multiple accounts of the messaging system.

17. The system of claim 10, the operations further comprising: causing display of the call user interface to the first account of the plurality of accounts of the messaging system; receiving input from the first account via the call user interface; In response to input received from the first account through the call user interface, the active voice call is transferred to the second account of the plurality of accounts of the messaging system.

18. The system of claim 10, wherein: The call participants do not authenticate to the messaging system.

19. A system for dynamically sharing a voice call within a messaging system, the messaging system using one or more hardware processors to support messaging functionality between multiple accounts of the messaging system, the system comprising: means for identifying an active voice call connected to a call participant, the active voice call connected between the call participant and a first account of the plurality of accounts of the messaging system; means for establishing a set of instructions associated with the active voice call, the set of instructions executable to cause display of a call user interface for the plurality of accounts of the messaging system, the call user interface including controls for interacting with the active voice call; means for generating a message comprising a reference to the set of instructions for the active voice call; means for transmitting, by the messaging system, the message to a second account of the plurality of accounts of the messaging system using the messaging function of the messaging system; means for displaying, using the set of instructions, the call user interface to the second account of the plurality of accounts of the messaging system to allow the second account of the plurality of accounts of the messaging system to interact with the active voice call; as well as Means for establishing a connection to the active voice call for the second one of the plurality of accounts of the messaging system in response to an interaction with the call user interface by the second one of the plurality of accounts of the messaging system.

20. The system of claim 19, wherein: The call user interface is a first call user interface, and wherein the set of instructions includes first instructions executable to generate the first call user interface and second instructions executable to generate a second call user interface different from the first call user interface, and wherein the system further comprises: means for transmitting, by the messaging system, a reference to the set of instructions to a third account of the plurality of accounts of the messaging system; and Means for causing display of the second call user interface to the third account of the plurality of accounts of the messaging system to allow the third account of the plurality of accounts of the messaging system to interact with the active voice call.

21. A method for dynamically sharing voice calls within a system, the system using one or more hardware processors to support messaging functionality between multiple accounts of the system, the method comprising: identifying an active voice call between a call participant and a first account of the plurality of accounts of the system; as well as While the active voice call is active: generating a call object for the active voice call, the call object having a data structure including call information about the active voice call and input audio stream information for the active voice call; receiving a message from the first account associated with the active voice call; generating an object container, the object container including the call object and the message received from the first account; as well as Causes the object container including the message associated with the active voice call to be displayed in a call user interface of the system, and provides controls for a second account among the multiple accounts of the system to establish a connection to the active voice call, forward the active voice call, or interact with the active voice call.

22. The method according to claim 21, wherein: Causing the object container to be displayed in the call user interface includes causing the object container to be displayed in a feed of the call user interface to one or more accounts of the plurality of accounts of the system that are subscribed to the feed.

23. The method according to claim 22, comprising: The feed is maintained including a plurality of object containers, each object container including a call object associated with a respective active voice call.

24. The method according to claim 21, comprising: An interaction with the object container is received from a second account of the plurality of accounts of the system.

25. The method according to claim 24, wherein: Receiving the interaction with the object container includes: receiving from the second account an instruction to establish a connection to the active voice call of the object container or an instruction to monitor the active voice call of the object container; In response to receiving the instruction to establish the connection to the active voice call, establishing a connection to the active voice call for the second account in the plurality of accounts of the system.

26. The method according to claim 25, wherein: Receiving the instructions from the second account to establish the connection to the active voice call includes receiving instructions to select an interface control of the object container from a feed in the call user interface.

27. The method according to claim 26, wherein: The instructions for selecting the interface control include instructions for picking up or answering the active voice call.

28. The method of claim 24, wherein: Receiving the interaction with the object container includes: receiving a second message from the second account associated with the active voice call of the object container; updating the object container using the second message; and The updated object container is caused to be displayed in the call user interface of the system.

29. The method of claim 24, wherein: Receiving the interaction with the object container includes: receiving an instruction from the first account or the second account to select, drag and drop the object container into the feed of the call user interface; causing the object container including the received message to be displayed in the feed of the call user interface to one or more accounts of the plurality of accounts of the system that subscribe to the feed; and An instruction is received from one of the one or more accounts in the plurality of accounts in the system that is subscribed to the feed to establish a connection to the active voice call.

30. The method of claim 21, wherein: The object container includes an email message addressed to the second account, and Wherein causing the object container to be displayed in the call user interface includes causing the object container to be displayed in an email messaging application associated with the second account.

31. A system for dynamically sharing voice calls between multiple accounts of a messaging service, the system comprising: Hardware processing circuit module; A hardware memory including instructions that, when executed by the hardware processing circuit module, control the system to perform operations including: identifying an active voice call between a call participant and a first account of the plurality of accounts of the system; and While the active voice call is active: generating a call object for the active voice call, the call object having a data structure including call information about the active voice call and input audio stream information for the active voice call; receiving a message from the first account associated with the active voice call; generating an object container, the object container including the call object and the message received from the first account; and Causes the object container including the message associated with the active voice call to be displayed in a call user interface of the system, and provides controls for a second account among the multiple accounts of the system for establishing a connection to the active voice call, forwarding the active voice call, or interacting with the active voice call.

32. The system of claim 31, wherein: Causing the object container to be displayed in the call user interface includes causing the object container to be displayed in a feed of the call user interface to one or more accounts of the plurality of accounts of the system that are subscribed to the feed.

33. The system of claim 32, wherein: The operations include: The feed is maintained including a plurality of object containers, each object container including a call object associated with a respective active voice call.

34. The system of claim 31, wherein: The operations include: An interaction with the object container is received from a second account of the plurality of accounts of the system.

35. The system of claim 34, wherein: Receiving interaction with the object container includes: receiving from the second account an instruction to establish a connection to the active voice call of the object container or an instruction to monitor the active voice call of the object container; In response to receiving the instruction to establish the connection to the active voice call, establishing a connection to the active voice call for the second account in the plurality of accounts of the system.

36. The system of claim 35, wherein: Receiving the instructions from the second account to establish the connection to the active voice call includes receiving instructions to select an interface control of the object container from a feed in the call user interface.

37. The system of claim 36, wherein: The instructions for selecting the interface control include instructions for picking up or answering the active voice call.

38. The system of claim 34, wherein: Receiving the interaction with the object container includes: receiving a second message from the second account associated with the active voice call of the object container; updating the object container using the second message; and The updated object container is caused to be displayed in the call user interface of the system.

39. The system of claim 34, wherein: Receiving the interaction with the object container includes: receiving an instruction from the first account or the second account to select, drag, and drop the object container into a feed of the call user interface; causing the object container including the received message to be displayed in the feed of the call user interface to one or more accounts of the plurality of accounts of the system that subscribe to the feed; and An instruction is received from one of the one or more accounts in the plurality of accounts in the system that is subscribed to the feed to establish a connection to the active voice call.

40. The system of claim 31, wherein: The object container includes an email message addressed to the second account, and Wherein causing the object container to be displayed in the call user interface includes causing the object container to be displayed in an email messaging application associated with the second account.