IP Library Granted Patent US 10,939,256
Granted Patent B1
US 10,939,256 · App. 16/935,273 · Granted Mar 2, 2021

Techniques for routing messages in a communications network

Inventors: Roman Shcherbakov (Chapel Hill, NC); Emma Bradley (Denver, CO); Matt Garcia (Rochester, NY); David Ress (Cary, NC)
Assignee: Bandwidth, Inc.
H04W4/14H04L51/14H04L67/04H04W88/184
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,939,256
App. No.
16/935,273
Granted
Mar 2, 2021
Kind
B1
Abstract

A message delivery network may receive a message from a sending message service provider. The message delivery network may identify an end user carrier servicing the end user device for the message. The message delivery network may retrieve a pre-determined rank ordered list of message routes from the message delivery network to the end user carrier. The message delivery network may determine whether each message route is currently unavailable or demonstrating poor deliverability. The message delivery network may de-prioritize the message routes that are demonstrating poor deliverability. The message delivery network may update the rank ordered list of message routes based on the de-prioritized message routes. The message delivery network may attach the updated rank ordered list of message routes to the message. The message delivery network may forward the message to a gateway within the message delivery network. The gateway may deliver the message using the highest ranked message route. Other embodiments are described herein.

Claims (110)

1. A method of routing messages to an end user device, comprising:

receiving a message into a message delivery network from a sending message service provider;

identifying an end user carrier servicing the end user device for the message;

retrieving a pre-determined rank ordered list of message routes from the message delivery network to the end user carrier;

determining whether each message route is currently unavailable or demonstrating poor deliverability;

de-prioritizing the message routes that are demonstrating poor deliverability;

updating the rank ordered list of message routes based on the de-prioritized message routes;

attaching the updated rank ordered list of message routes to the message;

forwarding the message to a gateway within the message delivery network; and

delivering the message using the highest ranked message route.

2. The method of claim 1 , the message comprising a short message service (SMS) message.

3. The method of claim 1 , the message comprising a multi-media message service (MMS) message.

4. The method of claim 1 , further comprising:

determining whether the message delivery was successful based on an acknowledgment notification;

when the message delivery was not successful, determining whether all the message routes on the rank ordered list have been attempted; and

when all the message routes on the rank ordered list have not been attempted, delivering the message using the next highest ranked message route.

5. The method of claim 4 , further comprising:

determining whether a timeout condition has occurred once all the message routes on the rank ordered list have been attempted;

returning a message indicative that the message was not delivered to the sending service provider once the timeout condition has occurred.

6. The method of claim 5 , further comprising:

restarting delivery of the message according to the rank ordered list when the timeout condition has not occurred.

7. The method of claim 1 , wherein creating the pre-determined rank ordered list comprises:

determining all possible message routes to the end user carrier;

retrieving a cost to send the message for each possible message route;

retrieving historic deliverability reliability of message routes;

retrieving any minimum commitments to use message routes;

weighting the cost, reliability, and minimum commitment data according to a predetermined set of weighting factors; and

ranking the message routes according to the weighting factors.

8. The method of claim 1 , wherein determining whether each message route is demonstrating poor deliverability comprises:

initializing the current message route status to good;

setting the current message route status to poor when bind events are indicative of poor deliverability;

setting the current message route status to poor when message events are indicative of poor deliverability; and

repeating until all message routes have been checked.

9. The method of claim 8 , wherein de-prioritizing the message routes that are demonstrating poor deliverability comprises:

determining a degree of poor deliverability for each message route having a message route status of poor; and

editing the rank ordered list by re-ranking the message routes placing those with the poorest degree of deliverability to the bottom of the list.

10. A message delivery network, comprising:

one or more memories; and

one or more processors communicatively coupled to the one or more memories, configured to:

receive a message into a message delivery network from a sending message service provider;

identify an end user carrier servicing the end user device for the message;

retrieve a pre-determined rank ordered list of message routes from the message delivery network to the end user carrier;

determine whether each message route is currently unavailable or demonstrating poor deliverability;

de-prioritize the message routes that are demonstrating poor deliverability;

update the rank ordered list of message routes based on the de-prioritized message routes;

attach the updated rank ordered list of message routes to the message;

forward the message to a gateway within the message delivery network; and

deliver the message using the highest ranked message route.

11. The message delivery network of claim 10 , the message comprising a short message service (SMS) message.

12. The message delivery network of claim 10 , the message comprising a multi-media message service (MMS) message.

13. The message delivery network of claim 10 , wherein the one or more processors are further configured to:

determine whether the message delivery was successful based on an acknowledgment notification;

when the message delivery was not successful, determine whether all the message routes on the rank ordered list have been attempted; and

when all the message routes on the rank ordered list have not been attempted, deliver the message using the next highest ranked message route.

14. The message delivery network of 13 , wherein the one or more processors are further configured to:

determine whether a timeout condition has occurred once all the message routes on the rank ordered list have been attempted; and

return a message indicative that the message was not delivered to the sending service provider once the timeout condition has occurred.

15. The message delivery network of claim 14 , wherein the one or more processors are further configured to:

restart delivery of the message according to the rank ordered list when the timeout condition has not occurred.

16. The message delivery network of claim 10 , wherein the one or more processors, when creating the pre-determined rank ordered list, are configured to:

determine all possible message routes to the end user carrier;

retrieve a cost to send the message for each possible message route;

retrieve historic deliverability reliability of message routes;

retrieve any minimum commitments to use message routes;

weight the cost, reliability, and minimum commitment data according to a predetermined set of weighting factors; and

rank the message routes according to the weighting factors.

17. The message delivery network of claim 10 , wherein the one or more processors, when determining whether each message route is demonstrating poor deliverability, are configured to:

initialize the current message route status to good;

set the current message route status to poor when bind events are indicative of poor deliverability;

set the current message route status to poor when message events are indicative of poor deliverability; and

repeat until all message routes have been checked.

18. The message delivery network of claim 17 , wherein the one or more processors, when de-prioritizing the message routes that are demonstrating poor deliverability, are configured to:

determine a degree of poor deliverability for each message route having a message route status of poor; and

edit the rank ordered list by re-ranking the message routes placing those with the poorest degree of deliverability to the bottom of the list.

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

receive a message into a message delivery network from a sending message service provider;

identify an end user carrier servicing the end user device for the message;

retrieve a pre-determined rank ordered list of message routes from the message delivery network to the end user carrier;

determine whether each message route is currently unavailable or demonstrating poor deliverability;

de-prioritize the message routes that are demonstrating poor deliverability;

update the rank ordered list of message routes based on the de-prioritized message routes;

attach the updated rank ordered list of message routes to the message;

forward the message to a gateway within the message delivery network; and

deliver the message using the highest ranked message route.

20. The non-transitory computer-readable medium of claim 19 , the message comprising a short message service (SMS) message.

21. The non-transitory computer-readable medium of claim 19 , the message comprising a multi-media message service (MMS) message.

22. The non-transitory computer-readable medium of claim 19 , wherein the one or more instructions, when executed by the one or more processors, further cause the one or more processors to:

determine whether the message delivery was successful based on an acknowledgment notification;

when the message delivery was not successful, determine whether all the message routes on the rank ordered list have been attempted; and

when all the message routes on the rank ordered list have not been attempted, deliver the message using the next highest ranked message route.

23. The non-transitory computer-readable medium of claim 22 , wherein the one or more instructions, when executed by the one or more processors, further cause the one or more processors to:

determine whether a timeout condition has occurred once all the message routes on the rank ordered list have been attempted; and

return a message indicative that the message was not delivered to the sending service provider once the timeout condition has occurred.

24. The non-transitory computer-readable medium of claim 23 , wherein the one or more instructions, when executed by the one or more processors, further cause the one or more processors to:

restart delivery of the message according to the rank ordered list when the timeout condition has not occurred.

25. The non-transitory computer-readable medium of claim 19 , wherein the one or more instructions that cause the one or more processors to create the pre-determined rank ordered list, cause the one or more processors to:

determine all possible message routes to the end user carrier;

retrieve a cost to send the message for each possible message route;

retrieve historic deliverability reliability of message routes;

retrieve any minimum commitments to use message routes;

weight the cost, reliability, and minimum commitment data according to a predetermined set of weighting factors; and

rank the message routes according to the weighting factors.

26. The non-transitory computer-readable medium of claim 19 , wherein the one or more instructions that cause the one or more processors to determine whether each message route is demonstrating poor deliverability, cause the one or more processors to:

initialize the current message route status to good;

set the current message route status to poor when bind events are indicative of poor deliverability;

set the current message route status to poor when message events are indicative of poor deliverability; and

repeat until all message routes have been checked.

27. The non-transitory computer-readable medium of claim 26 , wherein the one or more instructions, that cause the one or more processors to de-prioritizing the message routes that are demonstrating poor deliverability, cause the one or more processors to:

determine a degree of poor deliverability for each message route having a message route status of poor; and

edit the rank ordered list by re-ranking the message routes placing those with the poorest degree of deliverability to the bottom of the list.

Assignments (5)
SECURITY INTEREST Recorded Sep 6, 2023
From: BANDWIDTH INC.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 064807/0346 →
RELEASE OF SECURITY INTEREST Recorded Mar 15, 2023
From: SILICON VALLEY BRIDGE BANK, N.A. (SUCCESSOR TO SILICON VALLEY BANK), AS AGENT
To: BANDWIDTH INC.
Reel/Frame 062993/0767 →
SECURITY INTEREST Recorded Jun 6, 2022
From: BANDWIDTH INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
Reel/Frame 060112/0638 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 3, 2020
From: RESS, DAVID
To: BANDWIDTH, INC.
Reel/Frame 053383/0523 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 22, 2020
From: SHCHERBAKOV, ROMAN; GARCIA, MATTHEW; BRADLEY, EMMA
To: BANDWIDTH, INC.
Reel/Frame 053274/0828 →
Cited By (2)
US 12,236,462 US 12,452,144