FreeSwitch: простейшая настройка SIP gateway и Диалплана
Обзор
Простой пример настройки Sip профилей FreeSWITCH. Конфигурация sip шлюза (gateway) для подключения провайдера IP телефонии (ITSP) через интернет и SIP Gateway к корпоративной АТС в локальной сети, входящая и исходящая маршрутизация FreeSWITCH.
+---------------------+ +-----------------------+ | Extensions | | Profiles | | ../conf/directory | | ../conf/sip_profiles | +---------------------+ +-----------------------+ | | +----------+ +-----------+ | | V V +---------------------+ | Contexts | | ../conf/dialplan | +---------------------+вводные данные шлюзов
IP/domain | Gateway Name |
---|---|
192.168.0.252 | samsung |
sip.itsp.com | itsp |
SIP транк (gateway) частной сети АТС.
conf/sip_profiles/internal/samsung.xml
<include> <gateway name="samsung"> <param name="username" value="samsung"/> <param name="password" value="register:false"/> <param name="proxy" value="192.168.0.252"/> <param name="expire-seconds" value="800"/> <param name="register" value="false"/> <param name="register-transport" value="udp"/> <param name="retry-seconds" value="60"/> <param name="context" value="default"/> <param name="caller-id-in-from" value="true"/> </gateway> </include>
Если в параметре <param name="proxy" value="192.168.0.252"/>порт не задан, то используется 5060, по умолчанию.
Чтобы задать специфический порт SIPсигнализации, используйте форму записи: <param name="proxy" value="192.168.0.252:5077"/>
Так как gateway создан в sip_profile— internal, входящие вызовы из корпоративной АТС будут попадать непосредственно в контекст defaultи если пользователь с вызываемым номером существует, он будет вызван. Дополнительные правила входящей маршрутизации не требуются. Таким образом вы можете создать корпоративную телефонную сеть со сквозной нумерацией.
Поле <param name="caller-id-in-from" value="true"/>обеспечит передачу внутреннего номера из поля From:в качестве CallerID.
SIP gateway провайдера ( ITSP )
conf/sip_profiles/external/itsp.xml
<include> <gateway name="itsp"> <param name="username" value="itsp"/> <param name="password" value="12345"/> <param name="realm" value="sip.itsp.com"/> <param name="from-user" value="itsp_user"/> <param name="from-domain" value="sip.itsp.com"/> <param name="proxy" value="sip.itsp.com:5060"/> <param name="expire-seconds" value="800"/> <param name="register" value="true"/> <param name="retry-seconds" value="60"/> <param name="context" value="public"/> <param name="caller-id-in-from" value="false"/> </gateway> </include>
Входящая маршрутизация из контекста Public
conf/dialplan/public/00_inbound_did.xml
<include> <extension name="public_did"> <condition field="destination_number" expression="^(7771000)$"> <!-- $${domain} это домен FreeSwitch по умолчанию, назначенный в vars.xml.** --> <action application="set" data="domain_name=$${domain}"/> <!-- этот пример направляет вызовы по DID 7771000 на внутренний номер 1000 в контексте default --> <action application="transfer" data="1000 XML default"/> </condition> </extension> </include>
<X-PRE-PROCESS cmd=«set» data=«domain=$${local_ip_v4}»/>
<X-PRE-PROCESS cmd=«set» data=«domain_name=$${domain}»/>
Устанавливает домен по умолчанию используемый FreeSWITCH, если другое не задано.
По умолчанию $${local_ip_v4}
Исходящая маршрутизация через gateway's
вводные данные маршрутизации
Набор Четырехзначных номеров в частную сеть АТС
цифры | expression | extension name |
---|---|---|
2XXX | ^(2\d{3})$ | local.samsung |
conf/dialplan/default/01_samsung.xml
<include> <extension name="local.samsung"> <condition field="${toll_allow}" expression="local"/> <condition field="destination_number" expression="^(2\d{3})$"> <action application="set" data="effective_caller_id_number=${effective_caller_id_number}"/> <action application="set" data="effective_caller_id_name=${effective_caller_id_name}"/> <action application="bridge" data="sofia/gateway/samsung/$1"/> </condition> </extension> </include>
Переменная ${effective_caller_id_number}указывает непосредсвенно на CallerID устройства инициирующего вызов.
Если требуется передать имя, в первую очередь FS принимает значение указанное устройством в SIPпакете.
Переменная заданная в настройках ../directory/default/user.xml— <variable name="effective_caller_id_name" value="User Userov"/>игнорируется.
Внешние вызовы через провайдера без префикса
цифры | extension name |
---|---|
XXXXXXX | local.itsp |
89XXXXXXXXX | domestic.itsp |
810XXXXXXXXXX | international.itsp |
conf/dialplan/default/01_itsp.xml
<include> <extension name="local.itsp"> <condition field="${toll_allow}" expression="local"/> <condition field="destination_number" expression="^(\d{7})$"> <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}"/> <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}"/> <action application="bridge" data="sofia/gateway/itsp/$1"/> </condition> </extension> <extension name="domestic.itsp"> <condition field="${toll_allow}" expression="domestic"/> <condition field="destination_number" expression="^(89\d{9})$"> <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}"/> <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}"/> <action application="bridge" data="sofia/gateway/itsp/$1"/> </condition> </extension> <extension name="international.itsp"> <condition field="${toll_allow}" expression="international"/> <condition field="destination_number" expression="^(810\d+)$"> <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}"/> <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}"/> <action application="bridge" data="sofia/gateway/itsp/$1"/> </condition> </extension> </include>
переменная ${outbound_caller_id_number}задается в файле vars.xml:
<X-PRE-PROCESS cmd="set" data="outbound_caller_id_name=fs"/> <X-PRE-PROCESS cmd="set" data="outbound_caller_id_number=777777"/>
обычно требуется передать провайдеру callerID из вашего пула номеров, это можно сделать для каждого маршрута:
<action application="set" data="effective_caller_id_number=8129981138"/> <action application="set" data="effective_caller_id_name=8129981138"/>
Внешние вызовы через провайдера через префикс "9".
префикс | цифры | extension name |
---|---|---|
9 | XXXXXXX | local.itsp |
9 | 8[09]XXXXXXXXX | mobile.itsp |
9 | 8X. | international.itsp |
<include> <extension name="local.itsp"> <condition field="caller_id_number" expression="^(397\d)$"/> <condition field="destination_number" expression="^9(\d{7})$"> <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}"/> <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}"/> <action application="bridge" data="sofia/gateway/itsp/$1"/> </condition> </extension> <extension name="mobile.itsp"> <condition field="caller_id_number" expression="^(397\d)$"/> <condition field="destination_number" expression="^9(8[09]\d{9})$"> <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}"/> <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}"/> <action application="bridge" data="sofia/gateway/itsp/$1"/> </condition> </extension> <extension name="international.itsp"> <condition field="caller_id_number" expression="^(397\d)$"/> <condition field="destination_number" expression="^9(8\d+)$"> <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}"/> <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}"/> <action application="bridge" data="sofia/gateway/$itsp/$1"/> </condition> </extension> </include>
Условие <condition field="caller_id_number" expression="^(397\d)$"/>, можно использовать для ограничения доступа к gateway.
В примере через данный gateway смогут звонить только номера 3970-3979.
sc qc FreeSWITCH