IP Library Granted Patent US 10,728,719
Granted Patent B1
US 10,728,719 · App. 16/854,954 · Granted Jul 28, 2020

Techniques for combining segmented messages in a communications network

Inventors: Syed Mohsin Reza Zaidi (Cary, NC); Bryan C. Turner (Durham, NC); Alan Woodrow Bevier (Raleigh, NC); Jeremy Howard (Apex, NC)
Assignee: Bandwidth, Inc.
H04W4/14H04L67/10H04W4/20
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,728,719
App. No.
16/854,954
Granted
Jul 28, 2020
Kind
B1
Abstract

Techniques are disclosed for passing short message service (SMS) messages between sending and receiving SMS service providers over a network comprising a default data center and one or more alternative data centers. The default data center may receive message segments of an SMS message from the sending SMS provider into a local storage area of a concatenator comprising a local and a global storage area. The message segments may include segmentation information indicative of a number of message segments associated with the SMS message, routing information, the sending SMS provider, and the receiving SMS provider. When all the message segments have been received within a local timeout period, the default data center concatenates the message segments into a single SMS message and sends it to the receiving SMS service provider. When not all of the message segments have been received, the default data center moves the message segments to the global storage area sends the received message segments to an alternative data centers. The alternative data center receives all of the message segments from one or more data centers into its global storage area; concatenates them into a single SMS message; and sends the concatenated SMS message to the receiving SMS service provider. Other embodiments are disclosed.

Claims (98)

1. A method of passing short message service (SMS) messages between sending and receiving SMS service providers over a network comprising a default data center and one or more alternative data centers, comprising:

in the default data center:

receiving at least one message segment of a multi-segment SMS message from the sending SMS provider into a concatenator comprising a local and a global storage area and storing the at least one message segment in the local storage area of the concatenator, the at least one message segment of the multi-segment message comprising segmentation information indicative of a number of message segments associated with the SMS message, routing information associated with the message segment, the sending SMS provider, and the receiving SMS provider;

determining whether all of the message segments have been received, wherein:

based on a determination that all of the message segments have been received within a local timeout period:

concatenating the message segments into a single SMS message; and

sending the concatenated SMS message to the receiving SMS service provider; and

based on a determination that not all of the message segments have been received:

sending the received message segments to one of the alternative data centers;

in the alternative data center:

receiving all of the message segments from one or more data centers;

concatenating all of the message segments into a single SMS message; and

sending the concatenated SMS message to the receiving SMS service provider.

2. The method of claim 1 , further comprising, in the default data center:

determining whether the default data center is the data center best suited to handle the message segments based on network conditions.

3. The method of claim 2 , further comprising, based on a determination that the default data center is not the data center best suited to handle the message segments, in the default data center:

moving the received message segments to the global storage area of the concatenator;

sending the message segments to an alternative data center.

4. The method of claim 3 , further comprising, in the alternative data center:

receiving message segments and storing the message segments in a global storage area of a concatenator;

concatenating all the message segments into a single SMS message once all the message segments have been received within a global timeout period; and

sending the concatenated SMS message to the receiving SMS provider based on the routing information.

5. The method of claim 4 , further comprising, in the alternative data center:

sending a fail notification to the sending SMS provider when not all of the message segments have been received within the global time out period.

6. The method of claim 2 , further comprising, based on a determination that the default data center is not the data center best suited to handle the message segments and based on a determination that all of the message segments have not been received prior to the local timeout period, in the default data center:

moving the received message segments from the local storage area to the global storage area of the concatenator;

awaiting and storing in the global storage area any remaining message segments received from other data centers; and

concatenating all the message segments into a single SMS message once all the message segments have been received within the global timeout period; and

sending the concatenated SMS message to the receiving SMS provider based on the routing information.

7. The method of claim 6 , further comprising, in the default data center:

sending a fail notification to the sending SMS provider when not all of the message segments have been received within the global time out period.

8. A messaging system comprising:

a default of data center and one or more alternative data centers collectively configured to pass short message service (SMS) messages between sending and receiving SMS service providers, each data center comprising a non-transitory computer-readable medium and one or more processors in communication with the non-transitory computer-readable medium, the one or more processors configured to execute instructions stored in the non-transitory computer-readable medium to:

in the default data center:

receive at least one message segment of a multi-segment SMS message from the sending SMS provider into a concatenator comprising a local and a global storage area and storing the at least one message segment in the local storage area of the concatenator, the at least one message segment of the multi-segment message comprising segmentation information indicative of a number of message segments associated with the SMS message, routing information associated with the message segment, the sending SMS provider, and the receiving SMS provider;

determine whether all of the message segments have been received, wherein:

based on a determination that all of the message segments have been received within a local timeout period:

concatenate the message segments into a single SMS message; and

send the concatenated SMS message to the receiving SMS service provider; and

based on a determination that not all of the message segments have been received:

send the received message segments to one of the alternative data centers;

in the alternative data center:

receive all of the message segments from one or more data centers;

concatenate all of the message segments into a single SMS message; and

send the concatenated SMS message to the receiving SMS service provider.

9. The messaging system of claim 8 , wherein the default data center determines whether it is the data center best suited to handle the message segments based on network conditions.

10. The messaging system of claim 9 , wherein based on a determination that the default data center is not the data center best suited to handle the message segments, the default data center:

moves the received message segments to the global storage area of the concatenator;

sends the message segments to an alternative data center.

11. The messaging system of claim 10 , wherein the alternative data center:

receives message segments and stores the message segments in a global storage area of a concatenator;

concatenates all the message segments into a single SMS message once all the message segments have been received within a global timeout period; and

sends the concatenated SMS message to the receiving SMS provider based on the routing information.

12. The messaging system of claim 11 , wherein the alternative data center:

sends a fail notification to the sending SMS provider when not all of the message segments have been received within the global time out period.

13. The messaging system of claim 9 , wherein based on a determination that the default data center is the data center best suited to handle the message segments and based on a determination that all of the message segments have not been received prior to the local timeout period, the default data center:

moves the received message segments from the local storage area to the global storage area of the concatenator;

awaits and stores in the global storage area any remaining message segments received from other data centers; and

concatenates all the message segments into a single SMS message once all the message segments have been received within the global timeout period; and

sends the concatenated SMS message to the receiving SMS provider based on the routing information.

14. The messaging system of claim 13 , wherein the default data center:

sends a fail notification to the sending SMS provider when not all of the message segments have been received within the global time out period.

15. At least one non-transitory machine-readable medium comprising a set of instructions executable on at least one computing device to cause the at least one computing device to pass short message service (SMS) messages between sending and receiving SMS service providers, the at least one computing device configured to execute instructions stored in the non-transitory machine-readable medium to:

in a default data center:

receive at least one message segment of a multi-segment SMS message from the sending SMS provider into a concatenator comprising a local and a global storage area and storing the at least one message segment in the local storage area of the concatenator, the at least one message segment of the multi-segment message comprising segmentation information indicative of a number of message segments associated with the SMS message, routing information associated with the message segment, the sending SMS provider, and the receiving SMS provider;

determine whether all of the message segments have been received, wherein:

based on a determination that all of the message segments have been received within a local timeout period:

concatenate the message segments into a single SMS message; and

send the concatenated SMS message to the receiving SMS service provider; and

based on a determination that not all of the message segments have been received:

send the received message segments to one of an alternative data center;

in an alternative data center:

receive all of the message segments from one or more data centers;

concatenate all of the message segments into a single SMS message; and

send the concatenated SMS message to the receiving SMS service provider.

16. The at least one non-transitory machine-readable medium of claim 15 , the set of instructions executable on at least one computing device further configured to execute instructions stored in the non-transitory machine-readable medium to:

determine whether the default data center best suited to handle the message segments based on network conditions.

17. The at least one non-transitory machine-readable medium of claim 16 , the set of instructions executable on at least one computing device further configured to execute instructions stored in the non-transitory machine-readable medium to:

based on a determination that the default data center is not the data center best suited to handle the message segments:

move the received message segments to the global storage area of the concatenator;

send the message segments to an alternative data center.

18. The at least one non-transitory machine-readable medium of claim 17 , the set of instructions executable on at least one computing device further configured to execute instructions stored in the non-transitory machine-readable medium to:

in the alternative data center:

receive message segments and stores the message segments in a global storage area of a concatenator;

concatenate all the message segments into a single SMS message once all the message segments have been received within a global timeout period; and

send the concatenated SMS message to the receiving SMS provider based on the routing information.

19. The at least one non-transitory machine-readable medium of claim 18 , the set of instructions executable on at least one computing device further configured to execute instructions stored in the non-transitory machine-readable medium to:

in the alternative data center:

send a fail notification to the sending SMS provider when not all of the message segments have been received within the global time out period.

20. The at least one non-transitory machine-readable medium of claim 16 , the set of instructions executable on at least one computing device further configured to execute instructions stored in the non-transitory machine-readable medium to:

in the default data center and based on a determination that the default data center is the data center best suited to handle the message segments and based on a determination that all of the message segments have not been received prior to the local timeout period:

move the received message segments from the local storage area to the global storage area of the concatenator;

await and store in the global storage area any remaining message segments received from other data centers; and

concatenate all the message segments into a single SMS message once all the message segments have been received within the global timeout period; and

send the concatenated SMS message to the receiving SMS provider based on the routing information.

21. The at least one non-transitory machine-readable medium of claim 20 , the set of instructions executable on at least one computing device further configured to execute instructions stored in the non-transitory machine-readable medium to:

in the default data center:

send a fail notification to the sending SMS provider when not all of the message segments have been received within the global time out period.

Assignments (4)
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 Apr 22, 2020
From: ZAIDI, SYED MOHSIN REZA; TURNER, BRYAN; HOWARD, JEREMY; BEVIER, ALAN WOODROW
To: BANDWIDTH, INC.
Reel/Frame 052459/0812 →