Various embodiments of the present disclosure relate to routing traffic, and, more specifically, to protocols for routing traffic for voice communication.
Engineers from telecommunications platforms, telecommunications platform customers, or telecommunication network operators (e.g., telephone companies) may create and manage routes for voice call traffic based on voice infrastructure (e.g., on session border controllers (SBCs), voice gateways, private branch exchanges (PBXes), etc.). This route management may be managed at a session initiated protocol (SIP) trunking level.
Actions may be defined for when an incoming call reaches a phone number associated with a customer of a telecommunications platform. Examples of such actions may include forwarding to a phone (e.g., any incoming call to the designated number may be forwarded to a predefined phone number), forwarding to an application associated with the telecommunications platform (e.g., an instant messaging or video call application), forwarding to a predefined interactive voice response (IVR) scenario, forwarding to a customer's application (e.g., via webhook integration), or forwarding to an internet protocol (IP) address (e.g., using a predefined SIP trunk). Conventionally, each of these forwarding actions is unique, and there is no possibility for fail-over if any given forwarding action fails.
The background description provided herein is for the purpose of generally presenting the context of the disclosure. Unless otherwise indicated herein, the materials described in this section are not prior art to the claims in this application and are not admitted to be prior art, or suggestions of the prior art, by inclusion in this section.
In some aspects, the techniques described herein relate to a method for routing traffic for voice communication, the method including: receiving a request to establish a telecommunication link with a destination phone number; transmitting the received request to establish the telecommunication link to the destination phone number via a session initiated protocol (SIP) trunk; determining that the request to establish the telecommunication link via the SIP trunk failed; and transmitting, via a communication channel other than the SIP trunk, the received request to establish the telecommunication link to a separate destination based on a predetermined routing protocol.
In some aspects, the techniques described herein relate to a method, wherein the determining that the request to establish the telecommunication link failed includes receiving an indication from the destination that the request has been denied.
In some aspects, the techniques described herein relate to a method, wherein the determining that the request to establish the telecommunication link failed includes a timeout for response from the destination.
In some aspects, the techniques described herein relate to a method, wherein the destination phone number is associated with one or more of an internet protocol (IP) phone or a voice over IP (VoIP) phone.
In some aspects, the techniques described herein relate to a method, wherein the communication channel other than a SIP trunk includes a public switched telephone network (PSTN) line.
In some aspects, the techniques described herein relate to a method, wherein the communication channel other than the SIP trunk includes an internet network connection.
In some aspects, the techniques described herein relate to a method, wherein the separate destination includes a customer application.
In some aspects, the techniques described herein relate to a method, wherein the separate destination is a web real-time communication application.
In some aspects, the techniques described herein relate to a method, wherein the separate destination is a uniform resource locator (URL) pointing to a customer exposed webhook, and wherein the customer exposed webhook permits dynamic routing following creation of the predetermined routing protocol.
In some aspects, the techniques described herein relate to a method, wherein the separate destination is a PSTN-connected phone line.
In some aspects, the techniques described herein relate to a method, further including: determining that the received request to establish the telecommunication link to a separate destination via a communication channel other than the SIP trunk failed; and transmitting, via a second communication channel other than the SIP trunk, the received request to establish the telecommunication link to a second separate destination based on the predetermined routing protocol.
In some aspects, the techniques described herein relate to a non-transitory computer-readable medium storing instructions thereon that, when executed by one or more processors, cause the one or more processors to perform operations including: receiving a request to establish a telecommunication link with a destination phone number; transmitting the received request to establish the telecommunication link to the destination phone number via a session initiated protocol (SIP) trunk; determining that the request to establish the telecommunication link via the SIP trunk failed; and transmitting, via a communication channel other than the SIP trunk, the received request to establish the telecommunication link to a separate destination based on a predetermined routing protocol.
In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, wherein the communication channel other than the SIP trunk includes an internet network connection.
In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, wherein the separate destination is a uniform resource locator (URL) pointing to a customer exposed webhook, and wherein the customer exposed webhook permits dynamic routing following creation of the predetermined routing protocol.
In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, further including instructions thereon that, when executed by the one or more processors, cause the one or more processors to further perform operations including: determining that the received request to establish the telecommunication link to a separate destination via a communication channel other than the SIP trunk failed; and transmitting, via a second communication channel other than the SIP trunk, the received request to establish the telecommunication link to a second separate destination based on a predetermined routing protocol.
In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, wherein the separate destination includes a customer application.
In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, wherein the separate destination is a web real-time communication application.
In some aspects, the techniques described herein relate to a system including: a data storage device storing processor-readable instructions; and one or more processors operatively connected to the data storage device and configured to execute the instructions to perform operations including: receiving a request to establish a telecommunication link with a destination phone number; transmitting the received request to establish the telecommunication link to the destination phone number via a session initiated protocol (SIP) trunk; determining that the request to establish the telecommunication link via the SIP trunk failed; and transmitting, via a communication channel other than the SIP trunk, the received request to establish the telecommunication link to a separate destination based on a predetermined routing protocol.
In some aspects, the techniques described herein relate to a system, wherein the communication channel other than the SIP trunk includes an internet network connection.
In some aspects, the techniques described herein relate to a system, wherein the separate destination is a uniform resource locator (URL) pointing to a customer exposed webhook, and wherein the customer exposed webhook permits dynamic routing following creation of the predetermined routing protocol.
Additional objects and advantages of the disclosed embodiments will be set forth in part in the description that follows, and in part will be apparent from the description, or may be learned by practice of the disclosed embodiments. The objects and advantages of the disclosed embodiments will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the disclosed embodiments, as claimed.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate various exemplary embodiments and together with the description, serve to explain the principles of the disclosed embodiments.
Engineers from telecommunications platforms, telecommunications platform customers, or telecommunication network operators (e.g., telephone companies) may create and manage routes for voice call traffic based on voice infrastructure (e.g., on session border controllers (SBCs), voice gateways, private branch exchanges (PBXes), etc.). This route management may be managed at a session initiated protocol (SIP) trunking level.
Actions may be defined for when an incoming call reaches a phone number associated with a customer of a telecommunications platform. Examples of such actions may include forwarding to a phone (e.g., any incoming call to the designated number may be forwarded to a predefined phone number), forwarding to an application associated with the telecommunications platform (e.g., an instant messaging or video call application), forwarding to a predefined interactive voice response (IVR) scenario, forwarding to a customer's application (e.g., via webhook integration), or forwarding to an internet protocol (IP) address (e.g., using a predefined SIP trunk). Conventionally, each of these forwarding actions is unique, and there is no possibility for fail-over if any given forwarding action fails.
Disclosed herein is a system that, where a forwarding action fails, allows for further additional actions. This increases redundancy, resiliency, and additional opportunities for the call to be received. Instead of only being able to forward incoming calls to a single SIP trunk, the present disclosure allows for a telecommunications platform customer to define a route for forwarding a call to a specific number, where the route includes one or more SIP trunks, a public switched telephone network (PSTN) phone, a customer application with web real-time communication (WebRTC), an application managed by the telecommunications platform, and/or a uniform resource locator (URL) (e.g., customer exposed webhook). If a SIP trunk from the customer in a route is not reachable (e.g., fails due to network connectivity issues), the call may be forwarded to one or more other endpoints including SIP trunks, customer applications, telecommunication platform applications, URLs, or phone lines.
In some cases, a dynamic element may be included in the form of a customer-defined webhook. When a certain dynamic element is triggered in the route execution, the telecommunications platform may send a request to an external customer application. The external customer application may respond to the telecommunications platform with instructions for forwarding the call. Accordingly, although the same route element may be triggered by different calls, different results may be returned by the external customer application.
As disclosed herein, users may create routes for routing traffic related to telecommunication links. Each route may include one or more destinations of different types. For example, destinations may include a standard phone number (e.g., link established over a PSTN), a SIP trunk, a telecommunications platform application, an application related to a customer of a telecommunications platform, or a URL (e.g., a webhook). Each destination in a route may be assigned a priority (e.g., an order in which destinations in a route are evaluated) and a weight (e.g., how traffic is distributed to destinations that share the same priority).
A designated route may be assigned to or associated with a phone number on the telecommunications platform (e.g., a voice number provided to a customer by the telecommunications platform). In this case, an incoming call to a destination voice number may trigger execution of a route associated the destination voice number. The system will attempt to forward this incoming call to the first destination in the list. If this attempt is not successful (e.g., recipient not answering or call fails due to a network issue, etc.), the second entry in the route with the next highest priority is evaluated (e.g., the incoming call is forwarded to the destination associated with the second entry in the route), and so on.
Routes may also be assigned criteria, including, for example, any phone call coming from a particular number, any traffic coming from a SIP trunk with a particular reference, destination or source numbers, and/or designated headers for SIP traffic. When such criteria are defined, the telecommunications platform may receive traffic, consider the traffic in relation to a particular customer or account, and determine whether the traffic matches any defined route criteria. If the traffic meets the defined route criteria, the route associated with the defined criteria may be triggered and executed.
Calls may be routed to a customer's SIP infrastructure without regard to where the call originates. The call may originate from direct inward dialing (DID), an extension entered by the call originator, or a username entered by the call originator. While reference may be made to SIP infrastructure, the disclosure herein is not limited to routing or forwarding calls to a customer's SIP infrastructure. Inbound calls to DID may be associated with particular routes. Calls from a SIP trunk may not include route lists but may simply be forwarded to the destination. A routing application may use IP core logic once submitted to an IP core, which may include using a layer three (L3) routing application, application programming interface (API), and user interface (UI) for end users. Route destinations may include SIP trunks or SIP trunk groups, a PSTN-connected phone line, and one or more applications (e.g., IVR, API application, etc.).
A route list may include multiple entries which may be attempted in a particular order. The order may be customizable by the customer, but there may be a default order. Each entry may be attempted following the failure of a previous entry in the route list. The failure may be determined using SIP error codes and strict timeouts (e.g., 4 seconds). The failure may be determined by receiving an indication from the destination that the request has been denied. In some embodiments, there may be a maximum number of entries that may be added to the route list. Further, in some embodiments, the final fallback entry may be a PSTN-connected phone line. Accordingly, when a connection with a particular phone number is requested by a user phone via DID, an action may be triggered to forward to routing, which may activate the route list protocol.
If all entries fail, the call is not successful and a final SIP error code may be returned to an end user (e.g., call originator) and/or the customer indicating that all the entries in the route failed. If, for example, the first entry in the route fails, or even if the second entry fails, if the third route goes through, then the call is deemed successful. If a destination for a routing entry is a PSTN-connected phone line, the caller identification (e.g., caller ID) may be included or it may be overwritten. For example, if the caller is an extension, it may be preferred to not present the extension as caller ID to the PSTN destination.
Reference to any particular activity is provided in this disclosure only for convenience and not intended to limit the disclosure. A person of ordinary skill in the art would recognize that the concepts underlying the disclosed devices and methods may be utilized in any suitable activity. The disclosure may be understood with reference to the following description and the appended drawings, wherein like elements are referred to with the same reference numerals.
The terminology used herein may be interpreted in its broadest reasonable manner, even though it is being used in conjunction with a detailed description of certain specific examples of the present disclosure. Indeed, certain terms may even be emphasized below; however, any terminology intended to be interpreted in any restricted manner will be overtly and specifically defined as such in this Detailed Description section. Both the foregoing general description and the following detailed description are exemplary and explanatory only, and are not restrictive of the features, as claimed.
In this disclosure, the term “based on” means “based at least in part on.” The singular forms “a,” “an,” and “the” include plural referents unless the context dictates otherwise. The term “exemplary” is used in the sense of “example” rather than “ideal.” The terms “comprises,” “comprising,” “includes,” “including,” or other variations thereof, are intended to cover a non-exclusive inclusion such that a process, method, or product that comprises a list of elements does not necessarily include only those elements, but may include other elements not expressly listed or inherent to such a process, method, article, or apparatus. The term “or” is used disjunctively, such that “at least one of A or B” includes, (A), (B), (A and A), (A and B), etc. Relative terms, such as, “substantially,” “approximately,” and “generally,” are used to indicate a possible variation of ±10% of a stated or understood value. In this disclosure, the term “higher” refers to more, greater than, or up. In this disclosure, the term “lower” refers to below, less than, or down.
Customer SIP equipment 106 may receive traffic, including voice calls from customer phone lines 110 (e.g., IP phones or Voice over Internet Protocol (VoIP) phones) or voice applications 112 created and managed by telecommunications platform 102, a third-party call center, or an application managed via business process outsourcing (BPO). Voice applications 112 may include voice alerting applications, robocall applications (e.g., providing automatic calls that deliver a pre-recorded message), or inbound/outbound interactive voice response (IVR) applications. Customer SIP equipment may forward traffic received from customer phone lines 110 and voice applications 112 to telecommunications platform 102 via SIP trunks 108.
Telecommunications platform 102 may forward the received inbound SIP traffic from customer SIP equipment 106 to destination phone 104. Phone 104 may be an example of a standard telephone connected via PSTN. Destination phone 104 may also be an example of an IP or VoIP phone. In some embodiments, telecommunications platform 102 may transfer a call originating from an IP source (e.g., customer SIP equipment 106) to a PSTN destination through VoIP gateways, PBX systems, or soft switches. Telecommunications platform 102 may meter the calls using standard voice pricing and billing units according to destination of the call. Telecommunications platform 102 may also allow for unlimited traffic, even for international calls. In this case, traffic to and from other countries may be billed as standard domestic voice traffic.
Telecommunications platform 102 may forward incoming call 220 to customer SIP equipment 106 via SIP trunks 108. Customer SIP equipment 106 may then forward the call received via SIP trunks 108 to one of customer phone lines 110. In this manner, a user of phone 104 may be connected to a voice call with a user of one of customer phone lines 110.
Telecommunications platform 102 may forward the received inbound SIP traffic from customer SIP equipment 106 to telecom operators 310, which may route the inbound SIP traffic to destination phone 104. Phone 104 may be an example of a standard telephone connected via PSTN. Destination phone 104 may also be an example of an IP or VoIP phone. Telecommunication platform 102 may actively operate as a bridging platform, where inbound SIP traffic is one call leg, and outbound phone traffic is another separated call leg. Telecommunication platform 102 may handle call establishment to the outbound call, and once connected, telecommunication platform 102 may bridge the outbound call to the inbound SIP call.
Telecommunications platform 102 may forward the incoming call to customer SIP equipment 106 via SIP trunks 108. Customer SIP equipment 106 may then forward the call received via SIP trunks 108 to one of customer phone lines 110. In this manner, a user of phone 104 may be connected to a voice call with a user of one of customer phone lines 110. Telecommunication platform 102 may actively operate as a bridging platform, where inbound phone traffic is one call leg, and outbound SIP phone traffic is another separated call leg. Telecommunication platform 102 may handle call establishment to the outbound call, and once connected, telecommunication platform 102 may bridge the outbound call to the inbound phone call.
An administrator of telecommunications platform 502 may create and manage (e.g., edit) routing protocol 524, determining which path an incoming call for DID 2 of group of phone numbers 522 should take. In other words, a protocol may be predetermined that provides directions for how an incoming call should be directed and/or redirected should one or more paths (e.g., communication channels) or destinations (e.g., destination IP addresses) fail, or based on a priority. Predetermined routing protocol 524 may be invoked by telecommunications platform 502.
A first operation in routing the incoming call may be to transmit the request to connect to a first destination IP address via SIP trunk A of SIP trunks 508. However, telecommunications platform 502 may determine that SIP trunk A has failed. Determining a failure of SIP trunk A may include receiving an indication from the destination IP address (e.g., customer SIP equipment 506, such as a SBC or PBX) associated with SIP trunk A that it is unable to receive the incoming call request. This may be an example of a SIP error code. Determining the failure may also include not receiving a response from the destination IP address for a specified period of time (e.g., a “timeout”). Upon determining that SIP trunk A has failed, routing protocol 524 may direct the request to SIP trunk B. Upon determining that SIP trunk B has also failed, routing protocol 524 may direct the request to SIP trunk C. Upon determining that SIP trunk C has failed, routing protocol 524 may direct the request to PSTN connection 526. Telecom operator 528 may receive the request and forward the connection request to phone 530. As shown in
The intended destination may be a person, and not specific hardware (e.g., a phone or computer). In other words, a user of phone 104 desires to reach an individual associated with the phone number or contact information input into phone 104. An individual may have accounts with several different applications through which others may reach them for a voice call. For example, an individual may have a desk IP phone, a PSTN-connected phone, and one or more other accounts that provide VoIP services. Accordingly, routing protocol 624 may be defined by an administrator of telecommunications platform 602 such that an individual may be reached via one or more different communication channels or destinations. For example, an individual may have access to one or more IP phones 606 that may be connected to telecommunications platform 602 via one or more SIP trunks 608. The individual may also have access to a customer application 632 with WebRTC provided by telecommunications platform 602, a customer application 634 managed by (or based on a communications API provided by) telecommunications platform 602, a URL pointing to a customer-exposed webhook 636, and a PSTN-connected phone line 630.
Routing protocol 624 may be defined to send a request to connect with a phone number associated with a particular individual first to one or more IP phones 606 via SIP trunk 608. If the attempt to connect to one or more IP phones 606 via one or more SIP trunks 608 fails, routing protocol 624 may direct the request to customer application 632. If the attempt to connect to customer application 632 fails, routing protocol 624 may direct the request to customer application 634. If the attempt to connect to customer application 634 fails, routing protocol 624 may direct the request to customer-exposed webhook 636. Customer-exposed webhook 636 may respond with an action the routing protocol 624 should take. The action specification follows the capabilities of routing protocol 624, such as routing to a SIP endpoint, to a phone endpoint, to a WebRTC endpoint, or to an application, for example. This gives the ability for the customer (administrator) to enable dynamic routing elements where, based on the call data that telecommunications platform 602 sends to the customer-exposed webhook 636, application logic may decide in real time how to route the call. Finally, if the attempt to connect to customer-exposed webhook 636 fails, routing protocol 624 may direct the request to PSTN-connected line 626. Telecom operator 628 may receive the request and forward the request to PSTN-connected phone line 630. In this manner, a call originating from phone 104 may arrive at the intended individual in a timely manner.
As shown in
As shown in
Device 900 may also include a main memory 940, for example, random access memory (RAM), and also may include a secondary memory 930. Secondary memory 930, e.g. a read-only memory (ROM), may be, for example, a hard disk drive or a removable storage drive. Such a removable storage drive may comprise, for example, a floppy disk drive, a magnetic tape drive, an optical disk drive, a flash memory, or the like. The removable storage drive in this example reads from and/or writes to a removable storage unit in a well-known manner. The removable storage may comprise a floppy disk, magnetic tape, optical disk, etc., which is read by and written to by the removable storage drive. As will be appreciated by persons skilled in the relevant art, such a removable storage unit generally includes a computer usable storage medium having stored therein computer software and/or data.
In alternative implementations, secondary memory 930 may include similar means for allowing computer programs or other instructions to be loaded into device 900. Examples of such means may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM or PROM) and associated socket, and other removable storage units and interfaces, which allow software and data to be transferred from a removable storage unit to device 900.
Device 900 also may include a communications interface (“COM”) 960. Communications interface 960 allows software and data to be transferred between device 900 and external devices. Communications interface 960 may include a modem, a network interface (such as an Ethernet card), a communications port, a PCMCIA slot and card, or the like. Software and data transferred via communications interface 960 may be in the form of signals, which may be electronic, electromagnetic, optical or other signals capable of being received by communications interface 960. These signals may be provided to communications interface 960 via a communications path of device 900, which may be implemented using, for example, wire or cable, fiber optics, a phone line, a cellular phone link, an RF link or other communications channels.
The hardware elements, operating systems, and programming languages of such equipment are conventional in nature, and it is presumed that those skilled in the art are adequately familiar therewith. Device 900 may also include input and output ports 950 to connect with input and output devices such as keyboards, mice, touchscreens, monitors, displays, etc. Of course, the various server functions may be implemented in a distributed fashion on a number of similar platforms, to distribute the processing load. Alternatively, the servers may be implemented by appropriate programming of one computer hardware platform.
Throughout this disclosure, references to components or modules generally refer to items that logically can be grouped together to perform a function or group of related functions. Like reference numerals are generally intended to refer to the same or similar components. Components and modules may be implemented in software, hardware or a combination of software and hardware.
The tools, modules, and functions described above may be performed by one or more processors. “Storage” type media may include any or all of the tangible memory of the computers, processors, or the like, or associated modules thereof, such as various semiconductor memories, tape drives, disk drives and the like, which may provide non-transitory storage at any time for software programming.
Software may be communicated through the Internet, a cloud service provider, or other telecommunication networks. For example, communications may enable loading software from one computer or processor into another. As used herein, unless restricted to non-transitory, tangible “storage” media, terms such as computer or machine “readable medium” refer to any medium that participates in providing instructions to a processor for execution.
While the presently disclosed methods, devices, and systems are described with exemplary reference to transmitting data, it should be appreciated that the presently disclosed embodiments may be applicable to any environment, such as a desktop or laptop computer, a mobile device, a wearable device, an application, or the like. In addition, the presently disclosed embodiments may be applicable to any type of Internet protocol.
As shown, a customer may have two SIP trunks provisioned in two different data centers. When an inbound call (e.g. from PSTN-connected phone line 1004) comes in to a DID number associated with a route that includes both SIP trunks, the primary path may be used to try to send this call to the first SIP trunk in the destination list, where the SIP trunk is connected to the customer's PBX1 (first location 1014). If PBX1 is not reachable or does not answer within a defined timeout period, the second SIP trunk (connected to PBX2 at second location 1016) may be tried. If the second trunk doesn't answer (e.g., PBX2 is not reachable or does not answer within a defined timeout period), than a connection to a tertiary destination (e.g., PSTN-connected phone line 1032) may be tried.
Telecommunications platform 1002 may include DC 1034 and DC 1036, which may each include communication paths to first location 1014 and second location 1016. Basic routing elements may include a session agent group (SAG). Routing may only send one call to an SAG, and a Session Border Controller (SBC) may complete the rest of the calls.
Each element in a route may be assigned a priority and a weight. Elements with the highest priority (e.g. where priority “1” is highest, and priority “100” is lowest) may be evaluated first. Elements in a route may have a same priority, in which case, the weight factor may be used. The weight may be used in consideration of all calls to the route. Each route may include an internal counter, and for each new call, the counters may be used to determine where the call should be forwarded. For example, as shown in
It will be apparent to those skilled in the art that various modifications and variations can be made in the disclosed devices and methods without departing from the scope of the disclosure. Other aspects of the disclosure will be apparent to those skilled in the art from consideration of the specification and practice of the features disclosed herein. It is intended that the specification and examples be considered as exemplary only.