Как стать автором
Обновить

Введение в FreeSWITCH, часть первая

Время на прочтение3 мин
Количество просмотров49K
В свое время я открыл для себя Asterisk и VoIP вообще после прочтения серии статей на opennet.ru о его настройке. Попробую повторить пиар подобного типа для FreeSWITCH.



Установка, старт


Установка FreeSWITCH ничем особенным не выделяется, msi пакет для Windows, исходники под все остальные платформы. Сборка по стандартной последовательности. Для поклонников пакетных вариантов установки есть возможность собрать deb пакеты через не менее стандартный debian/rules binary.

Итак, первое что я вам должен сообщить, это то что FS после установки уже настроен, работает и готов если не к использованию, то к тестам.
В качестве домена выбран IP адрес хоста, есть пользователи с номерами от 1000 до 1019, функционирует голосовая почта (для прослушивания наберите свой номер, когда зарегистрированы), конференции трех типов (8кГц — 30xx,16кГц — 31xx,32кГц — 32xx), и еще множество примеров для демонстрации возможностей.
И это всё вполне можно сразу начинать использовать на полную катушку, но в любом случае схему надо будет переделывать под себя. Главное же что я вам скажу — демонстрационный номерной план надо изучить, проштудировать и понять каждый пункт — в нём можно найти примеры использования самых новых возможностей, да и вообще большинство возможностей в нём есть.

А теперь разберемся с конфигурацией. Главный каталог — conf, в нем содержится freeswitch.xml — корневой файл, из которого после препроцессинга получится конфигурация, vars.xml — файл в котором содержится множество настроек. С этого момента поподробнее.

Переменные



Вот, например, строка <X-PRE-PROCESS cmd=«set» data=«domain=$${local_ip_v4}»/>. Именно в этой стандартной строке из vars.xml задается имя нашего домена используемое в стандартном номерном плане.
А вот в этой строке она используется в номерном плане <action application=«set» data=«domain_name=$${domain}»/>,
и domain_name — <action application=«bridge» data=«user/${dialed_extension}@${domain_name}»/>

На этом примере разберемся с константами и переменными. Константа задаётся как $${имя_константы} и будет заменена при препроцессинге конфигурации на значение. То есть в результирующей конфигурации ни слова о имя_константы(или о domain и local_ip_v4) мы не увидим.
Переменные задаются как ${domain_name}. Их значение может быть различным, в зависимости от обстоятельств. Например при звонке всегда есть переменная destination_number, содержащая входящий номер, или caller_id_number содержащая номер вызывающей стороны.
Константы устанавливаются при помощи конструкции <X-PRE-PROCESS cmd=«set» data=«domain=мой.маленький.но.очень.гордый.домен.рф»/>, переменные устанавливаются системой или можно задать их через приложение номерного плана «set», пример: <action application=«set» data=«domain_name=$${domain}»/>. После препроцессинга она примет вид <action application=«set» data=«domain_name=мой.маленький.но.очень.гордый.домен.рф»/>.

SIP, профили



За поддержку SIP отвечает mod_sofia, основанный на библиотеке Sofia-SIP от компании Nokia. Список поддерживаемых возможностей из RFC, относящихся к делу, очень близок к 100%. Это и TCP транспорт, и TLS, SIMPLE и еще многое.
Первое, что необходимо для работы mod_sofia, это объявление профиля (conf/sip_profiles/{internal,external}.xml). Профиль можно рассматривать как виртуальный сервер из мира HTTP серверов (у SIP вообще много аналогий с HTTP). Каждый профиль определяет пару адрес/порт, контекст, в котором будут обрабатываться входящие звонки, правила регистрации, домен, ограничения, нужна ли авторизация.
Например стандартный профиль internal служит для обслуживания внутренних абонентов. Через этот профиль регистрируются клиенты нашей инсталляции, пользуются голосовой почтой, звонят друг другу, устраивают конференции, в общем ведут активную деловую жизнь с бюрократическими вкраплениями.
Профиль external служит для связи с внешним миром. В его настройках задан стандартный контекст из номерного плана public, в котором нет всех этих возможностей. Главным образом он служит для роутинга входящих звонков во внутренний контекст на определенные номера. К примеру входящие звонки на 78-14-90 перевести на внутренний номер 1009.

Также есть понятие шлюзов (gateway). Посмотрите содержимое файла conf/sip_profiles/external/example.xml. Здесь есть пример конфигурации шлюза (закомментированый). Шлюзы задуманы для использования с провайдерами VoIP, которые требуют регистрации на своих серверах. Если SIP хост не требует регистрации, то звонки через него можно организовать через номерной план без использования конфигурационной сущности «шлюз». Но для красоты можно задать таки шлюз с параметром <param name=«register» value=«false»/>

В следующей серии разбор номерного плана.
Теги:
Хабы:
+2
Комментарии1

Публикации