# US 10,454,876 B2 · Systems and methods for asynchronous communication

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,454,876 B2
- Document ID: US10454876B2
- Status: Granted
- Kind: B2
- Application number: 15/081,010
- Filed: 2016-03-25
- Published: 2017-09-28
- Granted: 2019-10-22
- Earliest claimed: 2016-03-25
- Assignees: American Express Travel Related Services Company, Inc.
- Applicants: American Express Travel Related Services Company, Inc.
- Inventors: Lauren B. Acquista; Donald R. Bloyer, III; Yevgeny Gladun; Anish Jacob; Joseph S. Kueser; Mitchel J. Sandlin; Mahesh Subramanian; Shelly Yanushpolsky
- Web page: https://patentgrep.com/patent/US10454876B2

## CPC

- H04L 51/52: for supporting social networking services
- H04L 51/046: Interoperability with other network applications or services
- H04L 67/55: Push-based network services
- H04L 67/60: Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources (admission control or resource allocation H04L47/70)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A system may receive a first message transmitted over a network from a first device. A first invitation to join a text-based communication channel may be transmitted to the first device in response to the first message. A second invitation may be transmitted to a second device to join the text-based communication channel with the server configured to retain context of the text-based communication channel. The system may receive a second message transmitted from the second device and may transmit a third invitation to the first device to join the text-based communication channel in response to the second message.

## Claims

### Claim 1

A method comprising:
receiving, by a server, a first message transmitted over a network from a first device;
notifying, by the server, a second device that the first device is waiting to communicate with the second device;
transmitting, by the server and to the first device, a first invitation to join a text-based communication channel;
transmitting, by the server and to the second device, a second invitation to join the text-based communication channel;
joining, by the server, the first device to the text-based communication channel;
joining, by the server, the second device to the text-based communication channel;
receiving, by the server, text-based communications from the first device and the second device using an Xml Message and Presence Protocol (XMPP);
creating, by the server, an XMPP room in response to receiving the text-based communications using the XMPP;
writing, by the server, the text-based communications to the XMPP room;
retaining, by the server, a context of the text-based communication channel;
releasing, by the server, the first device from the text-based communication channel;
releasing, by the server, the second device from the text-based communication channel;
retaining, by the server, a first identifier for the first device and a second identifier for the second device;
receiving, by the server and from the second device, new text-based communications;
re-initiatializing, by the server and in response to receiving the new text-based communications, the text-based communication channel using the second identifier;
re-generating, by the server, the context of the text-based communication channel using the first identifier and the second identifier, such that the context is available for review;
writing, by the server, the new text-based communications to the XMPP room such that the context is available for review in the XMPP room;
extending, by the server, XMPP classes for providing an extended XMPP;
providing, by the server, contextual retention behavior using the extending of the XMPP classes;
providing, by the server, room queuing behavior using the extending of the XMPP classes;
re-joining, by the server, the second device to the text-based communication channel by opening a TCP connection to the second device;
transmitting, by the server, a re-initializing message from the second device to the first device via the text-based communication channel;
determining, by the server, whether the first device has logged out of or has logged into the text-based communication channel;
transmitting, by the server and to the first device, a third invitation using a push notification to join the text-based communication channel, in response to the determining that the first device has logged out;
transmitting, by the server and to the first device, a fourth invitation to join the text-based communication channel, in response to the determining that the first device has logged in;
receiving, by the server and from the first device, a request to join the text-based communication channel;
re-joining, by the server, the first device to the text-based communication channel in the XMPP room by opening the TCP connection to the first device; and
providing, by the server and to the first device, the new text-based communications to the first device for review.

### Claim 2 (depends on 1)

The method of claim 1, wherein at least one of (i) the text-based communication channel between the first device and the server uses the XMPP, or (ii) the text-based communication channel between the second device and the server uses the XMPP.

### Claim 3 (depends on 1)

The method of claim 1, wherein the releasing of the first device is in response to the first device being unavailable.

### Claim 4 (depends on 1)

The method of claim 1, further comprising transmitting, by the server, the context of the text-based communication channel to at least one of the first device or the second device.

### Claim 5 (depends on 1)

The method of claim 1, wherein first messages are delivered synchronously in response to both the first device and the second device being available, and second messages are delivered asynchronously when either one of the first device or the second device are unavailable.

### Claim 6 (depends on 1)

The method of claim 1, wherein the context comprises at least one of a text history, a timestamp, or a user name.

### Claim 7 (depends on 1)

The method of claim 1, wherein the server communicates with the first device via at least one of an application or a web-based application running on the first device.

### Claim 8

A computer-based system, comprising:
a processor; and
a tangible, non-transitory memory configured to communicate with the processor, the tangible, non-transitory memory having instructions stored thereon that, in response to execution by the processor, cause the processor to perform operations comprising:
receiving, by the processor, a first message transmitted over a network from a first device;
notifying, by the processor, a second device that the first device is waiting to communicate with the second device;
transmitting, by the processor and to the first device, a first invitation to join a text-based communication channel;
transmitting, by the processor and to the second device, a second invitation to join the text-based communication channel;
joining, by the processor, the first device to the text-based communication channel;
joining, by the processor, the second device to the text-based communication channel;
receiving, by the processor, text-based communications from the first device and the second device using an Xml Message and Presence Protocol (XMPP);
creating, by the processor, an XMPP room in response to receiving the text-based communications using the XMPP;
writing, by the processor, the text-based communications to the XMPP room;
retaining, by the processor, a context of the text-based communication channel;
releasing, by the processor, the first device from the text-based communication channel;
releasing, by the processor, the second device from the text-based communication channel;
retaining, by the processor, a first identifier for the first device and a second identifier for the second device;
receiving, by the processor and from the second device, new text-based communications;
re-initiatializing, by the processor and in response to receiving the new text-based communications, the text-based communication channel using the second identifier;
re-generating, by the processor, the context of the text-based communication channel using the first identifier and the second identifier, such that the context is available for review;
writing, by the processor, the new text-based communications to the XMPP room such that the context is available for review in the XMPP room;
extending, by the processor, XMPP classes for providing an extended XMPP;
providing, by the processor, contextual retention behavior using the extending of the XMPP classes;
providing, by the processor, room queuing behavior using the extending of the XMPP classes;
re-joining, by the processor, the second device to the text-based communication channel by opening a TCP connection to the second device;
transmitting, by the processor, a re-initializing message from the second device to the first device via the text-based communication channel;
determining, by the processor, whether the first device has logged out of or has logged into the text-based communication channel;
transmitting, by the processor and to the first device, a third invitation using a push notification to join the text-based communication channel, in response to the determining that the first device has logged out;
transmitting, by the processor and to the first device, a fourth invitation to join the text-based communication channel, in response to the determining that the first device has logged in;
receiving, by the processor and from the first device, a request to join the text-based communication channel;
re-joining, by the processor, the first device to the text-based communication channel in the XMPP room by opening the TCP connection to the first device; and
providing, by the processor and to the first device, the new text-based communications to the first device for review.

### Claim 9 (depends on 8)

The computer-based system of claim 8, wherein at least one of (i) the text-based communication channel between the first device and the processor uses the XMPP, or (ii) the text-based communication channel between the second device and the processor uses the XMPP.

### Claim 10 (depends on 8)

The computer-based system of claim 8, wherein the releasing of the first device is in response to the first device being unavailable.

### Claim 11 (depends on 8)

The computer-based system of claim 8, further comprising transmitting, by the processor, the context of the text-based communication channel to at least one of the first device or the second device.

### Claim 12 (depends on 8)

The computer-based system of claim 8, wherein first messages are delivered synchronously in response to both the first device and the second device being available, and second messages are delivered asynchronously when either one of the first device or the second device are unavailable.

### Claim 13 (depends on 8)

The computer-based system of claim 8, wherein the context comprises at least one of a text history, a timestamp, or a user name.

### Claim 14 (depends on 8)

The computer-based system of claim 8, wherein the processor communicates with the first device via at least one of an application or a web-based application running on the first device.

### Claim 15

An article of manufacture including a non-transitory, tangible computer readable storage medium having instructions stored thereon that, in response to execution by a processor, cause the processor to perform operations comprising:
receiving, by the processor, a first message transmitted over a network from a first device;
notifying, by the processor, a second device that the first device is waiting to communicate with the second device;
transmitting, by the processor and to the first device, a first invitation to join a text-based communication channel;
transmitting, by the processor and to the second device, a second invitation to join the text-based communication channel;
joining, by the processor, the first device to the text-based communication channel;
joining, by the processor, the second device to the text-based communication channel;
receiving, by the processor, text-based communications from the first device and the second device using an Xml Message and Presence Protocol (XMPP);
creating, by the processor, an XMPP room in response to receiving the text-based communications using the XMPP;
writing, by the processor, the text-based communications to the XMPP room;
retaining, by the processor, a context of the text-based communication channel;
releasing, by the processor, the first device from the text-based communication channel;
releasing, by the processor, the second device from the text-based communication channel;
retaining, by the processor, a first identifier for the first device and a second identifier for the second device;
receiving, by the processor and from the second device, new text-based communications;
re-initiatializing, by the processor and in response to receiving the new text-based communications, the text-based communication channel using the second identifier;
re-generating, by the processor, the context of the text-based communication channel using the first identifier and the second identifier, such that the context is available for review;
writing, by the processor, the new text-based communications to the XMPP room such that the context is available for review in the XMPP room;
extending, by the processor, XMPP classes for providing an extended XMPP;
providing, by the processor, contextual retention behavior using the extending of the XMPP classes;
providing, by the processor, room queuing behavior using the extending of the XMPP classes;
re-joining, by the processor, the second device to the text-based communication channel by opening a TCP connection to the second device;
transmitting, by the processor, a re-initializing message from the second device to the first device via the text-based communication channel;
determining, by the processor, whether the first device has logged out of or has logged into the text-based communication channel;
transmitting, by the processor and to the first device, a third invitation using a push notification to join the text-based communication channel, in response to the determining that the first device has logged out;
transmitting, by the processor and to the first device, a fourth invitation to join the text-based communication channel, in response to the determining that the first device has logged in;
receiving, by the processor and from the first device, a request to join the text-based communication channel;
re-joining, by the processor, the first device to the text-based communication channel in the XMPP room by opening the TCP connection to the first device; and
providing, by the processor and to the first device, the new text-based communications to the first device for review.

### Claim 16 (depends on 15)

The article of claim 15, wherein at least one of (i) the text-based communication channel between the first device and the processor uses the XMPP, or (ii) the text-based communication channel between the second device and the processor uses the XMPP.

### Claim 17 (depends on 15)

The article of claim 15, wherein the releasing of the first device is in response to the first device being unavailable.

### Claim 18 (depends on 15)

The article of claim 15, wherein first messages are delivered synchronously in response to both the first device and the second device being available, and second messages are delivered asynchronously when either one of the first device or the second device are unavailable.

### Claim 19 (depends on 15)

The article of claim 15, wherein the context comprises at least one of a text history, a timestamp, or a user name.

### Claim 20 (depends on 15)

The article of claim 15, wherein the processor communicates with the first device via at least one of an application or a web-based application running on the first device.
