📜 ⬆️ ⬇️

How multichannel phone numbers work


Recently on Habré was an article about the "unusual" DEF-numbers. Under the unusualness, there was a “multi-channel” - the ability to receive several parallel calls to a number (and call center operators would be talking to them). As many as five simultaneous conversations and an exclamation point at the end of the phrase! Under the cut, I'll tell you about the multi-channel, not from a marketing, but from a technical point of view. How do operators “take” calls, how does an “unusual DEF number” differ from a “regular ABC number”, and is this a lot or a little - as many as five parallel calls? By the way, why exactly five, not twenty or a hundred?

Telephony Guts: E1, PRI, SS7, SIP


Telecom operator serves incoming calls to the number. This is the central concept of telephony, from which everything else grows. The conditional operator “Horns and Hoofs” announces that it will service incoming calls to the number “+1234567890” and charge for 10 kopecks per minute. Now, if you type the indicated line on your mobile, your telecom operator will somehow notify Horn that there is an incoming call and it would be nice to do something with it. For example, to signal back “call received” and begin to receive a voice stream. Or, without taking a call, send your voice stream "subscriber temporarily not a subscriber."

Physically, telecom operators in different countries use different things. Most often this is the “Primary Rate Interface”: a physical interface with guaranteed packet delivery and dedicated channels of 64 kilobits. At the junction point, operators put boxes like this one , which are interconnected with funny SCSI-like cables. One box usually serves from 4 to 16 E1 connections, each of which has 32 channels for voice, slightly compressed g.711 and signaling. Total more than 500 parallel calls to the box.

In the honorable second place SIP with a joint through a usual ethernet-network or even the Internet. There are no "channels", everything depends on the software, the width of the channel and the power of the computers. And decency of Internet providers, which sometimes configure QoS (but more often - not).
')

Number is a text string.


In fact, not always, SS7-ISUP has many different options to present “to whom we are calling”, but in the general case we can expect exactly the text string. What will be written there: "84951234567", "+79261234567" or what else - this is how operators and regulators in a particular country and region agree. And yes, we don’t have a single standard for the whole world.

The division into "city number", "ABC geographically defined number", "mobile number", "DEF geographically undefined number" - it is conditional. No more than an agreement of the operators about the format and who will pay someone for servicing this particular number, plus nuances like open and closed numbering or that within one city you can call without the prefix of this city. Provided that all operators were able to agree on this and properly set up their software.

And what about multichannel?


So, we have 2 facts:

  1. The operator maintains the number and can receive requests for an incoming call. For money.
  2. The number is a text string. Different numbers differ only in the arrangement of the operators how to receive calls on them and how much money to take for it.

As you can see, nothing foreshadows the restriction “only one call per number”. And there really is no such restriction! Any number has “innate” multi-channel. Restrictions can only be on the side of the equipment (not enough physical connections E1) or logical (this is the cellular number. The subscriber is already talking on the phone. Where to put 10 more incoming to the same number?).

In practice, we can expect up to 100 parallel calls to one number to work correctly. With a very large number of calls from the operator initiating the call (for example, this is a cellular operator) it will not be possible to distribute it to the receiving operator, and back we will hear the rare-earth error “sorry, all lines are busy”.

How we do it in Voximplant


For each incoming call, we create a separate JavaScript session, where the code you downloaded is executed. And already he decides what to do with this call. For example, if this is a retailer number, then you can make an HTTP request for the backend, find out the order status by number and if the calling customer has an order - synthesize it with a voice and suggest doing something, for example, transfer time.

You can send a call to the call center, the cloud can call the PSTN (public telephone network) and SIP. And you can build a call center yourself - there are ready-made "batteries" for the message queue and the SDK to receive calls in web browsers and mobile applications.

In general, JavaScript “next to” with a call, performed in real time, allows you to do a lot of interesting things before the “multi-channel” rests on the living people of the call center, technical support or telemedicine. For example, an HTTP request can be used to get a call center load (or directly from JS, if our message queues are there), and if there “the operator answers in more than ten minutes”, we can suggest that we call the customer ourselves. The JavaScript session can safely continue its work after the caller has hung up. Having received the user's consent to the chime (for example, recognizing an affirmative answer or asking to enter a number from the phone's keypad), the session sends a request to the waiting queue or call center, waits for it as it should, and after connecting with the operator it synthesizes what is happening now, calls back on the memorized phone number, synthesizes what kind of call and, finally, connects the operator with the person. JavaScript is power.

Source: https://habr.com/ru/post/347832/


All Articles