Skip to content

Latest commit

 

History

History
96 lines (65 loc) · 10.4 KB

README.ru.md

File metadata and controls

96 lines (65 loc) · 10.4 KB

License: GPL v3 Latest Release MikoPBX GitHub Issues

English | Русский

ModuleUsersGroups

Модуль управления телефонными группами для MikoPBX. Позволяет организовывать сотрудников в группы с гибкими правами на звонки, контролем исходящих маршрутов и изоляцией групп.

Возможности

  • Организация сотрудников в телефонные группы
  • Управление правами на исходящие звонки по группам
  • Настройка Caller ID для каждой группы на каждом маршруте
  • Изоляция групп: участники могут звонить только внутри группы и на разрешенные номера
  • Изоляция перехвата вызовов внутри групп
  • Автоматическое назначение новых сотрудников в группу по умолчанию
  • REST API для интеграции с внешними системами

Установка

Из маркетплейса

  1. Откройте веб-интерфейс MikoPBX
  2. Перейдите в Система > Модули расширений
  3. Найдите ModuleUsersGroups в маркетплейсе и установите

Ручная установка

  1. Скачайте последний релиз со страницы GitHub Releases
  2. Перейдите в Система > Модули расширений
  3. Нажмите Загрузить модуль и выберите скачанный файл
  4. Включите модуль

Настройка

  1. Перейдите в Маршрутизация > Управление телефонными группами
  2. Нажмите Добавить группу и введите название
  3. При необходимости настройте изоляцию и разрешенные шаблоны номеров
  4. Назначьте пользователей на вкладке Пользователи
  5. Настройте исходящие маршруты и Caller ID на вкладке Исходящие правила
  6. Сохраните группу
  7. При желании задайте группу по умолчанию для автоматического назначения новых сотрудников

Применение прав в Asterisk

Настройки хранятся в SQLite модуля и преобразуются в dialplan без AstDB и set_var в endpoint:

  • users-group-members — одна запись на внутренний номер участника, возвращающая ID группы;
  • users-group-policy-<ID> — разрешённые исходящие маршруты группы и Caller ID для каждого маршрута;
  • users-group-profile — поиск группы и политики маршрута. Суффиксы -WS и -TLS удаляются только из временной копии номера; FROM_PEER не изменяется.

Доступ к маршруту проверяется по инициатору (FROM_PEER). При переадресации Caller ID берётся из группы сотрудника, настроившего переадресацию (FW_SOURCE_PEER), без изменения прав инициатора. Сотрудники без группы сохраняют поведение без групповых ограничений. Для назначенной группы отсутствие маршрута в политике означает запрет. Caller ID поддерживает простой номер или текстовый идентификатор, а также форматы Имя <номер> и "Имя" <номер> (например, 101 <101>). Составной формат передаётся целиком через опцию Dial f(Имя <номер>): Asterisk получает имя и номер, но их передача и отображение у получателя зависят от провайдера. Допустимый набор для имени, номера и простого идентификатора: только латиница A–Z, a–z, цифры 0–9, обычный ASCII-пробел и символы +, -, _, ., *, #. Кириллица, буквы с диакритикой, combining marks и другие Unicode-символы не поддерживаются. Угловые скобки и двойные кавычки допустимы только как синтаксис составного формата, например "Sales Team" <101>. Управляющие символы, некорректный составной формат и небезопасные символы в имени или номере (включая запятые, скобки и подстановки dialplan) не допускаются при сохранении настроек. Формат проверяется на сервере до изменения группы, участников и правил: при ошибке сохранение целиком отклоняется. Ранее сохранённые неподдерживаемые значения остаются видимыми в форме с предупреждением; их нужно исправить или отключить соответствующий маршрут. До исправления генератор пропускает их подмену без отмены разрешения маршрута.

Источник подмены выбирается после проверки прав: непустой групповой Caller ID имеет приоритет; при его отсутствии применяется OUTGOING_CID, заданный в all-outgoing-custom или провайдерском custom-контексте до хука модуля. Значение из custom dialplan считается доверенным и не ограничивается ASCII-валидатором формы; автор custom-контекста отвечает за его корректность для опции Dial f().

Подмена действует только в пределах одной попытки Dial: для обоих источников модуль сохраняет CALLERID(num), CALLERID(name), OUTGOING_CID и DOPTIONS, а после возврата из Dial восстанавливает их, включая пустые значения. Добавленный модулем f(...) не накапливается между попытками. Исходный custom OUTGOING_CID сохраняется и может быть заменён custom-контекстом следующего маршрута; групповая подмена его не затирает. Если оба источника пусты, эти значения не изменяются.

Custom dialplan: контекст SIP-<ID маршрута>-outgoing-ug-custom вызывается после применения выбранной подмены и должен штатно возвращаться через Return(). При активной подмене изменения этих четырёх значений внутри custom-контекста также считаются локальными для текущей попытки и откатываются после Dial. Переходы Goto, уводящие канал из маршрута в обход after-hook, автоматическим восстановлением не покрываются. Вложенные вызовы исходящих маршрутов через Gosub из custom-контекста не поддерживаются: для резервных попыток следует использовать штатный последовательный перебор маршрутов Core.

Миграция: пользовательский dialplan, читающий ${DB(UsersGroups/...)} или использующий GR_VARS, нужно адаптировать к новой схеме. Модуль больше не обновляет семейство AstDB UsersGroups; старые записи автоматически не удаляются.

Проверка генерации без установленного Core:

php tests/UsersGroupsConfTest.php
php tests/CallerIdSaveTest.php

REST API

Базовый URL: http://<your-pbx>/pbxcore/api/modules/ModuleUsersGroups/

Действие Описание
getUserGroup Получить группу пользователя
updateUserGroup Изменить группу пользователя
getDefaultGroup Получить группу по умолчанию
setDefaultGroup Установить группу по умолчанию

Требования

MikoPBX версии 2023.2.179 или выше.

Поддержка

Лицензия

GPL-3.0-or-later