Freeswitch: mod_dptools: group

Данное приложение добавляет/удаляет в/из БД (sqlite или ODBC, в зависимости от конфигурации) и разрешает вызовы этих групп при помощи приложения bridge Зависит от mod_db и mod_dptools.

group,[insert|delete|call]:<group name>:<url>,group [insert|delete|call]

Диалплан поставляемый по умолчанию в файле ../conf/dialplan/default.xml использует эти команды для добавления, удаления и вызова групп:

    <extension name="del-group">
      <condition field="destination_number" expression="^80(\d{2})$">
	<action application="answer"/>
	<action application="group" data="delete:$1@${domain_name}:${sofia_contact(${sip_from_user}@${domain_name})}"/>
	<action application="gentones" data="%(1000, 0, 320)"/>
      </condition>
    </extension>
 
    <extension name="add-group">
      <condition field="destination_number" expression="^81(\d{2})$">
	<action application="answer"/>
	<action application="group" data="insert:$1@${domain_name}:${sofia_contact(${sip_from_user}@${domain_name})}"/>
	<action application="gentones" data="%(1000, 0, 640)"/>
      </condition>
    </extension>
 
    <extension name="call-group-simo">
      <condition field="destination_number" expression="^82(\d{2})$">
	<action application="bridge" data="{leg_timeout=15,ignore_early_media=true}${group(call:$1@${domain_name})}"/>
      </condition>
    </extension>
 
    <extension name="call-group-order">
      <condition field="destination_number" expression="^83(\d{2})$">
	<action application="bridge" data="{leg_timeout=15,ignore_early_media=true}${group(call:$1@${domain_name}:order)}"/>
      </condition>
    </extension>

Добавить в группу вызова внешний (мобильный) номер (через консоль).

fs_cli> group insert:01@192.168.100.123:sofia/gateway/provider/89219981138

Данная команда добавит в группу 01 (вызываемую набором 8201 в default.xml), номер 89219981138, вызываемый через SIP gateway (транк) по имени provider.
Предполагается, что локальный домен определён как 192.168.100.123, в корневом конфигурационном файле ../conf/vars.xml, через динамически вычисляемую глобальную переменную $${local_ip_v4}.

  <X-PRE-PROCESS cmd="set" data="domain=$${local_ip_v4}"/>
  <X-PRE-PROCESS cmd="set" data="domain_name=$${domain}"/>

Если требуется установить переменную канала, вы можете использовать квадратные скобки:

group insert:01@192.168.100.123:[absolute_codec_string='PCMA,PCMU,OPUS']sofia/gateway/provider/89219981138

Удалить номера из группы можно при помощи команды delete, но посмотреть список всех участников группы, через команду нельзя. Для этого можно воспользоваться прямым SQL запросом.
Так, если используется ванильная внутренняя БД sqlite3, сперва вы должны подключится к нужному файлу (при установке FS из репозитория, он по умолчанию находится в директории /var/lib/freeswitch/db, при компиляции из исходников в /usr/local/freeswitch/db :

$ cd /usr/local/freeswitch
$ sqlite3 db/call_limit.db

посмотреть доступные таблицы: sqlite> .tables

посмотреть схему таблицы: .schema group_data

sqlite> .schema group_data
CREATE TABLE group_data (
   hostname   VARCHAR(255),
   groupname  VARCHAR(255),
   url        VARCHAR(255)
);
CREATE INDEX gd_groupname on group_data (groupname);
CREATE INDEX gd_url on group_data (url);

выбрать все данные из таблицы:

select * from group_data;

чтобы удалить группу, выполните:

delete from group_data where groupname = '01@192.168.100.123';

чтобы удалить конкретного пользователя из группы:

delete from group_data where url like '%89217654321';

Но, для полноценной работы, настоятельно рекомендуется использовать ODBC или нативно pgsql хранилище, вместо sqlite по умолчанию.  

См. также

  • freeswitch/mod/mod_dptools/group.txt
  • Последние изменения: 2020/04/12