SIP-пользователь (sipuser)

Описание

Учетная запись внутреннего абонента телефонии. Применяется для регистрации, аутентификации, маршрутизации, определения параметров вызовов, организации очередей. Каждая учетная запись SIP-пользователя имеет внутренний номер в домене, набор которого приводит к вызову всех устройств, зарегистрированных под этой учетной записью.

Позволяет регистрировать несколько устройств под одной учетной записью. В этом случае по номеру учетной записи вызываются сразу все зарегистрированные под ней устройства. Количество устройств, способных быть зарегистрированными одновременно, определяется параметром 'lic.devices'. При поступлении новой регистрации, когда уже исчерпан весь объем лицензированных подключений, осуществляется проверка доступности зарегистрированных устройств с помощью отправки запроса OPTIONS. Если обнаруживается не ответившее устройство, то регистрация производится взамен него. Устройства могут регистрироваться под учетной записью с использованием как одних и тех же, так и различных учетных данных (логин и пароль).

Основной логин для аутентификации совпадает с логическим username учетной записи (поле 'login') и для них применяется основной пароль (поле 'pwd'). При необходимости могут быть заданы дополнительные аутентификационные данные в поле 'credentials'.

Ограничения

  • Коллекция недоступна в мастер-домене.

  • При изменении поля лицензии в БД после перезагрузки домена объект не будет загружен, действует проверка по hash.

  • Лицензируется количественным параметром: расходуется лицензия на количество устройств, одновременно зарегистрированных под учетной записью.

Поля

Структура сущности
{
  "id": uuid,
  "name": str,
  "login": str,
  "pwd": str,
  "credentials": array<object>,
  "phonenumber": str,
  "reg": intbool,
  "devices": array<object>,
  "iduser": uuid,
  "timezone": float | "default",
  "lic": object,
  "opts": {
    "title": str,
    "comment": str,
    "ap_device_model": str,
    "ap_mac_address": str,
    "calltimesec": int,
    "modextout": str,
    "modextin": str,
    "trunks": int,
    "minexpires": int,
    "maxexpires": int,
    "dlgtimesec": int
  },
  "ext": {
    "ct": date,
    "lwt": date
  }
}
Table 1. Поля
Спецификация Описание

Поле: id
Режим: inout
Тип: uuid
По умолчанию: generated

Идентификатор. Может быть задан при создании, иначе генерируется системой.

Поле: login
Режим: in
Тип: str
По умолчанию: required

Логическое имя (username) и основной логин для авторизации.
Подставляется в username URI заголовков To и From в SIP-запросах.
Может быть применен для Digest-авторизации совместно с паролем в поле 'pwd'.
Может содержать символы A-Za-z0-9_-.~!. Длина не должна быть более 100 символов.

Поле: pwd
Режим: in
Тип: str
По умолчанию: required

Пароль для основного логина.
Применяется для Digest-авторизации совместно с основным логином из поля 'login'.
Может содержать любые символы.

Поле: credentials
Режим: in
Тип: array<object>
По умолчанию: '[]'

Дополнительные аутентификационные данные.
Могут использоваться в целях:

  • разделения логического имени (username) и логина, используемого для авторизации,

  • разделения авторизационных данных для разных устройств, регистрирующихся под одной учетной записью.

Применяется исключительно для Digest-авторизации.
Задается в форме списка объектов:

[
  {
    "login": ...
    "pwd": ...
  },  ...
]

К значениям применяются требования, аналогичные полям 'login' и 'pwd' основной сущности.

Для использования специфических авторизационных данных при настройке устройства следует вносить и основное логическое имя в соответствующее поле, и специфические логин и пароль в поля для авторизационных данных.

Поле: name
Режим: in
Тип: str
По умолчанию: required

Отображаемое имя. Подставляется в username URI заголовка From в SIP-запросах.
Может содержать символы A-Za-z0-9_-.~!. Длина не должна быть более 1000 символов.

Допускается указание модификатора DisplayName,
подробнее.

Поле: phonenumber
Режим: in
Тип: str
По умолчанию: empty

Телефонный номер абонента внутри домена.
Может содержать символы 0-9, * и # в количестве не более 100.

Если телефонный номер пуст, то на учетную запись позвонить нельзя никаким образом.
При этом исходящий вызов с устройства совершить возможно, если фильтрами правил маршрутизации не перекрыта возможность совершения вызова абонентом с пустым номером.

Учетные записи с пустыми номерами могут использоваться для Хот-Деска.
При логауте с помощью встроенного сервиса Хот-Деск учетной записи также присваивается пустой номер.

Поле: reg
Режим: in
Тип: intbool
По умолчанию: 1

Режим регистрации:
true – с регистрацией,
false – без регистрации, дополнительно требуется указание списка устройств в поле devices.

Поле: devices
Режим: in
Тип: array<object>
По умолчанию: '[]'

Список устройств, подключаемых без регистрации, и точек их подключения, подробнее.
Требуется заполнение только в случае reg = false, в этом случае значение должно содержать по крайней мере одно устройство.

Поле: iduser
Режим: in
Тип: uuid
По умолчанию: empty

Идентификатор пользователя системы. Один пользователь может иметь несколько учетных записей sipuser.

Связывание пользователя с учетной записью устройства может производиться как статически, так и в рамках абонентской функции Хот-Деска.

Поле: timezone
Режим: in
Тип: float | "default"
По умолчанию: "default"

Часовой пояс пользователя.
От -12 до 12, например 3.5, или "default" для применения часового пояса сервера.
Применяются при построении переадресации, построении маршрута звонка и т.д.

Поле: lic
Режим: in
Тип: object
По умолчанию: empty

Набор лицензий переданных из домена. Среди параметров ожидается количество допустимых устройств для регистрации, например {"devices":5}.

Поле: opts
Режим: in
Тип: object
Составное поле

Поле: opts.title
Режим: in
Тип: str
По умолчанию: empty

Произвольный заголовок

Поле: opts.comment
Режим: in
Тип: str
По умолчанию: empty

Произвольный комментарий

Поле: opts.ap_devices
Режим: in
Тип: array(obj)
По умолчанию: []

Подключаемые устройства для проведения autoprovision.
Является списочной альтернативой полям
* opts.ap_mac_address
* opts.ap_device_model
* ext.ap_blf
* ext.ap_override

Поля объекта в списке:
* mac - строка с MAC-адресом (12*HEX).
* device_model - строка с моделью устройства (например, "Yealink SIP-T21 E2").
* blf - список объектов, каждый из которых определяет один элемент подписки. Поля соответствуют шаблону модели "*.blf".
* override - список строк "key = value", которые должны заменить или дополнить шаблон (текстовый или xml).

Каждый элемент представляет собой отдельное устройство с уникальным MAC-адресом и дополнительными настройками для работы сервиса autoprovision.

Поле: opts.ap_mac_address
Режим: in
Тип: str
По умолчанию: str

MAC-адрес устройства для проведения autoprovision.
При поступлении TFTP или PNP запроса определяется модель устройства, ищется шаблон (masterdomain.settings.ap_options.masks), заполняется значениями из учетной записи на основе указанных в шаблоне путей, и возвращается устройству для проведения автонастройки.
Комбинация полей opts.ap_mac_address, opts.ap_device_model, ext.ap_blf, ext.ap_override используется для настройки одного конкретного устройства, имеющего указанный здесь же mac-адрес. Альтернативой является указание списочного поля opts.ap_devices.

Поле: opts.ap_device_model
Режим: in
Тип: str
По умолчанию: str

Модель устройства для определения шаблона autoprovision.
Применяется при поступлении TFTP запроса.
Комбинация полей opts.ap_mac_address, opts.ap_device_model, ext.ap_blf, ext.ap_override используется для настройки одного конкретного устройства, имеющего указанный здесь же mac-адрес. Альтернативой является указание списочного поля opts.ap_devices.

Поле: opts.calltimesec
Режим: in
Тип: int
По умолчанию: 30

Продолжительность вызова учетной записи в секундах при поступлении звонка на нее

Поле: opts.dlgtimesec
Режим: in
Тип: int
По умолчанию: 0

Максимальная продолжительность разговора в секундах. 0 – индивидуальное ограничение не установлено

Поле: opts.trunks
Режим: in
Тип: int
По умолчанию: -1

Максимальное количество одновременных звонков. Влияет на возможность осуществить вызов этой учетной записи при наличии других активных звонков.

  • -1 – ограничение не установлено,

  • 0 – входящие запрещены,

  • 1 – входящий разрешен только в случае незанятости учетной записи в другом разговоре,

  • 2, 3, и т.д. – входящий разрешен только в случае, если количество активных разговоров с участием учетной записи меньше указанного значения.

Поле: opts.minexpires
Режим: in
Тип: int
По умолчанию: 30

Минимально допустимое время регистрации

Поле: opts.maxexpires
Режим: in
Тип: int
По умолчанию: 3600

Максимально допустимое время регистрации

Поле: opts.modextin
Режим: in
Тип: str
По умолчанию: empty

Модификатор-вычислитель extension перед принятием вызова в обработку.
Применяется при принятии вызова от учетной записи.
Вычисляет extension инициатора вызова для прохождения дальнейшей маршрутизации и представления.
На модификацию подается значение username из заголовка Contact:, From: SIP-запроса, либо из поля phonenumber учетной записи, под которой авторизован входящий вызов.
Подробнее.

Поле: opts.modextout
Режим: in
Тип: str
По умолчанию: empty

Модификатор extension для исходящего звонка.
Применяется при отправке вызова на учетную запись в ходе применения правила маршрутизации с типом "insidepbx". Подключенное устройство рассматривается как АТС, за которой находится множество абонентов.
На модификацию подается значение, полученное как остаток от набранного инициатором номера после удаления из его начала номера вызываемой учетной записи SIP-пользователя, которая в свою очередь обнаруживается исходя из наидлиннейшего вхождению ее номера в набранный инициатором номер.
Подробнее.

Поле: opts.parallel
Режим: in
Тип: array<str | object>
По умолчанию: empty

Список номеров параллельного вызова.
Любой вызов на номер учетной записи приводит к одновременному вызову заданных параллельных номеров.
Любой - это прямой, групповой, переведенный, переадресованный, из сценария.
В случае если номер учетной записи используется в качестве параллельного в функциональной группе, то применение его параллельных номеров зависит от свойства каскадности функциональной группы.

Каждый номер может задаваться в виде объекта с полями number и calltimesec (опционально), либо строки с номером.
В случае, если таймаут вызова параллельного номера не задан, для него проставляется таймаут основной учетной записи вызываемого абонента.

Применяется при отправке вызова на учетную запись при условии, что не сработала абсолютная переадресация.
Если устройство не зарегистрировано, то одновременно с параллельными номерами будет также вызываться номер, установленный в качестве переадресации по причине отсутствия регистрации.

Допустимо в качестве параллельных указывать следующие виды номеров:
* внешние,* внутренние номера пользователей,* внутренние групповые номера,* внутренние номера за АТС,* сервисные номера типа ivr (IVR-сценарии), voicemail_send (размещение голосовой почты), hunt (хант-группы).
Другие виды номеров отфильтровываются.
Параллельный вызов IVR-сценария исключает применение опции record_ivr из конфигурационных настроек роли.
При необходимости параллельного вызова иной сервисной функции следует использовать переадресацию (в силу эквивалентности по причине моментального ответа всех прочих сервисных функций).

Каскадный режим при разворачивании параллельных номеров отключен.

При вызове параллельных номеров в CDR и Remote-Party проставляется информация об основной учетной записи. Также номер основной учетной записи применяется при расчете правил записи и стенографирования.

Поле: opts.redirect_allowed_masks
Режим: in
Тип: array<str>
По умолчанию: ["/default"]

Список масок номеров, разрешенных для установки в устройстве в качестве номера переадресации.
Если в устройстве настроена переадресация 3xx на неразрешенный номер - она не обрабатывается сервером. Информация попадает в лог-журнал.
Существуют специальная маска - "/default", указание которой влечет применение масок, настроенных в свойствах домена (одноименный параметр 'redirect_allowed_masks').

В качестве маски могут использоваться:

  • константы. Например, "414".

  • предустановленная маска "*" - любой номер, отрабатывается эффективно.

  • спец символы. Например "12XX", "8843*".

  • диапазоны. Например "/dia/1240+10".

  • регулярные выражения. Например "/reg/^(7|8)[0-8].*$".

Расчет большого количества регулярных выражений снижает общую производительность системы.

Поле: ext
Режим: inout
Тип: object
Составное поле

Позволяет расширять состав произвольными ключами и значениями

Поле: ext.ct
Режим: out
Тип: date
По умолчанию: generated

Время создания объекта

Поле: ext.lwt
Режим: out
Тип: date
По умолчанию: generated

Время последней модификации объекта

Поле: ext.ap_blf
Режим: in
Тип: array(object)
По умолчанию: generated

Параметры для подстановки в раздел BLF конфигурации автопровижена.
Комбинация полей opts.ap_mac_address, opts.ap_device_model, ext.ap_blf, ext.ap_override используется для настройки одного конкретного устройства, имеющего указанный здесь же mac-адрес. Альтернативой является указание списочного поля opts.ap_devices.

Пример:

[
  {
    "key": 1,
    "label": "asdf",
    "pickup": "**",
    "value": "ФыВа"
  },
  {
    "key": 2,
    "label": "qwer",
    "module": 2,
    "value": "ЙцУк"
  }
]

Поле: ext.ap_override
Режим: in
Тип: str
По умолчанию: generated

Строка с данными для переопределения.
Комбинация полей opts.ap_mac_address, opts.ap_device_model, ext.ap_blf, ext.ap_override используется для настройки одного конкретного устройства, имеющего указанный здесь же mac-адрес. Альтернативой является указание списочного поля opts.ap_devices.

Поддерживается разделитель строк. Каждая строка - ключ и переопределяемое значение:

"aaa.def = 3\naaa.asd = 4\naaa.qwe = 5\nbbb.zxc = 6"

Режимы работы модификаторов DisplayName

Table 2. Режимы работы модификаторов DisplayName
Режим Описание

Посимвольный

Исходное значение посимвольно с накоплением проходит через указанный модификатор.
Допускается применение следующих спец-символов и сочетаний:

  • {D} – подставить исходный DisplayName из входящего запроса.

  • {d} – то же в lowercase.

  • {U} – подставить исходный UserName из входящего запроса.

  • {u} – то же в lowercase.

  • {N} и {n} - подставить сформированный полный номер инициатора запроса (склеенные номера sipuser и extension).

  • {A} - подставлять displayname из учетной записи контакта адресной книги, найденного по полному номеру инициатора с extension. Если контакт не найден, то подставляется пустота. Реализовано по задаче #366.

  • {a} - то же в lowercase.

  • {E} – подставить пустоту.

  • любой другой символ захватывается в результат в соответствующую ему позицию.

Например,- значение: "123456"
- From username: "SIP011"
- AddressBook contact displayname: "Василий Иванов"
- модификатор: "a - {u} - {A}"
- результат: "a - sip011 - Василий Иванов".

Regex

К исходному значению применяется шаблон Pattern с опциями Opts, и обнаруженный(-ые) блок(-и) заменяется(-ются) на шаблон Replace.
Результат может снова быть подан на следующую операцию Regex-модификации, и так далее конечное число раз.

Общая структура значения regex-модификатора:
/reg/Pattern1/Replace1/Opts1 /reg/Pattern2/Replace2/Opts2 …​.

Опции могут быть опущены, либо содержать любую комбинацию из символов:

  • i – case-insensitive

  • g – global.

Например,- значение: "qwerty,qwerty"
- модификатор: "/reg/t/E/g /reg/qwer/a/"
- результат: "aEy,qwerEy".

При формировании шаблонов Pattern и Replace могут применяться все стандартные правила регулярных выражений, включая группы захвата, поиск назад, подстановку именованных групп и т.д.

Режимы работы модификаторов Extension

Table 3. Режимы работы модификаторов Extension
Режим Описание

Посимвольный

Исходное значение посимвольно с накоплением проходит через указанный модификатор.
Допускается применение следующих спец-символов и сочетаний:

  • ? – захватить текущий символ;

  • * – захватить все оставшиеся символы;

  • X – захватить текущий символ;

  • / в сочетании c ? или X – исключить текущий символ из результата, например /XXX/ исключает 3 текущих символа;

  • [ в сочетании с ] – включить в результат служебный символ, расположенный между скобками, например [X];

  • {U} – подставить исходный UserName из входящего запроса.

  • {u} – то же в lowercase.

  • {N} и {n} - подставить сформированный полный номер инициатора запроса (склеенные номера sipuser и extension).

  • {F} и {f} – включить в результат значение username из заголовка From: SIP-запроса INVITE;

  • {C} и {c} – включить в результат значение username из заголовка Contact: SIP-запроса INVITE;

  • {E} и {e} – включить в результат пустое значение;

  • любой другой символ захватывается в результат в соответствующую ему позицию.

Например,- значение: "123456"
- модификатор: "00/XXX/XXX"
- результат: "00456".

Regex

Идентично режиму "Regex"-модификатора DisplayName, приведенному выше

См. также

Логические роли

  • b2b проводит маршрутизацию и применение учетной записи для организации форков на связанные с ней устройства.