Sofia — это модуль FreeSWITCH™ ( mod_sofia ), который обеспечивает SIP-подключение к FreeSWITCH и обратно в форме пользовательского агента.
«Агент пользователя» («UA») — это приложение, используемое для работы с определенным сетевым протоколом; сетевой протокол в случае Софии — SIP. София — это общее имя любого пользовательского агента в FreeSWITCH, использующего сетевой протокол SIP.
Например, София принимает вызовы, отправленные в FreeSWITCH от других пользовательских агентов SIP (UA), отправляет вызовы другим UA, действует как клиент для регистрации FreeSWITCH с другими UA, позволяет клиентам регистрироваться в FreeSWITCH и соединяет вызовы (т. е. с локальными расширениями). ).
Чтобы добавить провайдера SIP (пользовательский агент Софии) в ваш FreeSWITCH, ознакомьтесь с примерами взаимодействия и добавьте информацию о провайдере SIP в файл .xml, хранящийся в папке conf/sip_profiles/.
«Пользовательский агент» («UA») — это приложение, используемое для запуска определенного сетевого протокола, а Софийский UA — это то же самое, но протокол в этом случае — SIP.
Когда FreeSWITCH запускается, он читает файл conf/autoload_configs/sofia.conf.xml. Этот файл содержит директиву «X-PRE-PROCESS», которая указывает FreeSWITCH на последующую загрузку и объединение любых файлов conf/sip_profiles/*.xml. Каждый загруженный и объединенный таким образом файл *.xml должен содержать полное описание одного или нескольких профилей SIP. Каждый загруженный таким образом профиль SIP является частью «Пользовательского агента» или «UA»; в терминах FreeSWITCH UA = Пользовательский агент = Профиль Sofia = Профиль SIP.
Обратите внимание, что загруженные таким образом отдельные UA объединяются FreeSWITCH и не должны мешать друг другу: в частности, каждый UA должен иметь свой собственный уникальный порт, на котором он принимает соединения (порт по умолчанию для SIP — 5060).
Почему вам может понадобиться создать несколько пользовательских агентов? Вот пример.
В своем офисе я использую брандмауэр. Это означает, что вызовы, которые я совершаю в места за пределами брандмауэра, должны использовать сервер STUN для прохождения NAT в брандмауэре, в то время как вызовы внутри офиса не требуют использования сервера STUN. Чтобы удовлетворить эти требования, я создал два разных UA. Один из них использует сервер STUN и, в этом отношении, также подключается к PSTN через поставщика услуг. Другой UA предназначен исключительно для местных вызовов SIP.
Теперь у меня есть два UA, определенные моими профилями, каждый из которых может обрабатывать вызов. Какой UA используется при наборе SIP-адреса или номера телефона? Это определение делается в диалплане. Один из синтаксисов звонка через Софию в диалплане:
sofia/profile_name/destination
Итак, задача становится довольно простой. Диалпланы используют сопоставление шаблонов и другие приемы, чтобы определить, как обрабатывать вызов. Мой диалплан проверяет, что я набрал, а затем определяет, какой профиль использовать для этого вызова. Если я набираю телефонный номер, диалплан выбирает UA, который подключается к PSTN. Если я набираю SIP-адрес за пределами межсетевого экрана, диалплан выбирает тот же UA, поскольку он использует сервер STUN. Но если я наберу SIP-адрес, находящийся внутри брандмауэра, диалплан выберет «локальный» UA.
Чтобы понять, как писать диалпланы, использовать сопоставление шаблонов и т. д., см. Диалплан.
Следующий контент был написан в ветке списка рассылки Энтони Минессейлом в ответ на вопросы о том, как профили SIP связаны с доменными именами в FreeSWITCH.
Лучше всего взглянуть на эти вещи со стороны.
Домены внутри реестра XML полностью отличаются от доменов в Интернете и, опять же, полностью отличаются от доменов в sip-пакетах. Профили снова полностью отличаются от любого из вышеперечисленных. Если вы того пожелаете, вы можете их выровнять.
Конфигурация по умолчанию, распространяемая вместе с FreeSWITCH, устанавливает сценарий, который с наибольшей вероятностью будет загружаться на любой машине и работать «из коробки». Это основная цель этой конфигурации, поэтому она устанавливает домен как в каталоге, глобальную переменную домена по умолчанию, так и имя внутреннего профиля, чтобы они были идентичны IP-адресу на ящике, который может выходить в Интернет. Затем он устанавливает sip, чтобы привести все к этому значению. Если вы хотите отстраниться от такого поведения, вы, вероятно, решаетесь создать какую-то систему с несколькими домами.
Псевдонимы в теге <aliases> представляют собой список ключей, которые вы хотите использовать и которые ведут к текущему профилю, который вы настраиваете. Думайте об этом как о файле /etc/hosts в Unix, только для профилей. Когда вы определяете псевдонимы для соответствия всем возможным доменам, размещенным в определенном профиле, а затем, когда вы пытаетесь взять нотацию user@host.com и решить, из какого профиля она взята, вы можете использовать псевдонимы для поиска, если вы добавили <alias name=" host.com "/> в этот профиль.
Тег <domains> — это индикатор, указывающий профилю открыть XML-реестр в FreeSWITCH и просмотреть все определенные в нем домены. Два ключевых атрибута:
псевдоним: [true/false] (автоматически создать псевдоним для этого домена, как указано выше) parse: [true/false] (сканировать домен на наличие записей шлюза и включить их в этот профиль) name: [<string>] (либо имя конкретного домена или «все» для обозначения анализа каждого домена в каталоге)
Как вы показали в своем вопросе, конфигурация по умолчанию имеет
<domain name="all" alias="true" parse="false"/>
Если вы примените то, что узнали выше, он будет сканировать каждый домен (по умолчанию только один) и добавлять для него псевдоним, а не анализировать его на предмет шлюзов. Каталог по умолчанию использует глобальные переменные конфигурации, чтобы настроить домен в соответствии с локальным IP-адресом на поле. Итак, теперь в вашей конфигурации будет домен, который является вашим IP-адресом, а внутренний профиль прикрепится к нему и добавит псевдоним, чтобы значение расширялось в соответствии с ним.
Это объясняется в комментарии вверху файлаdirectory/default.xml:
FreeSWITCH использует концепцию пользователей и доменов так же, как электронная почта.
У вас есть пользователи в доменах, например 1000@domain.com.
Когда freeswitch получает пакет регистрации, он ищет пользователя в каталоге.
в зависимости от домена «от» или «куда» в пакете, в зависимости от того, как работает ваш профиль Софии.
настроен. По умолчанию доменом по умолчанию будет IP-адрес
машина под управлением FreeSWITCH. Этот IP-адрес можно найти, набрав «sofia status» на странице
Интерфейс командной строки. По умолчанию вы зарегистрируете свои телефоны по IP, а не по имени хоста.
Если вы хотите зарегистрироваться, используя домен, откройте vars.xml в корневой конфигурации.
каталог и установите домен по умолчанию на желаемое имя хоста. Тогда ты бы
используйте доменное имя в клиенте вместо IP-адреса для регистрации
с FreeSWITCH.
Таким образом, имея более одного профиля со значением по умолчанию
<domain name="all" alias="true" parse="false"/>
в конечном итоге приведет к присвоению псевдонимов одним и тем же доменам всем профилям, которые его вызывают, и приведет к перезаписи в таблице поиска и, возможно, к ошибке где-то в ваших журналах. Если бы у вас всех был parse="true", они все попытались бы зарегистрироваться на шлюзах во всех ваших доменах.
Если вы посмотрите на стандартную конфигурацию, external.xml является хорошим примером вторичного профиля.
<имя домена="все" alias="false" parse="true"/>
так что никаких псевдонимов и да синтаксический анализ... полная противоположность внутреннему, чтобы все шлюзы регистрировались с внешнего, а внутренний привязывался к локальному IP-адресу.
Итак, вы, вероятно, захотите использовать отдельный <domain name=" example.com "/> для каждого домена и каждого профиля, к которому вы хотите привязать его в более сложных настройках.
Каждый профиль может содержать несколько различных подразделов. В настоящее время для sofia.conf.xml не существует XSD или DTD — и любой добровольец, который сможет его создать, будет очень рад.
<Конфигурация!ELEMENT (global_settings?, профили)> <!ELEMENT global_settings (param+)> <профили!ELEMENT (профиль+)> <профиль!ELEMENT (псевдонимы, шлюзы, домены, настройки)> <!ELEMENT псевдонимы (псевдоним*)> <Шлюзы!ELEMENT (шлюз*)> <Шлюз!ELEMENT (параметр+, переменные?)> <Переменные!ELEMENT (переменная+)> <Домены!ELEMENT (домен*)> <Настройки!ELEMENT (параметр+)> <!ELEMENT псевдоним EMPTY > <параметр!ELEMENT EMPTY> <переменная!ELEMENT EMPTY> <!ELEMENT домен EMPTY> <!имя конфигурации ATTLIST CDATA #REQUIRED описание CDATA #REQUIRED> <!имя профиля ATTLIST CDATA #REQUIRED домен CDATA #IMPLIED> <!имя шлюза ATTLIST CDATA #REQUIRED> <!ATTLIST псевдоним CDATA #REQUIRED> <!ATTLIST имя параметра CDATA #REQUIRED значение CDATA #REQUIRED> <!ATTLIST имя переменной CDATA #REQUIRED данные CDATA #REQUIRED направление CDATA #IMPLIED> <!ATTLIST доменное имя CDATA # ОБЯЗАТЕЛЬНЫЙ псевдоним (true | false) #IMPLIED parse (true | false) #IMPLIED>
Каждый профиль может иметь несколько шлюзов:
<gateways> <gateway> элементы... </gateway> <gateway> элементы... </gateway> </gateways>
Шлюз имеет атрибут «имя», по которому на него можно ссылаться. Шлюз описывает, как использовать другой UA для достижения пунктов назначения. Например, шлюз может предоставлять доступ к PSTN или к частной сети SIP. Причина определения шлюза, предположительно, заключается в том, что шлюзу требуется определенная информация, прежде чем он примет вызов от пользовательского агента FreeSWITCH.
Переменные могут быть определены на шлюзе. Входящие переменные задаются на канале вызова, полученного от шлюза, исходящие переменные задаются на канале вызова, отправленного на шлюз.
Пример конфигурации шлюза:
<gateway name="gateway012"> <param name="realm" value="sip.voipcarrier.com" /> <param name="username" value="WBrandes" /> <param name="password" value=" myvoiceismypassword" /> <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-секунды" value="5" /> <param name="expire-секунды" value="60" /> <переменные> <variable name="verbose_sdp" value="true"/> <variable name="absolute_codec_string" value="PCMU,PCMA" Direction="outbound"/> <variable name="customer_id" value="3532" направление="входящее"/> </переменные> </шлюз>
Чтобы достичь определенного шлюза из абонентского плана, используйте
sofia/gateway/<имя_шлюза>/<строка набора>
FreeSWITCH также может подписаться на получение уведомлений о событиях от шлюза. Для получения дополнительной информации см. « Присутствие — использование FreeSWITCH в качестве клиента».
Ниже приведен список элементов param, которые являются дочерними элементами элемента шлюза:
<!-- /// account username *required* /// -->
<param name="username" value="foo"/>
Примечание. Параметр имени пользователя для шлюза не следует путать с параметром имени пользователя в конфигурации настроек профиля!
<!--/// auth realm: *optional* same as gateway name, if blank ///-->
<!-- realm -->
<param name="realm" value="sip.example.com[:port]"/>
<!--/// account password *required* ///-->
<param name="password" value="a password"/>
<!--/// username to use in from: *optional* same as username, if blank ///-->
<param name="from-user" value="fooman"/>
<!--/// domain to use in from: *optional* same as realm, if blank; can also be set to "auto-aleg-full" or "auto-aleg-domain" ///-->
<param name="from-domain" value="asterlink.com"/>
<!--/// replace the INVITE from user with the channel's caller-id ///-->
<!--/// this is false by default because outbound calls generally need username in the INVITE ///-->
<!--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 for inbound calls: *optional* Same as username, if blank. To use what's in ${sip_to_user}, set it to the value "auto_to_user" ///-->
<param name="extension" value=""/>
Примечание. Параметр расширения влияет на содержимое переменных канала Caller-Destination-Number и Destination_number . Если оно пустое, номер вызывающего абонента всегда будет соответствовать имени пользователя шлюза. Если у него есть значение, для Caller-Destination-Number всегда будет установлено это значение. Если он имеет значение auto_to_user , Caller-Destination-Number будет заполнен значением ${sip\_to\_user}
, которое означает реальный набранный номер в случае входящего вызова.
<!--/// proxy host: *optional* same as realm, if blank ///-->
<param name="proxy" value="proxy.example.com"/>
<!--/// expire in seconds: *optional* 3600, if blank ///-->
<param name="expire-seconds" value="3600"/>
<!-- suppress CNG on this profile or per call with the 'suppress_cng' variable -->
<param name="suppress-cng" value="true"/>
<!--/// false: do not register. true: register (default) ///-->
<param name="register" value="false"/>
<!-- which transport to use for register -->
<param name="register-transport" value="udp"/>
<!--extra sip params to send in the contact-->
<param name="contact-params" value="tport=tcp"/>
<!-- check gateway availability: *optional* -->
<param name="ping" value="15"/>
<!-- *optional* -->
<param name="ping-max" value="10"/>
<!-- *optional* -->
<param name="ping-min" value="1"/>
ping-min означает «сколько успешных пингов мы должны иметь, прежде чем объявить шлюз открытым».
Интервал между ping-min и ping-max — это «безопасная зона», где шлюз помечен как UP. Итак, если у нас есть, например, мин 3 и максимум 6, если шлюз включен и мы перемещаем счетчик между 3,4,5,6, шлюз будет включен.
Если из 6 мы потеряем 4 (то есть счетчик == 2) пингов подряд, шлюз будет объявлен неработающим.
Обратите внимание, что при запуске Софии шлюз всегда запускается как UP, поэтому он будет работать, даже если ping-min > 1 . «правильный» путь начинается, когда шлюз выходит из строя.
<!-- *optional* - default is false-->
<param name="extension-in-contact" value="true"/>
<!-- *optional* -->
<param name="cid-type" value="rpid"/>
Параметр «регистрация» используется, когда этот профиль выступает в качестве клиента для другого UA. Регистрируясь, FreeSWITCH сообщает другому UA о своем местонахождении. Обычно это используется, когда FreeSWITCH хочет, чтобы другой UA отправлял вызовы FreeSWITCH, а другой UA ожидает такого рода регистрации. Если FreeSWITCH использует другой UA только в качестве шлюза (например, к PSTN), то регистрация обычно не требуется.
Параметр «distinct-to» используется, когда вы хотите, чтобы FS регистрировался с использованием отдельного AOR для заголовка To. Это требует правильной настройки связанных параметров. Например, если вы хотите, чтобы REGISTER сопровождался:
От: <sip: someuser@somedomain.com > Кому: <sip: otheruser@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 на шлюз. Если шлюз отвечает 200 или 404, шлюз произносится вверх, в противном случае — вниз. [NB Похоже, что другие сообщения об ошибках могут быть возвращены и все равно приведут к тому, что шлюз будет помечен как «работающий»?] Если какой-либо вызов направляется на шлюз с выключенным состоянием, FreeSWITCH сгенерирует причину зависания NETWORK_OUT_OF_ORDER. Частота пинга определяется в секундах (атрибут значения) и имеет минимальное значение 5 секунд.
Параметр «расширение-в-контакте» используется для указания того, какая контактная информация будет указана при регистрации. Если у вас возникли проблемы с регистрацией по умолчанию как gw+gateway_name@ip, вы можете установить для этого параметра значение true, чтобы использовать Extension@ip. Если расширение пустое, будет использоваться имя пользователя@ip.
если вам нужно вставить цифры FROM в пользовательскую часть URI контакта при отправке вызова на шлюз
ДО
From: "8885551212" <sip:88855512120@8.8.8.8> Contact: <sip:gw+mygateway@7.7.7.7:7080>
попробуйте добавить их в параметры шлюза
<param name="extension" value="8885551212"/> <param name="extension-in-contact" value="true"/>
ПОСЛЕ
From: "8885551212" <sip:88855512120@8.8.8.8> Contact: <sip:8885551212@7.7.7.7:7080>
В дополнение к параметрам вы можете дополнительно установить переменные для входящих или исходящих вызовов через этот шлюз. Вы задаете направление, которое устанавливает его как для входящих, так и для исходящих вызовов, если оно опущено.
<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"/>
Параметры конфигурации включают другую, более общую информацию о профиле, в том числе о том, используется ли STUN.
Обратите внимание, что в параметрах конфигурации между словами используется дефис «-», тогда как в переменных канала между словами используется подчеркивание «_».
Каждый профиль имеет свой элемент настроек. Это не только удобно — можно настроить один профиль для использования STUN, а другой, с другим шлюзом или работающий за брандмауэром, не использовать STUN — но это также очень важно. Это связано с тем, что каждый профиль определяет пользовательский агент SIP, и каждый UA должен иметь свой собственный уникальный «sip-порт». По соглашению, 5060 является портом по умолчанию, но можно совершать вызовы, например, «foo@sip.example.com : 5070», и поэтому вы можете определить любой порт для каждого отдельного профиля.
Конфигурации Vanilla содержат полные образцы файла sofia.conf.xml вместе с комментариями: внутренний , внешний.
<param name="alias" value="sip:10.0.1.251:5555"/>
Кажется, это приводит к привязке профиля SIP к этому IP и порту, а также к вашим IP-адресам и портам SIP / RTP.
Энтони сказал следующее о псевдонимах в теме ML :
Псевдонимы в теге <aliases> представляют собой список ключей, которые вы хотите использовать и которые ведут к текущему профилю, который вы настраиваете. Думайте об этом как о файле /etc/hosts в Unix, предназначенном только для профилей. Когда вы определяете псевдонимы для соответствия всем возможным доменам, размещенным в определенном профиле, а затем, когда вы пытаетесь взять нотацию user@host.com и решить, из какого профиля она взята, вы можете использовать псевдонимы для поиска, если вы добавили <alias name="host.com"/> в этот профиль.
<param name="shutdown-on-fail" value="true"/>
Если установлено значение true и профиль не загружается, FreeSWITCH отключится. Это полезно, если вы используете что-то вроде Pacemaker и OpenAIS, которые управляют парой узлов FreeSWITCH и автоматически отслеживают, запускают, останавливают, перезапускают и переводят узлы в режим ожидания при сбое. Это гарантирует, что конкретный узел не сможет использоваться в ситуации «частично включенного».
Это устанавливает заголовок User-Agent во всех SIP-сообщениях, отправляемых вашим сервером. По умолчанию это может быть что-то вроде «FreeSWITCH-mod_sofia/1.0.trunk-12805». Если вы не хотите рекламировать подробную информацию о версии, вы можете в шутку просто установить для нее значение «FreeSWITCH» или даже «Asterisk PBX».
Будьте осторожны при установке этого значения, поскольку некоторые символы, такие как «@», могут привести к тому, что другие прокси-серверы SIP могут отклонить ваши сообщения как недействительные.
<param name="user-agent-string" value="FreeSWITCH Rocks!"/>
<param name="log-level" value="0"/>
<param name="debug" value="0"/>
<param name="sip-trace" value="no"/>
Контекст диалплана, в котором сбрасываются вызовы, поступающие на ip:port этого профиля.
<param name="context" value="public"/>
Порт для привязки SIP-трафика:
<param name="sip-port" value="$${internal_sip_port}"/>
IP-адрес для привязки SIP-трафика. НЕ ИСПОЛЬЗУЙТЕ ИМЕНА ХОСТОВ, ТОЛЬКО IP-АДРЕСА
<param name="sip-ip" value="$${local_ip_v4_or_v6}"/> Alternatively, since version 1.6 it is possible to specify an interface and an optionnal address family instead of an IP, same for rtp-ip. <param name="sip-ip" value="interface:[auto|ipv4|ipv6|]/eth0"/>
IP-адрес для привязки для RTP-трафика. НЕ ИСПОЛЬЗУЙТЕ ИМЕНА ХОСТОВ, ТОЛЬКО IP-АДРЕСА
<param name="rtp-ip" value="$${local_ip_v4_or_v6}"/>
Это IP-адрес, за которым FreeSWITCH виден из Интернета, поэтому, если FreeSWITCH находится за NAT, это, по сути, общедоступный IP-адрес, который следует использовать для RTP.
Допустимые значения:
значение ext-rtp-ip | Описание | Пример |
---|---|---|
$${variable} |
Любая переменная из vars.xml | <param name="ext-rtp-ip" value="$${external\_rtp\_ip}"/> |
w.x.y.z | Конкретный цифровой IP-адрес | <param name="ext-rtp-ip" value="1.2.3.4"/> |
autonat:w.x.y.z | Используется для LAN и WAN, чтобы избежать ошибок в SIP CONTACT, отправляемых на устройства LAN. | <param name="ext-rtp-ip" value="autonat:1.2.3.4"/> |
auto | Предполагаемый IP (угадывается путем просмотра таблицы IP-маршрутизации, какой интерфейс является маршрутом по умолчанию) | <param name="ext-rtp-ip" value="auto"/> |
auto-nat | FS использует uPNP или NAT-PMP для обнаружения общедоступного IP-адреса, который он должен использовать. | <param name="ext-rtp-ip" value="auto-nat"/> |
stun:DNS имя или IP-адрес STUN сервера. | FS использует выбранный вами сервер STUN для обнаружения общедоступного IP-адреса. | <param name="ext-rtp-ip" value="stun:stun.freeswitch.org"/> |
host:DNS имя | FS разрешает DNS-имя как общедоступный IP-адрес, поэтому вы можете использовать динамический DNS-хост. | <param name="ext-rtp-ip" value="host:mypublicIP.dyndns.org"/> |
параметры с префиксом «ext–», указанным выше, когда они заполнены еще не разрешенными строками DNS (например, name="ext–sip–ip" value="stun:stun.freeswitch.org"
или name="ext‑rtp–ip" value="host:mypublicIP.dyndns.org"
), преобразуются в IP-адреса только один раз во время загрузки FreeSWITCH и после этого остаются постоянными. FS не замечает (не знает) любых последующих изменений IP-адреса вашей среды. Таким образом, эти переменные ext– могут стать функционально несовместимыми с текущими IP-адресами среды с неуказанными результатами в потоке вызовов на сетевом уровне. Перезапуск файловой системы необходим для того, чтобы файловая система захватила текущий рабочий IP-адрес(а).
Это IP-адрес, за которым FreeSWITCH виден из Интернета, поэтому, если FreeSWITCH находится за NAT, это, по сути, общедоступный IP-адрес, который следует использовать для сообщений SIP.
Возможные значения такие же, как для ext-rtp-ip, и обычно ему присваивается то же значение.
<param name="ext-sip-ip" value="$${external_sip_ip}"/>
Установите для этого параметра интервал (в миллисекундах) для отправки пакетов поддержки пользовательским агентам (UA), зарегистрированным через TCP; не устанавливайте для отключения.
Параметр диалплана очень мощный.
В простейшей конфигурации он будет использовать диалплан XML. Это означает, что он будет считывать данные из XML-диалпланов mod_xml_curl (например, обратный вызов на ваш веб-сервер) или, в случае неудачи, из XML-файлов, указанных в разделе диалплана freeswitch.xml. (например, default_context.xml)
<param name="dialplan" value="XML"/>
Вы также можете добавить в изображение поиск по перечислению (поскольку mod_enum обеспечивает функциональность диалплана), поэтому поиск по перечислению переопределяет диалплан XML.
<param name="dialplan" value="enum,XML"/>
Или обратный порядок перечисления учитывается только в случае сбоя поиска XML.
<param name="dialplan" value="XML,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 , если он настроен и работает.
См. также: Прокси Медиа.
Если вызовы не находятся на носителе, они вернутся на носитель при нажатии кнопки удержания. Чтобы вернуть вызовы в режим bypass-media после отмены удержания вызова, включите bypass-media-after-hold.
<param name="media-option" value="resume-media-on-hold"/>
Это позволит вызову после сопровождаемой передачи вернуться в обход мультимедиа после сопровождаемой передачи.
<param name="media-option" value="bypass-media-after-att-xfer"/>
Это позволит вызову вернуться в обход мультимедиа после удержания. Эту опцию можно включить только в том случае, если установлено возобновление медиа-на удержании. Доступно в git rev 8fa385b.
<param name="media-option" value="bypass-media-after-hold"/>
Раскомментируйте, чтобы перевести все входящие вызовы в режим отсутствия мультимедиа. Это означает, что сервер FreeSWITCH сохраняет только состояние SIP-сообщений, но поток RTP передается напрямую от конечной точки к конечной точке.
<param name="inbound-bypass-media" value="true"/>
Раскомментируйте, чтобы перевести все входящие вызовы в режим прокси-медиа. Это означает, что FreeSWITCH сохраняет на сервере трафик SIP и RTP, но не взаимодействует с потоком RTP.
<param name="inbound-proxy-media" value="true"/>
<param name="disable-rtp-auto-adjust" value="true"/>
<param name="ignore-183nosdp" value="true"/>
<param name="enable-soa" value="true"/>
Установите значение «false», чтобы отключить SIP SOA из Софии, чтобы сообщить Софии не трогать обмен SDP.
<param name="t38-passthru" value="true"/>
Доступны следующие варианты
Также см:
Этот параметр позволяет изменить разрешенные входящие кодеки для каждого профиля.
<param name="inbound-codec-prefs" value="$${global_codec_prefs}"/>
Этот параметр позволяет изменить исходящие кодеки для каждого профиля.
<param name="outbound-codec-prefs" value="$${outbound_codec_prefs}"/>
Этот параметр позволяет одновременно изменить как inbound-codec-prefs, так и outbound-codec-prefs.
<param name="codec-prefs" value="$${global_codec_prefs}"/>
установите «жадный», если вы хотите, чтобы ваш список кодеков имел приоритет
<param name="inbound-codec-negotiation" value="generous"/>
Если «жадный» вам не подходит, попробуйте «Scrooge», который, как известно, исправляет ошибочно сообщаемые проблемы с временем ptime у поставщиков DID, таких как CallCentric.
Эмпирическое правило таково:
sip_codec_negotiation — это версия этой настройки для переменной канала.
Раскомментируйте, чтобы вызовы попадали в диалплан *прежде*, чем вы решите, в порядке ли кодек.
<param name="inbound-late-negotiation" value="true"/>
Этот параметр предназначен для битовой упаковки AAL2 в G.726.
<param name="bitpacking" value="aal2"/>
Раскомментируйте, если вы хотите, чтобы исходящая часть моста предлагала только тот кодек, который использует отправитель.
<param name="disable-transcoding" value="true"/>
<param name="renegotiate-codec-on-reinvite" value="true"/>
Если вам нужно использовать STUN-сервер, вот распространенные рабочие примеры:
<param name="ext-rtp-ip" value="stun:stun.fwdnet.net"/>
stun.fwdnet.net — это общедоступный STUN-сервер.
<param name="ext-sip-ip" value="world_reachable.real.numeric.ip"/>
Простое прохождение UDP через NAT (STUN) используется для решения проблем, связанных с SIP-клиентами за NAT, использующими пространство частных IP-адресов в своих сообщениях. Использовать оглушение, если указано (по умолчанию — true).
<param name="stun-enabled" value="true"/>
Установите значение true, чтобы профиль определял оглушение бесполезно и отключал его глобально.
<param name="stun-auto-disable" value="true"/>
При получении REGISTER или INVITE автоматически включите режим NAT , если IP-адрес в заголовке Contact соответствует записи, определенной в списке доступа RFC 1918 . «acl» в данном случае является неправильным употреблением, поскольку доступ не будет запрещен, если контактный IP-адрес пользователя не совпадает.
<param name="apply-nat-acl" value="rfc1918"/>
Это включит режим NAT, если сетевой IP/порт, от которого был получен запрос, отличается от комбинации IP/порт в заголовке SIP Via: или если заголовок Via: содержит полученный параметр (независимо от того, что он содержит) . 05.04.2009: Кто-нибудь, уточните, когда это будет полезно. Мне кажется, если кому-то нужна эта функция, скорее всего, все настолько сломано, что придется использовать NDLB-force-rport.
<param name="aggressive-nat-detection" value="true"/>
VAD означает «Детектор голосовой активности» . FreeSWITCH способен обнаруживать речь и прекращать передачу пакетов RTP, если голос не обнаружен.
<param name="vad" value="in"/> <param name="vad" value="out"/> <param name="vad" value="both"/>
Подавите генератор комфортного шума (CNG) в этом профиле или для каждого вызова с помощью переменной «suppress_cng».
<param name="suppress-cng" value="true"/>
Это заставит FreeSWITCH отправлять ответы SIP на сетевой порт, от которого они были получены. Используйте на свой риск! Дополнительную информацию см. в разделе «Обход NAT» .
<param name="NDLB-force-rport" value="true|safe"/>
Используется, когда телефоны отвечают на оспоренный ACK с помощью метода INVITE в хеше.
<param name="NDLB-broken-auth-hash" value="true"/>
добавьте ;received="<ip>:<port>" к контакту при ответе, чтобы зарегистрироваться для обработки nat
<param name="NDLB-received-in-nat-reg-contact" value="true"/>
По умолчанию «a=sendrecv» включен только в медиа-часть SDP. Хотя это соответствует RFC, это может нарушить функциональность некоторых SIP-устройств. Чтобы также включить «a=sendrecv» в сеансовую часть SDP, установите для этого параметра значение true.
<param name="NDLB-sendrecv-in-session" value="true"/>
Позволит кодекам соответствовать соответствующему имени, даже если данная строка неверна.
т. е. телефоны Linksys и Sipura по умолчанию будут передавать G.729a вместо G.729 в качестве строки кодека, поэтому они не совпадают.
Если вы хотите, чтобы неправильные имена IANA соответствовали соответствующей строке кодека, добавьте следующий параметр в свой профиль SIP.
<param name="NDLB-allow-bad-iananame" value="true"/>
См. RFC 3551 , RFC 3555 и списки IANA для SDP.
При входящих вызовах сделайте uuid сеанса равным идентификатору SIP-вызова этого вызова.
<param name="inbound-use-callid-as-uuid" value="true"/>
При исходящих вызовах установите callid, соответствующий uuid сеанса.
<param name="outbound-use-uuid-as-callid" value="true"/>
Это находится в файле «..sip_profiles/external.xml».
Обязательно прочтите SIP TLS, прежде чем включать определенные функции ниже, поскольку они могут работать не так, как ожидалось.
TLS: отключен по умолчанию, для включения установите значение «истина».
<param name="tls" value="$${internal_ssl_enable}"/>
отключено по умолчанию, когда включено, София не может прослушивать незашифрованный порт для этого соединения. Это может остановить многие стандартные сценарии перебора, а если все ваши клиенты подключаются через TLS, это может помочь уменьшить воздействие вашего сервера FreeSWITCH на мир.
<param name="tls-only" value="false"/>
дополнительные параметры привязки для TLS
<param name="tls-bind-params" value="transport=tls"/>
Порт для прослушивания запросов TLS. (5061 будет использоваться, если не указано)
<param name="tls-sip-port" value="$${internal_tls_port}"/>
Расположение SSL-сертификатов Agent.pem и cafile.pem (необходимо для TLS-сервера)
<param name="tls-cert-dir" value="$${internal_ssl_dir}"/>
Версия TLS («sslv2», «sslv3», «sslv23», «tlsv1», «tlsv1.1», «tlsv1.2»). ПРИМЕЧАНИЕ. Телефоны могут не работать с TLSv1.
<param name="tls-version" value="$${sip_tls_version}"/>
Если не установлено, по умолчанию установлено значение: «tlsv1,tlsv1.1,tlsv1.2».
Если ваш агент.pem защищен кодовой фразой, введите сюда парольную фразу, чтобы FreeSWITCH мог расшифровать ключ.
<param name="tls-passphrase" value=""/>
Если на сертификате клиента/сервера должна быть проверена дата, чтобы убедиться, что срок его действия не истек и он в настоящее время активен.
<param name="tls-verify-date" value="true"/>
Это контролирует, выполняются ли какие-либо проверки безопасности сертификатов сервера/клиента. Проверка обычно заключается в проверке действительности сертификатов в соответствии с файлом cafile.pem. Установите значение «in», чтобы проверять только входящие соединения, «out», чтобы проверять только исходящие соединения, «all», чтобы проверять все соединения, а также «subjects_in», «subjects_out» и «subjects_all» для проверки субъекта (проверка субъекта для исходящих соединений против имени хоста/IP-адреса, к которому подключается). Несколько политик можно разделить с помощью '|' канал, например «subjects_in|subjects_out». По умолчанию нет.
<param name="tls-verify-policy" value="none"/>
Когда проверка сертификата включена (tls-verify-policy), насколько глубоко мы должны попытаться снова проверить сертификат вверх по цепочке файла cafile.pem. По умолчанию только глубина 2.
<param name="tls-verify-depth" value="2"/>
Если проверка субъектов включена для входящих подключений (tls-verify-policy установлена в «subjects_in» или «subjects_all»), это список разрешенных субъектов (разделяется вертикальной чертой «|»). Обратите внимание, что это влияет только на входящие соединения для субъекты исходящих подключений всегда проверяются по именам хостов/IP-адресам.
<param name="tls-verify-in-subjects" value=""/>
TODO RFC 2833 устарел благодаря RFC 4733 .
<param name="rfc2833-pt" value="101"/>
<param name="dtmf-duration" value="100"/>
TODO RFC 2833 устарел благодаря RFC 4733 .
Установите параметр в SIP-профиле:
<param name="dtmf-type" value="info"/>
или
<param name="dtmf-type" value="rfc2833"/>
или
<param name="dtmf-type" value="none"/>
ИЛИ установите переменную в SIP-шлюзе или профиле пользователя (НЕ в канале, она должна быть до CS_INIT):
<variables> <variable direction="inbound|outbound|both" name="dtmf_type" value="info"> </variables>
Обратите внимание на «_» вместо «-» в параметре профиля (это переменная, установленная в диалплане). (24.10.2010: мне кажется, "оба" не работают в моих тестах, "исходящий" работает)
Примечание: для внутриполосного DTMF, Разное. Инструменты диалплана start_dtmf должны использоваться в диалплане.
Кроме того, чтобы изменить исходящую маршрутизацию с info или rfc2833 на внутриполосную, используйте Misc._Dialplan_Tools_start_dtmf_generate.
TODO RFC 2833 устарел благодаря RFC 4733 .
По умолчанию: ложь
Если это правда, то он передает DTMF RFC 2833 с одной стороны моста на другую без изменений. В противном случае он декодирует и перекодирует их перед передачей дальше.
<param name="pass-rfc2833" value="true"/>
TODO RFC 2833 устарел благодаря RFC 4733 .
По умолчанию: false.
Для согласования DTMF используйте этот параметр, чтобы всегда предлагать 2833 и принимать как 2833, так и INFO. Использование этого параметра не рекомендуется, поскольку его целью является попытка справиться с ошибочными реализациями SIP.
<param name="liberal-dtmf" value="true"/>
Это включает или отключает поддержку таймеров сеансов SIP RFC 4028 .
<param name="enable-timer" value="false"/>
таймеры сеанса для всех вызовов истекают через указанные секунды. Затем он отправит еще одно приглашение (повторное приглашение). Если не указано иное, по умолчанию — 30 минут. Некоторые шлюзы могут отклонять значения менее 30 минут. Эти значения относятся к Session-Expires в RFC 4028 (время, в которое элемент будет считать, что время ожидания сеанса истекло, если заранее не произошло успешной транзакции обновления сеанса).
<param name="session-timeout" value="1800"/>
Примечание. Если для вашего коммутатора требуется опция таймера; например, Huawei SoftX3000, ему требуется это необязательное поле, и он отбрасывает вызовы с сообщением «Ошибка сообщения проверки таймера сеанса», тогда вы можете вернуть обратно фиксацию, которая убрала параметр «Требовать: таймер», который является необязательным полем:
git log -1 -p 58c3c3a049991fedd39f62008f8eb8fca047e7c5 libs/sofia-sip/libsofia-sip-ua | patch -p1 -R touch libs/sofia-sip/.update make mod_sofia-clean make mod_sofia-install
Это включает поддержку 100rel (100% надежность - сообщение PRACK, как определено в RFC3262 ). Это устраняет проблему с SIP, когда предварительные сообщения, такие как «180 Ringing», не подтверждаются и, следовательно, могут быть отброшены при плохом соединении без повторной передачи. *2009-07-08:* Включение этого параметра может привести к сбою FreeSWITCH, см. FSCORE-392 .
<param name="enable-100rel" value="true"/>
Это устанавливает значение «Min-SE» (в секундах) из RFC 4028 . Это значение не должно быть меньше 90 секунд.
<param name="minimum-session-expires" value="120"/>
Если для этого параметра установлено значение true, FreeSWITCH будет отвечать на входящие SIP OPTIONS кодом 503 «Максимальное количество выполняемых вызовов», когда FS приостановлена или превышено максимальное количество сеансов.
Если установлено значение false или вообще не установлено (поведение по умолчанию), SIP OPTIONS всегда отвечает 200 «ОК».
<param name="sip-options-respond-503-on-busy" value="false"/>
Установка этого параметра в значение true особенно полезна, если вы используете прокси-сервер, такой как OpenSIPS или Kamailio, с модулем диспетчера для проверки ваших серверов FreeSWITCH путем отправки SIP OPTIONS.
Установка этого параметра отменяет значение срока действия в 200 OK в ответ на все входящие SIP-РЕГИСТРЫ в направлении этого sip_profile.
Этот параметр можно переопределить для каждого отдельного пользователя, установив переменную каталога пользователя sip-force-expires .
Установка этого параметра добавляет случайное отклонение к значению срока действия в 200 OK в ответ на все входящие SIP-РЕГИСТРЫ в направлении этого sip_profile.
В результате клиенты не будут перерегистрироваться в один и тот же интервал времени, что распределит нагрузку на вашу систему.
Например, если вы установите:
<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 .
Установка этого параметра приведет к отправке всем исходящим транзакциям значения, установленного исходящим прокси.
<param name="outbound-proxy" value="127.0.0.1"/>
Сообщает FreeSWITCH не отправлять UPDATE дисплея на участок вызова.
<param name="send-display-update" value="false"/>
Установите для этого параметра размер джиттербуфера, который вы хотели бы иметь для всех вызовов, проходящих через этот профиль.
<param name="auto-jitterbuffer-msec" value="120"/>
<param name="rtp-timer-name" value="soft"/>
Если вы не хотите передавать временные метки из одного потока RTP в другой, rtp-rewrite-timestamps — это параметр, который вы можете установить в профиле SIP (для каждого вызова с помощью chanvar rtp_rewrite_timestamps в диалплане).
В результате FreeSWITCH будет заново генерировать и перезаписывать временные метки во всех потоках RTP, идущих к конечной точке, используя этот профиль SIP.
Это может быть необходимо для устранения проблем со звуком при отправке вызовов на некоторые параноидальные и не RFC-совместимые шлюзы (известно, что Cirpack требует этого).
<param name="rtp-rewrite-timestamps" value="true"/>
было: rtp-timeout-sec (устаревший параметр конфигурации)
Эта переменная канала настраивает количество миллисекунд бездействия RTP (отсутствие полученных медиа-пакетов), прежде чем FreeSWITCH сочтет вызов отключенным и повесит трубку. Вместо этого рекомендуется использовать таймеры сеанса. Если этот параметр опущен, значением по умолчанию является «0», которое отключает тайм-аут.
Пример: установите тайм-аут мультимедиа на 31 секунду.
<X-PRE-PROCESS cmd="set" data="media_timeout=31000"/>
было: rtp_hold_timeout_sec (устаревший параметр конфигурации)
rtp_hold_timeout_sec deprecated use media_timeout variable.
Эта переменная канала настраивает количество секунд бездействия RTP (молчания мультимедиа) для вызова, поставленного на удержание конечной точкой, прежде чем FreeSWITCH сочтет вызов отключенным и повесит трубку. Вместо этого рекомендуется использовать таймеры сеанса, поскольку некоторые телефоны перестают отправлять мультимедиа при переводе в режим ожидания. Если этот параметр опущен, значением по умолчанию является «0», которое отключает тайм-аут.
Пример: установите тайм-аут мультимедиа на 10 минут.
<X-PRE-PROCESS cmd="set" data="media_hold_timeout=600000"/>
Управляет тем, что произойдет, если FreeSWITCH обнаружит, что он не поддерживает медиа-поток (аудио) RTP при мостовом вызове. (Эта ситуация может произойти, если на сервере FreeSWITCH недостаточно процессорного времени.)
Если установлено значение «true» (по умолчанию), FreeSWITCH будет замечать, когда во входящей очереди ожидает чтения более одного пакета RTP. Если это состояние сохраняется более пяти секунд, пакеты RTP будут отброшены, чтобы «догнать» аудиопоток. Например, если в очереди всегда есть пять дополнительных пакетов по 20 мс, задержку звука в 100 мс можно устранить, отбросив пакеты. Это приведет к сбою звука, поскольку часть звука будет отброшена, но уменьшит задержку на 100 мс для остальной части вызова.
Если для rtp-autoflush-during-bridge установлено значение false, FreeSWITCH вместо этого сохранит все пакеты RTP при вызовах по мосту, даже если это увеличивает задержку или «задержку», которую слышат вызывающие абоненты.
<param name="rtp-autoflush-during-bridge" value="true"/>
Имеет тот же эффект, что и «rtp-autoflush-during-bridge», но влияет на вызовы, не связанные с мостом (такие как факсы, IVR и эхо-тест).
В отличие от «rtp-autoflush-during-bridge», значение по умолчанию — false, что означает, что пакеты с высокой задержкой при вызовах без моста не будут отбрасываться. Это приводит к более плавному звуку, возможно, за счет увеличения задержки звука (или «задержки»).
Если для параметра «rtp-autoflush» установлено значение true, пакеты будут отбрасываться, чтобы минимизировать задержку, когда это возможно. Это может привести к ошибкам в распознавании DTMF, факсах и других процессах, требующих получения всех пакетов.
<param name="rtp-autoflush" value="true"/>
Эти настройки касаются аутентификации: требований для идентификации конечных точек SIP для FreeSWITCH.
Выберите ключ вызова области. По умолчанию используется auto_to, если не установлено.
auto_from — использует поле from в качестве значения для области SIP. auto_to — использует поле to в качестве значения для области SIP. <любое значение> — вы можете ввести любое значение, которое будет использоваться для области SIP.
Если вы хотите, чтобы набор URL-адресов работал, вам нужно установить для этого параметра значение auto_from.
Если вы используете любое другое значение, кроме auto_to или auto_from, вы потеряете возможность использовать несколько доменов.
Примечание: закомментируйте, чтобы восстановить поведение до 29 сентября 2008 г.
<param name="challenge-realm" value="auto_from"/>
принимать любую аутентификацию без фактической проверки (не очень хорошая функция для большинства людей)
<param name="accept-blind-auth" value="true"/>
К пользователям в каталоге могут быть применены параметры «auth-acl», чтобы ограничить доступ пользователей к предопределенному ACL или CIDR.
<param name="auth-calls" value="$${internal_auth_calls}"/>
Значение может быть «ложным», чтобы отключить аутентификацию в этом профиле. Это означает, что при поступлении звонков в профиль *не* будет отправляться вызов аутентификации вызывающему абоненту.
Запись записей в журнал (Предупреждение) об ошибках аутентификации (Регистрация и приглашение). полезно для пользователей, желающих использовать Fail2ban. примечание: требуется SVN#15654 или выше.
<param name="log-auth-failures" value="true"/>
При вызовах с авторизацией аутентифицируйте *все* пакеты, а не только INVITE и REGISTER (Примечание: OPTIONS, SUBSCRIBE, INFO и MESSAGE не аутентифицируются, даже если для этого параметра установлено значение true, см.
<param name="auth-all-packets" value="false"/>
отключить регистр, что может быть нежелательно в публичном коммутаторе
<param name="disable-register" value="true"/>
Допустимые значения для этого параметра: «контакт», «истина», «ложь». value="true" — наиболее распространенный вариант использования. Установка этого значения на «contact» приведет к удалению старой регистрации на основе sip_user, sip_host и поля контакта, а не call_id.
<param name="multiple-registrations" value="contact"/>
Определяет максимальное количество регистраций на расширение. Допустимое значение этого параметра — целое число больше 0. Обратите внимание, что установка значения 1 будет противодействовать использованию множественной регистрации . При попытке зарегистрировать расширение после достижения максимального значения София ответит 403. В следующем примере максимальное количество регистраций будет установлено равным 2.
<param name="max-registrations-per-extension" value="2"/>
это позволяет любому регистру комментировать следующую строку и раскомментировать одну или обе другие две строки для аутентификации вызова.
<param name="accept-blind-reg" value="true"/>
Принудительно совместить пользователя и пользователя авторизации.
<param name="inbound-reg-force-matching-username" value="true"/>
Срок действия принудительного пользовательского обновления присутствия истекает (-1 означает бесконечное время)
<param name="force-publish-expires" value="true"/>
все входящие регистрации будут искать пользователей в этом домене. Закомментируйте, чтобы использовать несколько доменов
<param name="force-register-domain" value="$${domain}"/>
все входящие регистрации будут храниться в базе данных с использованием этого домена. Закомментируйте, чтобы использовать несколько доменов
<param name="force-register-db-domain" value="$${domain}"/>
Может быть установлено значение «истина», «ложь» или «только первый». Если установлено значение «true» (это поведение по умолчанию), mod_sofia отправит событие запроса сообщения при регистрации. mod_voicemail использует это для подсчета сообщений.
<param name="send-message-query-on-register" value="true"/>
Если установлено значение «только первый», только первый REGISTER будет запускать запрос сообщения (для этого требуется, чтобы UA увеличивал NC в последующих REGISTER. Некоторые телефоны, например snom, этого не делают).
Конечным результатом запроса-сообщения является отправка сообщения NOTIFY MWI регистрирующемуся UA (оно используется для удовлетворения терминалов, которые ожидают MWI без подписки на него).
Если установлено значение True с помощью nat-options-ping, конечная точка будет отменена, если не будет ответа на пакет OPTIONS.
<param name="unregister-on-options-fail" value="true"/>
Если эта опция установлена, FreeSWITCH будет периодически отправлять пакет OPTIONS всем зарегистрированным конечным точкам, имеющим NAT, чтобы поддерживать соединение. Если установлено значение True с отключением регистрации при сбое параметров, конечная точка будет отменена, если не будет ответа на пакет OPTIONS.
<param name="nat-options-ping" value="true"/>
Если эта опция установлена, FreeSWITCH будет периодически отправлять пакет OPTIONS всем зарегистрированным конечным точкам, чтобы поддерживать соединение. Если установлено значение True с отключением регистрации при сбое параметров, конечная точка будет отменена, если не будет ответа на пакет OPTIONS.
<param name="all-reg-options-ping" value="true"/>
Управляет тем, как часто регистрации в FreeSWITCH проверяются на срок действия.
<param name="registration-thread-frequency" value="30"/>
Для каждого входящего регистра запускайте новый поток для его обработки, например, при использовании более тяжелых бэкэндов.
<param name="inbound-reg-in-new-thread" value="true"/>
Управляет средним интервалом, в течение которого FreeSWITCH™ будет отправлять пакет OPTIONS зарегистрированному пользователю, по умолчанию 30 секунд.
<param name="ping-mean-interval" value="30"/>
частота пинг-потока
Управляет частотой и средним временем отправки пингов. по умолчанию составляет 1 секунду.
<param name="ping-thread-frequency" value="1"/>
Пример: с интервалом, установленным на 30, и частотой, установленной на 1, для 1000 зарегистрированных пользователей FS будет пинговать 33 пользователя в секунду и начинать заново каждые 30 секунд. (1000 разделить на 30 = 33)
Принудительная подписка истекает до более низкого значения, чем запрошено
<param name="force-subscription-expires" value="60"/>
все входящие подписки будут искать пользователей в этом домене. Закомментируйте, чтобы использовать несколько доменов
<param name="force-subscription-domain" value="$${domain}"/>
Включить присутствие.
Если вы хотите поделиться своим присутствием (см. имя базы данных и присутствие-хосты), установите для этого параметра значение «true» в первом профиле и включите общую базу данных присутствия. Затем в последующих профилях, в которых используется совместное присутствие, установите для этой переменной значение «пассивный» и включите там также общую базу данных присутствия.
<param name="manage-presence" value="true"/>
Используется для обмена информацией о присутствии в профилях Софии.
Имя базы данных, которая будет использоваться для этого профиля
<param name="dbname" value="share_presence"/>
По умолчанию, когда вызов ставится на удержание, отслеживающие расширения показывают, что этот номер звонит. Вы можете изменить это поведение, указав этот параметр и одно из следующих значений. Доступно с момента фиксации 1145905 13 апреля 2012 г.
<param name="presence-hold-state" value="confirmed"/>
Список доменов, которые имеют общее присутствие в базе данных, указанной в dbname. Люди, которые используют несколько доменов для каждого профиля, в любом случае не смогут использовать эту функцию, поэтому в этом случае вам нужно установить для нее что-то вроде «_DISABLED_», чтобы избежать объединения пользователей из похожих доменов. Для нескольких доменов, также известных как мультитенантный вызов 1001, будут вызываться все соответствующие пользователи во всех доменах. Не используйте хосты присутствия с мультитенантом.
<param name="presence-hosts" value="$${domain}"/>
При необходимости можно глобально скрыть идентификатор вызывающего абонента из примечаний о присутствии в распределенных сообщениях NOTIFY. Например, «Разговор 1002» будет примечанием о присутствии для добавочного номера 1001, пока он разговаривает с добавочным номером 1002. Если для тега конфиденциальности присутствия установлено значение «истина», то примечание о присутствии будет распространяться как «На телефоне» (без расширение, к которому оно подключено). Таким образом, любой абонент 1001 не сможет видеть, с кем он разговаривает. Ссылка. Так же скрывается номер в статусах «Удержание», «Звонок», «Вызов» и возможно других. Связь
<param name="presence-privacy" value="true"/>
Укажите, следует ли отправлять информацию о присутствии при регистрации пользователей. По умолчанию информация о присутствии не отправляется. Допустимые варианты:
<param name="send-presence-on-register" value="true"/>
выберите один, может быть переопределен типом входящего вызова и/или переменной канала 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"/>
neither one:
<param name="caller-id-type" value="none"/>
(по умолчанию true) Отключите, установив для него значение false, если вы столкнулись с чем-то, что ваш шлюз по какой-то причине ненавидит X-заголовки, которые он должен игнорировать.
<param name="pass-callee-id" value="false"/>
<param name="hold-music" value="$${hold_music}"/>
Это позволяет отключить музыку в режиме ожидания (добавлено в коммите GIT e5cc0539ffcbf660637198c698e90c2e30b05c2f, от пятницы, 30 апреля, 19:14:39 2010 -0500).
Это может быть полезно, когда вызывающее устройство намеревается отправить свой собственный MOH, но, тем не менее, отправляет REINVITE FreeSWITCH, запуская свой MOH.
Это также можно сделать из диалплана с помощью переменной канала rtp_disable_hold.
<param name="disable-hold" value="true"/>
установить, какие списки управления доступом, определенные в acl.conf.xml , применяются к этому профилю
<param name="apply-inbound-acl" value="domains"/>
<param name="apply-register-acl" value="domains"/>
<param name="apply-proxy-acl" value="myproxies"/>
Это позволяет отправлять трафик во FreeSWITCH через один или несколько прокси-серверов.
Прокси-сервер должен добавить заголовок X-AUTH-IP, содержащий IP-адрес клиента. FreeSWITCH доверяет прокси-серверу, поскольку его IP-адрес указан в ACL прокси-сервера, и использует значение IP в этом заголовке в качестве IP-адреса клиента для аутентификации ACL (acl определен в apply-inbound-acl).
<param name="record-template" value="$${base_dir}/recordings/${caller_id_number}.${target_domain}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
максимальное количество открытых диалогов в процессе
<param name="max-proceeding" value="1000"/>
если вы хотите отправить какие-либо собственные параметры привязки
<param name="bind-params" value="transport=udp"/>
отключить передачу, которая может быть нежелательна в публичном коммутаторе
<param name="disable-transfer" value="true"/>
<param name="manual-redirect" value="true"/>
Enable-3pcc определяет, разрешено ли стороннее управление вызовами или нет. Управление вызовами третьих лиц полезно в тех случаях, когда приглашение SIP не включает SDP (позднее согласование мультимедиа).
Для параметра Enable-3pcc может быть установлено значение «true» или «proxy», true принимает вызов сразу, прокси-сервер ждет, пока на вызов не будет дан ответ, а затем отправляет Accept.
<param name="enable-3pcc" value="true"/>
TTL для nonce в sip-аутентификации
<param name="nonce-ttl" value="60"/>
Для этого параметра установлено значение 60 секунд, если оно не установлено здесь. Он используется для определения того, как долго хранить запись регистрации пользователя в таблице sip_authentication. Поле expires в таблице sip_authentication представляет собой это значение плюс срок действия, установленный пользовательским агентом.
Если установлено значение true (по умолчанию), профиль будет указан ждать накопления 500 операторов SQL или истечения 500 мс и выполнения их в транзакции (для повышения производительности).
<param name="sql-in-transactions" value="true"/>
Если у вас есть поддержка ODBC и работающий dsn, вы можете использовать его вместо SQLite.
<param name="odbc-dsn" value="dsn:user:pass"/>
<param name="mwi-use-reg-callid" value="false">
Если вы хотите скрыть тот факт, что вы используете FreeSWITCH в сообщении SDP (в частности, поля o= и s=), установите параметр имени пользователя в профиле. Это не имеет никакого отношения к параметру имени пользователя, когда мы имеем дело со шлюзами. Если это значение не установлено, система по умолчанию использует FreeSWITCH в качестве параметра имени пользователя с полями o= и s=.
<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.
when you set <param name="username" value="root" />
Чтобы разрешить пользователям регистрироваться на сервере, информация о пользователе должна быть указана в файле conf/directory/default/*xml. Чтобы динамически указать, какие пользователи могут регистрироваться, используйте mod_xml_curl
Из ванильных конфигураций репозитория FreeSWITCH Github ( conf/vanilla/autoload_configs/sofia.conf.xml ):
conf/autoload_configs/sofia.conf.xml
<configuration name="sofia.conf" description="sofia Endpoint"> <global_settings> <param name="log-level" value="0"/> <!-- <param name="abort-on-empty-external-ip" value="true"/> --> <!-- <param name="auto-restart" value="false"/> --> <param name="debug-presence" value="0"/> <!-- <param name="capture-server" value="udp:homer.domain.com:5060"/> --> <!-- the new format for HEPv2/v3 and capture ID protocol:host:port;hep=2;capture_id=200; --> <!-- <param name="capture-server" value="udp:homer.domain.com:5060;hep=3;capture_id=100"/> --> </global_settings> <!-- The rabbit hole goes deep. This includes all the profiles in the sip_profiles directory that is up one level from this directory. --> <profiles> <X-PRE-PROCESS cmd="include" data="../sip_profiles/*.xml"/> </profiles> </configuration>
Если вы внесли изменения в файл sofia.conf.xml, есть два способа заставить FreeSWITCH использовать новые значения.
Если вы внесли изменения только в определенный профиль, вы можете просто ( ВНИМАНИЕ : все вызовы, связанные с этим профилем, будут прекращены):