System and method for transmitting SMS message using API, and program therefor
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Filing Date
- 2023-07-05
- Publication Date
- 2026-03-19
AI Technical Summary
Existing SMS gateway systems face fairness issues among users due to the upper limit on message sending rates, leading to impaired service when multiple users or companies attempt to send large volumes of SMS messages simultaneously, causing delays and unfair access.
A system and method that utilize an API to manage SMS message sending through an SMS gateway by implementing a queue-based flow control mechanism, where API servers assign message IDs and control servers regulate the message transmission requests based on predetermined thresholds, ensuring that messages are sent within defined flow rates to prevent overload and maintain fairness among users.
This approach ensures fair and timely delivery of SMS messages by controlling the flow rate of message sending requests, preventing bottlenecks and ensuring that all users can send messages without excessive delays, thereby maintaining a balanced service for all users.
Abstract
Description
System, method and program for sending SMS messages using API
[0001] The present invention relates to a system, method, and program for sending SMS (Short Message Service) messages using an API (Application Programming Interface), and more particularly to a system, method, and program for sending SMS messages using an API via an SMS gateway that communicates with an SMS center (SMSC) of a mobile network operator (MNO).
[0002] SMS is known as a service for sending messages using telephone numbers. SMS messages (also called "SMS messages") can be sent and received between mobile phones, or they can be sent and received using an SMS gateway service that provides an API for sending messages over an IP network. When the API is called, the SMSC, which is the equipment owned by the MNO for sending SMS, communicates with the equipment of the operator providing the SMS gateway service, and the message is sent to the destination telephone number via the MNO.
[0003] SMS messages are said to have a high open rate and are used by companies for a variety of activities, primarily sales.
[0004] When using SMS in business activities, there are times when a company needs to send multiple messages with the same, similar, or related content for a specific purpose. However, since SMS gateway service providers have a limit on the number of messages that can be sent per unit of time, for example, if the limit is 30 messages per second and a company attempts to send messages to 10,000 people at once, other companies will be unable to send messages for more than five minutes until the messages are completed, thereby compromising fairness among users. Similar problems can also occur between multiple users within the same company.
[0005] The present invention was made in consideration of these problems, and its purpose is to reduce unfairness among users in a system, method, and program for sending SMS messages using an API.
[0006] In order to achieve this object, a first aspect of the present invention is a method for sending an SMS message using an API via an SMS gateway that communicates with an SMSC of an MNO, the method comprising the steps of: an API server receiving a first call to the API from a first user terminal; the API server assigning a message ID for each of one or more destinations determined by the first call; the API server adding a first message sending request to a first queue connected to the API server, the first message sending request including at least a portion of the assigned message ID or message IDs and a first identifier of a first user of the first user terminal or a first company to which the first user belongs; and a step of adding a first message sending request to a first queue connected to the API server, the first identifier being received within a first period. and if the number of first message transmission requests including at least one of the first and second messages has not reached a first upper limit when compared with a first flow rate threshold (a positive number of 1 or more), a first control server connected to the first queue adds second message transmission requests including at least one of the first and second messages to a second queue connected to the first control server, and if the first upper limit has been reached, the first control server does not add the second message transmission requests to the second queue until a first predetermined condition is satisfied, and the second control server connected to the second queue sends to the SMS gateway a request to send an SMS message in accordance with an IP protocol corresponding to the second message generation request.
[0007] A second aspect of the present invention is the method of the first aspect, wherein the call includes one or more message bodies.
[0008] Furthermore, a third aspect of the present invention is the method of the first aspect, further comprising the step of: if the number of calls to the API received within a given period, including a campaign ID determined by the first call, is compared with a call threshold (a positive number greater than or equal to 1) and does not reach the call limit, the API server adds the first message transmission request to the first queue; and if the call limit has been reached, the API server returns an error response to the first user terminal.
[0009] A fourth aspect of the present invention is the method of the third aspect, wherein the first flow rate threshold is greater than the call threshold.
[0010] A fifth aspect of the present invention is the method of the first aspect, wherein if the number of second message generation requests received within a second period of time does not reach a second upper limit when compared with a second flow rate threshold (a positive number greater than or equal to 1), the second control server sends a request to the SMS gateway to send the SMS message.
[0011] A sixth aspect of the present invention is a method of the fifth aspect, wherein the second message transmission request includes a destination corresponding to a message ID included in the second message transmission request, and the second queue is selected by the first control server in accordance with the destination included in the second message transmission request.
[0012] A seventh aspect of the present invention is the method of the sixth aspect, wherein the first flow rate threshold is a value defined for the selected second queue or the second control server or the SMS gateway associated therewith.
[0013] An eighth aspect of the present invention is a method of the first or sixth aspect, further comprising the steps of: the API server receiving a second call to the API from a second user terminal, the second call not including a valid campaign specification and including a single destination; the API server assigning a single message ID to the second call; and the first control server adding a second message send request including the single destination and the single message ID to a one-off queue connected to the second control server.
[0014] A ninth aspect of the present invention is the method of the sixth aspect, wherein the second flow rate threshold is a value defined for the selected second queue or the second control server or the SMS gateway associated therewith.
[0015] A tenth aspect of the present invention is the method of the ninth aspect, wherein the first flow rate threshold is smaller than the second flow rate threshold.
[0016] An eleventh aspect of the present invention is a program for causing a system including an API server and a first control server to execute a method for sending an SMS message using an API via an SMS gateway that communicates with an SMSC of an MNO, the method including the steps of: receiving a first call of the API from a first user terminal by the API server; assigning a message ID for each of one or more destinations determined by the first call by the API server; adding a first message sending request to a first queue connected to the API server, the first message sending request including at least a part of the assigned message ID or message IDs and a first identifier of a first user of the first user terminal or a first company to which the first user belongs; and if the number of first message transmission requests including the first identifier received within a period of time does not reach a first upper limit when compared with a first flow rate threshold (a positive number greater than or equal to 1), a first control server connected to the first queue adds second message transmission requests including at least a portion of the first message transmission requests to a second queue connected to the first control server, and if the first upper limit has been reached, the first control server does not add the second message transmission requests to the second queue until a first predetermined condition is satisfied, and the second control server connected to the second queue sends to the SMS gateway a request to transmit an SMS message according to an IP protocol corresponding to the second message generation request.
[0017] A twelfth aspect of the present invention is a system comprising an API server and a first control server for sending an SMS message via an SMS gateway that communicates with an SMSC of an MNO using an API, wherein the API server receives a first call of the API from a first user terminal, assigns a message ID for each of one or more destinations determined by the first call, adds a first message sending request including at least a part of the assigned one or more message IDs and a first identifier of a first user of the first user terminal or a first company to which the first user belongs to, to a first queue connected to the API server, and and if the number of first message transmission requests including the first identifier received within a first period is compared with a first flow rate threshold (a positive number greater than or equal to 1) and does not reach a first upper limit, adds second message transmission requests including at least the portion included in the first message transmission requests to a second queue connected to the first control server, and if the first upper limit has been reached, does not add the second message transmission requests to the second queue until a first predetermined condition is satisfied, and the second control server connected to the second queue transmits to the SMS gateway a request to transmit an SMS message according to an IP protocol corresponding to the second message generation request.
[0018] According to one aspect of the present invention, in order to send an SMS message using an API via an SMS gateway that communicates with an MNO's SMSC, the API server assigns a message ID to each of one or more destinations determined by a call to the API received from a user terminal, and adds a first message sending request that includes at least a portion of the assigned message ID or message IDs and an identifier of the user of the user terminal or the company to which the user belongs to to a first queue connected to the API server.A first control server connected to the first queue then performs flow control on a per-identifier basis, thereby ensuring fairness in the time required to send SMS messages.
[0019] Other features and advantages of the present invention will become apparent from the following description taken in conjunction with the accompanying drawings, in which the same or similar elements are designated by the same reference numerals.
[0020] The accompanying drawings, which are incorporated into and constitute a part of the specification, illustrate embodiments of the present invention and, together with the description, serve to explain the principles of the present invention. Figure 1 illustrates a system for sending SMS messages using an API according to one embodiment of the present invention. Figure 2 illustrates a method flow for sending SMS messages using an API according to one embodiment of the present invention.
[0021] Hereinafter, the embodiments will be described in detail with reference to the accompanying drawings. Note that the following embodiments do not limit the scope of the invention as claimed, and not all combinations of features described in the embodiments are necessarily essential to the invention. Two or more of the features described in the embodiments may be combined in any desired manner. Furthermore, the same reference numerals are used to designate identical or similar components, and redundant descriptions will be omitted.
[0022] Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
[0023] Figure 1 shows a system according to one embodiment of the present invention. System 100 is a system for sending SMS messages using an API, receives an API call from a user terminal 110 used by a user who wants to send an SMS message, and sends an SMS message sending request to SMS gateway 120-1.
[0024] Here, the SMS gateway 120-1 is a device that communicates with the system 100 using the IP protocol and with the MNO's SMSC (not shown) using the SMPP protocol, MAP (Mobile Application Part) protocol, or the like. More specifically, as an example, the SMS gateway 120-1 includes an SMPP (Short Message Peer-to-Peer) server connected to the SMSC and an SMPP client that communicates with the SMPP server, and the system 100 issues message transmission requests to the SMPP client. While the SMPP client may also be included as part of the system 100, this specification will primarily describe an example in which the system 100 does not include an SMPP client. Furthermore, as described below, there may be multiple SMS gateways, any one of which may be selected as the destination of a message transmission request. In addition to the first SMS gateway 120-1, FIG. 1 also shows a second SMS gateway 120-2. Hereinafter, for simplicity's sake, the first SMS gateway 120-1 may be simply referred to as the "SMS gateway 120."
[0025] The system 100 may include an API server 101 that receives an API call and assigns a message ID for each of one or more destinations included in the call; a first control server 103 that receives a first message transmission request generated by the API server 101 and added to a first queue 102-1, and selects an SMS gateway 120 as necessary for each destination included in the first message transmission request; and a second control server 105 that receives, for each message ID, a second message transmission request generated by the first control server 103 and added to a second queue 104-1, and transmits a transmission request to the SMS gateway 120 in accordance with the IP protocol corresponding to the second message transmission request.
[0026] For a particular purpose, the API call may or may not include a campaign ID that identifies a "campaign" for sending messages of the same, similar, or related content to multiple destinations, and if it does not, may add the request to the first one-off queue 102-2 and the second one-off queue 104-2, as described below.
[0027] The API server 101 includes a communication unit 101-1 such as a communication interface, a processing unit 101-2 such as a processor or CPU, and a storage unit 101-3 including a storage device or storage medium such as a memory or hard disk, and can be configured by executing programs for performing each process. The API server 101 may include one or more servers. The program may include one or more programs, and may be recorded on a computer-readable storage medium to form a non-transitory program product. The program may be stored in a storage device or storage medium such as the storage unit 101-3 or a database accessible from the API server 101 via an IP network, and can be executed by the processing unit 101-2. Data described below as being stored in the storage unit 101-3 may actually be stored in the database, and vice versa.
[0028] 2 shows the flow of a method for providing an API for sending SMS messages according to one embodiment of the present invention. First, the API server 101 receives a call to the API it provides from the user terminal 110 (S201). Upon receiving the call, the API server 101 assigns a message ID to each of one or more destinations determined by the call, associates it with the corresponding destination, and stores it in the storage unit 101-3 (S202).
[0029] The call may include one or more destinations, one or more message bodies, an identifier of the user or the company to which the user belongs or authentication information associated therewith, and a campaign ID. If multiple destinations to which messages are sent in a campaign identified by the campaign ID are associated and stored in API server 101, API server 101 can identify those destinations based on the campaign ID included in the call, even if those destinations are not included in the call. If the message body is not the same for each destination, a message body will be prepared for each destination.
[0030] As an example, an API call can be written as follows. In this example, a different endpoint will be used for each campaign ID represented by campaignId. POST https: / / api.soracom.io / v1 / sms_a2p / campaigns / {campaignId} / send_sms { "to": ["+819011111111", "+819022222222", (omitted)], "payload": "Your authentication code is 1234", "encoding": "ucs2", "callback": "https: / / callback-domain / sms_result"}
[0031] If a campaign ID is included in the call, the API server 101 stores in the storage unit 101-3 a correspondence between one or more campaign IDs and the number of calls containing each campaign ID received within a given period. Each time a new call is received, the API server 101 increments the number of calls corresponding to the campaign ID included in the call (S203). The API server 101 may return a success response to the user terminal 110 if the number of calls corresponding to the campaign ID included in the new call is less than or equal to a call threshold (a positive number greater than or equal to 1). If the number of calls is greater than or equal to the call threshold, the API server 101 may return an error response to the user terminal 110. More generally, if the number of calls containing the campaign ID determined by the new call reaches the call threshold and reaches the call upper limit, the API server 101 may reject the call and return an error response to the user terminal 110. If the call upper limit has not been reached, the API server 101 may accept the call and return a success response to the user terminal 110 (S204). The determination of whether or not to accept the API call may be made after or before incrementing the number of calls.
[0032] The number of calls received within a given period of time maintained by the correspondence may be calculated and updated over time, or may be counted down to a given remaining time when a call threshold is exceeded and reset when the given remaining time reaches 0 seconds. An example of the call threshold is 600 calls within a given period of 60 seconds, and an example of the given remaining time is 35 seconds.
[0033] Next, the API server 101 adds a first message transmission request including at least a portion of the assigned message ID or IDs and an identifier of the user of the user terminal 110 or the company to which the user belongs to, to a first queue 102-1 connected to the API server 101. The added first message transmission request is received by the first control server 103, which periodically or intermittently accesses the first queue 102-1 to acquire data (S205).
[0034] The first message transmission request received by the first control server 103 may include one or more destinations, one or more message IDs, one or more message bodies, and an identifier of the user or the company to which the user belongs. If the message bodies are not identical for different destinations, a message body will be prepared for each destination. If multiple destinations are included, the same number of message IDs will be included.
[0035] For example, the first message sending request can be written as follows. In this example, operatorId represents the identifier of the user or the company to which the user belongs, and the message body is the same for all recipients. { "operatorId": "OP99999999999", "smsToList":[ { "messageId":"msg-1111-2222", "to":"+819011111111"}, { "messageId":"msg-3333-4444", "to":"+819022222222"}, (omitted) ], "payload":"Your authentication code is 1234", "callback":"https: / / callback-domain / sms_result", "encoding":"ucs2", "campaignId":"cmpn-1111-2222"}
[0036] The first control server 103 updates a first correspondence between one or more identifiers and the number of first message transmission requests including each identifier received within a first predetermined period by incrementing the number of requests for the identifier included in the received first message transmission requests (S206).
[0037] If the call received by the API server 101 does not include a campaign ID but includes a single destination, the API server 101 may assign a single message ID to the call and add a first message transmission request including the single destination and the single message ID to a first one-off queue 102-2 for one-off messages, separate from the first queue 102-1 described above. By separating the queues in this manner, transmission requests for one-off messages, which are likely to require greater immediacy, can be transmitted to the first control server 103 more quickly. Upon receiving the transmission request, the first control server 103 may add a second message transmission request including the single destination and the single message ID to a second one-off queue 104-2 selected in accordance with the single destination. The second control server 105 is connected to the second one-off queue 104-2 in addition to the second queue 104-1.
[0038] When the number of requests within a first predetermined period is less than or equal to a first flow rate threshold (a positive number greater than or equal to 1), the first control server 103 adds second message transmission requests for each message ID to the second queue 104-1, and when the number of requests is greater than or equal to the first flow rate threshold, the first control server 103 suspends the process of adding second message transmission requests to the second queue 104-1 until the first remaining period has elapsed. More generally, when the number of requests within the first period is compared with the first flow rate threshold and has not reached a first upper limit, the first control server 103 generates second message transmission requests including each of the destinations included in the first message transmission request received by the first control server 103 and adds them to the second queue 104-1, and when the first upper limit has been reached, the first control server 103 suspends the process of adding second message transmission requests until the first remaining period has elapsed. If the first message transmission request does not include a campaign ID, the first control server 103 that receives it can add a second message transmission request for each message ID corresponding to the first message transmission request to the second one-off queue 104-2 without performing the above-mentioned flow control, without compromising immediacy.
[0039] When a call received by the API server 101 or a first message transmission request received by the first control server 103 "does not include a campaign ID," this includes cases where the campaign ID field is empty, as well as cases where an invalid value is set, and more generally, can be rephrased as "does not include a valid campaign specification."
[0040] The first control server 103 may select the SMS gateway 120-1 to be used depending on the destination included in the second message transmission request to be added. Instead of directly selecting the SMS gateway 120-1, the first control server 103 may select the second queue 104-1 or the second control server 105 associated with the SMS gateway 120-1. When the second queue 104-1, the second control server 105 associated therewith, or the SMS gateway 120-1 is selected and used depending on the destination in this manner, the first flow rate threshold may also be set to a value determined for the selected second queue 104-1, the second control server 105 associated therewith, or the SMS gateway 120-1, depending on the selection. Because the load is distributed when multiple SMS gateways are used, it is preferable to control the flow rate for each SMS gateway so as not to cause significant unfairness among users.
[0041] Each second message transmission request added to the second queue 104-1 or the second one-off queue 104-2 is received by the second control server 105, which periodically or intermittently accesses the second queue 104-1 or the second one-off queue 104-2 to obtain data (S207). The second message transmission request received by the second control server 105 can include a single destination, a single message ID, a single message body, and an identifier of the user or the company to which the user belongs.
[0042] As an example, the second message send request can be written as follows: { "operatorId": "OP9999999999", "messageId":"msg-1111-2222", "to":"+819011111111" "payload":"Your verification code is 1234", "callback":" https: / / callback-domain / sms_result ", "encoding":"ucs2", "campaignId":"cmpn-1111-2222"}
[0043] The number of requests received within the first predetermined period held by the first association may be calculated and updated over time, or may be counted down when the first flow rate threshold is exceeded, and reset when the first remaining time reaches 0 seconds. More generally, the first control server 103 may suspend additional processing of second message transmission requests until the first predetermined condition described above is satisfied. An example of the first flow rate threshold is 600 requests within a first predetermined period of 30 seconds, and an example of the first remaining time is 20 seconds. Preferably, the first flow rate threshold is greater than the call threshold.
[0044] The second control server 105 updates the second message transmission request count by incrementing it (S208). If the number of requests within the second predetermined period is less than or equal to a second flow rate threshold (a positive number greater than or equal to 1), the second control server 105 transmits an SMS message transmission request according to the IP protocol to the SMS gateway 120 (S209). If the number of requests within the second predetermined period is greater than or equal to the second flow rate threshold, the second control server 105 stops the processing. More generally, if the number of requests within the second predetermined period is compared with the second flow rate threshold and has not reached a second upper limit, the second control server 105 transmits an SMS transmission request according to the IP protocol to the SMS gateway 120 (S209). If the number of requests has reached the second upper limit, the second control server 105 stops the processing until the second remaining period has elapsed.
[0045] The number of requests received within the second predetermined period stored in the second control server 105 may be calculated and updated over time, or may be counted down when the second flow rate threshold is exceeded, and reset when the second remaining time reaches 0 seconds. More generally, the second control server 105 may stop processing SMS message transmission requests until the second predetermined condition is met. An example of the second flow rate threshold is 30 requests within the second predetermined period of 1 second, and an example of the second remaining time is 1 second. The second flow rate threshold may be defined for the selected second queue 104-1 or the second control server 105 or SMS gateway 120-1 associated therewith. Preferably, the first flow rate threshold is smaller than the second flow rate threshold.
[0046] The second control server 105 may be configured to transmit SMS message transmission requests to multiple SMS gateways, rather than to SMS gateways individually determined according to the destinations included in the second message transmission requests. In this case, the second control server 105 may maintain a second association between one or more SMS gateway IDs and the number of second message transmission requests including each SMS gateway ID received within a second predetermined period, record the flow rate for each SMS gateway, and control the flow rate using a second flow rate threshold for each SMS gateway. In this case, the first flow rate threshold is preferably smaller than the second flow rate threshold for each SMS gateway.
[0047] As described above, fairness in the time required to send an SMS message can be ensured by controlling the flow rate for each user or company in the first control server 103. In addition, controlling the flow rate for each SMS gateway can prevent SMS send requests from being sent in excess of the conditions set by each SMS gateway.
[0048] In the above explanation, the processes performed by the API server 101, first control server 103, and second control server 105 that make up the system 100 are described separately, and data exchange between the servers is described as being performed via queues, but data exchange between servers may be performed without using queues, and some or all of the processes may be executed on the same server. When multiple processes are performed on the same server, the process described as data exchange between servers simply results in data being generated and read on that server.
[0049] It should be noted that in the above-mentioned embodiments, unless there is a description of "only," such as "based on XX only," "depending only on XX," or "in the case of XX only," this specification assumes that additional information may also be taken into consideration. Also, as an example, it should be noted that the description "do b in the case of a" does not necessarily mean "always do b in the case of a" or "do b immediately after a" unless explicitly stated. Furthermore, the description "each a constituting A" does not necessarily mean that A is composed of multiple components, but includes the case where the component is singular.
[0050] Also, just to be clear, even if there is an aspect of a method, program, terminal, device, server, or system (hereinafter referred to as a "method, etc.") that performs an operation different from that described in this specification, each aspect of the present invention is directed to an operation that is identical to one of the operations described in this specification, and the existence of an operation different from that described in this specification does not make the method, etc. outside the scope of each aspect of the present invention.
[0051] The invention is not limited to the above-described embodiment, and various modifications and variations are possible within the scope of the gist of the invention.
[0052] This application claims priority based on Japanese Patent Application No. 2022-108130, filed on July 5, 2022, the entire contents of which are incorporated herein by reference.
Claims
1. A method for sending SMS messages via an SMS gateway that communicates with an MNO's SMSC using an API, The API server receives a first call to the API from a first user terminal, The API server assigns a message ID to each of the one or more destinations determined by the first call, The API server adds a first message transmission request, which includes at least a portion of one or more numbered message IDs and a first identifier of the first user of the first user terminal or the first company to which it belongs, to a first queue connected to the API server. If the number of first message transmission requests containing the first identifier received within a first period does not reach a first upper limit compared to a first flow threshold (a positive number of 1 or more), the first control server connected to the first queue adds a second message transmission request containing at least each of the first message transmission requests to a second queue connected to the first control server; if the number reaches the first upper limit, the first control server does not add the second message transmission request to the second queue until a first predetermined condition is met. Includes, The second control server connected to the second queue sends a request to the SMS gateway to send an SMS message in accordance with the IP protocol corresponding to the second message sending request.
2. The method according to claim 1, The first call includes one or more message bodies.
3. The method according to claim 1, If the number of API calls received within a given period, including the campaign ID determined by the first call, does not reach the call limit compared to the call threshold (a positive number of 1 or more), the API server adds the first message sending request to the first queue. If the aforementioned call limit has been reached, the API server further includes the step of returning an error response to the first user terminal.
4. The method according to claim 3, The first flow threshold is greater than the call threshold.
5. The method according to claim 1, If the number of second message transmission requests received within the second period does not reach the second upper limit when compared to the second traffic threshold (a positive number of 1 or more), the second control server sends a request to the SMS gateway to send the SMS message.
6. The method according to claim 5, The second message transmission request includes a destination corresponding to the message ID included in the second message transmission request, The second queue is selected by the first control server according to the destination included in the second message transmission request.
7. The method according to claim 6, The first flow threshold is a value determined for the selected second queue or the second control server or SMS gateway associated therewith.
8. The method according to claim 1 or 6, The API server receives a second call to the API from a second user terminal, which includes a single destination but does not include the designation of a valid campaign. The API server assigns a single message ID to the second call, The first control server adds a second message transmission request, including the single destination and the single message ID, to a single queue connected to the second control server. It also includes.
9. The method according to claim 6, The second flow threshold is a value defined for the selected second queue or the second control server or SMS gateway associated therewith.
10. The method according to claim 9, The first flow threshold is smaller than the second flow threshold.
11. A program for causing a system comprising an API server and a first control server to execute a method for sending an SMS message via an SMS gateway that communicates with an MNO's SMSC using an API, wherein the method is: The API server receives a first call to the API from a first user terminal, The API server assigns a message ID to each of the one or more destinations determined by the first call, The API server adds a first message transmission request, which includes at least a portion of one or more numbered message IDs and a first identifier of the first user of the first user terminal or the first company to which it belongs, to a first queue connected to the API server. If the number of first message transmission requests containing the first identifier received within a first period does not reach a first upper limit compared to a first flow threshold (a positive number of 1 or more), the first control server connected to the first queue adds a second message transmission request containing at least each of the first message transmission requests to a second queue connected to the first control server; if the number reaches the first upper limit, the first control server does not add the second message transmission request to the second queue until a first predetermined condition is met. Includes, The second control server connected to the second queue sends a request to the SMS gateway to send an SMS message in accordance with the IP protocol corresponding to the second message sending request.
12. A system comprising an API server and a first control server for sending SMS messages via an SMS gateway that communicates with the MNO's SMSC using an API, The aforementioned API server Upon receiving a first call to the API from the first user terminal, a message ID is assigned to each of the one or more destinations determined by the first call. A first message transmission request, which includes at least a portion of one or more assigned message IDs and a first identifier of the first user of the first user terminal or the first company to which it belongs, is added to a first queue connected to the API server. The first control server connected to the first queue, If the number of first message transmission requests containing the first identifier received within the first period does not reach a first upper limit compared to a first flow threshold (a positive number of 1 or more), a second message transmission request containing at least each of the first message transmission requests is added to a second queue connected to the first control server; if the number reaches the first upper limit, the second message transmission request is not added to the second queue until the first predetermined condition is met. The second control server connected to the second queue sends a request to the SMS gateway to send an SMS message in accordance with the IP protocol corresponding to the second message sending request.