FreeSwitch: простейшая настройка SIP gateway и Диалплана
Настройка Sip profiles (транспорта) и gateways (транков). Входящая и исходящая маршрутизация. Примеры и комментарии.
+---------------------+ +-----------------------+ | 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="destination_number" expression="^(2\d{3})$"><action application="set" data="effective_caller_id_name=${user_data(${username}@${domain_name} var effective_caller_id_name)}"/> <action application="set" data="effective_caller_id_number=${user_data(${username}@${domain_name} var effective_caller_id_number)}"/> <action application="bridge" data="sofia/gateway/samsung/$1"/></condition></extension></include>
Внешние вызовы через провайдера без префикса
цифры | extension name |
---|---|
XXXXXXX | local.itsp |
89XXXXXXXXX | domestic.itsp |
810XXXXXXXXXX | international.itsp |
conf/dialplan/default/01_itsp.xml
<include><extension name="local.itsp"><condition field="destination_number" expression="^(\d{7})$"><action application="set" data="outbound_caller_id_number=${user_data(${username}@$${domain} var outbound_caller_id_number)}"/> <action application="set" data="outbound_caller_id_name=${user_data(${username}@$${domain} var outbound_caller_id_name)}"/> <action application="bridge" data="sofia/gateway/itsp/$1"/></condition></extension><extension name="domestic.itsp"><condition field="destination_number" expression="^(89\d{9})$"><action application="set" data="outbound_caller_id_number=${user_data(${username}@$${domain} var outbound_caller_id_number)}"/> <action application="set" data="outbound_caller_id_name=${user_data(${username}@$${domain} var outbound_caller_id_name)}"/> <action application="bridge" data="sofia/gateway/itsp/$1"/></condition></extension><extension name="international.itsp"><condition field="destination_number" expression="^(810\d+)$"><action application="set" data="outbound_caller_id_number=${user_data(${username}@$${domain} var outbound_caller_id_number)}"/> <action application="set" data="outbound_caller_id_name=${user_data(${username}@$${domain} var 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"/>
Переменная ${effective_caller_id_number}указывает непосредственно на поле From: из SIP заголовка вызывающего устройства.
Её можно заменить переменной заданной в настройках юзера — ../directory/default/user.xml— <variable name="effective_caller_id_number" value="8129981138"/>,
получается при помощи команды ${user_data(${username}@${domain_name} var effective_caller_id_number)}
Внешние вызовы через провайдера через префикс "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=8129981138"/><action application="set" data="effective_caller_id_name=8129981138"/><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=8129981138"/><action application="set" data="effective_caller_id_name=8129981138"/><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=8129981138"/><action application="set" data="effective_caller_id_name=8129981138"/><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