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 по умолчанию.