Иногда у нас возникает внезапная необходимость поговорить с живым человеком. Спросить совета, получить консультацию, поделиться идеей, рассказать смешную историю или просто поговорить ни о чем. Не всегда бывает удобно беспокоить этим друзей.
Мы попробовали решить эту задачу и сделали Доброфон – горячую линию куда можно позвонить в любое время и поговорить с живым человеком тет–а–тет. Операторы разделены на категории в зависимости от квалификации и пола.
Все, разумеется, бесплатно и создано исключительно для эстетического удовольствия.
В Доброфон можно позвонить через:
- Skype
- Стационарный телефон — доступны прямые номера во многих странах и шлюзы в крупных городах
- Приложение вконтакте
- WebRTC-виджет (работает только в браузере Chrome)
- Flash-виджет
- Веб-интерфейс Gmail и Google Talk
- iNUM
- SIP
В статье будет описана техническая сторона организации call-центра и тонкости подключения всех внешних линий.
Бекенд работает на asterisk. Все входящие линии, соответственно, подключены к нему.
Операторы подключаются к серверу через SIP.
Все операторы разделены на три категории и имеют соответствующий трехзначный внутренний номер:
- 1. Квалифицированные операторы (внутренние номера 1xx) — как правило, это люди, имеющие высшее образование и профессионально разбирающиеся в какой-то области.
- 2. Операторы девушки (внутренние номера 2xx) — валидирована только половая пренадлежность и отсутствие дефектов речи
- 3. Операторы мужчины (внутренние номера 3xx) — валидирована только половая пренадлежность и отсутствие дефектов речи
Все аккаунты занесены статические очереди в queues.conf согласно своей категории. Плюс четвертая категория «случаный оператор» в которой звонок направляется всем операторам сразу.
Из конфигов asterisk примечательным является только
;; разрешаем операторам звонить друг другу по внутренним номерам
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()
;; Звонки с tropo.com на skype
exten => trop,1,Set(CALLERID(name)=${CALLERID(num)}); Заносим Skype-логин из callerid(num) в callerid(name)
exten => trop,n,Set(CALLERID(num)=Skype); В callerid(num) записываем строку Skype
exten => trop,n,Goto(menu,s,1)
exten => trop,n,Hangup()
;; From Skype Connect
exten => 99051000164280,1,Set(CALLERID(num)=Skype); В callerid(num) записываем строку Skype, при этом в callerid(name) уже есть Skype-логин звонящего
exten => 99051000164280,n,Goto(menu,s,1)
exten => 99051000164280,n,Hangup()
;; From FlashWidget
exten => flash,1,Set(CALLERID(num)=Flash) ;;; В callerid(num) записываем строку Flash
exten => flash,n,Goto(menu,s,1)
exten => flash,n,Hangup()
;;;;;;;
;;;;;;; Main menu
;;;;;;;
[menu]
exten => s,1,Answer()
exten => s,2,Background(hello); запись «вас приветствует доброфон»
exten => s,3,ExecIf($[${CALLERID(num)} = Skype]?Wait(1)
exten => s,4,ExecIf($[${CALLERID(num)} = Skype]?Background(dialpad); Если звонят со скайпа проиграть запись о том что нужно включить номеронабиратель в верхней части окна
exten => s,5,ExecIf($[${CALLERID(num)} = Skype]?Wait(1)
exten => s,6,Background(main); Основное меню
exten => s,n,WaitExten(2)
;; cлучайный оператор
exten => 0,1,Set(CALLERID(num)=${CALLERID(num)}_R); К строке callerid(num) дописывается название категории которую выбрал звонящий, чтобы оператор имел представление о том что хочет услышать звонящий.
exten => 0,n,Playback(connect)
exten => 0,n,Queue(random,tT,,,40) ;; подождать 40 секунд и если никто не взял трубку проиграть «все операторы заняты»
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>) ;; Передать в заголовке мелодию звонка (для телефонов Cisco)
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,Playback(rita_end)
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()
;; прямой набор внутреннего номера оператора
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)
;; Timeout random queue
exten => t,1,Goto(0,1)
;; Wrong ext
exten => i,1,Background(invalid)
exten => i,n,Goto(s,6)
При такой конфигурации операторы могут видеть через какую входящую линию звонит пользователь и какую цифру (категорию) он выбрал. Так например при звонке через Skype и выборе случайной категории — оператор видит строку Skype_R в поле CallerID(num) и skype-логин звонящего в поле CallerID(name) в своем sip-клиенте.
Так это выглядит на стороне оператора в SIP-клиенте eyeBeam:
Политика дозвона в очередях такова: звонок отправляется всем операторам из выбранной категории одновременно, звонок забирает первый ответивший оператор.
Операторы могут переводить активный звонок друг другу через blind transfer (решетка и внутренний номер) так и через обычный трансфер (сначала оператор ставит активный звонок на удержание, звонит другому оператору, срашивает «можно я тебе переведу такого-то клиента» и после переводит)
Входящие каналы
Наиболее интересной частью является устройство входящих каналов. Я разберу каждый канал в отдельности.
Ни один из перечисленных ниже провайдеров не платил нам за рекламу (хотя мы и не против), и все описанное является результатом моих личных изысканий.
Skype
Раньше основной Skype-аккаунт у нас был dobrofon.com
Это бизнес-аккаунт подключенный к услуге Skype Connect, по цене 5€ за одну конкурирующую линию (подробно этот сервис описывается здесь habrahabr.ru/post/144465/).
В процессе использования выяснилось, что Skype Connect это обычный аккаунт с настроенной безусловной переадресацией на номер +990. Это виртуальные номера в сети Skype предназначенные для приземления звонков. Звонки на эти номера возможны только из сети Skype и не тарифицируются.
Стоимость тарифа Skype Connect формируется из количества необходимых конкурирующих линий. То есть если вы хотите иметь возможность принять 10 параллельных звонков через свой Skype-логин, тариф будет 50€ в месяц.
Но тут открылся интересный хак: количество параллельных линий лимитируется только самим номером +990 который вам выдают, в то время как Skype-логин никак не ограничивается количество параллельных звонков. Из этого следует что если переадресовывать звонки на другой номер, который, например, покрывается подпиской, можно получить аналог Skype Connect за меньшие деньги. Например купить подписку на городские телефоны Москвы, купить многоканальный номер +7(495) и переадресовывать звонки на него. В таком случае количество параллельных линий будет ограничиваться на стороне SIP-провайдера, и Skype Connect можно вообще не покупать. Так же Skype бесплатно звонит на Toll Free номера в Америке (+1800, +1888).
Когда-то давно Skype очень плотно сотрудничал с провайдером Voxeo.com. С тех пор у Voxeo есть пул номеров +990 которые он раздает бесплатно всем желающим через дочерний сервис tropo.com(Этот сервис настолько прекрасен что я расскажу о нем подробно далее). При этом не накладывая жестких ограничений на количество параллельных линий. (На самом деле ограничения есть, но они меряются всплесками при >100 звонков в минуту). Получив такой номер у Voxeo можно изготовить аналогичный SkypeConnect-у аккаунт бесплатно. Правда Voxeo объявил о прекращении поддержки номер +990, так что в скором времени эти номера будут отключены.
Теперь основной способ дозвона через Skype — это бесплатный номер +990009369990067870
Стационарные телефоны
Мы покупаем прямой московский номер +7 (499) 504-82-76 у Zadarma.com.
Прямые номера в этих странах нам бесплатно предоставляет провайдер Voxeo:
Так же доступны шлюзы в крупных городах
Россия, Екатеринбург +7 (343) 236-62-39
Россия, Нижний Новгород +7 (831) 429-03-34
Россия, Новосибирск +7 (383) 289-98-58
Россия, Санкт-Петербург +7 (812) 309-02-59
Россия, Челябинск +7 (351) 750-35-69
Великобритания, Бирмингем +44 (121) 279-03-24
Великобритания, Ливерпуль +44 (151) 209-01-04
Великобритания, Лондон +44 (20) 3298-41-31
Израиль, Иерусалим +972 (2) 569-50-85
Казахстан, Алматы +7 (727) 323-13-42
Латвия, Рига +371 (67) 88-15-29
Литва, Вильнюс +370 (5) 259-61-71
США, Нью-Йорк +1 (718) 831-71-56
На самом деле этот список намного больше, поэтому если вашего города в нем не оказалось, напишите мне об этом.
Flash-виджет
Наиболее больной вопрос — это звонки через прямо из браузера через Flash.
Содержать собственный Flash Media Server очень дорого и неудобно. Бесплатные его аналоги вроде RED5 работает очень плохо. Сращивать его с SIP тем более трудоемкая задача.
Есть несколько провайдеров которые предоставляют услугу Click-to-call виджета для сайта.
Перепробовав все которые удалось найти, выяснилось, что единственный провайдер который обеспечивает приемлемое качество связи Zingaya.com.
У всех остальных ужасное качество звука, задержки, отсутствие у виджета цифровой клавиатуры и другие недостатки.
Кроме этого, Zingaya, позволяет передавать произвольный CallerID при звонке. Таким образом при звонках из приложения вконтакте, оператор может видеть ссылку на профиль звонящего.
С недавнего времени Chrome полноценно поддерживает WebRTC. Вместе с этим Zingaya добавили поддержку WebRTC в свой виджет, так что при звонках через хром не используется Falsh и задержки намного лучше.
GoogleTalk, Gmail и iNum
Наш номер в сети iNum: +883510001340589
GoogleTalk позволяет бесплатно звонить на номера сети iNum.
Можно также звонить из веб-интерфейса Gmail если установить плагин.
С номером iNum можно делать много чего еще интересного, подробнее об этом можно прочесть в гугле.
SIP
Основной SIP-аккаунт: call@dobrofon.com
Можно также позвонить через внутренние номера некоторых sip-провайдеров. Они перечислены на сайте.
FAQ
Зачем все это надо?
Просто так. Мы считаем, что человеческое общение одно из наиболее ценных вещей в жизни.
Кто операторы?
Добровольцы которым интересно.
Как стать оператором?
Любой желающий, при наличии микрофона, SIP-клиента и внятной речи может стать оператором. В первой категории, например, много IT-профессионалов которые скучают на работе, так что ее можно использовать как бесплатную тех. поддержку.
Для того, чтобы получить внутренний номер, нужно написать мне или ohm в инбокс
Как еще можно участвовать?
Так мы занимаемся доброфоном исключительно в свободное время, реализовать все задумки не получается из-за нехватки времени. Поэтому к участию приглашаются все: программисты (asterisk, веб-фронтенд, flash, webrtc), дизайнеры, верстальщики и все остальные кто считает что может чем-либо помочь.
ссылка на оригинал статьи http://habrahabr.ru/post/150234/
Добавить комментарий