FreeSWITCH:Sofia/SIP - Команды FS_CLI, Debug, Profile

Sofia - это название SIP стека используемого FreeSWITCH. Если вы видите Sofia, знайте, что это касается SIP.

Рассмотрим обслуживание и конфигурацию Sofia/SIP во FreeSWITCH.

Обновление зарегистрированных окончаний (ENDPOINTS)

Flushing and rebooting registered endpoints

Вы можете обновить регистрации заданные в конкретном профиле командой flush_inbound_reg из консоли.

 freeswitch> sofia profile <profile_name> flush_inbound_reg [<call_id>|<user@host>] [reboot]

Если вы не укажете <call_id> и / или <user@host> перегрузятся все окончания в указанном профиле.

также можно использовать команду check_sync

 freeswitch>sofia profile <profile_name> check_sync <call_id> | <user@domain>

Запуск нового профиля

Если вы создали новый профиль, требуется запустить его командой start из консоли:

 freeswitch> sofia profile <new_profile_name> start

Перегрузка профилей и шлюзов (gateways)

Вы можете перегрузить определенные профили командой restart/rescan.

 freeswitch> sofia profile <profile_name> [<rescan>|<restart>] reloadxml

Удаление шлюзов

Удалите зарегистрированные шлюзы командой killgw

 freeswitch> sofia profile <profile_name> killgw <gateway_name>

Перезагрузка шлюза

Для принудительной перегрузки шлюза используйте комбинацию команд killgw и rescan. При этом сохранятся текущие вызовы.

 freeswitch> sofia profile <profile_name> killgw <gateway_name>
 freeswitch> sofia profile <profile_name> rescan

Добавление / изменение существующих шлюзов

Будем считать что все шлюзы находятся в директории по умолчанию: /usr/local/freeswitch/conf/sip_profiles/external
и вы только что создали новую запись. Команды rescan, reloadxml добавят новый шлюз, но не повлияют на текущие вызовы.

 freeswitch> sofia profile external rescan reloadxml

если редактируется уже существующий шлюз, то вначале потребуется убить существующую регистрацию командой killgw, а затем командами rescan и reloadxml перечитать конфиг и поднять шлюз.

 freeswitch> sofia profile external killgw <gateway_name> 
 freeswitch> sofia profile external rescan reloadxml

Просмотр SIP регистраций

Для отображения всех устройств (devices) зарегистрированных в системе используется команда reg:

 freeswitch> sofia status profile <profile name> reg

<spoiler|sofia status profile internal reg>

freeswitch@internal> sofia status profile internal reg

Registrations:
=================================================================================================
Call-ID:        OWNkM2M5YTViOThhMzY2YjAxNjdjYWMyYTY0Yzg4ZDA.
User:           1000@192.168.0.194
Contact:        "" <sip:1000@192.168.0.194:5090;rinstance=3d30b128e273f219;transport=UDP>
Agent:          Zoiper for Windows 2.39 r16838
Status:         Registered(UDP)(unknown) EXP(2014-06-24 14:59:23) EXPSECS(3586)
Host:           Z7
IP:             192.168.0.194
Port:           5090
Auth-User:      1000
Auth-Realm:     192.168.0.194
MWI-Account:    1000@192.168.0.194

Total items returned: 1
=================================================================================================

</spoiler>

Для получения статуса xml используется команда xmlstatus.

 freeswitch> sofia xmlstatus profile <profile name> reg

<spoiler|sofia xmlstatus profile internal reg>

freeswitch@internal> sofia xmlstatus profile  internal reg
<?xml version="1.0" encoding="ISO-8859-1"?>
<profile>
  <registrations>
    <registration>
        <call-id>OWNkM2M5YTViOThhMzY2YjAxNjdjYWMyYTY0Yzg4ZDA.</call-id>
        <user>1000@192.168.0.194</user>
        <contact>&quot;&quot; &lt;sip:1000@192.168.0.194:5090;rinstance=3d30b128e273f219;transport=UDP&gt;</contact>
        <agent>Zoiper for Windows 2.39 r16838</agent>
        <status>Registered(UDP)(unknown) exp(2014-06-24 14:59:23) expsecs(2745)</status>
        <host>Z7</host>
        <network-ip>192.168.0.194</network-ip>
        <network-port>5090</network-port>
        <sip-auth-user>1000</sip-auth-user>
        <sip-auth-realm>192.168.0.194</sip-auth-realm>
        <mwi-account>1000@192.168.0.194</mwi-account>
    </registration>
  </registrations>
</profile>

</spoiler>

Отобразить статус шлюзов

Для поднятых шлюзов:

 freeswitch> sofia profile <profile> gwlist up

Для неактивных шлюзов:

 freeswitch> sofia profile <profile> gwlist down

включить SIP дебаг для конкретного профиля:

  freeswitch> sofia profile <profilename> siptrace on|off

Общий дебаг

  sofia global siptrace [on|off]

Чтобы получать SIP дебаг в файл /usr/local/freeswitch/log/freeswitch.log, используйте:

 freeswitch> sofia tracelevel info           (or any other loglevel name or number)

для включения в лог SIP дебага по умолчанию, добавьте в sofia.conf.xml следующую опцию:

<global_settings>
  ...
  <param name="tracelevel" value="DEBUG"/>
  ...
</global_settings>

а также в sip профиль xml файл:

 <profiles>
  ...
  <profile name="...">
    ...
    <param name="sip-trace" value="yes"/>
    ...
  </profile>
  ...
</profiles>

Отслеживание состояние вызова с сохранением в БД (Track Calls).

  <param name="track-calls" value="true"/>

Эта опция записывает состояние вызова в базу данных ODBC, что позволяет получать данные о состоянии абонента нескольким FreeSWITCH.

Sofia SIP Stack Watchdog

На случай если модуль Sofia зависнет и перестанет отвечать на запросы можно включить опцию контроля watchdog, которая перезагрузит FreeSWITCH, если модуль SIP перестанет откликаться в течении заданного времени.

<param name="watchdog-enabled" value="no"/>
<param name="watchdog-step-timeout" value="30000"/>
<param name="watchdog-event-timeout" value="30000"/>

Watchdog может быть включен или выключен глобально, или для конкретного профиля из fs_cli:

sofia profile internal watchdog off
sofia profile internal watchdog on
sofia global watchdog off
sofia global watchdog on

ACL

Позволяет задать доступ по IP адресу для REGISTER или для INVITE, или и для того и другого, в опциях SIP профиля.

 <param name="apply-inbound-acl" value="<acl_list|cidr>"/>

Разрешает пользователю делать входящие вызовы с определенного IP адреса без аутентификации.

 <param name="apply-register-acl" value="<acl_list|cidr>"/>

Разрешает регистрацию с определенного IP адреса без аутентификации.

ACL freeswitch.org

Использовать один домен для всех регистраций

Using A Single Domain For All Registrations

Можно заставить все регистрации в определенном профиле использовать один домен . Т.е., игнорировать домен в сообщении SIP.

challenge realm
 <param name="challenge-realm" value="auto_from"/> 

По умолчанию «auto_to» не установлено; Конфигурации по умолчанию, указывает «auto_from»

Возможные значения:

auto_from - использует поле from в качестве значения SIP realm.
auto_to - использует поле to в качестве значения SIP realm.
<anyvalue> - вы можете ввести любое значение в качестве SIP realm.

force-register-domain
 <param name="force-register-domain" value="$${domain}"/>

Это заставит профиль игнорировать домен указанный в заголовках to или from запроса Register, а указывать значение заданное здесь.
В БД же сохранится оригинальное значение - user@<from domain in SIP packet>

force-subscription-domain
 <param name="force-subscription-domain" value="$${domain}"/>

Это заставит профиль игнорировать домен указанный в заголовках to или from запроса Subscribe, а указывать значение заданное здесь.
В БД же сохранится оригинальное значение - user@<from domain in SIP packet>

force-register-db-domain
 <param name="force-register-db-domain" value="$${domain}"/>

Это тоже самое, что и force-register-domain, только в БД будет сохранено модифицированное значение.

Принудительное использование IP адреса SIP профилем

Forcing SIP profile to use a static IP address

По умолчанию FreeSWITCH назначаются IP адрес вашего локального интерфейса. Если требуется назначить адрес вручную (например, в случае если имеется несколько сетевых интерфейсов на одной машине), задайте адреса в Sofia профиле, как показано в примере:

../sip_profile/internal.xml

 <param name="rtp-ip" value="192.168.0.123"/>
 <param name="sip-ip" value="192.168.0.123"/>

../sip_profile/external.xml

 <param name="rtp-ip" value="123.123.123.123"/>
 <param name="sip-ip" value="123.123.123.123"/>

где 192.168.0.123 IP к которому надо привязаться.
а также в sofia.conf.xml файле:

 <param name="auto-restart" value="false"/>

Это предотвращает автоматическую перегрузку, если обнаруживается изменение сетевого адреса.

Вызов екстеншена на удаленном SIP сервере

Основная форма:

 sofia/<profile>/<extension>@<remoteserver>

Пример 1:

 sofia/$${profile}/$1@example.org

Пример 2:

 sofia/foo/0@sipphone.com

Где <profile> - имя профиля назначенного в sofia.conf.xml

Вызов внутреннего абонента

Основная форма:

 sofia/<profile>/<extension>%<localserver>

Пример 1:

 sofia/$${profile}/$1%$${domain}

Пример 2:

 sofia/foo/111%192.168.1.111

где 'foo' это SIP профиль(profile), 111 это имя пользователя (userid) зарегистрированной точки (endpoint), а 192.168.1.111 это IP адрес FreeSWITCH. Если SIP профиль name сопоставлен с доменом, или атрибут домена установлен в профиле (e.g., <profile name=«internal» domain=«$${domain}»>), можно выполнить вызов следующим образом:

 sofia/<profile>/<extension>

не указывая домен, когда вызывается местный номер.

Вызов через gateway (транк).

Основная форма:

 sofia/gateway/<gateway_name>/<number_to_dial>

пример 1:

 sofia/gateway/asterisk2/88123216111

Доступные gateways можно вывести командой sofia status:

freeswitch@internal> sofia status
                     Name          Type                                       Data      State
=================================================================================================
            192.168.1.123         alias                                   internal      ALIASED
                 external       profile           sip:mod_sofia@192.168.1.123:5080      RUNNING (0)
                 internal       profile           sip:mod_sofia@192.168.1.123:5060      RUNNING (0)
          internal::avaya       gateway                      sip:spb@192.168.1.252      NOREG
       external::asterisk2      gateway              sip:asterisk2@123.123.123.123      NOREG
=================================================================================================     

в примере это avaya и asterisk2.

Изменение заголовка To:

Вы можете модифицировать поле To: sip заголовка (To: header) добавив ^<toheader>:

  sofia/foo/user%192.168.1.123^111@$${domain}

Указание SIP Proxy c помощью fs_path

Вы можете направить вызов через определенное SIP прокси, используя директиву «fs_path». Пример:

 sofia/foo/user@that.domain;fs_path=sip:proxy.this.domain

Переменные каналов

Добавление заголовков к Sip запросам

Вы можете добавлять произвольные заголовки исходящих SIP звонков, предваряя строку 'sip_h_' любой переменной канала, например:

 <action application="set" data="sip_h_X-Answer=42"/>
 <action application="bridge" data="sofia/mydomain.com/1000@example.com"/>

Несмотря на то, что это не является обязательным, пользовательские заголовки начинаются с «X-», во избежание конфликтов с другими стеками Sip протокола.

Добавление ответных заголовков

Adding Response Headers

Три типа ответных заголовков могут быть назначены:

ответный заголовок Response header

 sip_rh_

Предварительный ответный заголовок Provisional response header

 sip_ph_

Давай, До свидания Bye response header

 sip_bye_h_

Каждый префикс будет добавлять данные, только для своих типов запросов, общего нет.

Пример:

 <action application="set" data="sip_rh_X-Reason=Destination Number Not in Footprint"/>
 <action application="set" data="sip_bye_h_X-Accounting=Some Accounting Data"/>

Добавление пользовательских заголовков

Adding Custom Header

Например, если добавить P-Charge-Info заголовок в INVITE:

 <action application="set"><![CDATA[sip_h_P-Charge-Info=<sip:${caller_id_number}@${domain_name}>;npi=0;noa=3]]></action>

В Sip сообщении мы увидим:

INVITE sip:88123216111@123.123.123.123 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.123:5080;rport;branch=z9hG4bKyg61X9v3gUD4g
Max-Forwards: 69
From: "Olg" <sip:777@192.168.1.123>;tag=XQKQ322vQF5gK
To: <sip:88123216111@123.123.123.123>
Call-ID: b6c776f6-47ed-1230-0085-000f1f659e58
CSeq: 30776798 INVITE
Contact: <sip:mod_sofia@5.6.7.8:5080>
User-Agent: FreeSWITCH-mod_sofia/1.4.0-rc2+git~20120713T162602Z~0afd7318bd+unclean~20120713T184029Z
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, UPDATE, INFO, REGISTER, REFER, NOTIFY
Supported: timer, precondition, path, replaces
Allow-Events: talk, hold, conference, refer
Content-Type: application/sdp
Content-Disposition: session
Content-Length: 229
P-Charge-Info: <88123216111@123.123.123.123>;npi=0;noa=3
X-FS-Support: update_display,send_info.
Remote-Party-ID: "Olg" <sip:777@192.168.1.123>;party=calling;screen=yes;privacy=off
 

Дополнительные переменные каналов

freeswitch

  • freeswitch/sofia-sip.txt
  • Последние изменения: 2018/10/10