Платформа IP-телефонии своими руками

Платформа IP-телефонии своими руками

Несколько лет назад мне потребовалось уменьшить затраты на междугородние звонки по России и международные в ближнее и дальнее зарубежье. Казалось бы, карточные операторы IP-телефонии предлагают достаточно низкие тарифы на звонки по сравнению с традиционными операторами связи. Однако есть ряд операторов, тарифы которых значительно ниже даже карточных платформ, а иногда звонки и вовсе можно сделать бесплатными. Правда, большинство таких сервисов позволяют совершать звонки только по схеме "компьютер-телефон." Как быть, если хочется звонить дешёво по межгороду без компьютера, имея доступ лишь к обычному телефону? Ответ прост - построить собственную платформу IP-телефонии!

Введение

Итак, общая идея VoIP платформы такова (см. рис. 1):

Рис. 1. Общая схема VOIP платформы

1. Вызывающий абонент звонит на некий номер доступа (например, на городской номер)

2. Его звонок принимается VoIP платформой, которая:

• Авторизует пользователя, т. е. даёт доступ к набору номера вызываемого абонента

• Обрабатывает набранный номер вызываемого абонента

• Вызывает абонента и соединяет вызывающего с вызываемым

В общем случае, для реализации такой схемы нам понадобится несколько сервисов:

1. Провайдер, предоставляющий номер доступа (Провайдер А)

2. Виртуальная IP АТС (IP PBX), которая: o Принимает входящий звонок вызывающего абонента через Провайдера А o Позволяет вызывающему абоненту набрать номер вызываемого абонента o В соответствии с планом маршрутизации (Dial plan) выбирает одного из Провайдеров дальней связи (Провайдера Б) и звонит через него на вызываемый номер.

3. Провайдеры дальней связи (Провайдер Б) с низкими тарифами (на разные направления возможно использовать разных операторов)

В итоге, схема вызова будет следующей (см. рис. 2):

Рис. 2. Схема звонка через VOIP платформу

1. Вызывающий абонент звонит на номер доступа Провайдера А

2. Провайдер А предлагает абоненту набрать добавочный номер пользователя (это номер присваивается пользователю при регистрации аккаунта у Провайдера А)

3. Вызывающий абонент набирает номер пользователя в тональном режиме

4. Провайдер А переадресует звонок на виртуальную IP АТС

5. Виртуальная IP АТС авторизует звонящего абонента (либо просить набрать PIN-код, либо определяет номер звонящего). Авторизация позволяет защитить сервис от желающих позвонить за чужой счёт

6. После успешной авторизации виртуальная IP АТС выдают в линию длинный гудок, приглашающий звонящего набрать номер вызываемого абонента.

7. Вызывающий абонент набирает последовательность из служебных префиксов и номера вызываемого абонента в тональном режиме

8. Набранный номер анализируется IP АТС и в соответствии планом маршрутизации выбирается один из Провайдеров Б для звонка

9. Виртуальная IP АТС инициирует вызов вызываемого абонента через Провайдера Б

10. На телефон вызываемого абонента приходит входящий вызов

Используемые сервисы

В качестве Провайдера А возможно использовать 2 сервиса:

1. TeLme (http://www. tel-me. ru) от компании Телфин, номера доступа в городах: o Россия

? Москва

? Санкт-Петербург

? Нижний Новгород

? Екатеринбург

? Орел

? Курск

? Череповец o США

2. Zadarma (http://www. zadarma. com), номера доступа в городах: o Великобритания

? Бирмингем

? Ливерпуль

? Лондон o Израиль

? Иерусалим o Казахстан

? Алматы o Россия

? Екатеринбург

? Москва

? Нижний Новгород

? Санкт-Петербург

? Челябинск o США

? Нью-Йорк o Украина

? Днепропетровск

? Донецк

? Запорожье

? Киев

? Львов

? Одесса

? Харьков

В качестве виртуальной IP АТС будет выступать сервис PBXES (http://www. pbxes. org)

В качестве Провайдеров Б можно выбирать провайдеров, предлагающих оптимальные тарифа на разные направления. Так, для звонков в Россию можно выбрать SIPNET (http://www. sipnet. ru), сервисы Betamax и другие.

Краткая справка: Betamax - известная компания, предлагающие низкие тарифы на международные звонки. Это компания является владельцем большого количества сайтов (более 30 вместе с аффилированными Finarea и Dellmont), на каждом из которых тарифы на разные направления различны (и имеют тенденцию периодически меняться). Сводную ежедневно обновляемую таблицу тарифов Betamax можно посмотреть на странице http://backsla. sh/betamax.

Этап 1. Регистрация

Регистрация провайдеров

Регистрация TeLme

На сайте Tel-me http://www. tel-me. ru зарегистрироваться можно, щёлкнув по ссылке "Регистрация" в форме в верхнем правом углу страницы или по большой кнопке "Регистрация"

Далее нужно заполнить короткую регистрационную форму, ввести проверочный текст и согласиться с пользовательским соглашением.

После завершения регистрации вам на электронную почту придёт письмо с нужными нам регистрационными данными:

1. Ваши персональные данные в сети Тел-Ми: o Код клиента (Client code) o Номер линии (SIP ID) o Пароль (Password) эти данные нужны для входа на вашу персональную страницу на сайте TeLme

2. Номера телефонов доступа (Раздел "2. Дополнительные услуги Тел-Ми" письма, блок "Входящая связь"

3. Параметры для настройки оборудования (Раздел 5 письма): o Display Name: Your_name (не используйте кириллицу) o Username: ваш_номер_пользователя o Authorization user: ваш_пользователь o Password: ваш_пароль o Domain/Realm: sip. telphin. com o SIP proxy: sip. telphin. com:5068 o Outbound Proxy: voice. telphin. com:5068 o Register: Always o Register expires: 1800 o Codecs supported: G.711(a&u), G.729

Регистрация Zadarma

На главной странице www. zadarma. com нажмите на кнопку "Регистрация" и заполните регистрационную форму

Для наших целей следует выбрать тарифный план "Эконом", который не имеет абонентской платы и не ограничен по сроку действия.

В случае удачной регистрации вы увидите такое вот сообщение:

, а на адрес вашей электронной почты придёт письмо с подтверждением регистрации.

Для того, чтобы узнать настройки SIP для виртуальной АТС, зайдите в Zadarma, используя ваш адрес электронной почты и пароль. На личной странице вашей учётной записи в Zadarma указаны все необходимые данные:

Нам понадобятся:

• Адрес сервера

• Логин

• Пароль

На этом регистрация в Zadarma завершена.

Регистрация Betamax

Сервисы Betamax имеют несколько нюансов:

1. Некоторые сервисы допускают использование для звонков только фирменного программного IP-телефона. На сайте такого сервиса отсутствуют настройки, что делает его использование с виртуальной VoIP платформой либо невозможным, либо приводит к необходимости искать недокументированные настройки на специализированных форумах (большинство из которых англоязычные). К счастью, таких сайтов меньшинство.

2. Некоторые сервисы допускают регистрацию только при помощи фирменного программного IP-телефона, который нужно скачать, установить и запустить по крайней мере 1 раз для регистрации. Другие допускают web-регистрацию прямо на сайте сервиса. Нужные настройки в обоих случаях опубликованы на сайте, что позволяет использовать такие сервисы для нашей платформы.

Рассмотрим оба варианта регистрации на примере сервиса PowerVoip (http://www. powervoip. com), на момент статьи предлагающий самый низки среди сервисов Betamax тариф на звонки на стационарные телефоны России - 0.7 евроцента за минуту.

Вариант 1. Регистрация при помощи программного IP-телефона

На главной странице сайта нажимаем кнопку "Download for free" выбираем операционную систему и скачиваем программу.

Запускаем скачанный файл setupPowerVoip. exe (здесь и далее приведена последовательность установки для Windows), выбираем русский язык для установки и нажимаем "Дальше". Последовательность установки программы в принципе стандартна для приложений Windows и состоит из нескольких экранов с кнопкой "Дальше":

1. Соглашаемся с лицензионным соглашением

2. Выбираем папку для установки программ или соглашаемся с установкой по умолчанию

3. Выбираем название группы программ для установки

4. Решаем, где создавать ярлыки на программу

5. Далее следует установка программы и завершение программы установки

Следующий этап - собственно регистрация пользователя

В окне выбираем "a new User" для регистрации нового пользователя и нажимаем "Дальше"

В регистрационной форме заполняем обязательные поля

• Имя пользователя

• Пароль дважды

• Адрес электронной почты (на него придёт письмо с ссылкой для активации учётной записи)

• Проверочный код и нажимаем кнопку "Register". Далее следует регистрация пользователя на сервере и её завершение

Далее программа протестирует ваше соединение с интернетом и аудиоустройства, после чего в первый раз запустит основное окно программы

Далее вам следует активировать учётную запись, щёлкнув на активационную ссылку в пришедшем на вашу почту письма, и проверить результат регистрации, введя имя пользователя (username) и пароль (password) на главной странице сервиса. Если ваш вход успешен и открылась страница вашей учётной записи на PowerVoip, то программу можно либо удалить, либо отключить в её настройках автозапуск при старте Windows. На этом регистрация учётной записи завершена.

Вариант 2. Web-регистрация

1. На главной странице сервиса щёлкните кнопку "Download for free"

2. На странице загрузки щёлкните по кнопке "Click here for our mobile versions"

3. Выберите один из коммуникаторов, например iPhone, и щёлкните по нему

4. На открывшейся странице ниже скриншотов с программой щёлкните по ссылке "Click here to sign up for free"

5. Заполните web-форму:

User Name - имя учётной записи

Password - пароль

Retype password - повтор пароля

Email address - адрес электронной почты

Введите проверочный код и нажмите кнопку "Register"

Отметку "Sign me up for the PowerVoip newsletter" снимите, если не хотите получать по электронной почте новости сервиса

6. Активируйте учётную запись, щёлкнув по ссылке в регистрационном письме, которое придёт на ваш адрес электронной почты для завершения регистрации

После первого входа на личную страницу учётной записи вам нужно будет заполнить ваши персональные данные:

• Обращение

• Имя (First name)

• Фамилия (Surname)

• Улица (Street)

• Номер дома/квартиры (House number)

• Почтовый индекс (Post code)

• Город (City)

• Страна (Country)

Теперь для совершения звонков нужно пополнить счёт, нажав ссылку "buy more":

Счёт в PowerVoip можно пополнить разными способами:

1. При помощи банковских карт VISA или MasterCard

2. Зарубежных платёжных систем PayPal и MoneyBookers

3. Российских платёжных систем WebMoney, "Единый кошелёк" (W1) и Moneta. ru

4. Реселлеров

Регистрация виртуальной IP АТС

В качестве виртуальной IP АТС будет использоваться сервис PBXes (www. pbxes. org)

На www. pbxes. org в левой верхней части страницы щёлкните на ссылке "CREATE ACCOUNT >>":

Далее заполните поля регистрационной формы:

• Language - язык (в списке есть русский, но перевод, на мой взгляд, далёк от совершенства, здесь и далее я буду использовать интерфейс на английском языке)

• Name - ник вашей учётной записи на PBXes

• Password - пароль учётной записи

• Enter again to confirm - повтор пароля

• First name - имя

• Last Name - фамилия

• Street address - улица/дом

• City and Zip code - город и индекс

• Timezone :: Datacenter - часовой пояс/датацентр PBXes (выберите свой часовой пояс, датацентр, соответствующий часовому поясу, будет выбран автоматически. В дальнейшем, при тонкой настройке PBXes, можно будет изменить датацентр, выбрав другой часовой пояс)

• Date of Birth - дата рождения

• Primary telephone - ваш основной телефонный номер

• Email address - адрес электронной почты

Далее введите проверочную фразу captcha, оставьте Software version = stable по-умолчанию, и по желанию отметьте пункт "Allow independent moderators to see your log & configuration data for support (readonly, no passwords) and provisioning (write trunks, extensions and dial rules) purposes" (Разрешить независимым модераторам просматривать статистику звонков и конфигурацию для помощи (в режиме "только чтение", без доступа к паролям) и резервирования внешних (основных) линий - trunk, внутренних (добавочных) - extension и планов маршрутизации - dial rules).

Для завершения регистрации нажмите на кнопку "Submit & Start". Это последнее действие, необходимое для регистрации, после успешной проверки заполнения формы вы попадёте на страницу вашей учётной записи в системе PBXes (а на ваш адрес электронной почты придёт письмо - подтверждение регистрации):

Теперь всё готово для настройки вашей собственной VoIP платформы.

Этап 2. Настройка виртуальной IP АТС

Итак, пришло время настроить PBXes для решения нашей задачи. Следует принять во внимание следующее:

1. Мы будем звонить на на нашу IP АТС извне и инициировать звонок с ней на внешние номера - все линии, которые мы будем настраивать, будут внешними по отношению к АТС, т. е. транками (trunk).

2. PBXes должен ждать звонка на линиях провайдеров А, т. е. наша IP АТС должна устанавливать подключения к провайдерам А.

3. С провайдерами Б постоянное соединение устанавливать нет необходимости, устанавливать соединение с этими провайдерами достаточно в момент набора номера вызываемого абонента.

4. Необходимо авторизовать вызывающего абонента на PBXes, т. е. определить, можно ли ему пользоваться услугами АТС или нет.

5. Необходимо разработать план маршрутизации, т. е. правила, по которыми будет выбираться один из провайдеров Б для набора номера.

Итак, решаем задачу 1 - настраиваем внешние линии

Настройка внешних линий (транков)

Настройка линий провайдеров А

Главное меню PBXes, при помощи которого осуществляется управление виртуальной IP АТС, имеет вид:

Для добавления новой линии провайдера в главном окне PBXes щёлкните по ссылке.

Далее, в блоке Add aTrunk щёлкните на ссылке "Add SIP trunk".

Затем заполните форму для линии, указав регистрационные данные одного из ваших провайдеров

Заполнив, поля необходимыми данными, предоставленными вашими провайдерами, нажмите кнопку "Submit Changes".

Введённые вами данные будут сохранены в системе. Для применения конфигурации следует дополнительно щелкнуть на красной строке вверху страницы.

Обратите внимание, сервер TeLme имеет нестандартный порт 5068.

Настройка линий провайдеров Б

Настройка линий (транков) провайдеров Б аналогична настройкам провайдеров в разделах "General Settings", "Account" и "Options". Как уже отмечалось ранее, транки провайдеров Б не требуют постоянного подключения - опцию "register" можно установить в "no (just outbound calls)".

Отдельного внимания требует раздел "Dial Rules" - "Правила набора". Они определяют, как будет набираться номер в линию (транк). Правила набора могут быть использованы для добавления или удаления префиксов. Номера, которые не соответствуют какому-либо шаблону, определенному здесь, будет набран неизменными. Правило набора, не имеющее "+" или "|", не имеет смысла.

Правила:

• X соответствует любой цифре от 0-9

• Z соответствует любой цифре от 1-9

• N соответствует любой цифре от 2-9

• [1237-9] (квадратные скобки) соответствуют любой цифре или букве в скобках (в этом примере, 1,2,3,7,8,9)

• . (точка) - шаблон, соответствует одному или более символов (нельзя ставить перед "|" или "+")

• | (вертикальная черта) удаляет префикс с указанным номером (например, правилу "495 | NXXXXXX" при наборе пользователем последовательности "4957170505", в линию будет фактически набрано только "7170505")

• + (плюс) добавляет префикс с номером (например, согласно правилу "7812 + NXXXXXX" при наборе пользователя "7153969" в транк будет набрано "78127153969".

Когда нужны эти правила? Например, если у вас несколько провайдеров Б для исходящего звонка, каждый из которых требует осоного набора номера, например:

• для TeLme, если вы решите использовать этого провайдера для исходящих звонков (как провайдера Б), правила набора международного номера - 810 код_страны код_города номер_телефона, т. е. с префиксом "810"

• для некоторых сервисов требуется набирать номер в формате 00 код_страны код_города номер_телефона, т. е. с префиксом "00"

Вам, как пользователю, будет удобнее набирать номер вызываемого абонента без префиксов, а их донабор осуществлять правилами у соответствующих транков:

• для TeLme правило набора будет "810 + Z."

• для второго сервиса правило набора будет иметь вид "00 + Z." тогда, набранный пользователем номер "73833595111" будет набран в линию TeLme как "81073833595111", во вторую линию как "0073833595111".

"Outbound Dial Prefix" (префикс набора при исходящем вызове) фактически является частным случаем правил набора и используется в редких случаях, когда для набора в линию нужно обязательно набирать один и тот же префикс (по аналогии с офисными АТС, где для выхода на городскую линию нужно вначале дополнительно набирать, например "9"). За редким исключением это префикс оставляем пустым. Настройка линий провайдеров Б

Настройка плана маршрутизации

Маршрутизация входящих вызовов

После заполнения формы нажмите кнопку "Submit" и для применения конфигурации.

Аналогично настраиваются планы маршрутизации входящих вызовов для других провайдеров А, PIN-коды доступа могут как совпадать, так и отличаться друг от друга.

Маршрутизация исходящих вызовов

Последнее, что осталось настроить, это правила маршрутизации исходящих вызовов (меню "Outbound Routing".)

Кликните по ссылке в главном меню PBXes. Заполните форму "Add Route".

Теперь сохраняем изменения ("Submit Changes") и применяем настройки:

На этом настройка нашей VoIP платформы в минимальной конфигурации закончена.

Этап 3. Тестирование

Чтобы проверить, установлены ли у нас подключения транков провайдеров А (помните, для них нужно было установить опциию "register" в значение "yes") щёлкните по ссылке в главном меню PBXes и посмотрите на статус транков в поле "Trunks".

Зелёный цвет индикатора транков провайдеров А означает, что транки успешно подключены к VoIP платформа провайдеров.

Настало время сделать первый звонок через нашу платформу.

Итак:

1. Звоним на телефон доступа одно из наших провайдеров А

2. После голосового приветствия VoIP платформы провайдера А введите ваш номер абонента в тональном режиме (тот, что был выдан вам провайдером при регистрации).

3. После ввода номера VoIP платформа провайдера А "пробросит" вызов по подключенному входящему транку на PBXes.

4. PBXes найдёт правило входящей маршрутизации (Inbound Routing) для активного транка и выполнит указанные вами действия (в простых случаях пропустит без авторизации или попросит ввести PIN-код на языке, установленном в настройках транка, русского в бесплатной версии PBXes нет, - наберите его)

5. После авторизации вы услышите длинный гудок - сигнал PBXes, приглашающий донабрать номер вызываемого абонента.

6. Наберите номер, имя в виду установленные вами правила маршрутизации исходящих вызовов (Outbound Routing). Набранный номер обрабатывается правилами маршрутизации исходящих вызовов и согласном им выбирается один из провайдеров Б. Как правило, я придерживаюсь двух стратегий при создании правил: provider-based (основанный на провайдере) - я создаю правила для префиксов, однозначно определяющих провайдера Б. Например, при наборе номера, начинающего с 111 выбирается PowerVoip, при наборе 222 - другой провайдер и т. д. В этой стратегии широко используются префиксы и правила их обработки.

Destination-based (основанный на номере вызываемого абонента) - если вы звоните на ограниченный небольшой круг номеров и знаете провайдера с оптимальными тарифами для этого направления, можно создать правила, выбирающие провайдера лишь по кодам стран/городов в номере (без использования дополнительных префиксов)

7. Обработанный правилами маршрутизации исходящих вызовов номер (возможно, с отделённым префиксом, возможно с неотделённым, возможно без префикса вовсе) передаётся в набор определённому транку провайдера Б.

8. Полученный транком номер обрабатывается теперь уже правилами набора конкретно этого транка, и результирующий номер набирается VoIP платформой провайдера Б, т. е. провайдер Б звонит вашему вызываемому абоненту. После небольшой задержки вы услышите гудки телефона вашего оппонента на "той" стороне и вам остаётся дождаться, когда он снимет трубку.


Карта сайта


Информационный сайт Webavtocat.ru