Контакты
 

Использование Skype в бизнес-целях — история создания решения по интеграции Skype и офисной телефонии. В статье рассказывается о том, как сотрудники компании «АТС Дизайн» разработали программное решение, позволяющее подключить офисную АТС к сети Skype с использованием Asterisk, а также решить возникающую при этом проблему набора Skype абонентов с обычных кнопочных телефонов.

Интеграция Skype в бизнес-коммуникации

Skype — самая крупная сеть IP телефонии в мире, недавно перешагнувшая рубеж в 200,000,000 абонентов онлайн, настойчиво стучится в двери офисов.

И это немудрено. Люди, привыкшие вести личные коммуникации в Skype, не видят причин, почему бы им не использовать это бесплатное и эффективное средство в целях бизнес-коммуникаций.

Что дает Skype для компании?  Давайте рассмотрим подробнее, по мере важности (по нашему мнению).

  • Новые возможности для клиентов и экономия для клиентов (устранение барьеров) — клиенты могут звонить в компанию из любой страны, абсолютно бесплатно. Поэтому компании, публикующие свой dollar-symbol.jpgкорпоративный Skype ID на сайте, получают новое конкурентное преимущество, предлагая клиентам удобный, бесплатный  и привычный им способ позвонить в компанию.
  • Новые возможности для сотрудников и экономия денег компании — сотрудники компании, находящиеся в командировках, могут бесплатно звонить в офис со своего ноутбука при помощи Skype клиента и USB телефона, а не затрачивая значительные денежные средства  на роуминг, международные и междугородние звонки. 
  • Экономия на междугородних и международных звонках (услуга SkypeOut) — при помощи Skype можно делать дешевые междугородние и euro-sign.jpgмеждународные звонки по всему миру, правда, отразить затраты на такие звонки по всем правилам учета весьма затруднительно. 
  • Следует также сказать о мало распространенной в России (по законодательным ограничениям) услуге SkypeIn. Данная услуга позволяет подключить реальный географический номер разных городов разных стран мира. Подключив такой номер к своему корпоративному Skype эккаунту, компания получает возможности принимать звонки из выбранного региона с обычных телефонов, а звонящие на такой номер абоненты даже представить себе не смогут, что звонок через сеть Skype примет сотрудник компании в другой стране.

Итак, использование Skype в бизнес-целях может предоставить существенную экономию на МГ/МН связь (которую, впрочем, непросто будет использовать по причине зарегулированной отрасли связи в России). Поэтому основной заслугой Skype можно назвать возможность звонить в организацию из любой точки мира клиентам и сотрудникам компании.

«Звонить в»...  А как же насчет «звонить из»? Почему у нас связь получается односторонней? В компанию звонить из Skype могут, а из компании звонить в Skype не могут?  Могут, но не совсем...

Проблема звонков в Skype

sitting-with-question-mark.jpgДело в том, что идентификатор абонента сети Skype состоит не из цифр, как номер телефона, а из цифр и букв, например, vasea_pupkin123. Как набрать такой «номер» с обычного кнопочного телефона?

В существующих технических решениях по интеграции АТС и Skype (Skype шлюзах) существует возможность назначить некий короткий номер идентификатору Skype абонента (Skype ID). При получении номера Skype шлюз осуществляет поиск по своей таблице номеров и  сопоставляет номер со Skype ID (если таковой был найден).

Таким образом, сотрудники, находящиеся в офисе, могут звонить своим коллегам, которые в данный момент в командировке, или клиентам. Для этого им надо попросить системного администратора компании добавить Skype ID требуемого абонента. Решение? Возможно.

Однако, представим такую ситуацию. Потенциальный клиент позвонил через Skype в компанию,  попал в главное интерактивное меню с приветствием, далее перешел на секретаря, который соединил клиента с менеджером, у которого IP телефон с дисплеем, на котором отобразился Skype идентификатор звонящего (это если есть поддержка показа callerid name, многие телефоны могут показывать только цифры, и в этом случае ничего не покажут). В какой-то момент в результате короткого перебоя в работе сети  связь разорвалась. Что делать менеджеру? У него два варианта:

  • solution.jpgждать, пока клиент перезвонит снова;
  • переписать  с  телефона Skype ID клиента,  бежать к системному администратору, и просить его добавить короткий номер. Можно конечно же перезвонить с личного Skype клиента, работающего на компьютере, но обязательно найдется случай, когда это будет невозможно (не установлен, личный skype, запрещен политикой безопасности, нет в данный момент гарнитуры, не будет записан разговор, и другое).

С учетом множества человеческих факторов, вероятнее всего, сотрудник пассивно будет ждать повторного звонка от клиента... Которого может и не
быть — контакт утерян, продажи не будет.

Решение

Как решить описанную проблему? - Автоматизировать взаимодействие с сетью Skype. Но каким образом?

Во-первых, при входящих звонках из сети Skype, шлюз должен:

    • автоматически генерировать внутренний номер для нового Skype ID;
    • устанавливать номер звонящего абонента, равный сгенерированному или найденному эккаунту;
    • направить звонок в АТС.

thinking.jpgВ этом случае, сотрудники компании всегда будут видеть короткий внутренний номер звонящего из Skype абонента, и всегда смогут вызвать его по этому номеру.

Во-вторых, интерфейс по добавлению Skype ID должен быть доступен сотрудникам компании, чтобы они могли самостоятельно добавить требуемого Skype абонента, а не просить об этом системного администратора (чем меньше человеческого фактора, тем меньше потенциальных явных и скрытых препятствий). 

Такое решение позволит извлечь максимальную пользу от интеграции офисной телефонии и Skype. Однако, где его взять? Рассмотрим имеющиеся варианты:

  • использование аппаратного Skype шлюза — нами были рассмотрены несколько моделей популярных Skype шлюзов, ни одна из них не предоставляла настолько гибкий функционал функционал.
  • Использование свободного ПО, поддерживающего Skype, и реализация на нем требуемой бизнес-логики. Из известного нам открытого ПО таковым является только Asterisk и FreeSWITCH.  Мы  реализовали требуемое решение на базе Asterisk.

Asterisk, распространяемый в исходных кодах

Компания Digium, создавшая Asterisk  и выпустившая его в свободное плавание, совместно со Skype, разработали специальный канал-драйвер к сети Skype, позволяющий прозрачно коммутировать каналы Skype с любыми другими типами каналов (SIP, H323, FXS или FXO) - chan_skype.wind-up-toy.jpg

Back-end

Asterisk обладает целым рядом интерфейсов по интеграции с внешними приложениями. В этом решении мы воспользовались самыми простыми, встроенными в Asterisk инструментами, а именно стандартным планом набора (диалпланом) и функцией  func_odbc,  позволяющей из диалплана напрямую взаимодействовать с базой данных. Таким образом, back-end требуемой бизнес логики был реализован следующими строчками диалплана, которые даже для непосвященному  в Asterisk IT специалисту покажут всю мощь и простоту Asterisk.

Выдержка из extensions.conf:

; Context for outgoing skype calls
[skype-out]
exten => _XXXX,1,Set(DST=${EXTEN})
exten => _XXXX,2,Goto(s,1)
exten => s,1,Set(skype_name=${ODBC_SKYPE_NAME(${DST})})
exten => s,n,ExecIf($["${skype_name}" = ""]|Hangup)
exten => s,n,Dial(Skype/${skype_name})

; Context for incoming Skype calls
[skype-in]
; Save dialed exten
exten => _X.,1,Set(DST=${EXTEN})
exten => _X.,2,Goto(s,1)
; If from skype comes start exten
;exten => s,1,ExecIf($["${DST}" = ""]|Set|DST=s); 1.4 version
exten => s,1,ExecIf($["${DST}" = ""]?Set(DST=s)); 1.6 version
; Let see if we already have this account
exten => s,n,Set(skype_name=${CALLERID(num)})
exten => s,n,Set(skype_ext=${ODBC_SKYPE_EXT(${skype_name})})
exten => s,n,GotoIf($["${skype_ext}" = ""]?not-found:found)
; Existing account found
exten => s,n(found),NoOp(Found Skype ID ${skype_name} with exten ${skype_ext})
exten => s,n,Set(CALLERID(num)=${skype_ext})
exten => s,n,Set(CALLERID(name)=${skype_name})
exten => s,n,Goto(from-skype,${DST},1)
; New Skype account calling
exten => s,n(not-found),Set(skype_ext=${ODBC_SKYPE_MAX_EXT()}); Get maximum extension number
;if database is empty we initialize 1-st exten 1000
;exten => s,n,ExecIf($["${skype_ext}" = ""]|Set|skype_ext=1000); 1.4. version
exten => s,n,ExecIf($["${skype_ext}" = ""]?Set(skype_ext=1000)); 1.6 version
; Add new record with next available exten
;exten => s,n,Set(ODBC_SKYPE_ADD()=$[${skype_ext}+1]\,${skype_name}); 1.4 version
exten => s,n,Set(ODBC_SKYPE_ADD()=$[${skype_ext}+1],${skype_name}); 1.6 version
exten => s,n,Set(CALLERID(num)=${skype_ext})
exten => s,n,Set(CALLERID(name)=${skype_name})
exten => s,n,Goto(from-skype,${DST},1)

Front-end

skype-gui-accounts

Для реализации front-end, т.е. WEB интерфейса, был выбран скриптовый язык программирования Lua

, особым отличием которого является «легковесность», что очень важно в для приложений реального времени типа АТС, где запуск «тяжелых» процессов может сказаться на качестве связи.

В качестве хранилища данных (номеров и Skype ID) была выбран пакет SQLite3, специальная база данных дня встраиваемых (embedded) приложений.

Вот что мы получили в результате:

Так как Asterisk уже сам по себе является IP АТС, то для тех, кому уже посчастливилось его внедрить, получить описанное

решение проще простого. По адресу http://asteriskpbx.ru/wiki/skype-for-asterisk  находится инструкция по свободному получению и простой установке пакета.

Если в компании уже используется АТС другого типа, это решение также легко можно интегрировать в существенную телефонную наноструктуру. Для этого надо установить Asterisk на виртуальный или реальный сервер в роли простого Skype шлюза.

Вот так выглядит схема современного офиса с использованием Skype, Asterisk и DECT IP телефонов:

asterisk.png

 

 

 

 

 

 

 

 

Ссылки

  • Главный сайт по Asterisk - www.asterisk.org
  • Документация по Asterisk - www.asteriskpbx.ru
  • Форум поддержки пользователей Asterisk - www.asterisk-support.ru

Подробное техническое описание решения — http://asteriskpbx.ru/wiki/skype-for-asterisk

Контакты
pbxware.ru
603954577 - Алексей
8(495)23 23 956, sip:office@pbxware.ru
request@pbxware.ru