Freeswitch: Sofia.conf.xml
Что такое Sofia
Эта статья содержит русскоязычное описание настройки профилей (SIP profile = Sofia profile = UA = User Agent) в FreeSWITCH.
Sofia это модуль FreeSWITCH (mod_sofia), который обеспечивает подключения SIP в качестве User Agent."User Agent" ("UA") представляет собой приложение используемое для обработки определенного сетевого протокола. Для Sofia User Agent сетевым протоколом является SIP.
Sofia это общее название для User Agents (UAs) использующих SIP протокол во FreeSWITCH.
Sofia принимает и отправляет вызовы между внутренними абонентами зарегистрированными в FreeSWITCH.
Sofia используется для добавления SIP-провайдеров (gateways) в FreeSWITCH. XML-файл конфигурации хранится в файлах *.xml ../conf/sip_profiles/...
Sofia позволяет создавать множество профилей User Agents
Когда FreeSWITCH стартует, он перечитывает конфиг ..conf/autoload_configs/sofia.conf.xml, который содержит директиву «X-PRE-PROCESS». Эта директива инструктирует FreeSWITCH объединять все SIP профили из ..conf/sip_profiles/*.xml. Каждый загруженный *.xml файл содержит полное описание одного или нескольких SIP профилей.
<profiles> <X-PRE-PROCESS cmd="include" data="../sip_profiles/*.xml"/> </profiles>
Каждый загруженный SIP профиль является частью «User Agents» или «UA»; в терминологии FreeSWITCH - UA = User Agent = Sofia Profile = SIP Profile.
Так как отдельные SIP профили загружены и объединены вместе в FreeSWITCH, они не должны мешать друг другу: В частности, каждый UA должен иметь свой собственный уникальный порт, на котором он будет принимать подключения (порт по умолчанию для внутреннего SIP профиля - 5060, для внешнего - 5080).
Множество SIP профилей и Диалплан
Для чего может понадобится несколько профилей?
Например: FreesWITCH установлен в локальной сети. Звонки через SIP транк провайдера, осуществляются за пределы локальной сети, через NAT.
Звонки на внутренние телефоны производятся в локальной сети.
Для этого в FreeSWITCH, по умолчанию, созданы два профиля internal и exrternal.
Через профиль external осуществляются внешние вызовы, за пределы локальной сети.
Через профиль internal, соответственно внутренние, в локальной сети.
Чтобы набрать номер через определенный профиль в диалплане используется следующий синтаксис:
sofia/profile_name/destination
С помощью шаблонов в Диалплане определяется какой номер набирается и какой профиль использовать для вызова.
Привязка Sip профилей к SIP Доменам
В обычном случае, FreeSWITCH должен запускаться и работать «из коробки». Глобальная переменная <domain name=«$${domain}»> заданная в ..conf/directory/default.xml, назначает профилю IP адрес локального интерфейса автоматически. Внешние вызовы совершаются в соответствии с правилами сети. Если используется несколько сетевых интерфейсов, возможно, потребуются дополнительные настройки.
192.168.0.123 alias internal ALIASED external profile sip:mod_sofia@192.168.0.123:5080 RUNNING (0) internal profile sip:mod_sofia@192.168.0.123:5060 RUNNING (0)
Aliases/Псевдонимы - Тэг <aliases> задает псевдонимы (другие имена), которые будут работать в качестве действительного имени для текущего профиля. Похоже на файл /etc/hosts в UNIX.
Испольэуйте aliases/псевдонимы для определения какой SIP профиль вызывается. Например для вызова URI - user@host.com в профиле internal задайте <alias name =«host.com»/>.
Например в конфиге профиля internal ../conf/sip_profiles/internal.xml определено:
<aliases> <alias name ="default"/> <alias name ="host.com"/> </aliases>
sip:user@internal - имя внутреннего профиля по умолчанию
sip:user@192.168.0.123 - IP адрес локального интерфейса сопоставленный с внутренним профилем
sip:user@default - alias внутреннего профиля
sip:user@host.com - alias внутреннего профиля
Тег <domain> - домен или IP, заданный для SIP профиля.
- alias: [true/false] (автоматически создавать Aliases для данного профиля.)
- parse: [true/false] (сканировать домен для записей шлюза и включить их в этот профиль,)
- name: [<string>] (введите имя или IP определенного домена, или 'all' для разрешения любых доменов)
<domain name="all" alias="true" parse="false"/>
Концепция отношений пользователей и доменов в FreeSWITCH описана в заголовке файла ../conf/directory/default.xml
FreeSWITCH отрабатывает концепцию пользователей и доменов, наподобие EMail. Имеются пользователи, которые находятся в доменах, например 111@domain.net Когда FreeSWITCH получает запрос на регистрацию, пользователь в директории вызывается, на основании домена в поле From: или To: (в зависимости от конфигурации профиля). По умолчанию доменом будет IP адрес машины на которой запущен FreeSWITCH. Этот IP можно посмотреть комадой FS_CLI - 'Sofia status'. Регистрация посылается на IP адрес, а не на Hostname. Если требуется регистрироваться на Hostname, отредактируйте файл 'vars.xml' в ../conf/ установив в качестве значения домена нужное имя хоста.
Структура профиля
Каждый профиль может содержать несколько различных подсекций:
<!ELEMENT configuration (global_settings?, profiles)> <!ELEMENT global_settings (param+)> <!ELEMENT profiles (profile+)> <!ELEMENT profile (aliases, gateways, domains, settings)> <!ELEMENT aliases (alias*)> <!ELEMENT gateways (gateway*)> <!ELEMENT gateway (param+, variables?)> <!ELEMENT variables (variable+)> <!ELEMENT domains (domain*)> <!ELEMENT settings (param+)> <!ELEMENT alias EMPTY> <!ELEMENT param EMPTY> <!ELEMENT variable EMPTY> <!ELEMENT domain EMPTY> <!ATTLIST configuration name CDATA #REQUIRED description CDATA #REQUIRED> <!ATTLIST profile name CDATA #REQUIRED domain CDATA #IMPLIED> <!ATTLIST gateway name CDATA #REQUIRED> <!ATTLIST alias name CDATA #REQUIRED> <!ATTLIST param name CDATA #REQUIRED value CDATA #REQUIRED> <!ATTLIST variable name CDATA #REQUIRED data CDATA #REQUIRED direction CDATA #IMPLIED> <!ATTLIST domain name CDATA #REQUIRED alias (true | false) #IMPLIED parse (true | false) #IMPLIED>
Gateway
В профиле может назначен один или несколько шлюзов (Gateways).
<gateways> <gateway> ...elements... </gateway> <gateway> ...elements... </gateway> </gateways>
Атрибут 'name' задает шлюзу имя по которому он идентифицируется системой. Шлюз может обеспечивать доступ к ТФОП или частной сети SIP. Шлюз определяется для получения информации о соединении с другой сетью, до совершения вызова UA. Вместе со шлюзом могут быть определены переменные. Входящие переменные назначаются вызываемому каналу, исходящие - вызывающему.
Пример конфигурации шлюза (gateway):
<gateway name="gateway777"> <param name="realm" value="sip.voip_provider.com" /> <param name="username" value="test_name" /> <param name="password" value="test_password" /> <param name="register" value="true" /> <param name="caller-id-in-from" value="true" /> <param name="ping" value="5" /> <param name="ping-max" value="3" /> <param name="retry-seconds" value="5" /> <param name="expire-seconds" value="60" /> <variables> <variable name="verbose_sdp" value="true"/> <variable name="absolute_codec_string" value="PCMA,PCMU" direction="outbound"/> <variable name="customer_id" value="7777" direction="inbound"/> </variables> </gateway>
Для вызова через определенный шлюз используется следующий синтаксис:
sofia/gateway/<gateway_name>/<dialstring>
Параметры
Ниже приведен список параметров шлюза (gateway):
username
account username - обязательный параметр
<param name="username" value="foo"/>
Account username - это параметр шлюза, не перепутайте с username установкой SIP профиля.
realm
auth realm: необязательный параметр - совпадает с именем шлюза, если не назначено другое.
<!-- realm --> <param name="realm" value="sip.example.com[:port]"/>
password
пароль аккаунта обязательный параметр
<param name="password" value="a password"/>
from-user
Имя пользователя для поля From: необязательно совпадает с именем пользователя, если не назначено другое.
<param name="from-user" value="fooman"/>
from-domain
Используется в поле From: необязательно совпадает 'realm', если ничего не назначено; также может быть установлено в «auto-aleg-full» или «auto-aleg-domain»
<param name="from-domain" value="sip.provider.com"/>
caller-id-in-from
Подменить значение поля From: user в INVITE, на Caller-ID канала
Это неправильно в большинстве случаев, т.к. для исходящих вызовов в INVITE требуется Username, а не Caller-ID
Use the callerid of an inbound call in the from field on outbound calls via this gateway
<param name="caller-id-in-from" value="false"/>
extension
extension for inbound calls: необязательно Если не назначено, будет тоже что и username.
Для того,чтобы использовать значение переменной ${sip_to_user}, установите - «auto_to_user»
<param name="extension" value=""/>
Примечание: Параметр 'extension' влияет на значение переменных канала 'Caller-Destination-Number' и 'destination_number'.
Если оставить пустым, Caller-Destination-Number будет установлено 'Username' шлюза.
Если задано значение, Caller-Destination-Number будет установлено это значение.
Если задано значение 'auto_to_user', Caller-Destination-Number будет заполнен значением переменной ${sip_to_user},
что означает вызываемый (набранный) номер, в случае входящего вызова.
proxy
proxy host: необязательно совпадает с 'realm', если не задано другое.
<param name="proxy" value="proxy.example.com"/>
expire-seconds
Время регистрации в секундах: необязательно 3600, или пусто.
<param name="expire-seconds" value="3600"/>
suppress-cng
Подавлять CNG (comfort noise) в этом профиле.
<param name="suppress-cng" value="true"/>
register
false: не посылать «Register'. true: register (default)
<param name="register" value="false"/>
register-transport
Используемый транспортный протокол
<param name="register-transport" value="udp"/>
contact-params
Дополнительные SIP параметры для отправки контакту.
<param name="contact-params" value="tport=tcp"/>
ping
Проверять статус шлюза : необязательно
<param name="ping" value="15"/>
ping-max / ping-min
<!-- *optional* --> <param name="ping-max" value="10"/>
<!-- *optional* --> <param name="ping-min" value="1"/>
ping-min - сколько успешных пингов должно пройти для объявления шлюза активным.
Промежуток между ping-min и ping-max обозначает «безопасную зону».
Так например, если вы имеете значение минимум 3, максимум 6 и получаете ответ на пинги 3,4,5 и 6 шлюз считаеся активным.
Если из 6 пакетов 4 подряд утеряны, шлюз считается недоступным.
Обратите внимание, что когда Sofia стартует шлюз считается активным, если ping-min > 1, правильный отсчет начинается только, когда шлюз падает.
extension-in-contact
необязательно - по умолчанию - false
<param name="extension-in-contact" value="true"/>
cid-type
необязательно
<param name="cid-type" value="rpid"/>
Параметр 'register' используется, когда профиль действует в качестве клиента, подключаясь к удаленному UA.
Регистрируясь, FreeSWITCH информирует удаленный UA о своем местонахождении. Обычно это происходит когда FreeSWITCH ожидает входящие вызовы от удаленной стороны.
Если же FreeSWITCH использует шлюз только для исходящих вызовов, регистрация не обязательна.
distinct-to
Параметр 'distinct-to' используется когда FS требуется зарегистрироваться при помощи отличающегося Address-of-Record (AOR) заголовка «To:».
Это требует надлежащей настройки некоторых параметров. Например вы хотите послать REGISTER to, со следующими значениями:
From: <sip:someuser@somedomain.com> To: <sip:anotheruser@anotherdomain.com>
Тогда значения должны быть такими:
<param name="distinct-to" value="true"/> <param name="auth-username" value="someuser"/> <param name="from-user" value="someuser"/> <param name="from-domain" value="somedomain.com"/> <param name="password" value="somepassword"/> <param name="username" value="anotheruser"/> <param name="realm" value="anotherdomain.com"/>
Параметр 'ping' используется для проверки доступности шлюза.
При включении это опции, FreeSWITCH, пошлет пакет SIP OPTIONS удаленному шлюзу.
В зависимости от ответа шлюза SIP 200 OK или 404 Not Found, статус шлюза будет активен или недоступен, соответственно.
Когда вызов будет направлен на неактивный шлюз, FS генерирует причину отказа - NETWORK_OUT_OF_ORDER.
Частота запросов 'ping' указывается в секундах, при минимальном значении 5 секунд.
Параметр 'extension-in-contact' нужен для принудительного использования контактной информации при регистрации.
Если имеются проблемы при регистрации с параметрами по умолчанию, такими как gw+gateway_name@ip, можно использовать extension@ip.
Если extension не задан, будет использовано - username@ip
Variables переменные
Дополнительные параметры могут быть заданы переменными и установлены для входящих или исходящих вызовов проходящих через шлюз. Можно указать конкретное направление или задать переменную для обоих направлений.
<gateway> ...params... <variables> <variable name="inbound_var_name" value="this is inbound" direction="inbound"/> <variable name="outbound_var_name" value="this is outbound" direction="outbound"/> <variable name="both_var_name" value="this on any direction"/> </variables> </gateway>
Эти переменные канала могут быть заданы для всех вызовов проходящих через шлюз в заданном направлении.
Однако, при помощи особого синтаксиса, могут быть установлены переменные для всего профиля:
<variable name="p:caller_id_name" value="Gateway"/>
Settings
Настройки включают больше общей информации о профиле.
Каждый профиль определяется как SIP User Agent и каждый UA должен иметь свой уникальный SIP порт.
По умолчанию используется порт 5060, но это не мешает использовать другие порты и звонить, например на user@sip.example.com:5070.
Таким образом, можно назначить любой порт для каждого отдельного профиля.
Basic settings - Основные установки
alias
<param name="alias" value="sip:10.10.11.111:7777"/>
Связывает IP алрес и порт с SIP профилем.
shutdown-on-fail
<param name="shutdown-on-fail" value="true"/>
Если установлено «true» и SIP профиль по какой-то причине не был загружен FreeSWITCH будет остановлен.
user-agent-string
Это задает заголовок User-Agent для всех SIP сообщений.
<param name="user-agent-string" value="FreeSWITCH Rooocks!"/>
debug
<param name="debug" value="0"/>
sip-trace
<param name="sip-trace" value="no"/>
context
Контект диалплана который обрабатывает вызовы для этого SIP профиля и соотнесенных с ним IP адресов и портов.
<param name="context" value="public"/>
sip-port
Порт для SIP трафика.
<param name="sip-port" value="$${internal_sip_port}"/>
sip-ip
IP адрес для SIP трафика. НЕ ИСПОЛЬЗОВАТЬ HOSTNAMES, ТОЛЬКО IP АДРЕСА.
<param name="sip-ip" value="$${local_ip_v4_or_v6}"/>
rtp-ip
IP адрес для RTP трафика. НЕ ИСПОЛЬЗОВАТЬ HOSTNAMES, ТОЛЬКО IP АДРЕСА.
<param name="rtp-ip" value="$${local_ip_v4_or_v6}"/>
ext-rtp-ip
Внешний IP адрес для RTP трафика, чтобы видеть FS из интернета, если он находится за NAT.
Возможные значения:
Переменная из vars.xml, e.g. $${external_rtp_ip}:
<param name="ext-rtp-ip" value="$${external_rtp_ip}"/>
Определенный IP адрес
<param name="ext-rtp-ip" value="1.2.3.4"/>
При использовании для LAN и WAN, во избежание ошибок в SIP CONTACT используйте:
<param name="ext-rtp-ip" value="autonat:1.2.3.4"/>
«auto»: определять внешний IP автоматически по таблице маршрутизации.
<param name="ext-rtp-ip" value="auto"/>
«auto-nat»: FreeSWITCH будет использовать uPNP или NAT-PMP для определения публичного IP адреса.
<param name="ext-rtp-ip" value="auto-nat"/>
«stun:DNS или IP адрес»: FreeSWITCH будет использовать STUN сервер по вашему выбору для определения публичного IP адреса.
<param name="ext-rtp-ip" value="stun:stun.freeswitch.org"/>
«host:DNS name»: Использовать в качестве внешнего IP службу динамических DNS.
<param name="ext-rtp-ip" value="host:mypublicIP.dyndns.org"/>
Требуется перезагрузка FreeSWITCH, для того, что бы изменения значения ext-rtp-ip вступили в силу.
ext-sip-ip
IP адрес по которому FreeSWITCH виден из интернета, если он находится за NAT, т.е. пубдичный адрес сети в еоторой находится FS.
Возможные значения те же, что и у ext-rtp-ip и как правило эти параметры имеют одинаковые значения.
<param name="ext-sip-ip" value="$${external_sip_ip}"/>
tcp-keepalive
Задает интервал (в миллисекундах) посылки пакетов User агентам (UAs) зарегистрированным через TCP.
tcp-pingpong
tcp-ping2pong
dialplan
Параметр Диалплан весьма мощный инструмент.
В простейшем случае он указывает на то, что используется дефолтный XML диалплан (mod_xml_curl), секция которого определена в файле freeswitch.xml:
<X-PRE-PROCESS cmd=«include» data=«dialplan/*.xml»/>
<param name="dialplan" value="XML"/>
Также можно использовать mod_enum приоритетно над XML диалпланом.
<param name="dialplan" value="enum,XML"/>
Или наоборот использовать enum, только если попытка использовать XML диалплан потерпела неудачу.
<param name="dialplan" value="XML,enum"/>
также возможно задать путь к определенному enum диалплану в сети.
<param name="dialplan" value="enum:foo.com,XML"/>
или использовать специфический XML файл диалплана.
<param name="dialplan" value="XML:/tmp/foo.xml,XML,enum"/>
Здесь в первую очередь проверяется специфический XML файл, а затем обычный XML диалплан определенный модулем mod_xml_curl.
Опции медиа
Опции аудио потока.
Термин no media (или bypass_media в параметрах) значит то же, что и canreinvite в Asterisk, т.е. медиа поток при установлении вызова идет напрямую между точками, минуя сервер.
proxy-media - наоборот, режим, когда FreeSWITCH сервер пропускает медиа трафик через себя.
+------------+ | | ____| FreeSWITCH |___ / | | \ SIP / +------------+ \ SIP / 10.10.1.150 \ / \ +----------+ +----------+ | | | | | endpoint | <---- RTP ----> | endpoint | | A | Audio | B | +----------+ +----------+ 10.10.1.100 10.10.1.110
и включается опцией:
<action application="set" data="bypass_media=true"/>
resume-media-on-hold
Забрать вызов с удержания.
<param name="media-option" value="resume-media-on-hold"/>
bypass-media-after-att-xfer
Направить медиа поток напрямую, после сопровождаемого перевода вызова. \This will allow a call after an attended transfer go back to bypass media after an attended transfer.\
<param name="media-option" value="bypass-media-after-att-xfer"/>
bypass-media-after-hold
Возвращает медиа поток напрямую с удержания. Эта опция может быть включена только если resume-media-on-hold установлено.
<param name="media-option" value="bypass-media-after-hold"/>
inbound-bypass-media
Раскомментируйте, чтобы установить все входящие вызовы в 'no media' режим. Это значит, что FreeSWITCH сервер обрабатывает только SIP сообщения, а RTP трафик направляет напрямую, от точки к точке.
<param name="inbound-bypass-media" value="true"/>
inbound-proxy-media
Раскомментируйте чтобы установить все входящие вызовы в режим 'proxy-media'. Это значит, что FreeSWITCH держит и SIP, и RTP трафик, но не взаимодействует с потоком RTP (не конвертирует кодеки?).
<param name="inbound-proxy-media" value="true"/>
disable-rtp-auto-adjust
<param name="disable-rtp-auto-adjust" value="true"/>
ignore-183nosdp
<param name="ignore-183nosdp" value="true"/>
enable-soa
<param name="enable-soa" value="true"/>
Установите значение «false» чтобы выключить SIP SOA from sofia to tell sofia not to touch the exchange of SDP\\???
t38-passthru
<param name="t38-passthru" value="true"/>
Следующие опции доступны:
- 'true' вкл. t38 в сквозном режиме.
- 'false' выкл. t38 в сквозном режиме.
- 'once' вкл. t38 passthru, но отправлять t.38 re-invite только раз.
Опции кодеков
<spoiler|поддерживаемые кодеки>
type | name | ikey |
---|---|---|
codec | ADPCM (IMA) | mod_spandsp |
codec | AMR | mod_amr |
codec | G.711 alaw | CORE_PCM_MODULE |
codec | G.711 ulaw | CORE_PCM_MODULE |
codec | G.722 | mod_spandsp |
codec | G.723.1 6.3k | mod_g723_1 |
codec | G.726 16k | mod_spandsp |
codec | G.726 16k (AAL2) | mod_spandsp |
codec | G.726 24k | mod_spandsp |
codec | G.726 24k (AAL2) | mod_spandsp |
codec | G.726 32k | mod_spandsp |
codec | G.726 32k (AAL2) | mod_spandsp |
codec | G.726 40k | mod_spandsp |
codec | G.726 40k (AAL2) | mod_spandsp |
codec | G.729 | mod_g729 |
codec | GSM,mod_spandsp | |
codec | H.261 Video (passthru) | mod_h26x |
codec | H.263 Video (passthru) | mod_h26x |
codec | H.263+ Video (passthru) | mod_h26x |
codec | H.263++ Video (passthru) | mod_h26x |
codec | H.264 Video (passthru) | mod_h26x |
codec | LPC-10 | mod_spandsp |
codec | PROXY PASS-THROUGH | CORE_PCM_MODULE |
codec | PROXY VIDEO PASS-THROUGH | CORE_PCM_MODULE |
codec | Polycom(R) G722.1/G722.1C | mod_siren |
codec | RAW Signed Linear (16 bit) | CORE_PCM_MODULE |
codec | Speex | mod_speex |
codec | iLBC | mod_ilbc |
</spoiler>
inbound-codec-prefs
Установить предпочтительные кодеки для входящих вызовов SIP профиля.
<param name="inbound-codec-prefs" value="$${global_codec_prefs}"/>
outbound-codec-prefs
Установить предпочтительные кодеки для исходящих вызовов SIP профиля.
<param name="outbound-codec-prefs" value="$${outbound_codec_prefs}"/>
codec-prefs
Установить как входящие inbound-codec-prefs, так и исходящие outbound-codec-prefs одновременно.
<param name="codec-prefs" value="$${global_codec_prefs}"/>
inbound-codec-negotiation
Переговоры использования предпочтительных кодеков при входящих вызовах.
Установите 'greedy' если кодеки указанные в системе, должны быть предпочтительней, кодекам требуемым снаружи.
<param name="inbound-codec-negotiation" value="generous"/>
Если 'greedy' не срабатывает, попробуйте 'scrooge', который поможет исправить последствия некорректных запросов от провайдера.
Правила:
- 'generous' Список кодеков удаленной стороны имеет приоритет над локальным.
- 'greedy' Отдать приоритет локальным кодекам.
- 'scrooge' не вступать в переговоры с удаленной стороной, применять локальные приоритеты кодеков.
- sip_codec_negotiation - переменная канала, как вариант вышеуказанного параметра.
inbound-late-negotiation
Начинать сверяться с диалпланом ещё до того, как переговоры сторон по кодекам завершились успешно.
<param name="inbound-late-negotiation" value="true"/>
bitpacking
«Упаковка»
This setting is for AAL2 bitpacking on G.726.
<param name="bitpacking" value="aal2"/>
disable-transcoding
Отключить перекодировку кодеков.
<param name="disable-transcoding" value="true"/>
renegotiate-codec-on-reinvite
<param name="renegotiate-codec-on-reinvite" value="true"/>
STUN
Если вы нуждаетесь в использовании STUN сервера, ниже приведены несколько общих примеров: If you need to use a STUN server, here are common working examples:
ext-rtp-ip
<param name="ext-rtp-ip" value="stun:stun.fwdnet.net"/>
stun.fwdnet.net публичный STUN сервер.
ext-sip-ip
<param name="ext-sip-ip" value="world_reachable.real.numeric.ip"/>
stun-enabled
Простой обход UDP через NAT (Simple traversal of UDP over NATs (STUN)), используется для решения проблем SIP клиентов, находящихся за NAT, в частном пространстве IP адресов.
Stun используется, когда указан следующий параметр (по умолчанию true).
<param name="stun-enabled" value="true"/>
stun-auto-disable
Установите 'true' для полного отключения 'stun', для данного профиля.
<param name="stun-auto-disable" value="true"/>
NAT
apply-nat-acl
Когда FS получает запрос REGISTER или INVITE, включать режим NAT автоматически, если IP адрес в заголовке Contact совпадает со списком доступа RFC 1918.
acl в данном случае неправильное выражение, потому что в доступе не будет отказано. если контактный IP адрес не совпадает со списком доступа.
<param name="apply-nat-acl" value="rfc1918"/>
aggressive-nat-detection
<param name="aggressive-nat-detection" value="true"/>
Включает режим NAT, если IP/Port сети от которой был получен запрос, отличается от IP/Port SIP Via: заголовка.
VAD и CNG
Voice Activity Detection и Comfort Noise generation
VAD аббревиатура от Распознование Речевой Активности. FreeSWITCH может распознавать речь и останавливать передачу RTP трафика, если голоса нет.
vad
<param name="vad" value="in"/> <param name="vad" value="out"/> <param name="vad" value="both"/>
suppress-cng
Подавлять Comfort Noise Generator (CNG) для данного профиля или текущего вызова при помощи 'suppress_cng' переменной.
<param name="suppress-cng" value="true"/>
NDLB (No device left behind)
NDLB-force-rport
Данная установка заставит FreeSWITCH отправить SIP ответ на тот же порт с которого был получен запрос. используйте на свой страх и риск! см. NAT Traversal.
<param name="NDLB-force-rport" value="true|safe"/>
safe = использовать force-rport только для заведомо безопасных конечных точек (ENDPOINTS).
NDLB-broken-auth-hash
<param name="NDLB-broken-auth-hash" value="true"/>
NDLB-received-in-nat-reg-contact
добавлять ;received=»<ip>:<port>« в Contact при ответе для NAT.
<param name="NDLB-received-in-nat-reg-contact" value="true"/>
NDLB-sendrecv-in-session
По умолчанию, «a=sendrecv» is only included in the media portion of the SDP. While this is RFC-compliant, it may break functionality for some SIP devices. To also include «a=sendrecv» in the session portion of the SDP, set this parameter to true.
<param name="NDLB-sendrecv-in-session" value="true"/>
NDLB-allow-bad-iananame
Разрешить неправильные имена кодеков.
<param name="NDLB-allow-bad-iananame" value="true"/>
Refer to RFC 3551, RFC 3555 and the IANA list(s) for SDP
Call ID
inbound-use-callid-as-uuid
Для входящих вызовов задать UUID (Universally Unique Identifier) сессии равно SIP Call ID этого вызова.
On inbound calls make the uuid of the session equal to the SIP call id of that call.
<param name="inbound-use-callid-as-uuid" value="true"/>
outbound-use-uuid-as-callid
Для исходящих вызовов установить CallID в соответствии с UUID сессии.
On outbound calls set the callid to match the uuid of the session
<param name="outbound-use-uuid-as-callid" value="true"/>
Это делается в »..sip_profiles/external.xml« file.
TLS
Прочтите: https://asterisk-pbx.ru/wiki/freeswitch/sip/sip-tls до включения нижеперечисленных опций.
tls
TLS: отключено по умолчанию, установите «true» tчтобы включить.
<param name="tls" value="$${internal_ssl_enable}"/>
tls-only
Выключено по умолчанию, если включить предотвращает прослушивание на незашифрованном порту для этого соединения.
Если ВСЕ ваши клиенты регистрируются через TLS, это может сделать ваш FreeSWITCH сервер менее уязвимым.
<param name="tls-only" value="false"/>
tls-bind-params
Дополнительный параметр для TLS
<param name="tls-bind-params" value="transport=tls"/>
tls-sip-port
Порт прослушиваемый для TLS подключений. (5061 если не указано другое)
<param name="tls-sip-port" value="$${internal_tls_port}"/>
tls-cert-dir
Расположение agent.pem и cafile.pem ssl сертификатов (требуется для TLS сервера)
<param name="tls-cert-dir" value="$${internal_ssl_dir}"/>
tls-version
TLS версия(«sslv2», «sslv3», «sslv23», «tlsv1», «tlsv1.1», «tlsv1.2»). Примечание: телефоны могут не работать с TLSv1
<param name="tls-version" value="$${sip_tls_version}"/>
When not set defaults to: «tlsv1,tlsv1.1,tlsv1.2»
tls-passphrase
Если ваш agent.pem защищен кодовой фразой, укажите её здесь, чтобы FreeSWITCH мог расшифровать ключ.
<param name="tls-passphrase" value=""/>
tls-verify-date
Если клиент/сервер сертификат должен иметь срок действия для подтверждения его активности.
<param name="tls-verify-date" value="true"/>
tls-verify-policy
Контролирует проверку сервер/клиент сертификатов.
- 'in' для входящих подключений
- 'out' для исходящий
- 'all' для всех
а также 'in_subjects', 'out_subjects' и 'all_subjects'. Несколько политик могут быть заданы через '|' pipe - 'in_subjects|out'
- 'none' по умолчанию.
<param name="tls-verify-policy" value="none"/>
tls-verify-depth
Глубина проверки сертификата, если (tls-verify-policy) включено.
<param name="tls-verify-depth" value="2"/>
tls-verify-in-subjects
Если проверка вкл. для входящих подключений (tls-verify-policy вкл. 'in_subjects' или 'all_subjects') задается список разрешенных субъектов (зазделяются '|' трубой). Это имеет эффект только для входящих подключений, для исходящих всегда проверяется по hostname/ip.
<param name="tls-verify-in-subjects" value=""/>
DTMF
rfc2833-pt
<param name="rfc2833-pt" value="101"/>
dtmf-duration
<param name="dtmf-duration" value="100"/>
dtmf-type
Установите параметр в SIP профиле:
<param name="dtmf-type" value="info"/>
или
<param name="dtmf-type" value="rfc2833"/>
или
<param name="dtmf-type" value="none"/>
или задайте переменную в SIP шлюзе или профиле пользователя
<variables> <variable direction="inbound|outbound|both" name="dtmf_type" value="info"> </variables>
pass-rfc2833
Default: false
Если true, DTMF проходит с одной стороны на другую нетронутыми. В противном случае сигналы декодируются и кодируются снова перед передачей.
<param name="pass-rfc2833" value="true"/>
liberal-dtmf
Default: false Договорной режим DTMF, предлагаем 2833, принимаем 2833 и INFO.
<param name="liberal-dtmf" value="true"/>
Опции SIP
enable-timer
Вкл. или выкл таймер по RFC 4028 SIP Session Timers.
<param name="enable-timer" value="false"/>
session-timeout
Таймер сессии истекает после заданного в секундах периода. Когда время истекло система посылает повторное приглашение (re-invite) Если не задано другое, по умолчанию таймаут 30 минут (1800 секунд). Некоторые шлюзы могут отклонить приглашение приходящее чаще, чем раз в 30 минут. Это значение относится к Session-Expires в RFC 4028
<param name=«session-timeout» value=«1800»/>
enable-100rel
Включить поддержку 100rel (100% reliability(100% надежность - PRACK сообщение назначенное в RFC3262) Это исправляет проблему SIP, когда на предварительное сообщение, такое как «180 Ringing», вызываемая сторона не отправляет ACK и из-за низкой надежности соединения не происходит передача.
<param name="enable-100rel" value="true"/>
minimum-session-expires
Устанавливает «Min-SE» значение (в секундах) из RFC 4028. Это значение не может быть менее 90 секунд.
<param name="minimum-session-expires" value="120"/>
sip-options-respond-503-on-busy
Когда 'true', данный параметр настроит FreeSWITCH отвечать на входящие SIP OPTIONS сообщением 503 «Maximum Calls In Progress», когда FS приостановлен или максимальное кол-во сессий превышено. Когда уситановлено 'false' (по умолчанию), SIP OPTIONS в любом случае будет 200 «ОК».
<param name="sip-options-respond-503-on-busy" value="false"/>
Установите этот параметр 'true', если вы используете прокси, такие как OpenSIPS или Kamailio с dispatcher модулем, чтобы они могли сканировать FS пакетами SIP OPTIONS.
sip-force-expires
Данный параметр задает время до истечения SIP 200 OK, в ответ на входящие SIP Registers для этого профиля. Имеет приоритет над индивидуальными установками sip-force-expires в пользовательской директории (../conf/directory/*)
sip-expires-max-deviation
Задает произвольно отклонение в секундах от значения sip-force-expires
<param name="sip-force-expires" value="1800"/> <param name="sip-expires-max-deviation" value="600"/>
в этом случае значение может быть между 1800-600=1200 и 1800+600=2400 . Имеет приоритет над индивидуальными установками sip-expires-max-deviation в пользовательской директории (../conf/directory/*)
outbound-proxy
Outbound-proxy для всех исходящих соединений.
<param name="outbound-proxy" value="127.0.0.1"/>
send-display-update
Говорит FreeSWITCH не отправлять display UPDATEs на этапе вызова.
<param name="send-display-update" value="false"/>
Опции RTP
auto-jitterbuffer-msec
Задает размер jitter буфера для всех вызовов проходящих через данный профиль.
<param name="auto-jitterbuffer-msec" value="120"/>
rtp-timer-name
<param name="rtp-timer-name" value="soft"/>
rtp-rewrite-timestamps
Если вы не желаете пропускать временную засечку из одного RTP потока к другому, rtp-rewrite-timestamps параметр включите для SIP профиля.
В результате этого FreeSWITCH создаст и пере-запишет временную засечку во всех RTP потоках по направлению к оконечным точкам (ENDPOINTS), использующих данный SIP профиль.
Это может пригодится для исправления проблем с аудио, например с некоторыми проблемными устройствами, работающими не по спецификациям RFC.
<param name="rtp-rewrite-timestamps" value="true"/>
rtp-timeout-sec
Время в секундах отсутствия активности в RTP потоке (тишины), прежде чем FreeSWITCH разъединит вызов.
<param name="rtp-timeout-sec" value="300"/>
rtp-hold-timeout-sec
Время в секундах отсутствия активности в RTP потоке (тишины), для вызовов поставленных на удержание, прежде чем FreeSWITCH разъединит вызов.
<param name=«rtp-hold-timeout-sec» value=«1800»/>
rtp-autoflush-during-bridge
Контролирует, что происходит, если FreeSWITCH обнаруживает задержку голосовых пакетов в установленном соединении. Когда «true» (по умолчанию), FreeSWITCH отмечает, когда в очереди скапливается более одного пакета и если это состояние сохраняется более 5-ти секунд, отбрасывает их. Это приведет к провалу в аудио потоке, но позволит уменьшить задержку. Если установлено «false», FreeSWITCH будет сохранять все пакеты, несмотря на увеличение задержки и лаги (lag).
<param name="rtp-autoflush-during-bridge" value="true"/>
rtp-autoflush
Это имеет тот же эффект, что и «rtp-autoflush-during-bridge», но тоьлко для некоммутированных соединений (IVR, эхо тест итд)
<param name="rtp-autoflush" value="true"/>
Auth
Настройки аутентификации: требования к оконечным точкам (SIP endpoints) в FreeSWITCH.
challenge-realm
Выберете значение realm вызова. По умолчанию aut_to если ничего не установлено.
Choose the realm challenge key. Default is auto_to if not set.
auto_from - использует поле from в качестве значения SIP realm.
<anyvalue> - вы можете ввести любое значение SIP realm.
Если требуется чтобы работал URL набор, используйте AUTO_FROM
Если используется любое значение вместо auto_to или aito_from, вы потеряете возможность использовать несколько доменов для данного профиля.
<param name="challenge-realm" value="auto_from"/>
accept-blind-auth
Разрешить слепую аутентификацию, фактически без проверки.(???) accept any authentication without actually checking (not a good feature for most people)
<param name="accept-blind-auth" value="true"/>
auth-calls
Пользователи в директории могут иметь «auth-acl» параметры, чтобы ограничить доступ по ACL или CIDR. Users in the directory can have «auth-acl» parameters applied to them so as to restrict users access to a predefined ACL or a CIDR.
<param name="auth-calls" value="$${internal_auth_calls}"/>
Значение «false» отключает аутентификацию в данном профиле.
log-auth-failures
Сохранять ошибки аутентификации в лог.
<param name="log-auth-failures" value="true"/>
auth-all-packets
Включить аутентификацию для всех пакетов, а не только для REGISTER и INVITE (OPTIONS, SUBSCRIBE, INFO и MESSAGE не авторизуются даже если значение «true».)
<param name="auth-all-packets" value="false"/>
Registration
REGISTER message associates your Contact URI - where your user agent is - with your From URI - who you are.
disable-register
Отключить регистрацию.
<param name="disable-register" value="true"/>
multiple-registrations
Возможные значения для этого параметра «contact», «true», «false».
Значение «true» наиболее используемое.
Если установить «contact» старые регистрации на основании полей sip_user, sip_host и contact будут удалены, кроме call-id (???)
Setting this value to «contact» will remove the old registration based on sip_user, sip_host and contact field as opposed to the call_id.
<param name="multiple-registrations" value="contact"/>
max-registrations-per-extension
<param name="user-agent-filter" value="^(snom (\w+))||(Polycomm (\w+))$" /> <param name="max-registrations" value="3" />
accept-blind-reg
this lets anything register comment the next line and uncomment one or both of the other 2 lines for call authentication
<param name="accept-blind-reg" value="true"/>
inbound-reg-force-matching-username
User и authuser должны совпадать.
<param name="inbound-reg-force-matching-username" value="true"/>
force-publish-expires
Принудительное обновление пользовательских состояний (-1 бесконечно)
<param name="force-publish-expires" value="true"/>
force-register-domain
Это заставит профиль игнорировать домен указанный в заголовках to или from запроса Register, а указывать значение заданное здесь. В БД же сохранится оригинальное значение - user@<from domain in SIP packet>. Закомментируйте для использования нескольких доменов.
<param name="force-register-domain" value="$${domain}"/>
force-register-db-domain
Это тоже самое, что и force-register-domain, только в БД будет сохранено модифицированное значение. Закомментируйте для использования нескольких доменов.
<param name="force-register-db-domain" value="$${domain}"/>
send-message-query-on-register
Может быть установлено 'true', 'false' или 'first-only'. Если задано «true» (по умолчанию), mod_sofia должно отправить сообщение-запрос на регистрацию. mod_voicemail использует это для подсчета сообщений.
<param name="send-message-query-on-register" value="true"/>
Если установлено 'first-only', только на первый запрос REGISTER отправляется сообщение-запрос.
unregister-on-options-fail
Если установлено «true» совместно с «nat-options-ping» оконечная точка теряет регистрацию если не приходит ответ на пакет OPTIONS.
<param name="unregister-on-options-fail" value="true"/>
nat-options-ping
С данной установкой FreeSWITCH периодически отправляет пакет OPTIONS все находящимся за NATом оконечным точкам, для поддержания соединения. Если установлено True в «unregister-on-options-fail» конечные точки потеряют регистрацию по не ответу на OPTIONS.
<param name="nat-options-ping" value="true"/>
all-reg-options-ping
Периодически отправлять OPTIONS всем зарегистрированным точкам.
<param name="all-reg-options-ping" value="true"/>
registration-thread-frequency
Как часто проверяется состояние регистраций Управляет отправкой пакетов OPTIONS совместно с опциями наподобие nat-options-ping.
<param name="registration-thread-frequency" value="30"/>
inbound-reg-in-new-thread
Для каждой входящей регистрации, запускать новый поток обработки.
<param name="inbound-reg-in-new-thread" value="true"/>
Subscription
SUBSCRIBE — подписка на получение уведомлений о событиях.
force-subscription-expires
Принудительное истечение срока подписки.
<param name="force-subscription-expires" value="60"/>
force-subscription-domain
Это заставит профиль игнорировать домен указанный в заголовках to или from запроса Subscribe, а указывать значение заданное здесь. В БД же сохранится оригинальное значение - user@<from domain in SIP packet>. Закомментируйте для использования нескольких доменов.
<param name="force-subscription-domain" value="$${domain}"/>
Presence
manage-presence
Включить состояния. Для отображения состояний (присутсвия) установите «true» и укажите БД общего присутствия.
<param name="manage-presence" value="true"/>
dbname
Используется для передачи данных о присутствии между профилями.
Имя БД используемой этим профилем.
<param name=«dbname» value=«share_presence»/>
presence-hold-state
По умолчанию, когда вызов поставлен на удержание, другие екстеншены видят этот екстеншен как звонящий. Вы можете изменить это поведение назначив данному параметру следующие значения:
confirmed - Екстеншен занят. early (default) - вызывается (звонит). terminated - свободен.
<param name="presence-hold-state" value="confirmed"/>
presence-hosts
Список доменов поделившихся информацией о присутствие в БД указанной в dbname. Если требуется использовать несколько доменов на профиль, эта опция не может быть использована.
<param name="presence-hosts" value="$${domain}"/>
presence-privacy
Не отображать caller ID в NOTIFY сообщениях
<param name="presence-privacy" value="true"/>
send-presence-on-register
Сообщать или нет о регистрации пользователя.
- false
- true
- first-only
<param name="send-presence-on-register" value="true"/>
Опции CallerID
caller-id type
Выберете одно, для перезаписи типа входящего вызова и/или sip_CID_type переменной канала.
Remote-Party-ID заголовок:
<param name="caller-id-type" value="rpid"/>
P-*-Identity family of headers:
<param name="caller-id-type" value="pid"/>
ни то, ни другое:
<param name="caller-id-type" value="none"/>
pass-callee-id
(по умолчанию true) Выкл. если требуется игнорировать Caller-ID.
<param name="pass-callee-id" value="false"/>
Другие
hold-music
<param name="hold-music" value="$${hold_music}"/>
disable-hold
Выключить Music on Hold Это может быть полезно, когда взывающее устройство отправляет собственный MoH.
<param name="disable-hold" value="true"/>
apply-inbound-acl
Установить Access Control List (Список контроля доступа), назначается в acl.conf.xml, для данного профиля.
<param name="apply-inbound-acl" value="domains"/>
apply-register-acl
<param name="apply-register-acl" value="domains"/>
apply-proxy-acl
<param name="apply-proxy-acl" value="myproxies"/>
Это разрешит трафик This allows traffic для отправки FreeSWITCH через один или больше proxy сервер. Прокси сервер должен добавить заголовок называемый X-AUTH-IP, содержащий IP адрес клиента. FreeSWITCH доверяет прокси, потому что IP адрес есть в списке прокси сереверов ACL и использует IP адрес клиента в заголовке для ACL аутентификации.
record-template
<param name="record-template" value="$${base_dir}/recordings/${caller_id_number}.${target_domain}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
max-proceeding
максимально кол-во открытых диалогов в обработке.
<param name="max-proceeding" value="1000"/>
bind-params
<param name="bind-params" value="transport=udp"/>
disable-transfer
Выключить transfer, если это нежелательно для общего использования. disable transfer which may be undesirable in a public switch
<param name="disable-transfer" value="true"/>
manual-redirect
<param name="manual-redirect" value="true"/>
enable-3pcc
Разрешить управление вызовом третьей стороне (third party call control).
<param name="enable-3pcc" value="true"/>
nonce-ttl
TTL для одноразовой аутентификации.
<param name="nonce-ttl" value="60"/>
Этот параметр установлен 60 секунд, если здесь не назначено другое . It's used to determine how long to store the user registration record in the sip_authentication table. The expires field in the sip_authentication table is this value plus the expires set by the user agent.
sql-in-transactions
Накопить 500 SQL операторов или ждать 500 ms прежде чем выполнить их сдельно.
<param name="sql-in-transactions" value="true"/>
odbc-dsn
Если вы используете ODBC и работает DSN (Data Source Name) используйте вместо SQLIte:
<param name="odbc-dsn" value="dsn:user:pass"/>
mwi-use-reg-callid
<param name="mwi-use-reg-callid" value="false">
username
если вы хотите скрыть тот факт. что используете FreeSWITCH в SDP сообщениях (В частности в «o»= и «s»= полях) , задайте желаемое имя, для использования с данным профилем.
Это никак не связано с параметром username в настройках шлюза (Gateway)
Если ничего не задано, используется FreeSWITCH, по умолчанию.
<param name=«username» value=«AnyValueHere» />
Пример:
. v=0. o=root 1346068950 1346068951 IN IP4 1.2.3.4. s=root. c=IN IP4 1.2.3.4. t=0 0. m=audio 26934 RTP/AVP 18 0 101 13. a=fmtp:18 annexb=no. a=rtpmap:101 telephone-event/8000. a=fmtp:101 0-16. a=ptime:20.
если установлено:
<param name="username" value="root" />