IP Library › Granted Patent US 12,652,262
Granted Patent B2
US 12,652,262 · App. 18/528,403 · Granted Jun 9, 2026

Dynamic allocation of messaging resources in software as a service messaging platform

Inventors: Shayra Kamal (New York, NY); Eliot Flannery (Seattle, WA); Peter Janovsky (Pleasanton, CA); Sergio Leottau (Cartagena, CO); Jaime Soto (Doral, FL)
Assignee: Twilio Inc.
H04L51/214
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 12,652,262
App. No.
18/528,403
Granted
Jun 9, 2026
Kind
B2
Abstract

An example method of dynamic allocation of messaging resources in a software as a service (SaaS) messaging platform includes: generating a hierarchical data structure comprising a plurality of levels, wherein a first level of the plurality of levels comprises a first plurality of nodes, each node of the first plurality of nodes associated with a respective sub-account of a specified parent account of the messaging platform, and wherein a second level of the plurality of levels comprises a second plurality of nodes, each node of the second plurality of nodes associated with a respective level of service supported by the messaging platform; traversing the hierarchical data structure, by identifying, for each node of the hierarchical data structure, a respective plurality of child nodes; allocating, to each node of the plurality of child nodes, a respective share of a messaging resource quota associated with its parent node; associating, with each terminal node of a plurality of terminal nodes of the hierarchical data structure, a respective message queue of a plurality of message queues; allocating, to each message queue of the plurality of message queues, a respective messaging resource quota associated with a corresponding terminal node; receiving, from a user associated with a specified sub-account, a request to forward, to a specified destination, a message associated with a specified level of service; identifying, among the plurality of message queues, a message queue associated with the specified level of service and the specified sub-account; and queuing the message into the identified message queue.

Claims (56)

1 . A method, comprising:

generating, by a processing device of a messaging platform, a hierarchical data structure comprising a plurality of levels, wherein a first level of the plurality of levels comprises a first plurality of nodes, each node of the first plurality of nodes associated with a respective set of one or more messaging clients, wherein a second level of the plurality of levels comprises a second plurality of nodes, each node of the second plurality of nodes associated with a respective level of service supported by the messaging platform, and wherein a third level of the plurality of levels comprises a third plurality of nodes, each node of the third plurality of nodes associated with a respective destination;

traversing the hierarchical data structure, by identifying, for each node of the hierarchical data structure, a respective plurality of child nodes;

allocating, to each node of the plurality of child nodes, a respective share of a messaging resource quota associated with its parent node;

associating, with each terminal node of a plurality of terminal nodes of the hierarchical data structure, a respective message queue of a plurality of message queues;

allocating, to each message queue of the plurality of message queues, a respective messaging resource quota associated with a corresponding terminal node;

receiving, from a user associated with a specified set of messaging clients, a request to forward, to a specified destination, a message associated with a specified level of service;

identifying, among the plurality of message queues, a message queue associated with the specified level of service and the specified set of messaging clients; and

queuing the message into the identified message queue.

2 . The method of claim 1 , wherein the messaging resource quota is represented by a messaging rate.

3 . The method of claim 1 , further comprising:

retrieving, from each message queue of the plurality of message queues, a respective number of messages based on a messaging resource quota associated with the message queue; and

forwarding the retrieved messages to their respective destinations.

4 . The method of claim 1 , further comprising:

allocating, to each parent account of a plurality of parent accounts associated with the messaging platform, a respective account portion of the messaging resource quota associated with at least one of: a destination or a sender type.

5 . The method of claim 1 , wherein a fourth level of the plurality of levels comprises a fourth plurality of nodes, each node of the fourth plurality of nodes associated with a respective carrier utilized by the messaging platform.

6 . The method of claim 5 , wherein a fifth level of the plurality of levels comprises a fifth plurality of nodes, each node of the fifth plurality of nodes associated with a respective carrier tier.

7 . The method of claim 1 , wherein a fourth level of the plurality of levels comprises a fourth plurality of nodes, each node of the fourth plurality of nodes associated with a respective sender utilized by the messaging platform.

8 . The method of claim 1 , wherein allocating, to each node of the plurality of child nodes, a respective share of a messaging resource quota associated with its parent node is performed based on an even distribution of the messaging resource quota among the plurality of child nodes.

9 . The method of claim 1 , wherein allocating, to each node of the plurality of child nodes, a respective share of a messaging resource quota associated with its parent node is performed based on a weighted distribution of the messaging resource quota among the plurality of child nodes.

10 . The method of claim 1 , further comprising:

responsive to determining that a value of a performance metric associated with the identified queue fails a predefined threshold criterion, rejecting a subsequent message forwarding request originated by a user associated with the specified set of messaging clients.

11 . A system, comprising:

a memory; and

a processing device, coupled to the memory, the processing device configured to:

generate a hierarchical data structure comprising a plurality of levels, wherein a first level of the plurality of levels comprises a first plurality of nodes, each node of the first plurality of nodes associated with a respective sub-account of a specified parent account of a messaging platform, wherein a second level of the plurality of levels comprises a second plurality of nodes, each node of the second plurality of nodes associated with a respective level of service supported by the messaging platform, and wherein a third level of the plurality of levels comprises a third plurality of nodes, each node of the third plurality of nodes associated with a respective destination;

traverse the hierarchical data structure, by identifying, for each node of the hierarchical data structure, a respective plurality of child nodes;

allocate, to each node of the plurality of child nodes, a respective share of a messaging resource quota associated with its parent node;

associate, with each terminal node of a plurality of terminal nodes of the hierarchical data structure, a respective message queue of a plurality of message queues;

allocate, to each message queue of the plurality of message queues, a respective messaging resource quota associated with a corresponding terminal node;

receive, from a user associated with a specified sub-account, a request to forward, to a specified destination, a message associated with a specified level of service;

identify, among the plurality of message queues, a message queue associated with the specified level of service and the specified sub-account; and

queue the message into the identified message queue.

12 . The system of claim 11 , wherein the messaging resource quota is represented by a messaging rate.

13 . The system of claim 11 , wherein the processing device is further configured to:

retrieve, from each message queue of the plurality of message queues, a respective number of messages based on a messaging resource quota associated with the message queue; and

forward the retrieved messages to their respective destinations.

14 . The system of claim 11 , wherein allocating, to each node of the plurality of child nodes, a respective share of a messaging resource quota associated with its parent node is performed based on one of: an even distribution of the messaging resource quota among the plurality of child nodes or a weighted distribution of the messaging resource quota among the plurality of child nodes.

15 . The system of claim 11 , wherein the processing device is further configured to:

responsive to determining that a value of a performance metric associated with the identified queue fails a predefined threshold criterion, reject a subsequent message forwarding request originated by a user of the specified sub-account.

16 . A non-transitory computer-readable storage medium comprising executable instructions that, responsive to execution by a processing device, cause the processing device to:

generate a hierarchical data structure comprising a plurality of levels, wherein a first level of the plurality of levels comprises a first plurality of nodes, each node of the first plurality of nodes associated with a respective sub-account of a specified parent account of a messaging platform, wherein a second level of the plurality of levels comprises a second plurality of nodes, each node of the second plurality of nodes associated with a respective level of service supported by the messaging platform, and wherein a third level of the plurality of levels comprises a third plurality of nodes, each node of the third plurality of nodes associated with a respective destination;

traverse the hierarchical data structure, by identifying, for each node of the hierarchical data structure, a respective plurality of child nodes;

allocate, to each node of the plurality of child nodes, a respective share of a messaging resource quota associated with its parent node;

associate, with each terminal node of a plurality of terminal nodes of the hierarchical data structure, a respective message queue of a plurality of message queues;

allocate, to each message queue of the plurality of message queues, a respective messaging resource quota associated with a corresponding terminal node;

receive, from a user associated with a specified sub-account, a request to forward, to a specified destination, a message associated with a specified level of service;

identify, among the plurality of message queues, a message queue associated with the specified level of service and the specified sub-account; and

queue the message into the identified message queue.

17 . The non-transitory computer-readable storage medium of claim 16 , wherein the messaging resource quota is represented by a messaging rate.

18 . The non-transitory computer-readable storage medium of claim 16 , further comprising executable instructions that, responsive to execution by the processing device, cause the processing device to:

retrieve, from each message queue of the plurality of message queues, a respective number of messages based on a messaging resource quota associated with the message queue; and

forward the retrieved messages to their respective destinations.

19 . The non-transitory computer-readable storage medium of claim 16 , wherein allocating, to each node of the plurality of child nodes, a respective share of a messaging resource quota associated with its parent node is performed based on one of: an even distribution of the messaging resource quota among the plurality of child nodes or a weighted distribution of the messaging resource quota among the plurality of child nodes.

20 . The non-transitory computer-readable storage medium of claim 16 , further comprising executable instructions that, responsive to execution by the processing device, cause the processing device to:

responsive to determining that a value of a performance metric associated with the identified queue fails a predefined threshold criterion, reject a subsequent message forwarding request originated by a user of the specified sub-account.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 8, 2023
From: KAMAL, SHAYRA; FLANNERY, ELIOT; JANOVSKY, PETER; LEOTTAU, SERGIO; SOTO, JAIME
To: TWILIO INC.
Reel/Frame 065807/0347 →
Continuity (1)
Related Publication 20250184300A1 · Jun 5, 2025
References Cited (10)
US 7969884B1 · Venables · 2011 [cited by examiner]
US 10091122B2 · Dumitrescu · 2018 [cited by examiner]
US 20150149631A1 · Lissack · 2015 [cited by examiner]
US 20200409763A1 · Bischel · 2020 [cited by examiner]
US 20240007427A1 · Janovsky · 2024 [cited by examiner]
EP 3671480A1 · 2020 [cited by applicant]
Cisco. “QOS Hierarchical Queueing Framework”. pp. 1-16. Sep. 2015. (Year: 2015). [cited by examiner]
Aiyagari S., et al., “AMQP Advanced Message Queuing Protocol Protocol Specification,” A General Purpose Middleware Standard, Dec. 2006, Version 0-9, pp. 1-69. [cited by applicant]
Anonymous., “QoS: Hierarchical Queueing Frameworkd Configuration Guide, Cisco IOS Release 15M&T,” Cisco Systems Inc, Jan. 2013, 32 Pages. [cited by applicant]
International Search Report and Written Opinion for International Application No. PCT/US2024/058297, mailed Mar. 6, 2025, 33 Pages. [cited by applicant]