Story
One fine evening, my friend asked me if I could do one thing. I said that I could, and over the next couple of months, in my free time from work and rest, I made a working prototype of this:
Exchange of telephone operators working independently from home.
An alternative to traditional call centers, allowing you to save employees from cold calls, quickly inform or interview existing customers and find out the need of potential.
It took one and a half years, for which I tried to apply for start-up contests (they were refused either for the formal reason of the absence of an open legal entity, or because I could not fill out a business plan for absly), to interest people close to telephone services and even offered a system for redemption, but without much success.
')
Therefore, it seems to me right that the idea does not fade, put all the developments in open access. What I do.

Justification of existence (rational)
People far from this industry, as well as myself, immediately hard to estimate the volume of the market. There is a report on market research from RBC, but this report can be purchased for 45 thousand rubles, so I had to limit myself to searching on the Internet, and this is what he gave:
- there is a huge market of call centers, but (almost) all of them have operators physically located on the territory of call centers
- There are 88 thousand call center operators in Russia. In Russia, call centers make 450 million calls a year. In the USA and Europe, these figures are much higher
It is not so easy to earn for students, mothers on maternity leave, disabled people for health reasons, and to find a permanent job is a whole problem, but they have enough free time.
Repeatedly faced with the fact that call centers refuse to accept projects of ringing less than 50 thousand rubles. And this is quite a solid amount compared to, for example, Yandex.Direct's monthly advertising budget, if you take a small business. And what will be the impact - to predict very hard. If you can flexibly regulate everything with Yandex, then traditional call-centers of control and management levers are quite few. Here you can pay 100 rubles (or get them as a bonus at registration) and immediately see how the calls go.
Benefits
For service owners:
High-tech solution to provide a large volume of services at low cost.
No need for a large number of employees in the staff.
Creates jobs. The exchange principle is mediation.
For customer service:
Simply. Download contact list and info text. Your task is immediately seen by all free operators and begin to call.
Quickly. A successful operator call is immediately transferred to your employee, who can only invoice.
Qualitatively. Operators are interested in the quality and quantity of calls, in contrast to office colleagues. You do not pay those who left to drink tea.
Economical. You pay only for calls. Neither the office nor the monthly fee for telephone lines, nor the capital salaries of call center operators.
For telephone operator:
Work on the phone. Where, when and how much you choose. All you need is internet and headset.
Quickly. Turn on the computer and you are already at work.
Conveniently. Work as much as you want and whenever you want.
Profitable. Receive money for each call.
The target audience
1. Small and medium businesses that want to save employees from cold calls, quickly inform or interview existing customers and find out the need of potential.
2. Students, mothers on maternity leave, people with disabilities for health reasons and just people with free time.
What has been done and works
A working FreeSWITCH setup in conjunction with Zadarma / Telphin.
Event-oriented web server in Ruby, the serving site along with the customer and operator interfaces.
Flash client for the SIP call by the telephone operator directly from its interface.
Communication has been tested with both mobile and city numbers, including on the Linksys / Cisco PAP2T equipment.
"Invitations" to the site instead of open registration. Alas, you can issue invitations only via the console, there is no admin interface.
Nice responsive website with operator and customer interfaces that meet MVP requirements.
The operator interface allows you to perform all actions without a mouse, using keyboard shortcuts, for example, 'h' to hang up, and 't' to transfer the call to the customer’s manager.
Transfer of a call to the side of the calling manager with the possibility during the transfer to the operator to inform the manager of the voice where the call was made and describe the level of customer interest.
Operator Interface
The operator's page looks like this, here in one picture from left to right:
- the start page, where you can see the text script (in a broader version, the script is on the right, and the buttons and fields for filling are on the left);
- the page shown during the conversation allows you to record the contents of the conversation with text and add a new contact if you called the person in charge;
- the page shown after the conversation allows you to fill in the fields, as well as set the status of the call

Customer interface
Provides customers with the ability to fill in a spreadsheet of a certain format, including phone numbers, names, etc., set a conversation script, and follow the results of telephone calls in the form of a sign.
Obvious flaws
When starting the service, at least one regular telephone operator is required. Otherwise, there will be no one to meet the needs of the first customers.
If the customer himself does not have a professional editor of the conversation script, then the call may go off to the side and not reach the goal.
There is no admin interface.
The flash plugin for the SIP call is quite buggy, and in addition it does not work on OS X. It is also susceptible to a miracle bug when the flash settings window pops up to allow access to the microphone, but this window is not visible, although this bug can be bypassed via browser menu in flash plugin settings.
Internal implementation
For those who are lazy to read the code, I will briefly tell you.
At the heart of the communication system is a software PBX FreeSWITCH.
The website is made in Ruby, but without Rails, but on my favorite bare Sinatra, and even with DataMapper.
FreeSWITCH is in the Inbound Event Socket mode and is controlled by a Ruby script (calls), also event-driven, without the use of any Librevox or Adhearsion.
Incremental database migrations are started by the migrate script, and the migrations themselves are located in the migrations directory.
Database - PostgreSQL, on a developer machine - SQLite3.
For the exchange of data between the website, namely the interface of the telephone operator and the script that manages the conversations, Redis serves.
The page is built using Bootstrap.
JQuery is used.
For keyboard navigation through the web interface, Mousetrap is used.
Corrections and improvements that I planned
- call time recording
- web application test coverage
- operator's test for professional fitness (test call with a robot, recording a conversation, offline analysis)
- a test plan on which operators will be able to study (with robots), and moderators to evaluate and direct them
- moderator interface
- admin interface
- put the block on the contact to be called, so that two operators could not call there simultaneously
- security: remove excess from freeswitch.mxml, redo flash caller
- prohibit the operators to call the contacts they entered (so as not to call the Kudykin mountain at the expense of the service)
- prohibit the input of the same contact twice, inform the moderator
- limit the maximum duration of the call, report to the moderator on regular exceedances for some plan or operator
- the interface of the customer’s manager so that he can immediately see where the call came from and what data the operator initially called has entered
- receiving a call to the customer’s manager’s page to avoid calls to landline numbers
- attribution of used icons and js libraries
- interactive tutorial interface
More far-reaching:
- call recording (8kbit / s ~ = 1GB / month)
- call the customer’s manager to the SIP number (reducing the customer’s costs)
- offer the operator a project rotation once an hour
- callback to the city operator, in case of impossibility to use the call from the site
- call to SIP client operator
- WebRTC instead of flash client
Source
Sources on GithubI have a set of recipes for
babushka (something more human from the Chef, Puppet and Ansible family) and a simple script that reads the configuration of servers, allowing you to configure a dozen of them with one team. In a couple of babushka, I naturally called him ded. I'll post it on the same account as soon as I brush it. It only works with Debian / Fedora / CentOS, while lately I somehow like to have something more on Archlinux servers.
What's next?
I do not expect any reaction to the idea or suggestions.
But I like this thing, and I would be happy if it worked. But I definitely can't do it alone.