Компонент «Статус объекта»

«Статус объекта» — самый ёмкий из общих компонентов. Он даёт сценарию доступ к состояниям объектов системы на чтение и на запись: задач, пользователей, номеров, линий, направлений, конференций, сессий, контактов и самого сервера.

Зачем это нужно на практике Классический приём: до начала переключения определить статус объекта — пользователя, задачи, номера — и, не пытаясь переключать, сразу озвучить абоненту подходящий текст меню. Без этого абонент услышит сигнал ожидания, а потом всё равно вернётся в меню.

Свойства компонента

СвойствоОписание
ДействиеОпределить — записать выбранное состояние объекта в переменную.
Установить — изменить состояние объекта на результат вычисления аргумента.
Тип объектаЗадача, Пользователь, Номер, Линия, Направление, Конференция, Сессия, Контакт, Сервер. Перечень типов зависит от выбранного действия.
Ключ объектаЧем именно адресуется объект — см. таблицу ниже.
Функция / действиеСписок доступных состояний; зависит от действия и типа объекта.
Значение в переменнуюТолько для «Определить». Переменная, куда заносится результат.
ЗначениеТолько для «Установить». Аргумент, значение которого вычисляется для установки состояния.
Идентификатор в переменнуюТолько для действия «Создать». Переменная, куда заносится идентификатор созданного объекта.
ПереходКомпонент, на который передаётся управление.

Чем адресуется объект

ТипЧто можно указать в ключе
ЗадачаВыбор из списка задач системы или проекта. Либо строковый аргумент «Ключ задачи»: GUID вида xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, код задачи или название. Аргумент используется, только если задача не выбрана явно в списке.
ПользовательВыбор из списка либо строковый аргумент «Ключ пользователя»: GUID, имя или логин.
НомерАргумент с внутренним стандартным номером.
ЛинияАргумент: номер, код или GUID линии.
НаправлениеАргумент: код или GUID направления.
КонференцияАргумент: номер комнаты, GUID или код идентификатора.
СессияАргумент: Id цепочки коммутаций или сессия служебного сценария.
КонтактАргумент: телефон, электронная почта, ICQ и подобное — то, по чему контакт опознаётся.

Определение состояния

Задача

ФункцияЧто возвращает
Количество абонентов в очередиЧисло.
Наибольшее время ожидания среди абонентов очередиСм. примечание о форматах ниже.
Расчётное время ожидания в очередиОценка времени ожидания при гипотетическом размещении текущего звонка в очереди этой задачи. Приоритет звонка учитывается. В диалоговом и служебном сценариях понятия приоритета нет — оценка даётся для размещения в конец очереди.
Количество активных операторов задачиЧисло.
Количество свободных операторов задачиЧисло.
Активность задачи0 — неактивна, 1 — активна.
Доступность по расписанию0 — сейчас недоступна, 1 — доступна.
Проверка доступности входа−1 функция не выполнена, 0 вход разрешён, 1 время не подходит по расписанию, 2 время не подходит по периоду активности, 3 превышено максимальное число одновременно активных внешних линий, 4 задача не найдена, 5 несоответствие состояния (задача неактивна, нет операторов и т. д.), 6 ошибка при попытке входа.
Количество использованных линийЧисло.
Количество линий в разговореЧисло.
Количество линий в дозвонеЧисло.
Количество линий в ожидании оператораЧисло.
Как возвращается время ожидания Результат зависит от типа переменной-приёмника:
  • дата/время — значение отсчитывается от 01.01.0000;
  • строка — формат ЧЧ:мм:сс, причём ЧЧ при превышении 24 продолжает расти;
  • число — действительное значение: для наибольшего времени ожидания в минутах, для расчётного времени ожидания в секундах.

Пользователь

ФункцияЧто возвращает
Идентификатор, Имя, Логин пользователяСтроки.
Скилл-тэгиСтрока.
Идентификатор связанной линииЛиния, по которой пользователь совершает звонки.
Внутренний номерПерсональный номер, а при его отсутствии — групповой, в котором пользователь приоритетнее: вызывается первым или имеет наибольший приоритет. Если таких номеров несколько, выбирается наименьший.
ОтделНазвание отдела; пустая строка, если отдел не задан.
IP-адресАдрес, с которого запущено клиентское приложение или веб-клиент.
Статус0 не авторизован, 1 готов, 2 перерыв, 3 отключён (нет на месте), 5 занят, 6 зарезервирован, 7 без телефона.
Признак переадресации0 не установлена, 1 в статусе переадресации.
Признак перерыва0 нет, 1 в перерыве.
Присутствие в КЦ0 вне call-центра, 1 в call-центре.
Ручной режим КЦ0 не установлен, 1 в ручном режиме.
Свободное состояние0 нет, 1 да.
Количество абонентов в очередиЧисло.
Наибольшее время ожидания среди абонентов очередиСм. примечание о форматах выше.
Наличие привилегии в правахВ значении указывается код привилегии из таблицы A_UserRoles_Rights, столбец Code.
Наличие ролиВ значении указывается название или GUID роли; идентификатор есть в таблице A_UserRoles_Roles, столбец Id.

Номер

ФункцияЧто возвращает
Количество абонентов в очередиЧисло.
Наибольшее время ожидания среди абонентов очередиСм. примечание о форматах выше.
Наличие свободных абонентов0 нет, 1 есть.
Тип внутреннего номераСм. таблицу кодов ниже.
Идентификатор основного объектаПервый вызываемый объект или объект с наибольшим приоритетом — визуально он расположен выше в настройках номера.
Идентификатор основной линииПервая вызываемая внутренняя линия либо линия с наибольшим приоритетом.
Идентификатор основного пользователяПервый вызываемый пользователь либо пользователь с наибольшим приоритетом. Только для стандартных внутренних номеров с режимом вызова «Согласно заданному правилу»; для Hunt-номеров смысла не имеет.

Коды типов внутреннего номера

КодТип
−1Номер не найден
1Стандартный номер
11Hunt-номер в порядке приоритета
12Hunt-номер с поочерёдным режимом
13Hunt-номер со случайным выбором
14Hunt-номер с выбором «Наиболее свободный»
15Hunt-номер с выбором «Наименее занятый»
16Hunt-номер с выбором «Наименее занятый по этому номеру»
102Служебный номер Flash
103Служебный номер «Выход в город»
104Служебный номер «Выход в АТС»
105Служебный номер «Перехват»
110Служебный номер «SIP Hotline»
112Служебный номер «Управление конференцией»
201Быстрый номер
301Запуск IVR
401Экстренный номер
501Стандартный номер на другом сервере — при межсерверном взаимодействии

Линия

ФункцияЧто возвращает
Идентификатор, Номер, Код линииСтроки.
Внутренний номерПерсональный номер линии или логически связанного с ней пользователя. Если персональных нет — групповой, в котором линия или связанный пользователь наиболее приоритетен. Из двух одинаковых номеров приоритет у номера на логически связанного пользователя с наименьшим номером.
CallerId, CalledIdСтроки.
Идентификатор цепочки коммутацийСтрока.
Идентификатор связанного пользователяПользователь, логически связанный с линией.
IP-адресАдрес устройства или шлюза.
СостояниеСм. таблицу кодов ниже.
Время активностиСекунд с момента поднятия трубки.
Название абонента, Описание абонентаЗначения, установленные ранее в сценарии.
Текущая позиция в очередиЧисло.
Расчётное время ожидания в секундахЧисло.
Текущий приоритет в очередиЧисло.
Контент линии (XML)Только для внешних линий. Полная информация о всех коммутациях на линии.
Контент цепочки (XML), Контент цепочки (JSON)Полная информация о всех коммутациях по цепочке.
Поле контента линииТолько для внешних линий. Поле custominfo в контенте линии.
Поле контента цепочки (заголовок)Поле custom в заголовке контента цепочки.
Поле контента цепочки (коммутация)Поле custom текущей коммутации в контенте цепочки.
Время без звука, секИнтервал, в течение которого с линии не приходят RTP-пакеты.
Идентификатор и Номер скоммутированной линии либо конференцииСтроки.
Принадлежность к направлениюВ значении указывается код направления. −1 направления не существует, 0 не принадлежит, 1 принадлежит.
Заголовок из входящего SIP INVITE/OKВ значении указывается название заголовка, например From. Если значение не указано — возвращается полный текст SIP-сообщения.

Коды состояния линии

КодСостояниеКодСостояние
1Не подключена128Флеш
2Выключена256Не используется
4Готова512Занято
8Трубка поднята1024Неопределено
16Входящий звонок2048Зарезервирована
32Скоммутирована4096Зарезервирована задачей
64Ожидание

Направление

ФункцияЧто возвращает
Существование0 не существует, 1 существует.
ИдентификаторGUID. Если направления нет — 00000000-0000-0000-0000-000000000000.
Код, НазваниеСтроки.
Включено0 не активно, 1 активно.
Выход во внешнюю сеть0 есть, 1 нет.
Количество линийВсего, свободных, занятых, занятых исходящими, занятых входящими — пять отдельных функций.
Проверить принадлежность линииВ значении указывается GUID, код или номер линии. 0 не принадлежит, 1 принадлежит.
Найти свободную линию (без резервирования)GUID найденной линии.

Конференция

ФункцияЧто возвращает
Существование0 не существует, 1 существует.
Время активностиВремя существования конференции в секундах.
Идентификатор, Код идентификатора, Номер комнатыGUID, уникальный числовой код и номер комнаты.
Название, ОписаниеСтроки.
Идентификатор управляющего, Идентификатор создателяGUID.
Количество всех участников, Количество активных участниковЧисла.
Тип доступа11 открытое совещание, 12 закрытое с возможностью подать заявку на вход, 13 закрытое, вход только по приглашениям.
Активность воспроизведенияИдёт ли сейчас воспроизведение музыкального файла в конференцию. 0 нет, 1 да.

Сессия — цепочка коммутаций

ФункцияЧто возвращает
Существование0 не существует, 1 существует.
Количество активных линийЧисло; если линий нет — −1.
Количество активных сценариевОбщее число сценариев — IVR, служебных и диалоговых, — запущенных под этой сессией.
Наличие активного обработчика задачиОбрабатывается ли звонок по задаче call-центра. 0 нет, 1 есть.
Контент (XML), Контент (JSON)Полная информация о всех коммутациях по цепочке.
Поле контента (заголовок), Поле контента (коммутация)Поля custom в контенте цепочки.

Контакт

ФункцияЧто возвращает
Проверить группуВ поле «Группа» указывается название группы контактов. 0 не входит, 1 входит.

Сервер

ФункцияЧто возвращает
Имя хоста сервераСтрока.
Локальный IP-адресОдин из локальных адресов хоста.
Все локальные IP-адресаПеречень через точку с запятой.
Внешний IP-адрес сервера (STUN-запрос)Параметром можно указать конкретный STUN-сервер.
Значение конфигурацииПараметром указывается ключ конфигурации.
Рабочее время по графику офисаПараметром можно передать дату/время. 0 нерабочее время, 1 рабочее.
Объём виртуальной памяти службы, МБЧисло.
Объём виртуальной памяти процесса HAL, МБЧисло.
Количество подключённых пользователейЧисло.
Количество внешних линий, Количество внутренних линийЧисла.
Регистрационный номерСтрока.
Количество пользователей, внешних и внутренних линий в лицензииТри отдельные функции.
Дата следующего подтверждения лицензииДата/время.
Мониторинг лицензии из сценария Последние функции этой группы позволяют собрать служебный сценарий, который следит за приближением даты подтверждения лицензии и за тем, сколько из лицензированных пользователей и линий фактически задействовано.

Установка состояния

Задача

ДействиеЗначение
Активность1 активировать, 0 деактивировать.
Очистить оперативную статистику—
Синхронизировать таблицу абонентов с БД—
Привязать к звонку оператораКлюч пользователя либо JSON-строка с ключами user и/или idinlist — идентификатором абонента в прикреплённой таблице. Например operatorMasha или {"user": "operatorMasha", "idinlist": 2}.
Добавить оператора, Удалить оператораКлюч оператора: GUID, имя или логин.
Изменить количество линийОграничение одновременного количества звонков по задаче. −1 снимает ограничение.

Пользователь

ДействиеЗначение
Сохранить скриншотОтносительный (от папки \oktell\server) или абсолютный путь к файлу: screens\1.png, C:\screens\2.png. Размер 640×480 либо переопределённый в конфигурационном файле сервера. Таймаут исполнения — 10 секунд.
Привязать текущий звонок к задачеКлюч задачи либо JSON-строка с ключами task и/или idinlist. Например 54C3F5F4-BD04-4EE7-9209-B3C4F2460643 или {"task": "54C3F5F4-BD04-4EE7-9209-B3C4F2460643", "idinlist": 2}.
Изменить статус1 готов, 2 перерыв, 3 отключён (нет на месте), 5 занят.
Изменить признак занятости0 освободить, 1 занять.
Изменить признак переадресации0 выключить, 1 включить.
Ввести / вывести в перерыв0 вывести, 1 ввести. Причину перерыва можно передать комбинированной строкой [флаг];[код перерыва];[описание], например 1;-1;Обед.
Ввести / вывести в Call-центр0 вывести, 1 ввести.
Ввести / вывести в ручной режим Call-центра0 вывести, 1 ввести.

Линия

ДействиеЧто делает
РазрывВыполняется безусловно: разрыв и отсоединение линии.
Мягкий сбросРазрыв с переключением в сценарий вместо отбоя.
Выход из задачи при следующем переключении1 применить, 0 отменить. Следующее переключение абонента на любой объект, отличный от оператора, произойдёт с выходом из задачи. То же самое даёт режим «Выход из задачи при переключении на IVR» в настройках задачи.
Название абонентаОтображается в журналах статистики, во всплывающем окне при входящем звонке и в разделе программного телефона.
Описание абонентаОтображается во всплывающем окне при входящем звонке и в разделе программного телефона.
Приоритет очередиПрименяется до входа абонента в очередь. См. предупреждение ниже.
Поле контента линииТолько для внешних линий. Записывает значение в поле custominfo контента линии.
Поле контента цепочки (заголовок), (коммутация)Записывает значение в поля custom контента цепочки.
Разрешить DTMF-управлениеТолько для внешних линий. 1 разрешить, 0 запретить. Разрешает на время текущей сессии команды FLASH и управление конференциями через DTMF.
Перерегистрировать SIP-потокТолько для линий, по которым регистрация идёт от Октелл — на стороне шлюза.
DTMF в линиюОтправляет в линию DTMF-сигнал, указанный в значении.
Воспроизвести файл в линиюПроигрывает MP3-файл во время разговора. См. примечание ниже.
Воспроизвести файл в коммутацию/конференциюПроигрывает MP3-файл всем участникам разговора. В значении — уровень громкости от 0 (громко) до 8 (тихо).
Приоритет очереди меняется только снаружи очереди Установить его нужно до входа абонента в очередь — можно даже заранее, когда абонента на линии ещё нет. Чтобы изменить приоритет уже стоящему в очереди, придётся вывести его и ввести повторно. После завершения коммутации приоритет сбрасывается в значение по умолчанию.
Кому слышен воспроизводимый файл Если абонент соединён с IVR-сценарием, файл не воспроизводится вовсе — ни в том, ни в другом режиме.
При воспроизведении «в линию»: если абонент в коммутации — файл слышит только он; если он в конференции — на время воспроизведения он перестаёт слышать остальных.
При воспроизведении «в коммутацию/конференцию» файл слышат все участники.

Конференция

ДействиеЧто делает
Установить название, Установить описаниеМеняет соответствующее поле.
Обновить информацию у клиентовВо всех клиентских приложениях обновляются название и описание конференции.
Воспроизвести файлПроигрывает MP3-файл; слышат все участники конференции.
Завершить конференцию—

Сессия

ДействиеЧто делает
Поле контента (заголовок), (коммутация)Записывает значение в поля custom контента цепочки коммутаций.
Воспроизвести файл в коммутацию/конференциюMP3-файл для всех участников разговора; в значении — громкость от 0 (громко) до 8 (тихо). Не воспроизводится, если абонент соединён с IVR.

Сервер

Эти действия затрагивают работу всей системы Часть команд ниже выполняется безусловно — без ожидания корректного завершения коммутаций и служебных сценариев. Прежде чем ставить их в сценарий, который запускается по расписанию или по событию, убедитесь, что момент срабатывания заведомо приходится на время без нагрузки.
ДействиеЧто делает
Обновить список задачСинхронизирует менеджер задач с базой: обновляет список задач и их свойства.
Обновить общие настройкиПерезагружает из базы текущие общие настройки.
Перерегистрировать все SIP-потоки—
Изменить карту сети—
Перезагрузить сервер состоянийБезусловно. Аналог нажатия «Применить» в любом модуле администрирования: сервер состояний инициализируется по данным базы.
Перезагрузить аппаратный модульБезусловно. Переинициализация аппаратной подсистемы с завершением всех коммутаций и конференций. Если аппаратный модуль работает отдельным процессом, процесс выгружается и запускается заново автоматически.
Перезагрузить службу сервераБезусловно и сразу, без ожидания завершения коммутаций и служебных сценариев.
Перезагрузить серверную станциюБезусловно. Команда операционной системе на полное завершение всех процессов с последующей перезагрузкой.
Сборка мусора .NET, Анализ памяти .NETСлужебные операции с памятью.
Обновить лицензионный сертификат—
Добавить в бан-лист SIPСервер перестаёт принимать любые SIP-сообщения с указанного адреса или с указанным user-agent. В значении — IP-адрес, например 3.14.15.92, либо user-agent, например angry-scanner. Если включено логирование сетевых атак, в trn-лог пишется «banned».
Удалить из бан-листа SIPВозвращает приём SIP-запросов с указанного адреса или user-agent.
Добавить в бан-лист App, WS, HTTPСервер перестаёт принимать веб-запросы с указанного IP-адреса.
Удалить из бан-листа App, WS, HTTPВозвращает приём веб-запросов с указанного адреса.
Автоматическая защита от перебора Пара «Добавить в бан-лист SIP» и «Удалить из бан-листа SIP» позволяет собрать служебный сценарий, который сам блокирует источник подозрительных SIP-запросов и снимает блокировку по истечении срока — без участия администратора.