Dobrian — free phone consultations on any questions



Sometimes we have a sudden need to speak with a live person. Ask for advice, get advice, share an idea, tell a funny story or just talk about anything. Not always convenient to bother friends.

We tried to solve this problem and made Dobrian – a hotline where you can call anytime and talk to a real person tete–a–tete. Operators are divided into categories depending on qualifications and gender.
All, of course, free and created solely for aesthetic pleasure.

In Dobropol you can call through

the

    Skype

    Landline phone — direct dialing available in many countries and the gateways to major cities

    Vkontakte

    WebRTC widget (only works in Chrome)

    Flash widget the

  • Web interface Gmail and Google Talk
  • iNUM

    SIP



The article describes the technical aspect of the organization of the call center and the subtleties of connecting all the external lines.




The backend runs on asterisk. All incoming lines respectively connected to it.
Operators connect to the server via SIP.

All operators are divided into three categories and have the appropriate three-digit internal number:

the

    1. Qualified operators (internal number 1xx) — as a rule, people with higher education and professional expertise in some area.

    2. Operators girls (extension numbers 2xx) is validated only sexual ability and absence of speech defects

    3. Operators men (internal number 3xx) is validated only sexual ability and absence of speech defects



All accounts included static queue in queues.conf file according to its category. Plus a fourth category of "random number operator" in which the call is directed to all operators at once.

Configuration of asterisk is remarkable only
extensions.conf
[internal]

;; allow operators to call each other at the internal numbers
exten = > _XXX,1,Dial(SIP/${EXTEN},60,tT)
exten = > _XXX,n,Hangup

[default]

;; From call@dobrofon.com
exten = > call,1,Goto(menu,s,1)
exten = > call,n,Hangup()

;; Calls with tropo.com on skype
exten => trop,1,Set(CALLERID(name)=${CALLERID(num)}); a Recorded Skype-login of the callerid(num) in the callerid(name)
exten => trop,n,Set(CALLERID(num)=Skype); callerid(num) recording line Skype
exten => trop,n,Goto(menu,s,1)
exten => trop,n,Hangup()

;; From Skype Connect
exten => 99051000164280,1,Set(CALLERID(num)=Skype); callerid(num) recording line Skype, with the callerid(name) already have Skype-login of the caller
exten => 99051000164280,n,Goto(menu,s,1)
exten => 99051000164280,n,Hangup()

;; From FlashWidget
exten => flash,1,Set(CALLERID(num)=Flash) ;;; callerid(num) write a string Flash.
exten => flash,n,Goto(menu,s,1)
exten => flash,n,Hangup()

;;;;;;;
;;;;;;; Main menu
;;;;;;;

[menu]
exten = > s,1,Answer()
exten = > s,2,Background(hello); write "welcome to Dobrovol"
exten = > s,3,ExecIf($[${CALLERID(num)} = Skype]?Wait(1)
exten = > s,4,ExecIf($[${CALLERID(num)} = Skype]?Background(dialpad); If you call from Skype to lose the record of what you need to include the pad in the top of the window
exten = > s,5,ExecIf($[${CALLERID(num)} = Skype]?Wait(1)
exten = > s,6,Background(main); Main menu
exten = > s,n,WaitExten(2)

;; random operator
exten = > 0,1,Set(CALLERID(num)=${CALLERID(num)}_R); string callerid(num) is appended the name of the category chosen by the caller, to give the operator an idea of what he wants to hear the caller.
exten => 0,n,Playback(connect)
exten => 0,n,Queue(random,tT,,,40) ;; wait 40 seconds and if no one picked up the phone to play "all operators are busy"
exten => 0,n,Playback(busy)
exten => 0,n,Hangup()

exten = > 1,1,Set(CALLERID(num)=${CALLERID(num)}_Vip)
exten => 1,n,Playback(connect)
exten => 1,n,SIPAddHeader(Alert-Info: < Bellcore-dr5>) ;; Pass the title of the ringtone (for Cisco phones)
exten => 1,n,Queue(vip,tT,,,40)
exten => 1,n,Playback(busy)
exten => 1,n,Hangup()

exten = > 2,1,Set(CALLERID(num)=${CALLERID(num)}_Girls)
exten => 2,n,Playback(rita_begin)
exten => 2,n,Queue(girls,tT,,,40)
exten => 2,n,Hangup()

exten => 3,1,Set(CALLERID(num)=${CALLERID(num)}_Boys)
exten => 3,n,Playback(connect)
exten => 3,n,Queue(boys,tT,,,40)
exten => 3,n,Playback(busy)
exten => 3,n,Hangup()

;; direct-dialing internal operator
exten => _8XXX,1,Set(CALLERID(num)=${CALLERID(num)}_Direct)
exten => _8XXX,n,SIPAddHeader(Alert-Info: <Bellcore-dr1>)
exten => _8XXX,n,Dial(SIP/${EXTEN:1:3},60,tT)

exten = > 9,1,Set(CALLERID(num)=${CALLERID(num)}_BOSS)
exten = > 9,n,SIPAddHeader(Alert-Info: <Bellcore-dr1>)
exten = > 9,n,Dial(SIP/100)

;; Random queue Timeout
exten = > t,1,Goto(0,1)

;; Wrong ext
exten = > i,1,Background(invalid)
exten = > i,n,Goto(s,6)


In this configuration, the operators can see which incoming line you are calling and what number (category) he chose. So for example, when calling through Skype and a random category — operator sees the string Skype_R in the field CallerID(num) and skype-login of the caller in the field CallerID(name) in your sip client.

So it looks on the side of the operator to a SIP client, eyeBeam:

image

Policy dial-in lines is: the call is sent to all operators from the selected category at the same time, the call takes the first responding operator.

Operators can transfer an active call to each other using blind transfer (grill and extension) or via regular Shuttle service (first the operator places the active call on hold, calling another operator krasivae "it is possible I'll translate some client" and after transfers)

the

for Incoming channels



The most interesting part is the device of the incoming channels. I analyze each channel separately.
None of the following providers did not pay us for the advertising (although we do not mind), and everything described is the result of my personal research.

Skype



Before the main Skype account we had dobrofon.com
This business account is connected to Skype Connect, for the price of 5€ per competing line (more on this service are described here habrahabr.ru/post/144465).

During use it became clear that Skype Connect is a normal account with the configured unconditional call forwarding at +990. This is a virtual number in the network of Skype is designed for landing calls. Calls to these numbers are possible only on Skype and not be charged.

Fare Skype Connect is formed of a number of competing lines. That is, if you want to be able to accept 10 concurrent calls using your Skype-login, the fare will be 50€ per month.
But he opened an interesting hack: the number of parallel lines is limited only by the number +990 which you give out, while Skype-login there is no limit the number of concurrent calls. This implies that if you forward calls to another number, which, for example, is covered by subscription, you can get an analog of Skype Connect for less money. For example, to purchase landline phones of Moscow, to buy a multichannel phone +7(495) and forward calls to it. In this case, the number of parallel lines will be limited on the side of the SIP service provider, Skype Connect, you can not to buy. Same Skype free calls to Toll Free numbers in the United States (+1800, +1888).

Once upon a time Skype a very to work closely with the provider Voxeo.com. Since Voxeo have a pool of numbers +990 which he distributes free to all comers through its subsidiary service tropo.com(This service is so great that I'll talk about it in detail later). While not imposing a hard limit on the number of parallel lines. (In fact there are limitations, but they face off with bursts >100 calls per minute). Having such a room at Voxeo, you can make the same SkypeConnect-up for a free account. However Voxeo announced the termination of support number +990, so that soon these rooms will be disabled.

Now the main way to dial through Skype is a free number +990009369990067870

Landline phones



We buy direct Moscow number +7 (499) 504-82-76 Zadarma.com.
Direct numbers in these countries, we will provide free provider Voxeo:
image

The gateways in the major cities
a list of gateways
When dialing through gateways, use the extension number 01488

Russia, Yekaterinburg +7 (343) 236-62-39
Russia, Nizhny Novgorod +7 (831) 429-03-34
Russia, Novosibirsk +7 (383) 289-98-58
Russia, Saint-Petersburg +7 (812) 309-02-59
Russia, Chelyabinsk +7 (351) 750-35-69
United Kingdom, Birmingham +44 (121) 279-03-24
UK, Liverpool +44 (151) 209-01-04
UK, London +44 (20) 3298-41-31
Israel, Jerusalem +972 (2) 569-50-85
Kazakhstan, Almaty +7 (727) 323-13-42
Latvia, Riga ' +371 (67) 88-15-29
Lithuania, Vilnius +370 (5) 259-61-71
USA, new York +1 (718) 831-71-56

Actually this list is much longer, so if your city weren't there, please let me know.


Flash widget



The most sensitive issue is using calls directly from your browser through Flash.
To maintain your own Flash Media Server is very expensive and inconvenient. Free its analogues like RED5 is working very badly. To splice it with a SIP of the more time-consuming task.

There are several providers which provide service Click-to-call widget for your website.
Having tried all we could find, it became clear that the only provider which provides acceptable quality of communication Zingaya.com.
All the rest of the terrible sound quality, delays, lack of widget numeric keypad and other faults.
image

In addition, Zingaya allows you to pass arbitrary CallerID when you call. Thus when calling from the app Vkontakte, the operator can see a link to the profile of the caller.

Recently Chrome supports WebRTC. Along with that Zingaya has added support for WebRTC in your widget, so if calls through chrome not using Flash and delay much better.

GoogleTalk, Gmail and iNum



Our room on the network iNum: +883510001340589

GoogleTalk allows free calls to iNum network.
You can also call from web Gmail interface if you install this plugin.
image

With number iNum can do a lot more interesting, read more you can read about it in Google.

SIP



The main SIP account: call@dobrofon.com

You can also call through the internal rooms of some sip service providers. They are listed on the website.




the

FAQ



Why is all this necessary?

Just. We believe that human interaction is one of the most valuable things in life.

Who?

Volunteers interested.

How to become operator?

Anyone, if you have microphone, SIP client and intelligible speech may become the operator. In the first category, for example, a lot of IT professionals who are bored at work, so it can be used as free tech support.

In order to obtain an internal number, you need to email me or ohm to Inbox

How else can you participate?

So we are dobriana only in their spare time, to implement all the ideas not because of lack of time. Therefore, participation is open to everyone: computer programmers (asterisk, web-frontend, flash, webrtc), designers, coders and everyone else who thinks it can be of any help.
Article based on information from habrahabr.ru

Популярные сообщения из этого блога

Approval of WSUS updates: import, export, copy

The Hilbert curve vs. Z-order

Configuring a C++ project in Eclipse for example SFML application