Freeswitch установлен из репозитория. Как известно, Freeswitch имеет свой репозиторий, а не как Asterisk. Да, я собирал из исходников Freeswitch, но видимо что-то пошло не так, видимо из-за отсутствия опыта, по этому я переставил Freeswitch из репозитория.
Вобщем начать лучше с создания своего профиля настройки PBX, у меня он называется test в отличии от уже имеющегося предоставленного разработчиками default.
Делаем:
cd /etc/freeswitch/directory
mv default.xml default.xml.orig
nano default.xml.orig
здесь меняем:
<X-PRE-PROCESS cmd="include" data="default/*.xml"/>
на
<X-PRE-PROCESS cmd="include" data="test/*.xml"/>
при выходе из nano сохраняем файл под именем test.xml.
Находясь в каталоге /etc/freeswitch/directory создаем каталог test, в
него копируем два-три профиля телефонных аппаратов (каждый файл - аппарат), и файл default.xml из каталога default. Каталог default я на всякий случай переименовал переименовал.
mv default default.orig
Открываем профили учеток телефонных аппаратов:
nano /etc/freeswitch/directory/test/100X.xml
Приводим в соответствие контекст:
<variable name="user_context" value="test"/>
На всякий выкладываю листинг:
cat /etc/freeswitch/directory/test/1000.xml
<include>
<user id="1000">
<params>
<param name="password" value="1000"/>
<param name="vm-password" value="1000"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1000"/>
<variable name="user_context" value="test"/>
<variable name="effective_caller_id_name" value="1000"/>
<variable name="effective_caller_id_number" value="1000"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
Делаем на всякий копию файла
mv /etc/freeswitch/autoload_configs/acl.conf.xml /etc/freeswitch/autoload_configs/acl.conf.xml.orig
Открываем /etc/freeswitch/autoload_configs/acl.conf.xml, и приводим его к такому виду:
<configuration name="acl.conf" description="Network Lists">
<network-lists>
<list name="lan" default="allow">
<node type="allow" cidr="192.168.11.0/26"/>
<node type="allow" cidr="192.168.11.9/32"/>
</list>
<list name="domains" default="deny">
</list>
</network-lists>
</configuration>
192.168.11.0/26 моя подсеть, 192.168.11.9/32 хост с freeswitch.
Открываем файл /etc/freeswitch/vars.xml (так же предварительно можно скопировать оригинал, и переименовать). Здесь добавляем:
звуки
<X-PRE-PROCESS cmd="set" data="default_language=ru"/>
общий пароль для аппаратов
<X-PRE-PROCESS cmd="set" data="default_password=1000"/>
IP сервера для sip и rtp:
<X-PRE-PROCESS cmd="stun-set" data="external_rtp_ip=192.168.11.9"/>
<X-PRE-PROCESS cmd="stun-set" data="external_sip_ip=192.168.11.9"/>
Дефолтное удаляем или комментим
<X-PRE-PROCESS cmd="stun-set" data="external_rtp_ip=stun:stun.freeswitch.org"/>
<X-PRE-PROCESS cmd="stun-set" data="external_sip_ip=stun:stun.freeswitch.org"/>
Далее идем в /etc/freeswitch/sip_profiles/external, и здесь создаем файлы с учетками своих транков, у меня их два. Привожу как пример, вам самим (с помощью провайдера sip) нужно будет их настроить. Мои учетки транков:
cat sip1.xml
<include>
<gateway name="sip1">
<param name="username" value="1111111"/>
<param name="password" value="XXXXXXXXX"/>
<param name="realm" value="sip1.ru"/>
<param name="from-user" value="1111111"/>
<param name="from-domain" value="sip1.ru"/>
<param name="proxy" value="sip1.ru"/>
<param name="expire-seconds" value="300"/>
<param name="register" value="true"/>
<param name="register-transport" value="udp"/>
<param name="context" value="sip1"/>
</gateway>
</include>
cat sip2.xml
<include>
<gateway name="sip2">
<param name="username" value="2222222"/>
<param name="password" value="XXXXXXXXX"/>
<param name="realm" value="sip2.ru"/>
<param name="from-user" value="2222222"/>
<param name="from-domain" value="sip2.ru"/>
<param name="proxy" value="sip2.ru"/>
<param name="expire-seconds" value="300"/>
<param name="register" value="true"/>
<param name="register-transport" value="udp"/>
<param name="context" value="sip2"/>
</gateway>
</include>
Теперь идем в /etc/freeswitch/dialplan и создаем тут файл test.xml
Обращаю внимание, что входящие вызовы тут не описаны, только исходящие.
Мой text.xml - диалплан.
<?xml version="1.0" encoding="UTF-8"?>
<include>
<context name="test">
<extension name="unloop">
<condition field="$${unroll_loops}" expression="^true$" />
<condition field="${sip_looped_call}" expression="^true$" >
<action application="deflect" data="${destination_number}" />
</condition>
</extension>
<extension name="out-sip1">
<condition field="destination_number" expression="^(8\d{10})$">
<action application="bridge" data="sofia/gateway/sip1/$1" />
<action application="hangup"/>
</condition>
</extension>
<extension name="out-sip2">
<condition field="destination_number" expression="^(7\d{10})$">
<action application="bridge" data="sofia/gateway/sip2/$1" />
<action application="hangup" />
</condition>
</extension>
<extension name="local">
<condition field="destination_number" expression="^\d{4}$">
<action application="answer" />
<!-- <action application="sleep" data="1000" /> -->
<action application="bridge" data="user/${destination_number}@$${domain}" />
<action application="hangup" />
</condition>
</extension>
</context>
</include>
Обратите внимание, на то, что выделено красным - вызов с первой цифры 8 и затем 10 цифр, и вызов пойдет через sip1, вызов с первой цифры 7 и затем 10 цифр, и вызов пойдет через sip2.
Можно настроить аппараты или софтфоны, перезапустить Freeswitch и попробовать позвонить.
Вход в консоль: FS - fs_cli
Статус транков: sofia status gateways
Статус транка: sofia status gateway sip
Если вы работали с Asterisk полезно взглянуть
сюда.
Я не претендую на абсолютную правильность написанного, т.к. основная цель данного текста зафиксировать свой опыт по работе с новой платформой. С данным конфигом у меня все работало - звонили внутренние телефоны, уходили звонки на внешние транки. Если будут вопросы - пишите, постараюсь ответить.
Комментариев нет:
Отправить комментарий