IP Library Granted Patent US 10,554,430
Granted Patent B2
US 10,554,430 · App. 15/820,339 · Granted Feb 4, 2020

Systems and methods for providing adaptive flow control in a notification architecture

Inventors: Eric Golin (Newton, MA); Jia Xi (Lexington, MA); Yuanjin Xu (Burlington, MA)
Assignee: Everbridge, Inc.
H04L12/1895H04L47/24H04L47/30H04L49/15
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,554,430
App. No.
15/820,339
Granted
Feb 4, 2020
Kind
B2
Abstract

Systems, methods, and computer-readable storage media for providing a notification system are disclosed. The notification system may be configured to select one or more notification requests from each of a plurality of notification request queues, and generate a plurality of attempts for each of the one or more selected notification requests. The attempts may be assigned to one of a first plurality of attempt queues, and flow control logic may be executed against the first plurality of attempt queues to dynamically select attempts for transmission from among the first plurality of attempt queues. Selected attempts are inserted into one of a second plurality of attempt queues, and a plurality of connectors may be configured to select attempts from the second plurality of attempts queues for transmission via a communication channel.

Claims (58)

1. A method comprising:

establishing, by a notification system, a plurality of notification request queues, wherein each notification request queue of the plurality of notification request queues is configured to store one or more received notification requests, and wherein each received notification request comprises message content and recipient information;

executing, by the notification system, a set of rules to the plurality of notification request queues to select one or more notification requests from each of the plurality of notification request queues;

generating, by the notification system, a plurality of attempts for each of the one or more notification requests selected from each of the plurality of notification request queues, each attempt of the plurality of attempts comprising a message for transmission to a recipient identified by recipient information included in a corresponding notification request;

assigning, by the notification system, the plurality of attempts to one of a first plurality of attempt queues;

executing, by the notification system, flow control logic against the first plurality of attempt queues to:

dynamically select attempts for transmission from among each attempt queue of the first plurality of attempt queues, and insert the attempts selected for transmission from among each attempt queue of the first plurality of attempt queues into one of a second plurality of attempt queues, wherein each attempt queue of the second plurality of attempt queues is associated with one of a plurality of connectors, and wherein each connector of the plurality of connectors is configured to communicatively couple the notification system to a plurality of communication networks; and

transmitting, by the notification system, attempts corresponding to each of the one or more notification requests over one of the plurality of communication networks via the plurality of connectors.

2. The method of claim 1 , wherein establishing the plurality of notification request queues comprises generating a notification request queue for each of a plurality of notification request priority levels, the method comprising:

determining, by the notification system, a priority level associated with each received notification request; and

assigning, by the notification system, each received notification request to a notification request queue corresponding to its priority level.

3. The method of claim 1 , wherein establishing the plurality of notification request queues comprises generating a plurality of notification request queues for each of a plurality of notification request priority levels, wherein a particular plurality of notification request queues corresponding to a particular priority level of the plurality of notification request priority levels comprises a notification request queue for each of a plurality of notification request sizes, the method comprising:

determining, by the notification system, a priority level and a size associated with each received notification request; and

assigning, by the notification system, each received notification request to a notification request queue corresponding to its priority level and size.

4. The method of claim 1 , further comprising dynamically determining, by the notification system, a size of each notification, wherein the size of each notification is dynamically determined by:

tracking a count of attempts generated for each notification request;

determining whether the count of attempts generated for a particular notification request exceeds a size threshold; and

classifying the size of each notification based on whether the corresponding count of attempts exceeds the size threshold.

5. The method of claim 4 , further comprising dynamically establishing, by the notification system, at least one additional attempt queue in response to determining that the count of attempts for at least one notification request exceeds the size threshold, wherein attempts generated for the at least one notification request are assigned to the at least one additional attempt queue.

6. The method of claim 1 , further comprising:

receiving, by the notification system, responses associated with attempts of a broadcast corresponding to a particular notification request; and

in response to receiving the responses, determining whether to cancel transmission of one or more additional attempts of the broadcast, wherein the responses are received in connection with transmission of the attempts of the broadcast using a first connector, and wherein the one or more additional attempts of the broadcast correspond to attempts that are scheduled to be transmitted using one or more connectors of the plurality of connectors other than the first connector.

7. The method of claim 1 , further comprising:

monitoring processing of the notification requests selected from the plurality of notification request queues to identify a load at one or more components of the notification system involved in the processing;

determining whether a load of the one or more components involved in the processing exceeds a load threshold; and

implementing backpressure signaling to reduce a load of at least one component in response to determining that the load of the at least one component exceeds the load threshold.

8. The method of claim 1 , wherein the plurality of attempts comprise at least one of an e-mail message, a short messaging service (SMS) message, a multimedia messaging service (MMS) message, and an automated voice response (AVR) message.

9. The method of claim 1 , wherein the plurality of connectors comprise communication devices configured to transmit data according to one or more communication protocols, the one or more communication protocols including at least one of a cellular communication protocol, a transmit control protocol/Internet protocol (TCP/IP), an Ethernet protocol, and a voice over Internet protocol (VoIP).

10. The method of claim 1 , wherein the plurality of communication networks include at least one of a cellular communication network, the Internet, and a public switched telephone network (PSTN).

11. The method of claim 1 , wherein the dynamic selection of attempts for transmission from among each attempt queue of the first plurality of attempt queues is based on a set of weights that includes weighting factors associated with at least one of different priority levels and a notification request size.

12. The method of claim 1 , wherein the first plurality of attempt queues includes a different attempt queue for each of a plurality of different priority levels, and wherein each attempt is assigned to a respective one of the first plurality of attempt queues based on a priority level of a notification request from which they are generated.

13. A non-transitory computer-readable storage medium storing instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising:

establishing, by a notification system, a plurality of notification request queues, wherein each notification request queue of the plurality of notification request queues is configured to store one or more received notification requests, and wherein each received notification request comprises message content and recipient information;

executing, by the notification system, a set of rules to the plurality of notification request queues to select one or more notification requests from each of the plurality of notification request queues, wherein the set of rules comprises a set of weights, and wherein the set of rules are configured to select the one or more notification requests from each of the plurality of notification request queues in accordance with the set of weights;

generating, by the notification system, a plurality of attempts for each of the one or more notification requests selected from each of the plurality of notification request queues, each attempt of the plurality of attempts comprising a message for transmission to a recipient identified by recipient information included in a corresponding notification request;

assigning, by the notification system, the plurality of attempts to one of a first plurality of attempt queues;

executing, by the notification system, flow control logic against the first plurality of attempt queues to generate one or more broadcasts, each of the one or more broadcasts comprising one or more attempts generated from a corresponding notification request, wherein the flow control logic is configured to:

dynamically select attempts for transmission from among each attempt queue of the first plurality of attempt queues; and

insert the attempts selected for transmission from among each attempt queue of the first plurality of attempt queues into one of a second plurality of attempt queues, wherein each attempt queue of the second plurality of attempt queues is associated with one of a plurality of connectors, and wherein each connector of the plurality of connectors is configured to communicatively couple the notification system to a plurality of communication networks; and

transmitting, by the notification system, attempts corresponding to each of the one or more broadcasts over one of the plurality of communication networks via the plurality of connectors.

14. The non-transitory computer-readable storage medium of claim 13 , wherein the dynamic selection of attempts for transmission from among each attempt queue of the first plurality of attempt queues is based on a set of weights that includes weighting factors associated with at least one of different priority levels and a notification request size.

15. The non-transitory computer-readable storage medium of claim 13 , wherein the first plurality of attempt queues includes a different attempt queue for each of a plurality of different priority levels, and wherein each attempt is assigned to a respective one of the first plurality of attempt queues based on a priority level of a notification request from which they are generated.

16. The non-transitory computer-readable storage medium of claim 13 , wherein the operations include applying call throttling rules to a set of attempts to control a rate at which the set of attempts are transmitted.

17. A notification system comprising:

a plurality of connectors, wherein each connector of the plurality of connectors is communicatively coupled to one of a plurality of communication networks;

a plurality of notification request queues, wherein each notification request queue of the plurality of notification request queues is configured to store one or more received notification requests, and wherein each received notification request comprises message content and recipient information;

a first plurality of attempt queues;

a second plurality of attempt queues, wherein each attempt queue of the second plurality of attempt queues is associated with one of the plurality of connectors;

a memory; and

at least one processor configured to:

execute a set of rules to the plurality of notification request queues to select one or more notification requests from each of the plurality of notification request queues;

generate a plurality of attempts for each of the one or more notification requests selected from each of the plurality of notification request queues, each attempt of the plurality of attempts comprising a message for transmission to a recipient identified by recipient information included in a corresponding notification request;

assign the plurality of attempts to one of the first plurality of attempt queues; and

execute flow control logic against the first plurality of attempt queues to dynamically select attempts for transmission from among each attempt queue of the first plurality of attempt queues, and insert the attempts selected for transmission from among each attempt queue of the first plurality of attempt queues into one of the second plurality of attempt queues,

wherein the plurality of connectors are configured to transmit attempts selected from a corresponding one of the second plurality of attempt queues.

18. The notification system of claim 17 , wherein the dynamic selection of attempts for transmission from among each attempt queue of the first plurality of attempt queues is based on a set of weights that includes weighting factors associated with at least one of different priority levels and a notification request size.

19. The notification system of claim 17 , wherein the first plurality of attempt queues includes a different attempt queue for each of a plurality of different priority levels, and wherein each attempt is assigned to a respective one of the first plurality of attempt queues based on a priority level of a notification request from which they are generated.

20. The notification system of claim 17 , wherein the at least one processor is further configures to apply call throttling rules to a set of attempts to control a rate at which the set of attempts are transmitted.

Assignments (3)
SECURITY INTEREST Recorded Jul 2, 2024
From: EVERBRIDGE, INC.
To: MS PRIVATE CREDIT ADMINISTRATIVE SERVICES LLC
Reel/Frame 067896/0475 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 17, 2019
From: XI, JIA; XU, YUANJIN
To: EVERBRIDGE, INC.
Reel/Frame 049779/0960 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 4, 2017
From: GOLIN, ERIC
To: EVERBRIDGE, INC.
Reel/Frame 044292/0404 →
Continuity (3)
Provisional Application 62425037 · Nov 21, 2016
Provisional Application 62425033 · Nov 21, 2016
Related Publication 20180145842A1 · May 24, 2018