<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.oktell.ru/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://wiki.oktell.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Oktell+Support</id>
		<title>Oktell - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.oktell.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Oktell+Support"/>
		<link rel="alternate" type="text/html" href="%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Oktell_Support"/>
		<updated>2026-06-03T14:12:34Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.23.1</generator>

	<entry>
		<id>%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8</id>
		<title>Функции</title>
		<link rel="alternate" type="text/html" href="%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8"/>
				<updated>2026-04-16T13:42:33Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;code&amp;gt;[[Техническая документация]] / [[Call-центр]] или [[Администрирование]] / [[Сценарии]] / [[Функции]] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Встроенная функция сценария осуществляет доступ к некоторым данным в момент выполнения сценария обработчиком.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Среди функций можно выделить несколько типов по направлению их действия:&lt;br /&gt;
&lt;br /&gt;
* Оперирующие конкретным звонком и обслуживающей линией; &lt;br /&gt;
* Временные; &lt;br /&gt;
* Общие серверные (определяющие некоторые состояния системы); &lt;br /&gt;
* Специальные функции конкретного типа сценария. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Для задания функции сценария служит соответствующая вкладка окна [[Аргументы|Аргумент]]. Значение функции вычисляется в момент обработки сценария  и подставляется в качестве аргумента текущего выполняемого объекта (свойства объекта) сценария.&lt;br /&gt;
&lt;br /&gt;
[[Файл:cl_cc_scra_f1_4.png|center]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Список встроенных функций сценариев.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В столбце типов указывается при редактировании каких типов сценариев доступна та или иная функция (IVR, Д-диалоговый, С-служебный)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Функция&lt;br /&gt;
!Тип возвращ. значения&lt;br /&gt;
!Типы сценариев&lt;br /&gt;
(IVR, Д, С)&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Id сессии сценария&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Текущий уникальный код сессии сценария (строковое представление GUID), в соответствии с которым осуществляется доступ к хранилищу глобальных переменных, формируются цепочки коммутаций при дозвоне.&lt;br /&gt;
|-&lt;br /&gt;
|Текущая дата&lt;br /&gt;
|Дата/время&lt;br /&gt;
|Все&lt;br /&gt;
|Текущая дата.&lt;br /&gt;
|-&lt;br /&gt;
|Текущий год&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Текущий год.&lt;br /&gt;
|-&lt;br /&gt;
|Текущий месяц&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Текущий месяц.&lt;br /&gt;
|-&lt;br /&gt;
|Текущий день&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Текущий день.&lt;br /&gt;
|-&lt;br /&gt;
|Текущий день недели&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Текущий день недели (1-7).&lt;br /&gt;
|-&lt;br /&gt;
|Текущее время&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Текущее время.&lt;br /&gt;
|-&lt;br /&gt;
|Текущий час&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Текущий час.&lt;br /&gt;
|-&lt;br /&gt;
|Текущая минута&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Текущая минута.&lt;br /&gt;
|-&lt;br /&gt;
|Текущая секунда&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Текущая секунда.&lt;br /&gt;
|-&lt;br /&gt;
|Номер абонента (CallerId)&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|Для внешних линий - определитель номера абонента (если не определен – строка «Номер не определен»).&lt;br /&gt;
Для внутренних линий (только в IVR) - номер пользователя, который обслуживается в сценарии. В качестве номера возвращается строка, начинающаяся с символа «U» и соответствующая прямому сервисному внутреннему номеру, назначенному на пользователя. Такие номера недоступны для набора непосредственно с телефона из-за спец.символов и используются только для служебных целей. Этот номер может быть подставлен в качестве аргумента в компоненты сценария, имеющие свойство «Внутренний номер получателя» (Уведомление, Голосовая почта и др.).&lt;br /&gt;
|-&lt;br /&gt;
|Набранный (внешний) номер (CalledId)&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|Номер, по которому дозвонился абонент (актуально для потоков Е1). Если номер не определился – подставляется значение из свойства внешней линии.&lt;br /&gt;
Для внутренних линий (только в IVR) - номер, по которому был осуществлен вход в текущий сценарий из АТС. При звонке с IP-телефона: если номер дозвона в АТС в начальных символах содержит внутренний номер для входа в сценарий, то в сценарии функция вернет всю последовательность. Например: номер сценария 25, на IP телефоне набрали 2511 CALL =&amp;gt; функция вернет 2511.&lt;br /&gt;
|-&lt;br /&gt;
|XML-INFO абонента&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|Строка, сформированная внешним приложением, и переданная вместе со звонком из собственного интеграционного модуля SipClient (подробнее в руководстве по интеграции, раздел «Звонок разработчику»). Может быть подвергнута разбору в сценарии и использована для проведения произвольной маршрутизации вызова. Вызов поступает на каналы шлюзов с типом регистрации [[Свойства компонентов#IP шлюз|Вхощящие из COM-клиента]].&lt;br /&gt;
|-&lt;br /&gt;
|Guid-идентификатор пользователя&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR&lt;br /&gt;
|Строка, содержащая идентификатор пользователя, который обслуживается в сценарии.&lt;br /&gt;
|-&lt;br /&gt;
|Имя пользователя&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR&lt;br /&gt;
|Используется для внутренних линий всех типов, которые связаны с пользователем. Для остальных возвращает пустую строку.&lt;br /&gt;
Имя обслуживаемого в сценарии пользователя.&lt;br /&gt;
|-&lt;br /&gt;
|Номер пользователя внутри АТС&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR&lt;br /&gt;
|Используется для внутренних линий всех типов. Для внешних возвращает пустую строку.&lt;br /&gt;
Определяет внутренний стандартный номер, по которому можно дозвониться до обслуживаемой линии (и/или пользователя) - далее обслуживаемые объекты. &lt;br /&gt;
Если во внутреннем номерном плане содержатся несколько номеров со ссылками на обслуживаемые объекты, то будет выбран негрупповой - тот, в списке ссылок которого присутствует единственный объект - обслуживаемый (линия или пользователь). Если негрупповой номер отсутствует, то преимущественно будет выбран групповой номер с наименьшим значением. ''(Из двух групповых номеров 203 и 405, будет выбран 203)'' &lt;br /&gt;
|-&lt;br /&gt;
|Тип линии&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|Число, определяющее типа линии&lt;br /&gt;
* 1 - Внешняя аналоговая &lt;br /&gt;
* 2 - Внутренняя аналоговая &lt;br /&gt;
* 3 - VoIP канал &lt;br /&gt;
* 4 - Внешняя GSM &lt;br /&gt;
* 5 - IP &lt;br /&gt;
* 6 - Канал потока Е1&lt;br /&gt;
* 7 - Внешняя SIP&lt;br /&gt;
* 8 - Внутренний транк на шлюз SIP&lt;br /&gt;
* 11 - Внешний SIP канал из потока шлюза с динамической регистрацией&lt;br /&gt;
* 13 - Транк для межсерверного взаимодействия&lt;br /&gt;
|-&lt;br /&gt;
|Guid-идентификатор линии&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Строка с guid-идентификтором обслуживаемой сценарием линии.&lt;br /&gt;
В служебном сценарии функция возвращает непустое значение только в некоторых режимах, например при использовании сценария в качестве [[Параметры АТС|преобразователя callerid]] на входящих вызовах.&lt;br /&gt;
|-&lt;br /&gt;
|Номер линии&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Строка, определяющая номер линии по классификации АТС Oktell (11001, 15049 и т.п.), обслуживаемой текущим сценарием. Список линий и их номеров доступен в модуле [[Линии|Администрирование.Линии]].&lt;br /&gt;
В служебном сценарии функция возвращает непустое значение только в некоторых режимах, например при использовании сценария в качестве [[Параметры АТС|преобразователя callerid]] на входящих вызовах.&lt;br /&gt;
|-&lt;br /&gt;
|Код линии&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Строка с кодом линии, назначенным в модуле [[Линии|Администрирование.Линии]].&lt;br /&gt;
В служебном сценарии функция возвращает непустое значение только в некоторых режимах, например при использовании сценария в качестве [[Параметры АТС|преобразователя callerid]] на входящих вызовах.&lt;br /&gt;
|- &lt;br /&gt;
|Код направления&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR&lt;br /&gt;
|Строка, определяющая код первого найденного активного [[Линии#Направления|направления]], в котором присутствует обслуживаемая IVR-сценарием линия. В случае, если линии назначены в несколько направлений и нужно уточнить принадлежность линии к определенному, лучше воспользоваться компонентом [[Общие_компоненты_сценариев#Статус объекта|«Статус объекта»]].&lt;br /&gt;
|-&lt;br /&gt;
|Номер линии, ожидающей во Flash-буфере&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR&lt;br /&gt;
|В случае, если у обслуживаемой текущим сценарием линии во Flash буфере находится в ожидании некоторый абонент, то функция возвращает строку с номером ожидающей линии по классификации АТС Oktell. В противном случае возвращается пустая строка.&lt;br /&gt;
|-&lt;br /&gt;
|Номер линии, осуществившей переключение&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR&lt;br /&gt;
|В случае, если запущенный сценарий был переведен другой линией в результате использования Flash-удержания, возвращается строка с ее номером по классификации АТС Oktell. &lt;br /&gt;
В остальных случаях возвращается пустая строка.&lt;br /&gt;
|- &lt;br /&gt;
|Название активного фонового IVR-сценария медиа-взаимодействия&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR&lt;br /&gt;
|В случае, если в настоящее время активен [[Фоновый IVR-сценарий медиа-взаимодействия|фоновый сценарий медиа-взаимодействия]] с текущей обслуживаемой линий, возвращает его название. Иначе возвращается пустая строка.&lt;br /&gt;
|-&lt;br /&gt;
|Время в текущем сценарии&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Время в секундах, прошедшее после запуска непосредственно текущего сценария.&lt;br /&gt;
|-&lt;br /&gt;
|Время в обработчике сценариев&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Время в секундах, прошедшее после запуска текущей сессии сценариев.&lt;br /&gt;
|-&lt;br /&gt;
|Название текущего сценария&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Название текущего выполняемого сценария&lt;br /&gt;
|-&lt;br /&gt;
|Тип соединения&lt;br /&gt;
|Число&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|&lt;br /&gt;
* 1–Звонок с внутренней линии на внешнюю (Только диалоговый)&lt;br /&gt;
* 2–Звонок с внутренней линии в IVR&lt;br /&gt;
* 4–Звонок с внешней линии в IVR&lt;br /&gt;
* 5–Звонок с внешней линии на внутреннюю (Только диалоговый)&lt;br /&gt;
* 7–Звонок из IVR на внешнюю линию (из задачи)&lt;br /&gt;
* 8–Звонок из IVR на внутреннюю линию (из задачи)&lt;br /&gt;
|- &lt;br /&gt;
|Количество свободных внешних линий&lt;br /&gt;
|Число&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|Число свободных внешних линий, находящихся в активном состоянии.&lt;br /&gt;
|-&lt;br /&gt;
|Количество абонентов на набранном номере&lt;br /&gt;
|Число&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|Число абонентов, дозвонившихся на тот же номер, что и текущий абонент. Используется для обрубания вызовов по конкретным номерам при превышении лимита допустимого количества подключений.&lt;br /&gt;
|- &lt;br /&gt;
|Количество зарегистрированных операторов&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Число операторов, находящихся в call-центре онлайн (в свободном и занятом режимах, исключая перерывы).&lt;br /&gt;
|-&lt;br /&gt;
|Количество свободных операторов&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Число операторов, находящихся в call-центре в свободном состоянии, готовых обработать вызов незамедлительно.&lt;br /&gt;
|- &lt;br /&gt;
|Случайное число&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Случайное число от 0 до 999999 (равномерное распределение).&lt;br /&gt;
|-&lt;br /&gt;
|Id оператора&lt;br /&gt;
|Строка&lt;br /&gt;
|Д&lt;br /&gt;
|Идентификатор текущего оператора в виде &lt;br /&gt;
«00000000-0000-0000-0000-000000000000».&lt;br /&gt;
Необходимо помнить, что в ходе обработки сценария диалога операторы могут переключаться.&lt;br /&gt;
|- &lt;br /&gt;
|Имя оператора&lt;br /&gt;
|Строка&lt;br /&gt;
|Д&lt;br /&gt;
|Имя текущего оператора.&lt;br /&gt;
|-&lt;br /&gt;
|Внутренний номер оператора (Uguid)&lt;br /&gt;
|Строка&lt;br /&gt;
|Д&lt;br /&gt;
|Номер оператора, обслуживающего текущий звонок. Кодовое представление номера. Необходим для компонентов «Уведомление», «Определение статуса»,  и других, в которых требуется указание номера.&lt;br /&gt;
|-&lt;br /&gt;
|Хост оператора&lt;br /&gt;
|Строка&lt;br /&gt;
|Д&lt;br /&gt;
|Имя компьютера оператора, обслуживающего текущий звонок. &lt;br /&gt;
|-&lt;br /&gt;
|Id проекта&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Идентификатор проекта текущей задачи, в ходе обработки которой был запущен сценарий.&lt;br /&gt;
|-&lt;br /&gt;
|Название проекта&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Название проекта текущей задачи, в ходе обработки которой был запущен сценарий.&lt;br /&gt;
|-&lt;br /&gt;
|Id задачи&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Идентификатор текущей задачи, в ходе обработки которой был запущен сценарий.&lt;br /&gt;
|-&lt;br /&gt;
|Код задачи&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Код текущей задачи, в ходе обработки которой был запущен сценарий.&lt;br /&gt;
|-&lt;br /&gt;
|Название задачи&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Название текущей задачи, в ходе обработки которой был запущен сценарий.&lt;br /&gt;
|-&lt;br /&gt;
|Параметр задачи&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Параметр запуска сценария, переданный из задачи, куда попал в свое время в момент ее создания из компонента «Задание на звонок».&lt;br /&gt;
|-&lt;br /&gt;
|Id абонента в списке&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Идентификатор абонента в прикрепленной таблице абонентов. &lt;br /&gt;
|-&lt;br /&gt;
|Id коммутации&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|Уникальный идентификатор коммутации.&lt;br /&gt;
|-&lt;br /&gt;
|Id цепочки коммутаций&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|Уникальный идентификатор звонка (сессии) внутри АТС Oktell.&lt;br /&gt;
|-&lt;br /&gt;
|Id sip-сессии&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR&lt;br /&gt;
|По умолчанию уникальный идентификатор sip-сессии из поля «Call-ID». &lt;br /&gt;
|-&lt;br /&gt;
|КС: идентификатор&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|При запуске служебного сценария для обработки контрольного события Guid-идентификатор контрольного события в строковом представлении.&lt;br /&gt;
|- &lt;br /&gt;
|КС: название&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|При запуске служебного сценария для обработки контрольного события название контрольного события.&lt;br /&gt;
|-&lt;br /&gt;
|КС: идентификатор задачи&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|При запуске служебного сценария для обработки контрольного события Guid-идентификатор задачи, в которой событие обнаружено, в строковом представлении.&lt;br /&gt;
|-&lt;br /&gt;
|КС: идентификатор оператора&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|При запуске служебного сценария для обработки контрольного события Guid-идентификатор оператора, совершившего контрольное событие, в строковом представлении&lt;br /&gt;
|- &lt;br /&gt;
|КС: показатель&lt;br /&gt;
|Число&lt;br /&gt;
|С&lt;br /&gt;
|При запуске служебного сценария для обработки контрольного события числовой показатель соответствующего события.&lt;br /&gt;
|-&lt;br /&gt;
|КС: описание&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|При запуске служебного сценария для обработки контрольного события дополнительное текстовое поле с информацией о деталях события.&lt;br /&gt;
|-&lt;br /&gt;
|Инициатор запуска. Код типа&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Определяет код модуля-иницатора запуска служебного сценария.&lt;br /&gt;
* 10 - Контрольное событие. &lt;br /&gt;
* 11 - Дозвон из задачи на внешний номер. &lt;br /&gt;
* 12 - Автодозвон на внешний номер. &lt;br /&gt;
* 13 - Строковое преобразование. &lt;br /&gt;
* 14 - Запуск по инициативе клиентского приложения (из модуля администрирования, из плагина, либо из внешнего интегрированного приложения). &lt;br /&gt;
* 15 - Набор быстрого номера. &lt;br /&gt;
* 16 - Набор экстренного номера. &lt;br /&gt;
* 17 - Набор внутреннего номера при приглашении в конференцию. &lt;br /&gt;
* 18 - Набор внутреннего номера из автодозвона. &lt;br /&gt;
* 19 - Прерывание вызова внутреннего номера в конференции. &lt;br /&gt;
* 20 - Обработка завершения конференции. &lt;br /&gt;
* 21 - Поиск абонента для голосовой задачи в режиме работы с таблицей абонентов через сценарий. &lt;br /&gt;
* 22 - Обработка завершения звонка/попытки звонка в голосовой задаче. &lt;br /&gt;
* 23 - Набор внешнего номера из конференции. &lt;br /&gt;
* 24 - Набор внешнего номера, указанного в стандартном внутреннем. &lt;br /&gt;
* 25 - Обработка завершения сессии внешнего канала (обработка контента линии по общему сценарию АТС). &lt;br /&gt;
* 26 - Обработка завершения сессии внешнего канала (обработка контента линии по сценарию задачи).&lt;br /&gt;
* 27 - Обработка веб-запроса к серверу на запуск сценария.&lt;br /&gt;
* 28 - Определение абонента при входящем вызове.&lt;br /&gt;
* 29 - Отправка SMS.&lt;br /&gt;
* 30 - Отправка E-mail.&lt;br /&gt;
|- &lt;br /&gt;
|Инициатор дозвона. Тип&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Определяет название модуля-инициатора запуска служебного сценария в некоторых режимах.&lt;br /&gt;
* «КС» - контрольное событие. &lt;br /&gt;
* «Задача» - сценарий запущен как набор номера в задаче.  &lt;br /&gt;
* «АДЗ» - сценарий запущен как набор номера в автодозвоне. &lt;br /&gt;
* «Быстрый» - сценарий запущен как набор быстрого/внешнего номера. &lt;br /&gt;
* «Экстренный» - сценарий запущен как набор экстренного номера. &lt;br /&gt;
* «Внутренний из конференции» - сценарий запущен как набор внутреннего номера из конференции. &lt;br /&gt;
* «Внутренний из АДЗ» - сценарий запущен как набор внутреннего номера из АДЗ. &lt;br /&gt;
В других случаях возвращается пустая строка.&lt;br /&gt;
|- &lt;br /&gt;
|Инициатор дозвона. Идентификатор (задача/пользователь) &lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Для вышеприведенных типов запуска служебного сценария возвращает Guid-идентификатор в строковом представлении соответственно контрольного события, задачи, пользователя, запустившего автодозвон. В других случаях возвращается пустая строка.&lt;br /&gt;
|-&lt;br /&gt;
|Инициатор дозвона. Имя (задача/пользователь)&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Для вышеприведенных типов запуска служебного сценария возвращает название соответственно контрольного события, задачи, пользователя, запустившего автодозвон. В других случаях возвращается пустая строка.&lt;br /&gt;
|-&lt;br /&gt;
|Инициатор дозвона. Внутренний номер (пользователь)&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Для режима запуска служебного сценария в качестве набора номера в режиме автодозвона возвращает внутренний номер пользователя, инициировавшего автодозвон. В других случаях возвращается пустая строка.&lt;br /&gt;
|-&lt;br /&gt;
|Конференция. Идентификатор (Guid)&lt;br /&gt;
|Строка&lt;br /&gt;
|C&lt;br /&gt;
|Задано при запуске сценариев, связанных с конференцией (набор номера, отмена, обработка завершения). Строковое представление GUID-идентификатора связанной конференции.&lt;br /&gt;
|-&lt;br /&gt;
|Конференция. Код идентификатора (Int32)&lt;br /&gt;
|Число&lt;br /&gt;
|C&lt;br /&gt;
|Задано при запуске сценариев, связанных с конференцией (набор номера, отмена, обработка завершения). Число, являющееся довольно уникальной функцией от GUID-идентификатора связанной конференции. Может быть использовано для идентификации конференции при входе из IVR-сценария.&lt;br /&gt;
|-&lt;br /&gt;
|Конференция. Номер комнаты&lt;br /&gt;
|Число&lt;br /&gt;
|C&lt;br /&gt;
|Задано при запуске сценариев, связанных с конференцией (набор номера, отмена, обработка завершения). Номер комнаты связанной конференции.&lt;br /&gt;
|-&lt;br /&gt;
|Конференция. Идентификатор участника (Guid)&lt;br /&gt;
|Строка&lt;br /&gt;
|C&lt;br /&gt;
|Задано при запуске сценариев, связанных с конференцией (набор номера, отмена набора номера). GUID-идентификатор связанного участника связанной конференции. Применяется при организации внешней очереди для привязки звонка к конкретному участнику конференции, находящемуся в состоянии ожидания ответа.&lt;br /&gt;
|-&lt;br /&gt;
|Конференция. Код идентификатора участника (Int32)&lt;br /&gt;
|Число&lt;br /&gt;
|C&lt;br /&gt;
|Задано при запуске сценариев, связанных с конференцией (набор номера, отмена набора номера). Число, являющееся довольно уникальной функцией от GUID-идентификатора связанного участника связанной конференции. Может быть использовано для идентификации конференции при входе из IVR-сценария.&lt;br /&gt;
|-&lt;br /&gt;
|Входной параметр 1&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Входной параметр 1, передаваемый на старт служебного сценария. Совпадает с параметром, сохраняемым в компоненте «Старт». &lt;br /&gt;
|-&lt;br /&gt;
|Входной параметр 2&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Входной параметр 2, передаваемый на старт служебного сценария. &lt;br /&gt;
В сценариях преобразования CallerId содержит внешний номер (CalledId).&lt;br /&gt;
Может быть установлен при запуске сценария по инициативе плагинов и внешнего ПО, подключенного через ядро клиентского уровня платформы. Также используется для передачи служебной информации при использовании служебных сценариев - триггеров, обработчиков, набора номера.&lt;br /&gt;
|-&lt;br /&gt;
|Входной параметр 3&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Входной параметр 3, передаваемый на старт служебного сценария.&lt;br /&gt;
Может быть установлен при запуске сценария по инициативе плагинов и внешнего ПО, подключенного через ядро клиентского уровня платформы. Также используется для передачи служебной информации при использовании служебных сценариев - триггеров, обработчиков, набора номера.&lt;br /&gt;
|- &lt;br /&gt;
|Входной параметр 4&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Входной параметр 4, передаваемый на старт служебного сценария.&lt;br /&gt;
Может быть установлен при запуске сценария по инициативе плагинов и внешнего ПО, подключенного через ядро клиентского уровня платформы. Также используется для передачи служебной информации при использовании служебных сценариев - триггеров, обработчиков, набора номера.&lt;br /&gt;
|- &lt;br /&gt;
|Входной параметр 5&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Входной параметр 5, передаваемый на старт служебного сценария.&lt;br /&gt;
Может быть установлен при запуске сценария по инициативе плагинов и внешнего ПО, подключенного через ядро клиентского уровня платформы. Также используется для передачи служебной информации при использовании служебных сценариев - триггеров, обработчиков, набора номера.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8</id>
		<title>Функции</title>
		<link rel="alternate" type="text/html" href="%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8"/>
				<updated>2026-04-16T13:42:00Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;code&amp;gt;[[Техническая документация]] / [[Call-центр]] или [[Администрирование]] / [[Сценарии]] / [[Функции]] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Встроенная функция сценария осуществляет доступ к некоторым данным в момент выполнения сценария обработчиком.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Среди функций можно выделить несколько типов по направлению их действия:&lt;br /&gt;
&lt;br /&gt;
* Оперирующие конкретным звонком и обслуживающей линией; &lt;br /&gt;
* Временные; &lt;br /&gt;
* Общие серверные (определяющие некоторые состояния системы); &lt;br /&gt;
* Специальные функции конкретного типа сценария. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Для задания функции сценария служит соответствующая вкладка окна [[Аргументы|Аргумент]]. Значение функции вычисляется в момент обработки сценария  и подставляется в качестве аргумента текущего выполняемого объекта (свойства объекта) сценария.&lt;br /&gt;
&lt;br /&gt;
[[Файл:cl_cc_scra_f1_4.png|center]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Список встроенных функций сценариев.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В столбце типов указывается при редактировании каких типов сценариев доступна та или иная функция (IVR, Д-диалоговый, С-служебный)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Функция&lt;br /&gt;
!Тип возвращ. значения&lt;br /&gt;
!Типы сценариев&lt;br /&gt;
(IVR, Д, С)&lt;br /&gt;
!Описание&lt;br /&gt;
|-&lt;br /&gt;
|Id сессии сценария&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Текущий уникальный код сессии сценария (строковое представление GUID), в соответствии с которым осуществляется доступ к хранилищу глобальных переменных, формируются цепочки коммутаций при дозвоне.&lt;br /&gt;
|-&lt;br /&gt;
|Текущая дата&lt;br /&gt;
|Дата/время&lt;br /&gt;
|Все&lt;br /&gt;
|Текущая дата.&lt;br /&gt;
|-&lt;br /&gt;
|Текущий год&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Текущий год.&lt;br /&gt;
|-&lt;br /&gt;
|Текущий месяц&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Текущий месяц.&lt;br /&gt;
|-&lt;br /&gt;
|Текущий день&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Текущий день.&lt;br /&gt;
|-&lt;br /&gt;
|Текущий день недели&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Текущий день недели (1-7).&lt;br /&gt;
|-&lt;br /&gt;
|Текущее время&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Текущее время.&lt;br /&gt;
|-&lt;br /&gt;
|Текущий час&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Текущий час.&lt;br /&gt;
|-&lt;br /&gt;
|Текущая минута&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Текущая минута.&lt;br /&gt;
|-&lt;br /&gt;
|Текущая секунда&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Текущая секунда.&lt;br /&gt;
|-&lt;br /&gt;
|Номер абонента (CallerId)&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|Для внешних линий - определитель номера абонента (если не определен – строка «Номер не определен»).&lt;br /&gt;
Для внутренних линий (только в IVR) - номер пользователя, который обслуживается в сценарии. В качестве номера возвращается строка, начинающаяся с символа «U» и соответствующая прямому сервисному внутреннему номеру, назначенному на пользователя. Такие номера недоступны для набора непосредственно с телефона из-за спец.символов и используются только для служебных целей. Этот номер может быть подставлен в качестве аргумента в компоненты сценария, имеющие свойство «Внутренний номер получателя» (Уведомление, Голосовая почта и др.).&lt;br /&gt;
|-&lt;br /&gt;
|Набранный (внешний) номер (CalledId)&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|Номер, по которому дозвонился абонент (актуально для потоков Е1). Если номер не определился – подставляется значение из свойства внешней линии.&lt;br /&gt;
Для внутренних линий (только в IVR) - номер, по которому был осуществлен вход в текущий сценарий из АТС. При звонке с IP-телефона: если номер дозвона в АТС в начальных символах содержит внутренний номер для входа в сценарий, то в сценарии функция вернет всю последовательность. Например: номер сценария 25, на IP телефоне набрали 2511 CALL =&amp;gt; функция вернет 2511.&lt;br /&gt;
|-&lt;br /&gt;
|XML-INFO абонента&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|Строка, сформированная внешним приложением, и переданная вместе со звонком из собственного интеграционного модуля SipClient (подробнее в руководстве по интеграции, раздел «Звонок разработчику»). Может быть подвергнута разбору в сценарии и использована для проведения произвольной маршрутизации вызова. Вызов поступает на каналы шлюзов с типом регистрации [[Свойства компонентов#IP шлюз|Вхощящие из COM-клиента]].&lt;br /&gt;
|-&lt;br /&gt;
|Guid-идентификатор пользователя&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR&lt;br /&gt;
|Строка, содержащая идентификатор пользователя, который обслуживается в сценарии.&lt;br /&gt;
|-&lt;br /&gt;
|Имя пользователя&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR&lt;br /&gt;
|Используется для внутренних линий всех типов, которые связаны с пользователем. Для остальных возвращает пустую строку.&lt;br /&gt;
Имя обслуживаемого в сценарии пользователя.&lt;br /&gt;
|-&lt;br /&gt;
|Номер пользователя внутри АТС&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR&lt;br /&gt;
|Используется для внутренних линий всех типов. Для внешних возвращает пустую строку.&lt;br /&gt;
Определяет внутренний стандартный номер, по которому можно дозвониться до обслуживаемой линии (и/или пользователя) - далее обслуживаемые объекты. &lt;br /&gt;
Если во внутреннем номерном плане содержатся несколько номеров со ссылками на обслуживаемые объекты, то будет выбран негрупповой - тот, в списке ссылок которого присутствует единственный объект - обслуживаемый (линия или пользователь). Если негрупповой номер отсутствует, то преимущественно будет выбран групповой номер с наименьшим значением. ''(Из двух групповых номеров 203 и 405, будет выбран 203)'' &lt;br /&gt;
|-&lt;br /&gt;
|Тип линии&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|Число, определяющее типа линии&lt;br /&gt;
* 1 - Внешняя аналоговая &lt;br /&gt;
* 2 - Внутренняя аналоговая &lt;br /&gt;
* 3 - VoIP канал &lt;br /&gt;
* 4 - Внешняя GSM &lt;br /&gt;
* 5 - IP &lt;br /&gt;
* 6 - Канал потока Е1&lt;br /&gt;
* 7 - Внешняя SIP&lt;br /&gt;
* 8 - Внутренний транк на шлюз SIP&lt;br /&gt;
* 11 - Внешний sip канал из потока шлюза с динамической регистрацией&lt;br /&gt;
* 13 - Транк для межсерверного взаимодействия&lt;br /&gt;
|-&lt;br /&gt;
|Guid-идентификатор линии&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Строка с guid-идентификтором обслуживаемой сценарием линии.&lt;br /&gt;
В служебном сценарии функция возвращает непустое значение только в некоторых режимах, например при использовании сценария в качестве [[Параметры АТС|преобразователя callerid]] на входящих вызовах.&lt;br /&gt;
|-&lt;br /&gt;
|Номер линии&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Строка, определяющая номер линии по классификации АТС Oktell (11001, 15049 и т.п.), обслуживаемой текущим сценарием. Список линий и их номеров доступен в модуле [[Линии|Администрирование.Линии]].&lt;br /&gt;
В служебном сценарии функция возвращает непустое значение только в некоторых режимах, например при использовании сценария в качестве [[Параметры АТС|преобразователя callerid]] на входящих вызовах.&lt;br /&gt;
|-&lt;br /&gt;
|Код линии&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Строка с кодом линии, назначенным в модуле [[Линии|Администрирование.Линии]].&lt;br /&gt;
В служебном сценарии функция возвращает непустое значение только в некоторых режимах, например при использовании сценария в качестве [[Параметры АТС|преобразователя callerid]] на входящих вызовах.&lt;br /&gt;
|- &lt;br /&gt;
|Код направления&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR&lt;br /&gt;
|Строка, определяющая код первого найденного активного [[Линии#Направления|направления]], в котором присутствует обслуживаемая IVR-сценарием линия. В случае, если линии назначены в несколько направлений и нужно уточнить принадлежность линии к определенному, лучше воспользоваться компонентом [[Общие_компоненты_сценариев#Статус объекта|«Статус объекта»]].&lt;br /&gt;
|-&lt;br /&gt;
|Номер линии, ожидающей во Flash-буфере&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR&lt;br /&gt;
|В случае, если у обслуживаемой текущим сценарием линии во Flash буфере находится в ожидании некоторый абонент, то функция возвращает строку с номером ожидающей линии по классификации АТС Oktell. В противном случае возвращается пустая строка.&lt;br /&gt;
|-&lt;br /&gt;
|Номер линии, осуществившей переключение&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR&lt;br /&gt;
|В случае, если запущенный сценарий был переведен другой линией в результате использования Flash-удержания, возвращается строка с ее номером по классификации АТС Oktell. &lt;br /&gt;
В остальных случаях возвращается пустая строка.&lt;br /&gt;
|- &lt;br /&gt;
|Название активного фонового IVR-сценария медиа-взаимодействия&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR&lt;br /&gt;
|В случае, если в настоящее время активен [[Фоновый IVR-сценарий медиа-взаимодействия|фоновый сценарий медиа-взаимодействия]] с текущей обслуживаемой линий, возвращает его название. Иначе возвращается пустая строка.&lt;br /&gt;
|-&lt;br /&gt;
|Время в текущем сценарии&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Время в секундах, прошедшее после запуска непосредственно текущего сценария.&lt;br /&gt;
|-&lt;br /&gt;
|Время в обработчике сценариев&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Время в секундах, прошедшее после запуска текущей сессии сценариев.&lt;br /&gt;
|-&lt;br /&gt;
|Название текущего сценария&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Название текущего выполняемого сценария&lt;br /&gt;
|-&lt;br /&gt;
|Тип соединения&lt;br /&gt;
|Число&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|&lt;br /&gt;
* 1–Звонок с внутренней линии на внешнюю (Только диалоговый)&lt;br /&gt;
* 2–Звонок с внутренней линии в IVR&lt;br /&gt;
* 4–Звонок с внешней линии в IVR&lt;br /&gt;
* 5–Звонок с внешней линии на внутреннюю (Только диалоговый)&lt;br /&gt;
* 7–Звонок из IVR на внешнюю линию (из задачи)&lt;br /&gt;
* 8–Звонок из IVR на внутреннюю линию (из задачи)&lt;br /&gt;
|- &lt;br /&gt;
|Количество свободных внешних линий&lt;br /&gt;
|Число&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|Число свободных внешних линий, находящихся в активном состоянии.&lt;br /&gt;
|-&lt;br /&gt;
|Количество абонентов на набранном номере&lt;br /&gt;
|Число&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|Число абонентов, дозвонившихся на тот же номер, что и текущий абонент. Используется для обрубания вызовов по конкретным номерам при превышении лимита допустимого количества подключений.&lt;br /&gt;
|- &lt;br /&gt;
|Количество зарегистрированных операторов&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Число операторов, находящихся в call-центре онлайн (в свободном и занятом режимах, исключая перерывы).&lt;br /&gt;
|-&lt;br /&gt;
|Количество свободных операторов&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Число операторов, находящихся в call-центре в свободном состоянии, готовых обработать вызов незамедлительно.&lt;br /&gt;
|- &lt;br /&gt;
|Случайное число&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Случайное число от 0 до 999999 (равномерное распределение).&lt;br /&gt;
|-&lt;br /&gt;
|Id оператора&lt;br /&gt;
|Строка&lt;br /&gt;
|Д&lt;br /&gt;
|Идентификатор текущего оператора в виде &lt;br /&gt;
«00000000-0000-0000-0000-000000000000».&lt;br /&gt;
Необходимо помнить, что в ходе обработки сценария диалога операторы могут переключаться.&lt;br /&gt;
|- &lt;br /&gt;
|Имя оператора&lt;br /&gt;
|Строка&lt;br /&gt;
|Д&lt;br /&gt;
|Имя текущего оператора.&lt;br /&gt;
|-&lt;br /&gt;
|Внутренний номер оператора (Uguid)&lt;br /&gt;
|Строка&lt;br /&gt;
|Д&lt;br /&gt;
|Номер оператора, обслуживающего текущий звонок. Кодовое представление номера. Необходим для компонентов «Уведомление», «Определение статуса»,  и других, в которых требуется указание номера.&lt;br /&gt;
|-&lt;br /&gt;
|Хост оператора&lt;br /&gt;
|Строка&lt;br /&gt;
|Д&lt;br /&gt;
|Имя компьютера оператора, обслуживающего текущий звонок. &lt;br /&gt;
|-&lt;br /&gt;
|Id проекта&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Идентификатор проекта текущей задачи, в ходе обработки которой был запущен сценарий.&lt;br /&gt;
|-&lt;br /&gt;
|Название проекта&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Название проекта текущей задачи, в ходе обработки которой был запущен сценарий.&lt;br /&gt;
|-&lt;br /&gt;
|Id задачи&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Идентификатор текущей задачи, в ходе обработки которой был запущен сценарий.&lt;br /&gt;
|-&lt;br /&gt;
|Код задачи&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Код текущей задачи, в ходе обработки которой был запущен сценарий.&lt;br /&gt;
|-&lt;br /&gt;
|Название задачи&lt;br /&gt;
|Строка&lt;br /&gt;
|Все&lt;br /&gt;
|Название текущей задачи, в ходе обработки которой был запущен сценарий.&lt;br /&gt;
|-&lt;br /&gt;
|Параметр задачи&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Параметр запуска сценария, переданный из задачи, куда попал в свое время в момент ее создания из компонента «Задание на звонок».&lt;br /&gt;
|-&lt;br /&gt;
|Id абонента в списке&lt;br /&gt;
|Число&lt;br /&gt;
|Все&lt;br /&gt;
|Идентификатор абонента в прикрепленной таблице абонентов. &lt;br /&gt;
|-&lt;br /&gt;
|Id коммутации&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|Уникальный идентификатор коммутации.&lt;br /&gt;
|-&lt;br /&gt;
|Id цепочки коммутаций&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR, Д&lt;br /&gt;
|Уникальный идентификатор звонка (сессии) внутри АТС Oktell.&lt;br /&gt;
|-&lt;br /&gt;
|Id sip-сессии&lt;br /&gt;
|Строка&lt;br /&gt;
|IVR&lt;br /&gt;
|По умолчанию уникальный идентификатор sip-сессии из поля «Call-ID». &lt;br /&gt;
|-&lt;br /&gt;
|КС: идентификатор&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|При запуске служебного сценария для обработки контрольного события Guid-идентификатор контрольного события в строковом представлении.&lt;br /&gt;
|- &lt;br /&gt;
|КС: название&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|При запуске служебного сценария для обработки контрольного события название контрольного события.&lt;br /&gt;
|-&lt;br /&gt;
|КС: идентификатор задачи&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|При запуске служебного сценария для обработки контрольного события Guid-идентификатор задачи, в которой событие обнаружено, в строковом представлении.&lt;br /&gt;
|-&lt;br /&gt;
|КС: идентификатор оператора&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|При запуске служебного сценария для обработки контрольного события Guid-идентификатор оператора, совершившего контрольное событие, в строковом представлении&lt;br /&gt;
|- &lt;br /&gt;
|КС: показатель&lt;br /&gt;
|Число&lt;br /&gt;
|С&lt;br /&gt;
|При запуске служебного сценария для обработки контрольного события числовой показатель соответствующего события.&lt;br /&gt;
|-&lt;br /&gt;
|КС: описание&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|При запуске служебного сценария для обработки контрольного события дополнительное текстовое поле с информацией о деталях события.&lt;br /&gt;
|-&lt;br /&gt;
|Инициатор запуска. Код типа&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Определяет код модуля-иницатора запуска служебного сценария.&lt;br /&gt;
* 10 - Контрольное событие. &lt;br /&gt;
* 11 - Дозвон из задачи на внешний номер. &lt;br /&gt;
* 12 - Автодозвон на внешний номер. &lt;br /&gt;
* 13 - Строковое преобразование. &lt;br /&gt;
* 14 - Запуск по инициативе клиентского приложения (из модуля администрирования, из плагина, либо из внешнего интегрированного приложения). &lt;br /&gt;
* 15 - Набор быстрого номера. &lt;br /&gt;
* 16 - Набор экстренного номера. &lt;br /&gt;
* 17 - Набор внутреннего номера при приглашении в конференцию. &lt;br /&gt;
* 18 - Набор внутреннего номера из автодозвона. &lt;br /&gt;
* 19 - Прерывание вызова внутреннего номера в конференции. &lt;br /&gt;
* 20 - Обработка завершения конференции. &lt;br /&gt;
* 21 - Поиск абонента для голосовой задачи в режиме работы с таблицей абонентов через сценарий. &lt;br /&gt;
* 22 - Обработка завершения звонка/попытки звонка в голосовой задаче. &lt;br /&gt;
* 23 - Набор внешнего номера из конференции. &lt;br /&gt;
* 24 - Набор внешнего номера, указанного в стандартном внутреннем. &lt;br /&gt;
* 25 - Обработка завершения сессии внешнего канала (обработка контента линии по общему сценарию АТС). &lt;br /&gt;
* 26 - Обработка завершения сессии внешнего канала (обработка контента линии по сценарию задачи).&lt;br /&gt;
* 27 - Обработка веб-запроса к серверу на запуск сценария.&lt;br /&gt;
* 28 - Определение абонента при входящем вызове.&lt;br /&gt;
* 29 - Отправка SMS.&lt;br /&gt;
* 30 - Отправка E-mail.&lt;br /&gt;
|- &lt;br /&gt;
|Инициатор дозвона. Тип&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Определяет название модуля-инициатора запуска служебного сценария в некоторых режимах.&lt;br /&gt;
* «КС» - контрольное событие. &lt;br /&gt;
* «Задача» - сценарий запущен как набор номера в задаче.  &lt;br /&gt;
* «АДЗ» - сценарий запущен как набор номера в автодозвоне. &lt;br /&gt;
* «Быстрый» - сценарий запущен как набор быстрого/внешнего номера. &lt;br /&gt;
* «Экстренный» - сценарий запущен как набор экстренного номера. &lt;br /&gt;
* «Внутренний из конференции» - сценарий запущен как набор внутреннего номера из конференции. &lt;br /&gt;
* «Внутренний из АДЗ» - сценарий запущен как набор внутреннего номера из АДЗ. &lt;br /&gt;
В других случаях возвращается пустая строка.&lt;br /&gt;
|- &lt;br /&gt;
|Инициатор дозвона. Идентификатор (задача/пользователь) &lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Для вышеприведенных типов запуска служебного сценария возвращает Guid-идентификатор в строковом представлении соответственно контрольного события, задачи, пользователя, запустившего автодозвон. В других случаях возвращается пустая строка.&lt;br /&gt;
|-&lt;br /&gt;
|Инициатор дозвона. Имя (задача/пользователь)&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Для вышеприведенных типов запуска служебного сценария возвращает название соответственно контрольного события, задачи, пользователя, запустившего автодозвон. В других случаях возвращается пустая строка.&lt;br /&gt;
|-&lt;br /&gt;
|Инициатор дозвона. Внутренний номер (пользователь)&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Для режима запуска служебного сценария в качестве набора номера в режиме автодозвона возвращает внутренний номер пользователя, инициировавшего автодозвон. В других случаях возвращается пустая строка.&lt;br /&gt;
|-&lt;br /&gt;
|Конференция. Идентификатор (Guid)&lt;br /&gt;
|Строка&lt;br /&gt;
|C&lt;br /&gt;
|Задано при запуске сценариев, связанных с конференцией (набор номера, отмена, обработка завершения). Строковое представление GUID-идентификатора связанной конференции.&lt;br /&gt;
|-&lt;br /&gt;
|Конференция. Код идентификатора (Int32)&lt;br /&gt;
|Число&lt;br /&gt;
|C&lt;br /&gt;
|Задано при запуске сценариев, связанных с конференцией (набор номера, отмена, обработка завершения). Число, являющееся довольно уникальной функцией от GUID-идентификатора связанной конференции. Может быть использовано для идентификации конференции при входе из IVR-сценария.&lt;br /&gt;
|-&lt;br /&gt;
|Конференция. Номер комнаты&lt;br /&gt;
|Число&lt;br /&gt;
|C&lt;br /&gt;
|Задано при запуске сценариев, связанных с конференцией (набор номера, отмена, обработка завершения). Номер комнаты связанной конференции.&lt;br /&gt;
|-&lt;br /&gt;
|Конференция. Идентификатор участника (Guid)&lt;br /&gt;
|Строка&lt;br /&gt;
|C&lt;br /&gt;
|Задано при запуске сценариев, связанных с конференцией (набор номера, отмена набора номера). GUID-идентификатор связанного участника связанной конференции. Применяется при организации внешней очереди для привязки звонка к конкретному участнику конференции, находящемуся в состоянии ожидания ответа.&lt;br /&gt;
|-&lt;br /&gt;
|Конференция. Код идентификатора участника (Int32)&lt;br /&gt;
|Число&lt;br /&gt;
|C&lt;br /&gt;
|Задано при запуске сценариев, связанных с конференцией (набор номера, отмена набора номера). Число, являющееся довольно уникальной функцией от GUID-идентификатора связанного участника связанной конференции. Может быть использовано для идентификации конференции при входе из IVR-сценария.&lt;br /&gt;
|-&lt;br /&gt;
|Входной параметр 1&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Входной параметр 1, передаваемый на старт служебного сценария. Совпадает с параметром, сохраняемым в компоненте «Старт». &lt;br /&gt;
|-&lt;br /&gt;
|Входной параметр 2&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Входной параметр 2, передаваемый на старт служебного сценария. &lt;br /&gt;
В сценариях преобразования CallerId содержит внешний номер (CalledId).&lt;br /&gt;
Может быть установлен при запуске сценария по инициативе плагинов и внешнего ПО, подключенного через ядро клиентского уровня платформы. Также используется для передачи служебной информации при использовании служебных сценариев - триггеров, обработчиков, набора номера.&lt;br /&gt;
|-&lt;br /&gt;
|Входной параметр 3&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Входной параметр 3, передаваемый на старт служебного сценария.&lt;br /&gt;
Может быть установлен при запуске сценария по инициативе плагинов и внешнего ПО, подключенного через ядро клиентского уровня платформы. Также используется для передачи служебной информации при использовании служебных сценариев - триггеров, обработчиков, набора номера.&lt;br /&gt;
|- &lt;br /&gt;
|Входной параметр 4&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Входной параметр 4, передаваемый на старт служебного сценария.&lt;br /&gt;
Может быть установлен при запуске сценария по инициативе плагинов и внешнего ПО, подключенного через ядро клиентского уровня платформы. Также используется для передачи служебной информации при использовании служебных сценариев - триггеров, обработчиков, набора номера.&lt;br /&gt;
|- &lt;br /&gt;
|Входной параметр 5&lt;br /&gt;
|Строка&lt;br /&gt;
|С&lt;br /&gt;
|Входной параметр 5, передаваемый на старт служебного сценария.&lt;br /&gt;
Может быть установлен при запуске сценария по инициативе плагинов и внешнего ПО, подключенного через ядро клиентского уровня платформы. Также используется для передачи служебной информации при использовании служебных сценариев - триггеров, обработчиков, набора номера.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8_%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0</id>
		<title>Резервное копирование и восстановление сервера</title>
		<link rel="alternate" type="text/html" href="%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8_%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0"/>
				<updated>2023-11-07T15:32:42Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Основные правила */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики | Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
В данной статье описывается перенос/переустановка сервера Oktell.  Статья для тех, кто хочет переустановить ОС на сервере, перенести систему на другой компьютер или восстановить работу телефонии после аварии.&lt;br /&gt;
&lt;br /&gt;
Перед тем, как вы приступите к переносу сервера, ознакомьтесь с основными правилами. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Основные правила ==&lt;br /&gt;
&lt;br /&gt;
Каждая версия Oktell (серверная часть) работает с определенной версией базы данных. После каждого обновления программы заменяются файлы в папке ''\oktell\server'' и выполняются изменения в БД. Если версии сервера и баз данных различаются, Oktell будет работать некорректно или вовсе не запустится. Исходя из этого, важно делать резервные копии сервера и БД синхронно. Ниже в статье описывается как правильно восстанавливать сервер, если у вас есть эти обе составляющие. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Может случиться ситуация, что у вас есть копии базы данных, но нет бэкапа серверной части (папки '''server'''). В этом случае установите ту версию Oktell, на которой были сделаны копии БД. Сделать это можно так - вы устанавливаете версию [https://oktell.ru/files/ из дистрибутива], который имеет младшую версию, а затем попросите у техподдержки файл с обновлением до вашей версии. Например, чтобы получить версию сервера 2.10.140516, нужно установить дистрибутив 2.9.140730, а затем обновиться до вашей версии. После этих действий все настройки будут восстановлены, но вы потеряете сделанные ранее сценарии, если нет этой копии. &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Если у вас есть копия серверной части, но копии баз данных сохранились старые, то есть способ обновить их до актуальной версии. Самый простой способ обновиться до следующей официальной версии Oktell; если не позволяет АГО - до следующей бета-версии, которую можно попросить у технической поддержки. Другой вариант - скопировать папку '''DBAutoUpdate''' из архива с обновлением на вашу версию и вставить в одноименную папку на сервере, после чего перезагрузить службу сервера.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Копирование сервера  ==&lt;br /&gt;
&lt;br /&gt;
Если вы делаете копирование сервера непосредственно перед переносом, запишите версию программы (Администрирование/Общие настройки/Информация о лицензии). Это может понадобится для специалистов технической поддержки, если возникнут проблемы. &lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Сделайте копию серверного каталога ''Oktell\Server'' (по умолчанию находится ''C:\Program Files (x86)\''). Следует отметить, что не все файлы стоит резервировать в обязательном порядке. &lt;br /&gt;
* Обязательными для восстановления являются файлы в корне папки server, папки '''Liveupdate''' и '''WWW'''&lt;br /&gt;
* Для восстановления сценариев нужны папки '''Projects''' и '''Scripts'''&lt;br /&gt;
* Системные звуковые файлы хранятся в папке '''Snd'''. &lt;br /&gt;
* Установленные плагины хранятся в папке '''Plugins'''. Если вы ее не скопируете, вам нужно будет заново их установить. &lt;br /&gt;
* Автоматически создаваемые копии БД и сценариев хранятся в папке '''Backup'''. Их копировать не обязательно.&lt;br /&gt;
* Записи разговоров хранятся в папке '''RecordedFiles'''. Для системы эта папка не обязательна, но скорее всего она используется для ваших бизнес-процессов. &lt;br /&gt;
* Папку '''Log''' можно не копировать. Файлы в этой папке используются для отладки системы. &lt;br /&gt;
* Остальные папки используются для различных модулей системы, но копировать их не обязательно. &lt;br /&gt;
В свою очередь, мы рекомендуем делать полную копию папки server без подпапок '''Backup''' и '''Log'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' Сохраните копии следующих обязательных баз данных &lt;br /&gt;
* '''oktell''' &lt;br /&gt;
* '''oktell_settings'''&lt;br /&gt;
* '''oktell_cc_temp''' &lt;br /&gt;
Для этого перейдите в ''Администрирование/Общие настройки/Управление базами данных'' и нажмите '''Произвести резервное копирование БД'''. Копии БД будут доступны в корне папки \Oktell\Server\Backup. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Резервное копирование и восстановление сервере 20.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если у вас есть модули веб-клиента Okapp, которые используют БД, то их копию можно сделать через SQL Server management Studio. Например, модуль Журнал хранит в своей БД установленные тэги разговоров, а модуль Дашборды хранит запросы и настройки индикаторов. &lt;br /&gt;
&lt;br /&gt;
Более подробно в статье: [[Резервное копирование и восстановление баз данных]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Восстановление сервера ==&lt;br /&gt;
&lt;br /&gt;
В данном разделе рассматривается восстановление системы на чистый сервер. Если вы заранее установили Oktell с дистрибутива, то шаги 1, 4 и 6 можете пропустить,  предварительно отключив службу oktellserver,если она запущена.&lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Для работы Oktell нужен SQL-сервер (желательно 2008 R2 или 2012) и [http://www.microsoft.com/ru-ru/download/details.aspx?id=17851 .NET 4.0]. Установка и подготовка SQL-сервера рассмотрена в статье [[Установка Microsoft SQL Server 2012]]. &lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' Создайте папку ''C:\Program Files (x86)\Oktell'' и скопируйте в нее копии папки server и бэкапы баз данных. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Если ранее Oktell находится в папке Program Files, то на новом сервере следует создавать папку Oktell именно в Program Files. В противном случае ни одна запись разговора не будет проигрываться и вам придется исправить путь в таблице БД [oktell]..[A_Stat_RecordDirectories]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
В качестве альтернативного варианта вы можете установить Oktell c дистрибутива и обновить его до вашей версии. Учтите, что все записи разговоров (папка '''RecordedFiles''' на предыдущем сервере), файлы сценариев и проектов все равно придется копировать с предыдущего сервера. Для восстановления сценариев воспользуйтесь статьей [[Резервное копирование и восстановление сценариев]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 3.''' Восстановите базы данных. Инструкцию по восстановлению смотрите в статье [[Резервное копирование и восстановление баз данных]]&lt;br /&gt;
&lt;br /&gt;
'''Шаг 4.''' Зарегистрируйте службу oktellserver. Для этого в командной строке выполните следующую команду ( командную строку рекомендуется запускать от имени администратора) &lt;br /&gt;
&lt;br /&gt;
 %WINDIR%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe &amp;quot;C:\Program Files (x86)\Oktell\Server\oktell.ServerService.exe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Для регистрации используется программа '''InstallUtil''' по адресу ''C:\Windows\Microsoft.NET\Framework\v4.0.30319'' (на ОС Windows 7). Если в процессе выполнения вы получили ошибку, проверьте, что у вас установлен .NET 4.0 и указанный файл находится по данному пути. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Резервное копирование и восстановление сервере 21.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 5.''' Запустите созданную службу с помощью команды:&lt;br /&gt;
&lt;br /&gt;
 net start oktellserver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:бэкв.PNG|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 6.''' [http://download.oktell.ru/data/oktellClient.msi Скачайте] и установите клиентское приложение. Проверьте, что оно успешно подключилось к серверу. Поскольку после переноса сервера нужно перевыписать регистрационную карту, поэтому подключение доступно только под учетной записью Администратора по умолчанию (логин - Администратор, пароль пустой). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 7.''' После переноса программы вам необходимо запросить новую лицензию у прикрепленного за вами менеджера или через личный кабинет клиента.&lt;br /&gt;
&lt;br /&gt;
'''Скачать:''' [[Медиа:Форма_письменного_обращения.zip|Форма письменного обращения‎.zip]]&lt;br /&gt;
&lt;br /&gt;
Описание полей для заполнения в форме:&lt;br /&gt;
*'''Номер регистрации:''' Информацию вы можете найти в модуле ''Администрирование/Общие настройки/Информация о лицензии'' в поле регистрационный номер. &lt;br /&gt;
*'''Наименование держателя лицензии:''' Название компании-обладателя лицензии&lt;br /&gt;
*'''Идентификатор:''' ИНН вашей компании &lt;br /&gt;
&lt;br /&gt;
После получения новой регистраицонной карты активируйте ее в ''Администрирование/Общие настройки/Информация о лицензии''. Нажмите '''Старт''' и выберите пункт '''Новая регистрация'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перенос3.PNG | center | 800 px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После выполнения этих действий вы сможете войти на сервер под своей предыдущей учетной записью. Если и после этого вы не смогли войти, обратитесь к статье [[Действия пользователей при смене ip-адреса сервера]].&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>Oktell_Web-Socket_Protocol</id>
		<title>Oktell Web-Socket Protocol</title>
		<link rel="alternate" type="text/html" href="Oktell_Web-Socket_Protocol"/>
				<updated>2023-09-21T10:13:26Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Прочие */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Веб-интерфейс|Наверх]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В рамках настоящей статьи рассматриваются вопросы интеграции web-системы и коммуникационной системы (в дальнейшем WebCRM и Oktell). WebCRM на рабочем месте сотрудника используется через браузер. Телефон, находящийся на рабочем месте сотрудника подключен к серверу (узлу коммутаций) Oktell. Решается задача функционального объединения двух системы с предоставлением возможности приема и совершения звонков и управления телефоном из интерфейсов WebCRM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;OktellFunc&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Краткое описание возможностей телефонии Oktell===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Стандартный функционал Oktell предоставляет пользователям:&lt;br /&gt;
:* доступ к управлению телефонами (позвонить, переключить, отклонить звонок, организовать конференцию, пригласить других участников в конференцию, подключиться к разговору в режиме прослушивания, помощи и т.д.).&lt;br /&gt;
:* доступ к управлению состояниями пользователей (перерыв - чтобы поток входящих звонков не поступал, занят - чтобы отметить факт обработки звонка, переадресация - чтобы все звонки на пользователя перенаправлялись в соответствии с настроенными правилами, готов - чтобы вернуться к обычному режиму).&lt;br /&gt;
:* информацию о текущем состоянии телефонов, внутренних номеров, пользователей с т.з. занятости в операциях телефонии.&lt;br /&gt;
:* информацию о поступающем звонке, абоненте&lt;br /&gt;
:* доступ к статистике разговоров (по правам).&lt;br /&gt;
:* доступ к записям разговоров (по правам).&lt;br /&gt;
:* доступ к информации об ожидающей очереди абонентов в реальном времени.&lt;br /&gt;
:* доступ к контентам сессий и линий.&lt;br /&gt;
:* доступ к управлению режимом переадресации.&lt;br /&gt;
:* возможность запуска служебных сценариев.&lt;br /&gt;
и т.д.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В рамках настройки сценариев Oktell, имеется возможность отправлять синхронные и асинхронные запросы в WebCRM (фактически исполнять методы по событиям в Oktell) и получать ответы и применять их в рамках проведения маршрутизации или любых других действий, реализуемых в сценариях. Например: &lt;br /&gt;
:* Выяснить, какому клиенту/контакту принадлежит определившийся номер телефона или введенный им вручную с помощью DTMF-набора номер договора, отфильтровать по черному списку, переключить вызов на ответственного за работу с этим контактом пользователя, если пользователя нет в системе - переключить на секретаря, а если контакт новый - соединить с отделом продаж. Если ответственный пользователь занят, предложить оставить голосовое сообщение для VIP клиентов. &lt;br /&gt;
:* В момент поступления звонка открыть карточку у пользователя, которому направляется звонок. Закрыть ее автоматически, если пользователь так и не снял трубку (а снял кто-то другой, или звонок потерялся). &lt;br /&gt;
:* Выполнить какое-то важное с т.з. WebCRM действие в случае, например, если пользователь оставил заказ на встречный звонок, занести его в список задач.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Именно сценарии придают жизнь Oktell и его сервисам. &lt;br /&gt;
&lt;br /&gt;
Среди событий Oktell, отрабатываемых в сценариях:&lt;br /&gt;
&lt;br /&gt;
:* поступление внешнего звонка.&lt;br /&gt;
:* завершение звонка.&lt;br /&gt;
:* переключение абонента на пользователя, группу пользователей, задачу call-центра.&lt;br /&gt;
:* любое из интересующих явлений в ходе обработки звонка (от преобразования номера абонента в нужный формат и сверки времени поступления звонка до обработки контента звонка после завершения и выявления там факта состоявшейся конференции).&lt;br /&gt;
:* наступление определенного времени.&lt;br /&gt;
:* периодический запуск по таймеру.&lt;br /&gt;
:* поступление/отправка e-mail.&lt;br /&gt;
:* поступление/отправка sms/icq/jabber.&lt;br /&gt;
:* контрольные события call-центра (оператор первым положил трубку, оператор слишком долго находится в перерыве или поствызывной обработке, число операторов в задаче меньше минимально допустимого, число абонентов в очереди задачи больше допустимого и т.д.)&lt;br /&gt;
:* ручной запуск сценария по инициативе пользователя или WebCRM.&lt;br /&gt;
:* исходящий звонок от пользователя&lt;br /&gt;
:* поступление голосовой почты&lt;br /&gt;
:* появление где-то в базе данных интересующего события (например появление новой записи в таблице абонентов)&lt;br /&gt;
:* появление где-то на веб-ресурсе интересующего события (например температура на улице опустилась ниже нуля)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Arch1&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Схема интеграции 1 (межсерверное соединение)===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Arch1.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сервер Oktell взаимодействует с телефонами и с веб-сервером WebCRM. &lt;br /&gt;
&lt;br /&gt;
Веб-сервер WebCRM взаимодействует ответно с сервером Oktell и с браузерами (клиентами). &lt;br /&gt;
&lt;br /&gt;
Между сервером Oktell и веб-сервером WebCRM существует только один [[#Exchange|канал для двустороннего обмена сообщениями]].&lt;br /&gt;
&lt;br /&gt;
Установка соединения может производиться как сервером Oktell, так и веб-сервером WebCRM. В случае разрыва соединения сторона-инициатор вновь организует подключение.&lt;br /&gt;
# При выборе соединения со стороны сервера WebCRM в [[Интеграция_с_Web-Socket_CRM|настройках Web-Socket]] Oktell должен быть выбран один из режимов «CRM к Oktell» с указанием требуемого способа авторизации.&lt;br /&gt;
# При выборе соединения со стороны сервера Oktell должен быть выбран один из режимов «Oktell к CRM» с указанием [[#websockver|версии]] протокола Web-Socket.&lt;br /&gt;
&lt;br /&gt;
После установки соединения системы обмениваются данными друг о друге, об авторизованных пользователях, о динамических методах. &lt;br /&gt;
Все авторизованные в WebCRM пользователи автоматически становятся авторизованными в Oktell. В дальнейшем авторизация подключающихся пользователей и вывод отключившихся осуществляется с помощью сообщений login и logoff.&lt;br /&gt;
Считается, что авторизацию пользователь проходит на веб-сервере WebCRM, и повторной проверки пароля в Oktell не требуется. Поэтому при организации сообщений login поле password не требует указания.&lt;br /&gt;
&lt;br /&gt;
Любой запрос от клиента к Oktell отправляется на сервер WebCRM, где формируется интеграционное сообщение и перенаправляется на сервер Oktell.&lt;br /&gt;
Персональные сообщения/команды от Oktell клиенту также направляются на WebCRM, где они должны быть перенаправлены клиенту.&lt;br /&gt;
Общие сообщения/команды от Oktell направляются к серверу, где проводится их обработка.&lt;br /&gt;
&lt;br /&gt;
Часть общих событий, например изменение состояния абонента в номерном плане, отправляется в WebCRM однократно и без привязки к конкретному пользователю, подразумевая тем самым, что веб-сервер WebCRM самостоятельно размножит сообщение и отправит всем заинтересованным клиентам.&lt;br /&gt;
&lt;br /&gt;
В рамках такой интеграции WebCRM может предоставлять в Oktell некоторые общие сервисы, которые доступны администратору при настройке сценариев Oktell. Например, доступ к БД WebCRM на поиск маршрута для обработки звонка конкретного клиента. Подробнее в разделе [[#Dynamic|Динамическое взаимодействие]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Arch2&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Схема интеграции 2 (клиент-серверное соединение)===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Arch2.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сервер Oktell взаимодействует с телефонами и с конечными клиентами (браузерами). &lt;br /&gt;
&lt;br /&gt;
Веб-сервер CRM взаимодействует только с клиентами и БД. &lt;br /&gt;
&lt;br /&gt;
Между Oktell и каждым клиентом существует один или несколько [[#Exchange|каналов для двустороннего обмена сообщениями]] (поддерживается работа в нескольких вкладках браузера).&lt;br /&gt;
&lt;br /&gt;
В данном случае клиенты (браузеры) производят подключения к серверу Oktell, и в его настройках должен быть включен и настроен [[Настройки_веб-сервера|Web-сервер]], а в сообщениях [[#login|''login'']] должен быть указан пароль пользователя (MD5).&lt;br /&gt;
&lt;br /&gt;
При таком способе интеграции у WebCRM не требуется наличие собственного Web-Socket сервера. Каждый клиент (браузер) подключается по Web-Socket протоколу непосредственно к серверу Oktell. Веб-сервер CRM занимается формированием страниц и предоставлением данных из БД WebCRM. Непосредственная взаимосвязь между серверами WebCRM и Oktell отсутствует, доступ не требуется, клиенты самостоятельно обрабатывают и объединяют данные двух систем.&lt;br /&gt;
По такому принципу реализованы [http://www.oktell.ru/weboktell Web-клиент Oktell] и плагин [http://js.oktell.ru/ Oktell.js], доступный для встраивания в другие проекты.&lt;br /&gt;
&lt;br /&gt;
Поскольку клиентов может быть много, при рассылке событий возможна оптимизация за счет исключения тех клиентов, где конкретное событие не является необходимым. Достигается это путем подписки/отписки клиентов на определенные типы сообщений.&lt;br /&gt;
&lt;br /&gt;
Применительно к этому способу интеграции существует ряд дополнительных методов интерфейса. Большинство таких методов доступно и при [[#Arch1|схеме интеграции 1]], но не являются там необходимыми, так как часть данных и работ проводится на веб-сервере WebCRM.&lt;br /&gt;
&lt;br /&gt;
В отличие от [[#Arch1|схемы интеграции 1]], где Oktell запрашивает у сервера WebCRM список [[#Dynamic|динамических методов и форм]], которые затем могут быть использованы в сценариях Oktell, здесь динамические методы недоступны. Чтобы получить доступ к динамическим методам, следует использовать упрощенный вариант [[#Arch3|схемы интеграции 3]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Arch3&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Схема интеграции 3 (межсерверное и клиент-серверное соединение)===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Arch_3.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Является комбинацией [[#Arch1|схемы 1]] и [[#Arch2|схемы 2]]. То есть клиенты имеют возможность подключаться непосредственно к серверу Oktell, минуя websocket-сервер CRM, а связь с сервером происходит по специальному каналу, который может быть обеспечиваться как websocket-подключением, так и периодическими http подключениями. &lt;br /&gt;
&lt;br /&gt;
В этом случае при разработке решений можно пользоваться javascript-библиотекой [http://js.oktell.ru Oktell.js], не требующей ни полного погружения в настоящий интеграционный протокол, ни в настройку websocket. Также в этом случае для CRM не обязательно иметь собственный websocket-сервер для обслуживания клиентов. Более того, можно вообще обойтись лишь настройкой HTTP для обмена сервисными сообщениями вроде [[#whoareyou|взаимных представлений]] и запроса [[#getavailablemethods|динамических методов]] и [[#getavailableforms|форм]]. Исполнение [[#Dynamic|динамических методов и форм]] будет возможно как на сервере, так и на клиентах. На сервере - по межсерверному каналу (http, https, websocket, websocket secure), на клиенте - по индивидуальным websocket-подключениям (защищенным или нет). Все остальные запросы и события имеют персональную подоплеку и отправляются по индивидуальным клиент-серверным подключениям.&lt;br /&gt;
&lt;br /&gt;
При этом в случае websocket соединения между серверами Oktell и CRM остается возможность часть клиентов туннелировать через сервер CRM, а часть клиентов обслуживать непосредственно. В этом смысле это самый широкий способ интеграции, и два других выступают частными случаями.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;UserPhone&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Привязка пользователя к телефону===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Решению подлежит задача сопоставления конкретных пользователей CRM с конкретными телефонными устройствами. Поскольку элементы управления устройством находятся в браузере, а влияют они на поведение конкретного телефона. Например, так выглядит простейшая задача перевода звонка из браузера на врача Михайлова: звонок должен поступить на телефон, находящийся в кабинете 103, за компьютером в котором сейчас сидит Михайлов (в браузере открыта WebCRM и авторизован Михайлов). &lt;br /&gt;
Настройка этого происходит в Oktell. &lt;br /&gt;
&lt;br /&gt;
Пользователи могут работать:&lt;br /&gt;
:* стационарно каждый за своим рабочим местом. &lt;br /&gt;
:* перемещаться с одного рабочего место за другое.&lt;br /&gt;
:* работать посменно за одним рабочим местом.&lt;br /&gt;
(Рабочее место = компьютер + телефон)&lt;br /&gt;
&lt;br /&gt;
Необходимо в каждый момент времени знать, около какого телефона какой пользователь сидит. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Существуют два подхода к решению, также возможны их комбинации в рамках одного сервера.&lt;br /&gt;
&lt;br /&gt;
'''1. Жесткая привязка пользователя к телефонной учетной записи.'''&lt;br /&gt;
&lt;br /&gt;
''Для этого в карте сети Oktell в свойствах телефона требуется указание пользователя WebCRM''&lt;br /&gt;
&lt;br /&gt;
''Плюсы'': При взаимодействии Oktell и WebCRM используются одни и те же идентификаторы (например логины пользователей), соответственно отсутствует проблема привязки как таковая.&lt;br /&gt;
&lt;br /&gt;
''Минусы'': Пользователь вынужден перемещаться с одного компьютера на другой вместе со своим телефоном, или переназначая учетную запись в телефонном аппарате.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Телефон привязывается к компьютеру, а в момент логина пользователя сопоставление производится через этот компьютер.'''&lt;br /&gt;
&lt;br /&gt;
''Плюсы'': Кто бы ни залогинился с этого компьютера, приобретает управление рядом стоящим телефоном, все звонки пользователю попадают на этот телефон.&lt;br /&gt;
&lt;br /&gt;
''Минусы'': Требует указания одного из постоянных идентификаторов компьютера в Oktell, а также передачи его из WebCRM/web-клиента в момент логина для привязки. Это может быть айпи адрес, хостнейм или любой другой постоянный идентификатор, задаваемый в конфигурации.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Синхронизация учетных записей Oktell и WebCRM может производиться по логинам (по умолчанию) или по GUID-идентификаторам. Соответственно в персональных запросах должны указываться userlogin и/или userid.&lt;br /&gt;
&lt;br /&gt;
Логин в Oktell нужен для приведения состояния пользователя в готовность. Без этого звонки на пользователя не поступают, а обрабатываются как и в случае, когда он недоступен. Логофф - обратная операция. В ходе взаимодействия пользователю доступны команды управления своим состоянием. Он может отлучиться, выставить перерыв, переадресацию, занятость и т.д. Все это нужно для того, чтобы изменить направление маршрутизации звонков и режим работы call-центра. А в случае [[#Arch2|схемы интеграции 2]] и [[#Arch3|схемы интеграции 3]] также для авторизации. Индивидуальное подключение не обрабатывает никакие запросы, не осуществив авторизацию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ! Ограничение: Oktell не позволяет пользователям авторизовываться с разных рабочих мест одновременно. Делается это для того, чтобы каждому пользователю соответствовало не более одного телефона. &lt;br /&gt;
Однако персональные соединения [[#Arch2|схемы интеграции 2]] и [[#Arch3|схемы интеграции 3]] могут быть множественными, например как вкладки одного браузера. При этом привязка к телефону осуществляется первым авторизовавшимся подключением и остается таковой до закрытия всех вкладок/подключений этого пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Exchange&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Взаимодействие по каналу связи===&lt;br /&gt;
&lt;br /&gt;
В этом разделе описывается межсерверный канал websocket, а канал HTTP подразумевается ограниченным аналогом.&lt;br /&gt;
&lt;br /&gt;
Все взаимодействие между Oktell и WebCRM (а также между Oktell и браузером) идет по общему каналу путем двустороннего обмена сообщениями между сторонами.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Файл:Socket 3.jpg|500px]][[Файл:Socket 3b.jpg|500px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;websockver&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Взаимодействие на транспортном уровне происходит по Web-Socket протоколу. Поддерживаются версии&lt;br /&gt;
:* [http://tools.ietf.org/html/rfc6455 rfc6455 v13]&lt;br /&gt;
:* [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-08 v8] &lt;br /&gt;
:* [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-07 v7]&lt;br /&gt;
:* [http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-75 75]&lt;br /&gt;
:* [http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76 76]&lt;br /&gt;
&lt;br /&gt;
''[[Примеры WebSocket Handshake]]''.&lt;br /&gt;
&lt;br /&gt;
В зависимости от выбранной схемы интеграции и выбранного в настройках направления и способа подключения одна из сторон производит подключение (Oktell к серверу WebCRM, сервер WebCRM к Oktell, клиенты WebCRM к Oktell).&lt;br /&gt;
Рукопожатие (handshake) на установление Web-Socket соединения предлагается также стороной-инициатором. [http://ru.wikipedia.org/wiki/WebSocket Подробнее].&lt;br /&gt;
Рукопожатие является HTTP запросом и при необходимости поддерживает прохождение Basic или Digest-авторизации. В качестве логина и пароля выступают указанные в [[Интеграция_с_Web-Socket_CRM|настройках Web-Socket]] значения. Описание процедуры рукопожатия описывается в документации к каждой версии протокола Web-Socket.&lt;br /&gt;
&lt;br /&gt;
Все сообщения имеют идентификаторы для организации серий типа «запрос-ответ» (поле &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''qid''&amp;lt;/span&amp;gt;).&lt;br /&gt;
Сообщения могут адресоваться конкретному пользователю или относиться к общим. В первом случае в сообщении должен присутствовать идентификатор, позволяющий различать одинаковые, но направляемые от разных пользователей команды из WebCRM в Oktell и наоборот соответственно.&lt;br /&gt;
&lt;br /&gt;
Возможные направления и типы сообщений:&lt;br /&gt;
:* Oktell генерирует события.&lt;br /&gt;
:* Oktell производит запросы к веб-системе. WebCRM отправляет ответы на получаемые запросы.&lt;br /&gt;
:* WebCRM производит запросы к Oktell. В том числе и команды. Oktell отправляет ответы на запросы.&lt;br /&gt;
&lt;br /&gt;
''В случае HTTP подключения к CRM работа ограничивается запросами из Oktell и ответами на них из CRM.''&lt;br /&gt;
&lt;br /&gt;
Каждое сообщение представляет из себя строку [http://ru.wikipedia.org/wiki/JSON JSON] или [http://ru.wikipedia.org/wiki/XML XML] в кодировке [http://ru.wikipedia.org/wiki/UTF8 UTF-8]. Сообщения в общем потоке данных в канале отделяются друг от друга в соотвествии с версией используемого протокола Web-Socket: &lt;br /&gt;
:*Версии [http://tools.ietf.org/html/rfc6455 rfc6455 v13], [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-08 v8], [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-07 v7] подразумевают использование фреймов, в заголовках которых определяется тип и размер.&lt;br /&gt;
:*Версии [http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76 76] и [http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-75 75] подразумевают отделение сообщений байтами 0 и 255. 0 - в начале сообщения, 255 - в конце. Форматы XML и JSON представления данных в текстовом виде гарантируют отсутствие байтов 0 и 255 в теле сообщений.&lt;br /&gt;
&lt;br /&gt;
''В случае HTTP подключения к CRM запросы из октелл отправляются методом POST с передачей параметра '''data''', значением которого является упакованная в base64 строка JSON или XML.''&lt;br /&gt;
&lt;br /&gt;
Формат самих сообщений определяется непосредственно [[#Список методов интерфейса|протоколом интеграции Oktell-WebCRM]]. Например вот так выглядит сообщение из Oktell в WebCRM о факте входящего вызова в формате json:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Json.jpg]]&lt;br /&gt;
&lt;br /&gt;
Сообщения длиной более 64 КБ упаковываются в [http://ru.wikipedia.org/wiki/Base64 Base64] и разбиваются на несколько сообщений длиной до 64К. Для этого используется формат multipart-сообщения в протоколе Oktell-WebCRM. Если версия протокола Web-Socket для передачи сообщений использует фреймы ([http://tools.ietf.org/html/rfc6455 rfc6455 v13], [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-08 v8], [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-07 v7]), то способ отправки длинных сообщений в нескольких фреймах определен в самом протоколе. Однако это имеет ограничение: при передаче одного длинного сообщения в нескольких фреймах, оно не может быть прервано передачей других сообщений.&lt;br /&gt;
&lt;br /&gt;
Структура каждого сообщения - это список из двух объектов, первый из которых - тип сообщения, второй - словарь параметров. В словаре обязательно присутствует идентификатор запроса (поле &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''qid''&amp;lt;/span&amp;gt; с любым текстовым уникальным значением). В случае, когда сообщение производится от имени пользователя, присутствуют его идентификаторы (&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''userid''&amp;lt;/span&amp;gt; и/или &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''userlogin''&amp;lt;/span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Среди параметров находятся и индивидуальные параметры сообщения. Поддерживается произвольная вложенность объектов: строк, чисел, дат, словарей, списков.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Dynamic&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамическое взаимодействие===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В момент создания сценариев в Oktell администратор имеет возможность настроить индивидуальное взаимодействие с WebCRM.&lt;br /&gt;
Взаимодействие представляет собой вызов определенного метода WebCRM с передачей в него входных параметров, и возможно ожидание его исполнения с возвратом (нескольких) выходных значений.&lt;br /&gt;
&lt;br /&gt;
Сразу после организации подключения к серверу WebCRM Oktell производит запрос доступных в WebCRM динамических методов (как было сказано выше, это происходит в рамках [[#Arch1|схемы интеграции 1]] и [[#Arch3|схемы интеграции 3]]). &lt;br /&gt;
В ответ WebCRM перечисляет список действий, инициативу исполнения которых она готова отдать наружу в Oktell. При описании метода в представлении указываются:&lt;br /&gt;
:* человеческое название;&lt;br /&gt;
:* краткий код метода;&lt;br /&gt;
:* описание для администратора, настраивающего Oktell;&lt;br /&gt;
:* список входных параметров с упоминанием типов (и возможных значений для перечислений);&lt;br /&gt;
:* список выходных параметров, если метод возвращает данные и призван влиять на алгоритм сценария в Oktell;&lt;br /&gt;
:* признак того, нужно ли исполнять метод с привязкой к конкретному пользователю и в направлении индивидуального пользовательского подключения, или это обращение к серверу вообще;&lt;br /&gt;
:* разрешено ли отменять исполнение (например для метода «открыть карточку такую-то» возможна отмена, означающая «закрыть карточку такую-то»);&lt;br /&gt;
:* куда Oktell направлять серверный запрос - через стандартное подключение (websocket или http в соответствии с настройками) или по HTTP/HTTPS на альтернативный URL веб-сервера (передача осуществляется точно также POST запросом с упаковкой сообщения в переменную ''data'' в виде base64.&lt;br /&gt;
&lt;br /&gt;
По каждому методу дополнительно описывается перечень входных и выходных параметров, их типы, способ исполнения метода (по организованному каналу или отдельным http-подключением), возможность его отмены (для длительных асинхронных операций, например метод ''Открыть диалоговую форму'' может быть отменен обратным методом ''Закрыть диалоговую форму'', а может быть прерван с тем же результатом).&lt;br /&gt;
&lt;br /&gt;
В [[#Interface|интеграционном интерфейсе Oktell&amp;lt;-&amp;gt;WebCRM]] отсутствует таким образом необходимость конкретизировать методы WebCRM. &lt;br /&gt;
В момент настройки сценария Oktell администратор уже имеет о них информацию и настраивает конкретный сценарий под место. &lt;br /&gt;
&lt;br /&gt;
Администратором определяется одно или несколько из доступных действий, определяется момент исполнения, определяются входные параметры или способ их вычисления, а также режим ожидания, таймаута или асинхронного выполнения. &lt;br /&gt;
В момент работы Oktell отправляет команду на исполнение в соответствии с определенными администратором настройками и представлением динамического метода. &lt;br /&gt;
Если метод призван исполняться синхронно и возвращать некие значения, то сценарий приостанавливается, а после получения ответа сохраняет результаты в переменных сценария и продолжает выполнение. &lt;br /&gt;
Работа с динамическими методами и формами производится в сценариях Oktell компонентом [[Общие_компоненты_сценариев#Действие/карточка_в_plugin_или_WebCRM|Действие в WebCRM]].&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Для примера: в момент поступления вызова Oktell определил номер абонента. Производит синхронное исполнение динамического метода WebCRM ''Вернуть ид компании по номеру телефона'', дожидается ответа и принимает в сценарий значение. Далее исполняет динамический метод ''Ответственный сотрудник по компании'', дожидается ответа и принимает в сценарий значение. Все это время абоненту проигрывается голосовое или музыкальное приветствие. Когда воспроизведение завершается, Oktell производит маршрутизацию в соответствии с вернувшимися значениями, а также в момент поступления звонка сотруднику исполняет динамический метод ''Открыть карточку компании'' с передачей в качестве параметра идентификатора, вернувшегося на первом шаге. В случае, если сотрудник не снимает трубку, Oktell отменяет исполнение метода, тем самым отдавая команду на закрытие карточки компании. &lt;br /&gt;
&lt;br /&gt;
Ни об одном из перечисленных в примере методов WebCRM сервер Oktell не знает, зато знает администратор, настраивающий систему на работу совместно с WebCRM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Подробно список и интерфейс методов динамического взаимодействия приведен в разделе [[#DynamicMethods|Методы динамического взаимодействия]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Interface&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Список методов общего интерфейса===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Взаимодействие происходит путем обмена сообщениями по установившемуся транспортному каналу. &lt;br /&gt;
Часть сообщений носят вид событий, часть - вид запросов (команд), часть - вид ответов на запросы.  Каждое сообщение представляет собой байтовое представление текста с escape-последовательностями, описывающего объект в виде структуры JSON (возможен вариант XML), преобразованного через кодировку UTF8. &lt;br /&gt;
&lt;br /&gt;
На первом уровне объекта - массив из двух значений: строковый кодовый идентификатор сообщения, именованный список параметров:&lt;br /&gt;
&amp;lt;pre&amp;gt;[ &amp;quot;messagecode&amp;quot;, {&amp;quot;var1&amp;quot;:&amp;quot;value1&amp;quot;, &amp;quot;var2&amp;quot;:&amp;quot;value2&amp;quot;, ...} ]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В общем случае среди параметров могут присутствовать сложные объекты (массивы и словари):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;var1&amp;quot;:[&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;]  или &amp;quot;var2&amp;quot;:{&amp;quot;a&amp;quot;:1, &amp;quot;b&amp;quot;:2, &amp;quot;c&amp;quot;:3}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В каждом сообщении присутствует параметр &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''qid''&amp;lt;/span&amp;gt;, содержащий уникальный строковый идентификатор сообщения, обеспечивающий возможность построения из сообщений серий вида «запрос-ответ».&lt;br /&gt;
В случае, когда сообщение относится к конкретному пользователю (отправляется от его имени), в нем присутствуют параметры &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''userlogin''&amp;lt;/span&amp;gt; и &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''userid''&amp;lt;/span&amp;gt;. По умолчанию синхронизация учетных записей пользователей происходит по их уникальным логинам. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Представление систем друг другу====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''whoareyou'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Двунаправленный запрос на возврат информации об удаленной стороне. Служит для выстраивания взаимоотношений на основе типа подключения, а также дает возможность получить имя системы для указания администратору.&lt;br /&gt;
Ответом является сообщение ''iam''.&lt;br /&gt;
&lt;br /&gt;
Применяется в [[#Arch1|схеме интеграции 1]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;whoareyou&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4FEEB8EF-DF4B-47AE-8EFE-4BDA577A6FF8&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;ws-server&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Iris CRM&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: 10.5&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* type - собственный тип сервера, осуществляющего запрос. &lt;br /&gt;
			Oktell при запросе указывает значение ''commserver''.&lt;br /&gt;
			WebCRM может указывать что либо отличное, например ''ws-server'' или ''crm-server''.&lt;br /&gt;
//* name - собственное название службы. &lt;br /&gt;
//* version - собственная версия службы. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''iam'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Двунаправленный ответ на запрос ''whoareyou''. Возвращает информацию об удаленной стороне.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;iam&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;080C0DF2-442B-410E-9204-4ADB3399FCC0&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;commserver&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Oktell&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: 100425,&lt;br /&gt;
  &amp;quot;build&amp;quot;: &amp;quot;2.5.3928.8022&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* type - тип удаленного сервера. &lt;br /&gt;
			Oktell при запросе указывает значение ''commserver''.&lt;br /&gt;
			WebCRM может указывать что либо отличное, например ''ws-server'' или ''crm-server''.&lt;br /&gt;
//* name - название службы на удаленнм сервере.&lt;br /&gt;
//* version - версия службы на удаленном сервере. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;DynamicMethods&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
====Методы динамического взаимодействия====&lt;br /&gt;
&lt;br /&gt;
Информация от CRM о поддерживаемых методах, доступных Oktell для инициации исполнения.&lt;br /&gt;
&lt;br /&gt;
Серия методов forms - частный случай методов, позволяющий выделить в отдельную категорию работу с карточками. Смысл и способ работы тот же самый. Тем не менее карточки могут быть представлены как методы.&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Методы: &lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; getavailablemethods&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; availablemethods&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; executemethod&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; methodresult&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; cancelmethod&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; executemethodwaitaborted&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Формы:&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; getavailableforms&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; availableforms&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; showform&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; closeform&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; formresult&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; showformwaitaborted&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;div id=&amp;quot;getavailablemethods&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getavailablemethods'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Отправляет из Oktell в CRM сообщение-запрос на возврат доступных динамических методов CRM. Отправляется только на сервер CRM (websocket или http).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getavailablemethods&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;76EF6E46-23DA-47B6-B3BD-A7076FEDE170&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''availablemethods'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-ответ из CRM в Oktell со списком доступных динамических методов CRM.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;availablemethods&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;76EF6E46-23DA-47B6-B3BD-A7076FEDE170&amp;quot;,&lt;br /&gt;
  &amp;quot;methods&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;key&amp;quot;: &amp;quot;16893E86-4D73-4F4C-8629-6E484B2CB5B0&amp;quot;, &lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Вернуть данные о компании&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Возвращает информацию о компании по одному из выбранных идентификаторов, чтобы в дальнейшем использовать при открытии карточки данных о компании&amp;quot;,&lt;br /&gt;
    &amp;quot;connectiontype&amp;quot;: &amp;quot;http&amp;quot;,&lt;br /&gt;
    &amp;quot;url&amp;quot;: &amp;quot;http://192.168.0.100:4000/pbxapi/method1.php&amp;quot;,&lt;br /&gt;
    &amp;quot;defineuser&amp;quot;: false,&lt;br /&gt;
    &amp;quot;allowcancel&amp;quot;: false,&lt;br /&gt;
    &amp;quot;inputparams&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;type&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Тип поиска&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;list&amp;quot;,&lt;br /&gt;
      &amp;quot;items&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
        id: &amp;quot;byphone&amp;quot;,&lt;br /&gt;
        name: &amp;quot;По номеру телефона&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       {&lt;br /&gt;
        id: &amp;quot;byaccount&amp;quot;,&lt;br /&gt;
        name: &amp;quot;По номеру договора&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
      ]&lt;br /&gt;
     },&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;data&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Значение идентификатора&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Номер телефона или номер договора (в соответствии с выбранным типом)&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
     },&lt;br /&gt;
     {...},&lt;br /&gt;
     {...}&lt;br /&gt;
    ]&lt;br /&gt;
    &amp;quot;outputparams&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;accountid&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Идентификатор клиента&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Для дальнейшей передачи на отображение карточки&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
     },&lt;br /&gt;
     {...},&lt;br /&gt;
     {...}&lt;br /&gt;
    ]&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;key&amp;quot;: &amp;quot;createrecord&amp;quot;, &lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Создать новое дело&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Отображает контактные данные об абоненте (комании или человеке) при входящем/исходящем звонке&amp;quot;,&lt;br /&gt;
    &amp;quot;connectiontype&amp;quot;: &amp;quot;websocket&amp;quot;,&lt;br /&gt;
    &amp;quot;defineuser&amp;quot;: true,&lt;br /&gt;
    &amp;quot;allowcancel&amp;quot;: false,&lt;br /&gt;
    &amp;quot;inputparams&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;sessionid&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Идентификатор сессии звонка&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Для связи с номером дела&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;outputparams&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;recordid&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Идентификатор созданного дела&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Для дальнейшей передачи на отображение карточки&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     {...},&lt;br /&gt;
     {...}&lt;br /&gt;
    ]&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;key&amp;quot;: &amp;quot;card_records&amp;quot;, &lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Показать карточку «ДЕЛА»&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Отображает контактные данные об абоненте (комании или человеке) при входящем/исходящем звонке&amp;quot;,&lt;br /&gt;
    &amp;quot;connectiontype&amp;quot;: &amp;quot;default&amp;quot;,&lt;br /&gt;
    &amp;quot;defineuser&amp;quot;: true,&lt;br /&gt;
    &amp;quot;allowcancel&amp;quot;: true,&lt;br /&gt;
    &amp;quot;inputparams&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;recordid&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Номер дела&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Номер дела, который ранее был создан при вызове метода «Создать запись дела»&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
     },&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;accountid&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Идентификатор клиента&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Идентификатор клиента в базе данных CRM&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
     },&lt;br /&gt;
     {...},&lt;br /&gt;
     {...}&lt;br /&gt;
    ]&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* method:key, param:key - произвольные строковые идентификаторы, упоминаемые при вызове форм из октелла&lt;br /&gt;
//* method:name, param:name - краткие человеческие названия, отображаются в списках при настройке сценария.&lt;br /&gt;
//* method:description, param:description - описания, если смысл формы/параметра нетривиален, и админу может потребоваться объясняение&lt;br /&gt;
//* method:inputparams - список входных параметров, значения которых требуется передавать в командном сообщении на исполнение соответствующего метода.&lt;br /&gt;
//* method:outputparams - список выходных параметров, значения которых можно ожидать в сообщении о выполнении метода.&lt;br /&gt;
//* param:type - тип параметра: string, int|int64, bool, decimal|float|double, datetime, list. Если не указан - строка. Дает администратору представление.&lt;br /&gt;
//* param:items - в случае если тип параметра=list, здесь идет перечисление вариантов списка&lt;br /&gt;
//* method:connectiontype - websocket|http|https|default - куда ломиться, через веб-сокет (дефолтный канал), или запросом к http-серверу. Дефолтный канал - если к CRM подключение по HTTP, то запрос по тому же адресу будет.&lt;br /&gt;
//* method:defineuser - true|false - определять пользователя, или запрос к веб-серверу вообще.&lt;br /&gt;
//* method:allowcancel - true|false - поддерживается ли отмена исполнения (например закрытие открывшейся карточки).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''executemethod'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-команда из Oktell в CRM на выполнение динамического метода (возможно у конкретного пользователя). В зависимости от представления метода может исполняться на сервере CRM или передаваться в пользовательское подключение. &lt;br /&gt;
&lt;br /&gt;
Параметр ''waitresponsems'' указывает интервал в миллисекундах, которое сценарий предполагает ожидать возврата ответа после исполнения метода; если значение равно нулю, значит метод исполняется асинхронно и ответ не нужен. При этом если происходит прерывание исполнения сценария, или в случае наличия множественных подключений от пользователя при получении первого ответа, отправляется уведомительное событие ''executemethodwaitaborted''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;executemethod&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4A8E20A1-57F9-4CA6-B4EE-221E2EB00364&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;methodkey&amp;quot;: &amp;quot;createrecord&amp;quot;,&lt;br /&gt;
  &amp;quot;executionid&amp;quot;: &amp;quot;25FC81FC-C5D0-40FB-B4E0-882352E12D86&amp;quot;,&lt;br /&gt;
  &amp;quot;inputparameters&amp;quot;: {&lt;br /&gt;
   &amp;quot;sessionid&amp;quot;: &amp;quot;2A2C48FE-D8B6-4B51-951A-09D31543D000&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;waitresponsems&amp;quot;: 0&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''methodresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-результат выполнения динамического метода из CRM в Oktell с возвратом выходных значений. Не отправляется, если исполнение прерывается командой CancelMethod.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;methodresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;A238110C-6B74-4980-AA23-41402B1E9B0E&amp;quot;,&lt;br /&gt;
  &amp;quot;methodkey&amp;quot;: &amp;quot;createrecord&amp;quot;,&lt;br /&gt;
  &amp;quot;executionid&amp;quot;: &amp;quot;25FC81FC-C5D0-40FB-B4E0-882352E12D86&amp;quot;,&lt;br /&gt;
  &amp;quot;outputparameters&amp;quot;: {&lt;br /&gt;
   &amp;quot;recordid&amp;quot;: &amp;quot;ADCB1376-BA66-496C-A56E-AB7A7D5A9193&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''cancelmethod'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-команда из Oktell на прекращение выполнения ранее запущенного динамического метода. Отправляется туда же, куда предварительно было отправлено сообщение ''executemethod''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cancelmethod&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;6ADC3F1E-B1DD-4768-BAF8-3EEB477B2F17&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;methodkey&amp;quot;: &amp;quot;card_records&amp;quot;,&lt;br /&gt;
  &amp;quot;executionid&amp;quot;: &amp;quot;25FC81FC-C5D0-40FB-B4E0-882352E12D86&amp;quot;,&lt;br /&gt;
  &amp;quot;forcecancel&amp;quot;: 0&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''executemethodwaitaborted'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-событие из Oktell, уведомляющее сервер/клиента CRM о прекращении ожидания ответа на выполнение метода. Отправляется туда же, куда предварительно было отправлено сообщение ''executemethod''. Отправляется только в том случае, если Oktell производил ожидание ответа (параметр ''waitresponsems'' не был равен нулю).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;executemethodwaitaborted&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;6ADC3F1E-B1DD-4768-BAF8-3EEB477B2F17&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;methodkey&amp;quot;: &amp;quot;card_records&amp;quot;,&lt;br /&gt;
  &amp;quot;executionid&amp;quot;: &amp;quot;25FC81FC-C5D0-40FB-B4E0-882352E12D86&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;div id=&amp;quot;getavailableforms&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getavailableforms'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Отправляет из Oktell в CRM сообщение-запрос на возврат доступных карточек CRM. Отправляется только на сервер CRM (websocket или http).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getavailableforms&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;7A1FF57A-ED91-4033-A42F-1D2AE630450E&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''availableforms'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-ответ из CRM в Oktell со списком доступных карточек CRM. Команда на отображение форм отправляется в клиентские подключение (или на сервер-мультиплексор), в серверный канал такие команды не отправляются. В этом основное различие динамических методов и форм.&lt;br /&gt;
&lt;br /&gt;
Следует понимать, что формы могут иметь разное назначение, и соответственно разный способ работы с данными. Например форма некоторого запроса отображается с целью получения данных обратно в сценарий - в этом случае форме нужны выходные параметры, и вызов ее происходит с ожиданием ответа. Одновременно могут существовать и использоваться формы, работающие с данными из CRM и взаимодействующие непосредственно с CRM, возможно находящиеся в отображении длительное время. В этом случае Oktell выступает лишь как инициатор их открытия с передачей входных идентификационных параметров. Таким формам выходные значения не нужны.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;availableforms&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;7A1FF57A-ED91-4033-A42F-1D2AE630450E&amp;quot;,&lt;br /&gt;
  &amp;quot;forms&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;key&amp;quot;: &amp;quot;formB840825C&amp;quot;, &lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Данные о компании&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Отображает контактные данные об абоненте (комании или человеке) при входящем/исходящем звонке&amp;quot;,&lt;br /&gt;
    &amp;quot;inputparams&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;accountid&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Код компании&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Код компании, который CRM возвращает в поле [accountid] в ответ на запрос данных о компании по номеру телефона&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
     },&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;page&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Активная страница&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Открываемая страница формы по умолчанию при открытии карточки&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;list&amp;quot;,&lt;br /&gt;
      &amp;quot;items&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
        id: &amp;quot;page1&amp;quot;,&lt;br /&gt;
        name: &amp;quot;Контактные данные&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       {&lt;br /&gt;
        id: &amp;quot;page2&amp;quot;,&lt;br /&gt;
        name: &amp;quot;История взаимодействия&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       {&lt;br /&gt;
        id: &amp;quot;page3&amp;quot;,&lt;br /&gt;
        name: &amp;quot;Комментарии&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
      ]&lt;br /&gt;
     {...},&lt;br /&gt;
     {...}&lt;br /&gt;
    ]&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''showform'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-команда из Oktell в CRM на открытие карточки у конкретного пользователя. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;showform&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;5CF770AE-E308-41DA-B89E-7BBCE75BE36F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;formkey&amp;quot;: &amp;quot;formB840825C&amp;quot;,&lt;br /&gt;
  &amp;quot;windowid&amp;quot;: &amp;quot;9F5D8B1A-8818-41EA-A240-04DA07498C40&amp;quot;,&lt;br /&gt;
  &amp;quot;inputparameters&amp;quot;: {&lt;br /&gt;
   &amp;quot;accountid&amp;quot;: &amp;quot;05379F49-AB22-4872-B2C2-0D4BA019EA0B&amp;quot;,&lt;br /&gt;
   &amp;quot;page&amp;quot;: &amp;quot;page2&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;waitresponsems&amp;quot;: 0&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''formresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-результат из CRM в Oktell при закрытии карточки пользователем с возвратом выходных значений. Не отправляется, если отображение прерывается командой CloseForm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;formresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;EC9E1619-AC1B-4071-98B9-30808B9ED0EC&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;formkey&amp;quot;: &amp;quot;formB840825C&amp;quot;,&lt;br /&gt;
  &amp;quot;windowid&amp;quot;: &amp;quot;9F5D8B1A-8818-41EA-A240-04DA07498C40&amp;quot;,&lt;br /&gt;
  &amp;quot;outputparameters&amp;quot;: {&lt;br /&gt;
   &amp;quot;comment&amp;quot;: &amp;quot;блаблабла&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''closeform'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-команда из Oktell на закрытие карточки у конкретного пользователя. Отправляется туда же, куда предварительно было отправлено сообщение ''executemethod''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;closeform&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;FAA1A503-FEC6-4D23-ADA9-2E4FD63F2C96&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;formkey&amp;quot;: &amp;quot;formB840825C&amp;quot;,&lt;br /&gt;
  &amp;quot;windowid&amp;quot;: &amp;quot;9F5D8B1A-8818-41EA-A240-04DA07498C40&amp;quot;,&lt;br /&gt;
  &amp;quot;forceclose&amp;quot;: 0&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''showformwaitaborted'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-событие из Oktell, уведомляющее сервер/клиента CRM о прекращении ожидания ответа на отображение формы. Отправляется туда же, куда предварительно было отправлено сообщение ''showform''. Отправляется только в том случае, если Oktell производил ожидание ответа (параметр ''waitresponsems'' не был равен нулю).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;showformwaitaborted&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;6ADC3F1E-B1DD-4768-BAF8-3EEB477B2F17&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;formkey&amp;quot;: &amp;quot;formB840825C&amp;quot;,&lt;br /&gt;
  &amp;quot;windowid&amp;quot;: &amp;quot;9F5D8B1A-8818-41EA-A240-04DA07498C40&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Обмен данными об активных пользователях====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getactiveusers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из Oktell в CRM на возврат текущих активных (авторизованных) пользователей. Применяется при старте одной из систем в момент организации подключения.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getactiveusers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;9C44D978-E380-4405-B1B9-C4894BF188A7&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''activeusers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответное сообщение из CRM в Oktell со списком активных авторизованных пользователей CRM.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;activeusers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;9C44D978-E380-4405-B1B9-C4894BF188A7&amp;quot;,&lt;br /&gt;
  &amp;quot;users&amp;quot;: [&lt;br /&gt;
   {&amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;, &amp;quot;userid&amp;quot;: &amp;quot;20394857203948752345&amp;quot;},&lt;br /&gt;
   {&amp;quot;userlogin&amp;quot;: &amp;quot;petrov&amp;quot;, &amp;quot;userid&amp;quot;: &amp;quot;kasjdfhlaksjdfhlaks&amp;quot;},&lt;br /&gt;
   {&amp;quot;userlogin&amp;quot;: &amp;quot;sidorov&amp;quot;, &amp;quot;userid&amp;quot;: &amp;quot;987495873948573945&amp;quot;}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;div id=&amp;quot;login&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''login'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из CRM в Oktell об авторизации пользователя. Запрос кросс-авторизации в Oktell в рамках [[#Arch1|схемы интеграции 1]].&lt;br /&gt;
&lt;br /&gt;
Логин используется в частности для привязки пользователя к конкретному телефонному аппарату. Возможны разные варианты привязки:&lt;br /&gt;
# Для конкретного телефона в [[Карта сети|карте сети]] Oktell задается конкретный пользователь WebCRM, при логине производится автоматическая привязка (если телефону назначен также пользователь по умолчанию, то он отключается). При выходе выходе пользователя из WebCRM происходит обратный процесс. При этом телефоном считается учетная запись (комбинация логин-пароль или IP-адрес устройства, в зависимости от типа регистрации), и фактически разные устройства могут в течение времени принимать эти значения.&lt;br /&gt;
# Во время логина WebCRM в сообщении указывает любой идентификатор (или их список) рабочего места, с которого осуществляется запуск (это может быть HostName, IP-адрес, или любой другой уникальный идентификатор, указанный для сопоставления также и в карте сети в качестве адреса компьютера). Соединенный с этим компьютером логической связью телефон в карте сети становится рабочим телефоном авторизованного таким образом пользователя. По аналогии с работой клиентских приложений Oktell.&lt;br /&gt;
&lt;br /&gt;
В случае индивидуальных подключений [[#Arch2|схемы интеграции 2]] и [[#Arch3|схемы интеграции 3]] требуется указание как логина, так и пароля для проведения полной проверки, причем пароль необходимо указывать в виде MD5 хеша. При этом возможно использование сессий (параметры ''sessionid'' и ''expires''). Клиент указывает время жизни сессии в секундах, сервер возвращает идентификатор сессии; в дальнейшем при повторном подключении в указанный интервал времени клиент может указывать сессию и новое время жизни для продления, но не указывать пароль. Если сессия существует (время не вышло, сервер не перезагружался), то авторизация будет подтверждена.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ВНИМАНИЕ! В версии 2.8 пароли case-sensitive, в версии 2.7 пароли case-insensitive. При переходе между версиями до полного обновления всех паролей рекомендуется указывать пароль в дублированном виде: параметр ''password'' - MD5(lowercase), ''Password'' - MD5(normalcase).&lt;br /&gt;
&lt;br /&gt;
В случае [[#Arch1|схемы интеграции 1]] подразумевается, что авторизация пользователя происходит в WebCRM, и указания пароля при кросс-логине в Oktell не требуется, равно как и сессий. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;login&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;9D484E0E-BE08-47B5-ABBD-490936881056&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;,&lt;br /&gt;
  &amp;quot;password&amp;quot;: &amp;quot;D41D8CD98F00B204E9800998ECF8427E&amp;quot;,&lt;br /&gt;
  &amp;quot;expires&amp;quot;: 86400,&lt;br /&gt;
  &amp;quot;usewebrtc&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;login&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;9D484E0E-BE08-47B5-ABBD-490936881056&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;login&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;9D484E0E-BE08-47B5-ABBD-490936881056&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;,&lt;br /&gt;
  &amp;quot;workplace&amp;quot;: &amp;quot;wp001&amp;quot;,&lt;br /&gt;
  &amp;quot;sessionid&amp;quot;: &amp;quot;838AC713-9D4D-43E2-A57D-D4F2D7545FB5&amp;quot;,&lt;br /&gt;
  &amp;quot;expires&amp;quot;: 86400&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;login&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;9D484E0E-BE08-47B5-ABBD-490936881056&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;,&lt;br /&gt;
  &amp;quot;workplace&amp;quot;: [&lt;br /&gt;
   &amp;quot;wp001&amp;quot;,&lt;br /&gt;
   &amp;quot;192.168.0.204&amp;quot;,&lt;br /&gt;
   &amp;quot;81.22.217.33&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''loginresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о результате авторизации или кросс-авторизации пользователя. Отправляется в ответ на запрос авторизации в Oktell методом ''login'', а в рамках [[#Arch1|схемы интеграции 1]] может быть отправлено самостоятельно по результатам обработки сообщения ''activeusers'' после установки связи с CRM. В случае запроса использования клиентом WebRTC, в ответе направляется информация по учетной записи телефона, ожидающей подключения по SIP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;loginresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;939AA33E-011F-4FEC-B60A-8BC1B4888B5A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 50093,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;Пользователь уже зарегистрирован&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;loginresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;939AA33E-011F-4FEC-B60A-8BC1B4888B5A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;sessionid&amp;quot;: &amp;quot;838AC713-9D4D-43E2-A57D-D4F2D7545FB5&amp;quot;,&lt;br /&gt;
  &amp;quot;expires&amp;quot;: 10000,&lt;br /&gt;
  &amp;quot;sipuser&amp;quot;: &amp;quot;phone81&amp;quot;,&lt;br /&gt;
  &amp;quot;siplogin&amp;quot;: &amp;quot;phone81&amp;quot;,&lt;br /&gt;
  &amp;quot;sippass&amp;quot;: &amp;quot;3kd94FnI&amp;quot;,&lt;br /&gt;
  &amp;quot;sipport&amp;quot;: 5060&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''logout'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из CRM в Oktell о выходе (логауте) пользователя. Команда на кросс-логаут в Oktell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;logout&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;9D484E0E-BE08-47B5-ABBD-490936881056&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''logoutresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о результате кросс-логаута пользователя. Может быть отправлено в ответ на запрос кросс-логаута в Oktell, а может быть отправлено самостоятельно в случае длительного отсутствия откликов от пользователя (не задействовано) или выгрузки пользователя по инициативе сервера.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;logoutresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4B25E210-2D67-4675-A5AE-46DC9CBC32F9&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''updatesession'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Команда из CRM в Oktell о продлении сессии пользователя (для сохранения возможности производить вход без пароля).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;updatesession&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;9D484E0E-BE08-47B5-ABBD-490936881056&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;,&lt;br /&gt;
  &amp;quot;sessionid&amp;quot;: &amp;quot;9238749273982734023&amp;quot;,&lt;br /&gt;
  &amp;quot;expires&amp;quot;: 86400&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Обмен состояниями пользователей====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''entercallcenter'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM на вход в режим call-центра. При проведении изменений в ответ отправляется сообщение userstatechanged.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;entercallcenter&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;7DD2ED7A-B6BF-4988-A780-99719C65CA5D&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''exitcallcenter'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM на выход из режима call-центра. При проведении изменений в ответ отправляется сообщение userstatechanged.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;exitcallcenter&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;6E899456-C373-48EB-949E-E2C0D79D45EA&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''checkmyuserprivilege'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM на проверку наличия у пользователя обще-ролевой привилегии.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;checkmyuserprivilege&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;code&amp;quot;: &amp;quot;DashboardCreate&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''checkmyuserprivilegeresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ на ''checkmyuserprivilege''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;checkmyuserprivilegeresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;code&amp;quot;: &amp;quot;DashboardCreate&amp;quot;,&lt;br /&gt;
  &amp;quot;hasprivilege&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getmyuserprivileges'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM на возврат всех имеющихся у пользователя обще-ролевых привилегий.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getmyuserprivileges&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getmyuserprivilegesresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ на ''getmyuserprivileges''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getmyuserprivilegesresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;privileges&amp;quot;:[&lt;br /&gt;
    &amp;quot;ExtWP&amp;quot;,&lt;br /&gt;
    &amp;quot;ViewOffice&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
   ]&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Текстовый чат v.1 (версии до 2.8.130909)====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обмен текстовыми сообщениями в первоначальном варианте, где подразумевается только диалоговое общение между двумя пользователями.&lt;br /&gt;
Начиная с версии 2.8.130909 этот способ считается устаревшим. &lt;br /&gt;
  &lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''usertextmessagereceived'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-событие из Oktell в CRM о новом входящем текстовом сообщении чата.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;usertextmessagereceived&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;D5582E04-2964-438C-A8DB-21AF898BBAE0&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;messageid&amp;quot;: &amp;quot;0263C7BF-DEB3-406F-9CF9-6F56D828C755&amp;quot;,&lt;br /&gt;
  &amp;quot;snduserlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
  &amp;quot;snduserid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
  &amp;quot;sndusername&amp;quot;: &amp;quot;Петров Антон Григорьевич&amp;quot;,&lt;br /&gt;
  &amp;quot;messagetext&amp;quot;: &amp;quot;раз два три четыре пять вышел зайчик погулять&amp;quot;,&lt;br /&gt;
  &amp;quot;messagedate&amp;quot;: &amp;quot;2011-03-27 14:12:28&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''usertextmessageviewed'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-событие из Oktell в CRM о прочитанности отправленного сообщения.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;usertextmessageviewed&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;D5582E04-2964-438C-A8DB-21AF898BBAE0&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;vieweduserid&amp;quot;: &amp;quot;66D12297-E400-4862-BD24-F6DACCFDF9DA&amp;quot;,&lt;br /&gt;
  &amp;quot;messageids&amp;quot;: [&lt;br /&gt;
    &amp;quot;0263C7BF-DEB3-406F-9CF9-6F56D828C755&amp;quot;,&lt;br /&gt;
    &amp;quot;4B5110FD-899B-4429-A659-2B9695B4D89E&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''sendusertextmessage'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на отправку текстового сообщения в рамках чата другому пользователю. &lt;br /&gt;
Вложения и сообщения в конференциях - опция, используемая веб-клиентом Oktell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;sendusertextmessage&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;messageid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;recvuserlogin&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;recvuserid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;messagetext&amp;quot;: &amp;quot;раз два три четыре пять вышел зайчик погулять&amp;quot;,&lt;br /&gt;
  &amp;quot;isconferencechat&amp;quot;: true,&lt;br /&gt;
  &amp;quot;files&amp;quot;: [&lt;br /&gt;
   &amp;quot;Temp\1.jpg&amp;quot;,&lt;br /&gt;
   &amp;quot;Temp\2.jpg&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''sendusertextmessageresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на команду отправки сообщения.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;sendusertextmessageresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;messageid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;yyyy-MM-dd HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;sentdate&amp;quot;: &amp;quot;2012-03-18 13:06:28&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setusermessageviewed'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на выставление признака прочитанности текстового сообщения пользователем. В ответ возвращается количество реально отмеченных сообщений. Может быть больше или меньше указанного. Событие о прочитанности отправляется пользователю, указанному в поле senderuserid (параметр может не указываться).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setusermessageviewed&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;AA29AE60-50C3-48EE-A32E-3D98265D7412&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;senderuserid&amp;quot;: &amp;quot;689BD58D-2288-4E93-8647-58FB0756F3CA&amp;quot;,&lt;br /&gt;
  &amp;quot;messageids&amp;quot;: [ &lt;br /&gt;
    &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;, &lt;br /&gt;
    &amp;quot;4748964E-9ADC-4999-9ACB-12B8B46660CF&amp;quot; &lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''setusermessageviewedresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на команду установки признака прочитанности ''setusermessageviewed''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setusermessageviewedresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;AA29AE60-50C3-48EE-A32E-3D98265D7412&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;updatedcount&amp;quot;: 12&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Текстовый чат v.2 (версии начиная с 2.8.130909)====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обмен текстовыми сообщениями протекает в рамках чатов - индивидуальных, массовых, прикрепленных. Вводится понятие чата с соответствующими свойствами - названием, списком участников, возможностью их редактирования. Требует подписки на совокупность событий ''chat''.&lt;br /&gt;
Интерфейс доступен и считается основным начиная с версии 2.8.130909.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatcreate'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на создание нового чата. Чаты создаются одним из участников, все остальные уведомляются о создании. Чаты могут существовать сколь угодно длительное время и использоваться многократно.&lt;br /&gt;
Идентификатор может не указываться, тогда он генерируется и возвращается в ответе. &lt;br /&gt;
Типы: 1 - приватный диалог двух участников, 2 - чат с нерегламентированным количеством участников, 3 - привязанный к конференции. &lt;br /&gt;
По результатам создания генерируется и отправляется событие ''[[chatcreated]]'' всем заявленным участникам чата. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatcreate&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;название чата&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;linkedobjectid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;&lt;br /&gt;
  &amp;quot;members&amp;quot;: [&lt;br /&gt;
    &amp;quot;D9E54EB7-D3D9-43D6-B70C-019ABC6FC457&amp;quot;,&lt;br /&gt;
    &amp;quot;A530C87E-6A07-471C-B70C-E7C1C31AD9A7&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatcreateresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на команду создания нового чата.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatcreateresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatsetname'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на изменение названия существующему чату. &lt;br /&gt;
По результатам изменения генерируется и отправляется событие ''[[chatnamechanged]]'' всем авторизованным участникам чата. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatsetname&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;новое название чата&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatsetnameresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на команду изменения названия чата.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatsetnameresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chataddmembers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на добавление участников к существующему чату. &lt;br /&gt;
Операция доступна только для участников чата.&lt;br /&gt;
В качестве ключей участников ожидаются идентификаторы или логины (более затратная операция в части поиска).&lt;br /&gt;
По результатам изменения генерируется и отправляется событие ''[[chatmemberadded]]'' всем авторизованным участникам чата, включая новых. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chataddmembers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;members&amp;quot;: [&lt;br /&gt;
    &amp;quot;D9E54EB7-D3D9-43D6-B70C-019ABC6FC457&amp;quot;,&lt;br /&gt;
    &amp;quot;A530C87E-6A07-471C-B70C-E7C1C31AD9A7&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chataddmembersresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на команду добавления участников к существующему чату.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chataddmembersresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatremovemembers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на удаление участников из существующего чата. &lt;br /&gt;
Операция доступна только для создателя чата.&lt;br /&gt;
В качестве ключей участников ожидаются идентификаторы или логины (более затратная операция в части поиска).&lt;br /&gt;
По результатам изменения генерируется и отправляется событие ''[[chatmemberremoved]]'' всем авторизованным участникам чата, включая удаленных. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatremovemembers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;members&amp;quot;: [&lt;br /&gt;
    &amp;quot;D9E54EB7-D3D9-43D6-B70C-019ABC6FC457&amp;quot;,&lt;br /&gt;
    &amp;quot;A530C87E-6A07-471C-B70C-E7C1C31AD9A7&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatremovemembersresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на команду удаления участников из существующего чата.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatremovemembersresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatgetmembers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на получение информации о текущих участниках указанного чата. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgetmembers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatgetmembersresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на запрос информации о текущих участниках указанного чата.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgetmembersresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;members&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;id&amp;quot;:&amp;quot;D9E54EB7-D3D9-43D6-B70C-019ABC6FC457&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatsendmessage'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на отправку сообщения в указанный чат. &lt;br /&gt;
Идентификатор messageid может не указываться, тогда генерируется и возвращается в ответе. Сообщение может содержать вложенные файлы ('''files''') и указание на скрытое их хранение на диске ('''hidefiles''').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatsendmessage&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;&lt;br /&gt;
  &amp;quot;messageid&amp;quot;: &amp;quot;2CD5BB8F-CC88-4D01-8A1F-5CEB2CD72AAE&amp;quot;,&lt;br /&gt;
  &amp;quot;messagetext&amp;quot;: &amp;quot;раз два три четыре пять вышел зайчик погулять&amp;quot;&lt;br /&gt;
  &amp;quot;hidefiles&amp;quot;: false,&lt;br /&gt;
  &amp;quot;files&amp;quot;: [&lt;br /&gt;
    &amp;quot;Temp\1.jpg&amp;quot;,&lt;br /&gt;
    &amp;quot;Temp\2.txt&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatsendmessageresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на отправку сообщения в указанный чат.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatsendmessageresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;messageid&amp;quot;: &amp;quot;2CD5BB8F-CC88-4D01-8A1F-5CEB2CD72AAE&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatsetmessageviewed'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на установку флага прочитанности указанного сообщения. Вместе с указанным сообщением маркируются прочитанными также все предшествующие сообщения этого же чата.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatsetmessageviewed&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;messageid&amp;quot;: &amp;quot;D9E54EB7-D3D9-43D6-B70C-019ABC6FC457&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatsetmessageviewedresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на установку флага прочитанности сообщения.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatsetmessageviewedresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatgetprivateid'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на получение идентификатора существующего приватного диалога между двумя пользователями, один из которых - авторизованный пользователь. Приватные диалоги соответствуют чатам с типом &amp;quot;1&amp;quot;.&lt;br /&gt;
В системе возможно существование нескольких приватных диалогов между пользователями, в этом случае возвращается любой из них. В случае отсутствия приватных диалогов в качестве идентификатора возвращается null.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgetprivateid&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;opponentid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatgetprivateidresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на запрос идентификатора приватного диалога. Если приватный диалог между пользователями не найден, возвращается null.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgetprivateidresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;D9E54EB7-D3D9-43D6-B70C-019ABC6FC457&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatgetbyid'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на получение информации о чате, указанному с помощью идентификатора. Среди информационных полей возвращаются название, количество участников, последнее сообщение в чате с признаком ''прочитано/не прочитано'', а также идентификатор оппонента, если это приватный диалог.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgetbyid&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatgetbyidresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на запрос информации о чате. Если чат не найден по указанному идентификатору, возвращается null.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgetbyidresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;yyyy-MM-dd HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;chat&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;quot;01483664-9D99-4B1B-8131-C46386A6FC68&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;:&amp;quot;приватный чат&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
    &amp;quot;membercount&amp;quot;:&amp;quot;4&amp;quot;,&lt;br /&gt;
    &amp;quot;privateopponentid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
    &amp;quot;linkedobjectid&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lastdtutc&amp;quot;:&amp;quot;2013-09-05 14:08:02&amp;quot;,&lt;br /&gt;
    &amp;quot;lastmessage&amp;quot;:{&lt;br /&gt;
      &amp;quot;id&amp;quot;:&amp;quot;4067F854-E88A-40C1-82C5-7F125A77A25F&amp;quot;,&lt;br /&gt;
      &amp;quot;amiauthor&amp;quot;:false,&lt;br /&gt;
      &amp;quot;authorid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
      &amp;quot;authorlogin&amp;quot;:&amp;quot;sergeev&amp;quot;,&lt;br /&gt;
      &amp;quot;authorname&amp;quot;:&amp;quot;Сергеев Вахтанг Абрикосович&amp;quot;,&lt;br /&gt;
      &amp;quot;dtutc&amp;quot;:&amp;quot;2013-09-05 14:08:02&amp;quot;,&lt;br /&gt;
      &amp;quot;text&amp;quot;:&amp;quot;Зайди как освободишься&amp;quot;,&lt;br /&gt;
      &amp;quot;isnew&amp;quot;:&amp;quot;true&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatgethotlist'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на получение информации о горячих чатах, в рамках которых последние сообщения были сравнительно недавно. &lt;br /&gt;
Запрос информации осуществляется с указанием нужной страницы (в сортированном по убыванию даты последней активности списке ''count'' элементов, начиная с ''startidx'').&lt;br /&gt;
Можно также наложить дополнительные фильтры, применяемые к названию чата и к имени оппонента приватного диалога (''search1'' и ''search2''). &lt;br /&gt;
Возвращаемая информация аналогична методу ''chatgetbyid''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgethotlist&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;startidx&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;count&amp;quot;: 10,&lt;br /&gt;
  &amp;quot;search1&amp;quot;: &amp;quot;мой чат&amp;quot;,&lt;br /&gt;
  &amp;quot;search2&amp;quot;: &amp;quot;vjq xfn&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatgethotlistresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на запрос информации о горячих чатах.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgethotlistresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;yyyy-MM-dd HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;chatlist&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;quot;01483664-9D99-4B1B-8131-C46386A6FC68&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;:&amp;quot;приватный чат&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
    &amp;quot;membercount&amp;quot;:&amp;quot;4&amp;quot;,&lt;br /&gt;
    &amp;quot;privateopponentid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
    &amp;quot;linkedobjectid&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lastdtutc&amp;quot;:&amp;quot;2013-09-05 14:08:02&amp;quot;,&lt;br /&gt;
    &amp;quot;lastmessage&amp;quot;:{&lt;br /&gt;
      &amp;quot;id&amp;quot;:&amp;quot;4067F854-E88A-40C1-82C5-7F125A77A25F&amp;quot;,&lt;br /&gt;
      &amp;quot;amiauthor&amp;quot;:false,&lt;br /&gt;
      &amp;quot;authorid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
      &amp;quot;authorlogin&amp;quot;:&amp;quot;sergeev&amp;quot;,&lt;br /&gt;
      &amp;quot;authorname&amp;quot;:&amp;quot;Сергеев Вахтанг Абрикосович&amp;quot;,&lt;br /&gt;
      &amp;quot;dtutc&amp;quot;:&amp;quot;2013-09-05 14:08:02&amp;quot;,&lt;br /&gt;
      &amp;quot;text&amp;quot;:&amp;quot;Зайди как освободишься&amp;quot;,&lt;br /&gt;
      &amp;quot;isnew&amp;quot;:&amp;quot;true&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatgettotalnewmessagecount'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на получение количества непрочитанных сообщений всего по всем чатам с участием пользователя. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgettotalnewmessagecount&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatgettotalnewmessagecountresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на запрос количества непрочитанных сообщений всего.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgettotalnewmessagecountresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;count&amp;quot;: 31&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatgetmessagehistory'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на получение истории сообщений по чату. &lt;br /&gt;
Может быть наложен дополнительный фильтр на текст сообщения (''search1'' и ''search2''), ограничения на период выдачи истории (''dtstartutc'', ''dtstoputc''). По умолчанию весь период истории без фильтрации по тексту сообщений.&lt;br /&gt;
Данные выдаются из сортированного по убыванию даты отправки списка сообщений с указанной страницы (''startidx'', ''count''). По умолчанию первые 10 сообщений.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgetmessagehistory&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;14D6DBB7-D5CB-471B-888A-9AACC8CD737B&amp;quot;,&lt;br /&gt;
  &amp;quot;startidx&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;count&amp;quot;: 50,&lt;br /&gt;
  &amp;quot;dtstartutc&amp;quot;: &amp;quot;2013-07-12 13:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;dtstoputc&amp;quot;: &amp;quot;2013-07-12 15:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;search1&amp;quot;: &amp;quot;abkmnh&amp;quot;,&lt;br /&gt;
  &amp;quot;search2&amp;quot;: &amp;quot;фильтр&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatgetmessagehistoryresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на запрос истории сообщений в чате.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgetmessagehistoryresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;yyyy-MM-dd HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;messagelist&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
     &amp;quot;id&amp;quot;:&amp;quot;4067F854-E88A-40C1-82C5-7F125A77A25F&amp;quot;,&lt;br /&gt;
     &amp;quot;amiauthor&amp;quot;:false,&lt;br /&gt;
     &amp;quot;authorid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
     &amp;quot;authorlogin&amp;quot;:&amp;quot;sergeev&amp;quot;,&lt;br /&gt;
     &amp;quot;authorname&amp;quot;:&amp;quot;Сергеев Вахтанг Абрикосович&amp;quot;,&lt;br /&gt;
     &amp;quot;dtutc&amp;quot;:&amp;quot;2013-09-05 14:08:02&amp;quot;,&lt;br /&gt;
     &amp;quot;text&amp;quot;:&amp;quot;Зайди как освободишься&amp;quot;,&lt;br /&gt;
     &amp;quot;isnew&amp;quot;:&amp;quot;true&amp;quot;&lt;br /&gt;
     &amp;quot;files&amp;quot;:[&lt;br /&gt;
       {&lt;br /&gt;
        &amp;quot;path&amp;quot;:&amp;quot;Temp\1.jpg&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;:329002&lt;br /&gt;
       },&lt;br /&gt;
       ...&lt;br /&gt;
     ]&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatcreated'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о факте создания нового текстового чата с участием авторизованного пользователя.&lt;br /&gt;
Отправляется всем участникам созданного чата.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatcreated&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;yyyy-MM-dd HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;chat&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;quot;01483664-9D99-4B1B-8131-C46386A6FC68&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;:&amp;quot;приватный чат&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
    &amp;quot;membercount&amp;quot;:&amp;quot;4&amp;quot;,&lt;br /&gt;
    &amp;quot;privateopponentid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
    &amp;quot;linkedobjectid&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lastdtutc&amp;quot;:&amp;quot;2013-09-05 14:08:02&amp;quot;,&lt;br /&gt;
    &amp;quot;members&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      ...&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatnamechanged'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о факте изменения названия существующего текстового чата.&lt;br /&gt;
Отправляется всем участникам этого чата.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatnamechanged&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;41EE8C8F-A7DE-4F78-8F57-7F299CE2767B&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;новое имя&amp;quot;&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatmemberadded'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о факте добавления новых участников к существующему текстовому чату. &lt;br /&gt;
Отправляется всем участникам этого чата.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatmemberadded&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;41EE8C8F-A7DE-4F78-8F57-7F299CE2767B&amp;quot;,&lt;br /&gt;
  &amp;quot;members&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatmemberremoved'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о факте удаления некоторых участников из существующего текстового чата. &lt;br /&gt;
Отправляется всем участникам этого чата.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatmemberremoved&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;41EE8C8F-A7DE-4F78-8F57-7F299CE2767B&amp;quot;,&lt;br /&gt;
  &amp;quot;members&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatmessage'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о факте поступления сообщения из текстового чата. &lt;br /&gt;
Отправляется всем участникам этого чата, включая отправителя (в этом случае поля authorname и authorlogin отсутствуют).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatmessage&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;yyyy-MM-dd HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;41EE8C8F-A7DE-4F78-8F57-7F299CE2767B&amp;quot;,&lt;br /&gt;
  &amp;quot;messageid&amp;quot;: &amp;quot;14D6DBB7-D5CB-471B-888A-9AACC8CD737B&amp;quot;,&lt;br /&gt;
  &amp;quot;amiauthor&amp;quot;: false,&lt;br /&gt;
  &amp;quot;authorid&amp;quot;: &amp;quot;B1D4DCA9-2246-4EA1-B71E-68FF29AC92E4&amp;quot;,&lt;br /&gt;
  &amp;quot;authorname&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;authorlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;dtutc&amp;quot;: &amp;quot;2013-09-05 16:10:04&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;тело сообщения&amp;quot;,&lt;br /&gt;
  &amp;quot;isnew&amp;quot;: true&lt;br /&gt;
  &amp;quot;files&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
     &amp;quot;path&amp;quot;:&amp;quot;Temp\1.jpg&amp;quot;,&lt;br /&gt;
     &amp;quot;size&amp;quot;:329002&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatmessageviewed'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о факте прочтения сообщения кем либо из участников текстового чата. &lt;br /&gt;
Генерируется для отправителя сообщения, а также для пользователя, который прочитал сообщение.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatmessageviewed&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;41EE8C8F-A7DE-4F78-8F57-7F299CE2767B&amp;quot;,&lt;br /&gt;
  &amp;quot;messageid&amp;quot;: &amp;quot;14D6DBB7-D5CB-471B-888A-9AACC8CD737B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Голосовая почта====&lt;br /&gt;
 &lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''voicemailreceived'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о факте поступления голосовой почты на ящик пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;voicemailreceived&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;080C0DF2-442B-410E-9204-4ADB3399FCC0&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Всплывающие уведомления====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''shownotifymessage'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Команда из Oktell в CRM об уведомлении пользователя по аналогии с всплывающими уведомлениями клиентского приложения Oktell&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;shownotifymessage&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;99CC8C57-1793-486A-AFB1-6E5CA3E6855E&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;id&amp;quot;: &amp;quot;A33027E1-096F-38B8-1198-BB4D7C15823A&amp;quot;,&lt;br /&gt;
  &amp;quot;sender&amp;quot;: &amp;quot;АТС&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
  &amp;quot;savedb&amp;quot;: &amp;quot;true&amp;quot;,&lt;br /&gt;
  &amp;quot;autohide&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;dd.MM.yyyy HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;dt&amp;quot;: &amp;quot;25.09.2011 13:07:12&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: 262144,&lt;br /&gt;
  &amp;quot;backcolor&amp;quot;: &amp;quot;00FF0000&amp;quot;,&lt;br /&gt;
  &amp;quot;uniquekey&amp;quot;: &amp;quot;E7899B61-55C3-4007-91EE-DDB348913AA8&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* id - идентификатор сообщения. Присутствует, если сообщение сохранено в БД.&lt;br /&gt;
//* savedb: true|false. Сохранено ли сообщение в БД.&lt;br /&gt;
//* dt - дата/время генерации уведомления.&lt;br /&gt;
//* uniquekey - код сообщения. Может отсутствовать. Но если есть - допускается одновременное отображение только &lt;br /&gt;
             одного уведомления с таким кодом (либо закрывать автоматически предыдущее, либо не отображать это)&lt;br /&gt;
//* backcolor - hex AARRGGBB&lt;br /&gt;
//* type - тип сообщения из флагового списка кратных двойке кодов&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setnotifyshown'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell об установке признака прочтенности уведомления. Это актуально для уведомлений, сохраняемых в БД.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setnotifyshown&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;id&amp;quot;: &amp;quot;A33027E1-096F-38B8-1198-BB4D7C15823A&amp;quot;,&lt;br /&gt;
  &amp;quot;wasshown&amp;quot;: false&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* id - идентификатор сообщения. Может отсутствовать. Но если есть - допускается одновременное отображение только &lt;br /&gt;
             одного уведомления с таким кодом (либо закрывать автоматически предыдущее, либо не отображать это)&lt;br /&gt;
//* ids - список идентификаторов отображенных уведомлений.			 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Сообщения от АТС====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_ringstarted'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о входящем звонке. Не имеет отношения к постановке звонка в очередь. Фактически когда телефон пользователя начал звенеть.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_ringstarted&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;00488421-97E4-443B-81B7-D645E403AEBB&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;,&lt;br /&gt;
  &amp;quot;callerlineid&amp;quot;: &amp;quot;BC1FD50B-651F-459D-B659-28230E919673&amp;quot;,&lt;br /&gt;
  &amp;quot;callerlinenum&amp;quot;: &amp;quot;13027&amp;quot;,&lt;br /&gt;
  &amp;quot;callerdirection&amp;quot;: &amp;quot;oktell_pbx&amp;quot;,&lt;br /&gt;
  &amp;quot;callerid&amp;quot;: &amp;quot;73439170203&amp;quot;,&lt;br /&gt;
  &amp;quot;callername&amp;quot;: &amp;quot;ОАО Металлург&amp;quot;,&lt;br /&gt;
  &amp;quot;callerdescription&amp;quot;: &amp;quot;Металлоконструкции, изделия из черных и цветных металлов&amp;quot;,&lt;br /&gt;
  &amp;quot;callerinfo&amp;quot;: &amp;quot;Абонент: 315, Задача 'Входящие в call-центр'&amp;quot;,&lt;br /&gt;
  &amp;quot;callercomment&amp;quot;: &amp;quot;Еще что-то об абоненте&amp;quot;,&lt;br /&gt;
  &amp;quot;calleruserlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;calleruserid&amp;quot;: &amp;quot;00000000-0000-0000-0000-000000000000&amp;quot;,&lt;br /&gt;
  &amp;quot;isextline&amp;quot;: true,&lt;br /&gt;
  &amp;quot;canfax&amp;quot;: true,&lt;br /&gt;
  &amp;quot;canvideo&amp;quot;: false,&lt;br /&gt;
  &amp;quot;isconference&amp;quot;: false,&lt;br /&gt;
  &amp;quot;confid&amp;quot;: &amp;quot;00000000-0000-0000-0000-000000000000&amp;quot;,&lt;br /&gt;
  &amp;quot;confname&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;confroom&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;confinviternumber&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;confinviteruserid&amp;quot;: &amp;quot;00000000-0000-0000-0000-000000000000&amp;quot;,&lt;br /&gt;
  &amp;quot;confinviteruserlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;istask&amp;quot;: true,&lt;br /&gt;
  &amp;quot;taskid&amp;quot;: &amp;quot;F94BD1FE-B628-4CC3-B215-F3F84B275EDD&amp;quot;,&lt;br /&gt;
  &amp;quot;taskname&amp;quot;: &amp;quot;Входящие в call-центр&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* Частично могут отсутстовать параметры, описывающие абонента. &lt;br /&gt;
//    Если istask=false, то остутствуют taskid, taskname, tasktalklimitsec, taskfromhandlesec&lt;br /&gt;
//    Если звонок не от другого пользователя, то отсутствуют calleruserlogin, calleruserid&lt;br /&gt;
//    Если isconference=false, то отсутствует confid, confname, confroom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_ringstopped'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о прекращении входящего вызова. Если пользователь не снял трубку, а вызов прекратился.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_ringstopped&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;BEB91146-BA27-4236-9CAC-EF562719E7E5&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_commstarted'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о коммутации&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_commstarted&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;B7ACFEC1-65BB-4773-A425-DC39F5D1A48C&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;072F2EE0-4B3B-49A7-AB5B-E213AE752A53&amp;quot;&lt;br /&gt;
  &amp;quot;callerlineid&amp;quot;: &amp;quot;BC1FD50B-651F-459D-B659-28230E919673&amp;quot;,&lt;br /&gt;
  &amp;quot;callerlinenum&amp;quot;: &amp;quot;13027&amp;quot;,&lt;br /&gt;
  &amp;quot;callerid&amp;quot;: &amp;quot;73439170203&amp;quot;,&lt;br /&gt;
  &amp;quot;callername&amp;quot;: &amp;quot;ОАО Металлург&amp;quot;,&lt;br /&gt;
  &amp;quot;callerdescription&amp;quot;: &amp;quot;Металлоконструкции, изделия из черных и цветных металлов&amp;quot;,&lt;br /&gt;
  &amp;quot;callerinfosimple&amp;quot;: &amp;quot;Абонент: 315, Задача 'Входящие в call-центр'&amp;quot;,&lt;br /&gt;
  &amp;quot;callercomment&amp;quot;: &amp;quot;Еще что-то об абоненте&amp;quot;,&lt;br /&gt;
  &amp;quot;calleruserlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;calleruserid&amp;quot;: &amp;quot;00000000-0000-0000-0000-000000000000&amp;quot;,&lt;br /&gt;
  &amp;quot;isextline&amp;quot;: true,&lt;br /&gt;
  &amp;quot;canfax&amp;quot;: true,&lt;br /&gt;
  &amp;quot;canvideo&amp;quot;: false,&lt;br /&gt;
  &amp;quot;cansendfiles&amp;quot;: true,&lt;br /&gt;
  &amp;quot;canbuildconf&amp;quot;: true,&lt;br /&gt;
  &amp;quot;isivrscript&amp;quot;: false,&lt;br /&gt;
  &amp;quot;isconference&amp;quot;: false,&lt;br /&gt;
  &amp;quot;confid&amp;quot;: &amp;quot;00000000-0000-0000-0000-000000000000&amp;quot;,&lt;br /&gt;
  &amp;quot;confname&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;confroom&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;istask&amp;quot;: true,&lt;br /&gt;
  &amp;quot;taskid&amp;quot;: &amp;quot;F94BD1FE-B628-4CC3-B215-F3F84B275EDD&amp;quot;,&lt;br /&gt;
  &amp;quot;taskname&amp;quot;: &amp;quot;Входящие в call-центр&amp;quot;,&lt;br /&gt;
  &amp;quot;tasktalklimitsec&amp;quot;: 180,&lt;br /&gt;
  &amp;quot;taskfromhandlesec&amp;quot;: 24&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* Частично могут отсутстовать параметры, описывающие абонента. &lt;br /&gt;
//    Если istask=false, то остутствуют taskid, taskname, tasktalklimitsec, taskfromhandlesec&lt;br /&gt;
//    Если звонок не от другого пользователя, то отсутствуют calleruserlogin, calleruserid&lt;br /&gt;
//    Если isconference=false, то отсутствует confid, confname, confroom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_commstopped'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о завершении коммутации. Не путать со звонком. Коммутаций в рамках обработки звонка может быть много.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_commstopped&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;D514511C-BD4F-406B-B9C7-695CDC6C40E7&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;072F2EE0-4B3B-49A7-AB5B-E213AE752A53&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_ivrstarted'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о соединении с IVR-сценарием.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_ivrstarted&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;46E07742-0B24-4DD6-B4C6-12CDC1F7B938&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;scriptname&amp;quot;: &amp;quot;(Служебный) Вход в АТС&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;072F2EE0-4B3B-49A7-AB5B-E213AE752A53&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_ivrstopped'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о завершении соединения с IVR сценарием.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_ivrstopped&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;FC9DD78C-1A5F-4E06-9AB5-A9CEDE025F6A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_acmcallstarted'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о запуске автодозвона.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_acmcallstarted&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;410B1930-423E-4632-B3DE-54EC48C0E8A0&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;,&lt;br /&gt;
  &amp;quot;callnumber&amp;quot;: &amp;quot;471&amp;quot;,&lt;br /&gt;
  &amp;quot;isextline&amp;quot;: false,&lt;br /&gt;
  &amp;quot;callername&amp;quot;: &amp;quot;Сигизмунд Львович Кац&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_acmcallstopped'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM об остановке автодозвона.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_acmcallstopped&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;410B1930-423E-4632-B3DE-54EC48C0E8A0&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_faxstarted'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell о начале факс-сеанса на оппозитном канале.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_faxstarted&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;28979AE8-8E06-4EED-9114-98CB126CA8F4&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;,&lt;br /&gt;
  &amp;quot;opponentlineid&amp;quot;: &amp;quot;BC1FD50B-651F-459D-B659-28230E919673&amp;quot;,&lt;br /&gt;
  &amp;quot;faxdirection&amp;quot;: &amp;quot;send&amp;quot;,&lt;br /&gt;
  &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_faxstopped'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell о завершении факс-сеанса на оппозитном канале (следом возврат в коммутацию, если трубку не положили там).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_faxstopped&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;324CD087-BC2D-4FF3-A9BD-86A7276A4DED&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 65289,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;NoFaxPages&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* error: список FaxError&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_faxreceived'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cообщение из Oktell о завершении приема факса со ссылками на файлы.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_faxreceived&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C20E48DF-628D-4954-ADDE-D2C3B31C6700&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;files&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;filename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;filesize&amp;quot;: 172934,&lt;br /&gt;
    &amp;quot;filelink&amp;quot;: &amp;quot;\/temp\/receivedfax\/a802d3ea\/img01.tiff&amp;quot;,&lt;br /&gt;
    &amp;quot;availabletill&amp;quot;: &amp;quot;2011-03-27 23:39:18&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* Даже если result=0, могут быть частично полученные файлы.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''flashstatechanged'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cообщение из Oktell о смене состояния линии, находящейся на удержании.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;flashstatechanged&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;99CC8C57-1793-486A-AFB1-6E5CA3E6855E&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;flashtypeid&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;flashtypestr&amp;quot;: &amp;quot;Put&amp;quot;,&lt;br /&gt;
  &amp;quot;oppositeid&amp;quot;: &amp;quot;91FD3E18-B3A7-4662-8E06-C95C7D245DC3&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* Список возможных состояний:&lt;br /&gt;
	Put		= 1  — постановка на удержание&lt;br /&gt;
	Return		= 2  — возврат с удержания&lt;br /&gt;
	Abort		= 3  — прерывание удержания при положении трубки или другими действиями. Абонент на удержании получит сигнал занято.&lt;br /&gt;
	Lost		= 4  — абонент прервал ожидание, либо ошибка при попытке переключения на него&lt;br /&gt;
	Switch		= 5  — перевод ожидающего на кого-то другого&lt;br /&gt;
	Invite		= 6  — переключение с абонентом в конференцию&lt;br /&gt;
	Between		= 7  — переключение между двумя абонентами на удержании(без обрыва)&lt;br /&gt;
	Next		= 8  — отбой текущего абонента и переход сразу на набор номера без возврата к абоненту на удержании&lt;br /&gt;
	Flashed		= 11 — пользовать сам был поставлен кем-то на удержание&lt;br /&gt;
	Restored	= 12 — пользователь возвращён из удержания&lt;br /&gt;
	Aborted		= 13 — удержание пользователя прервано&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''linestatechanged'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cообщение из Oktell о смене состояния внутренней линии&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;linestatechanged&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;99CC8C57-1793-486A-AFB1-6E5CA3E6855E&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;linestateid&amp;quot;: 4,&lt;br /&gt;
  &amp;quot;linestatestr&amp;quot;: &amp;quot;lsReady&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* Список возможных состояний внутренней линии:&lt;br /&gt;
	lsDisconnected	= 1	— не подключена&lt;br /&gt;
	lsOff		= 2	— выключена&lt;br /&gt;
	lsReady		= 4	— готова&lt;br /&gt;
	lsHookUp	= 8	— поднята трубка&lt;br /&gt;
	lsIncomingCall	= 16	— входящий звонок&lt;br /&gt;
	lsCommutated	= 32	— скоммутирована&lt;br /&gt;
	lsWait		= 64	— ожидание дозвона\коммутации&lt;br /&gt;
	lsFlash		= 128	— флеш\удержание&lt;br /&gt;
	lsWaitDown	= 256	— ожидание с положенной трубкой(отдельный статус резервирования линии при использовании сервиса автодозвона)&lt;br /&gt;
	lsListenBusy	= 512	— сигнал &amp;quot;Занято&amp;quot; в линии(коммутация разорвана по инициативе противоположной стороны)&lt;br /&gt;
	lsUndefined	= 1024	— неопределено&lt;br /&gt;
	lsReserved	= 2048	— зарезервирована&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Команды к АТС====&lt;br /&gt;
 &lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxautocallstart'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к Oktell на совершение звонка. В зависимости от текущего состояния линии - запускается автодозвон или нет, звонок на внешнюю линию, во внутрений номерной план, или автоопределение, сначала вызываться сам пользователь будет, а потом звонок абоненту, или сначала дозвон до абонента, а потом вызов пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxautocallstart&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;number&amp;quot;: &amp;quot;425&amp;quot;,&lt;br /&gt;
  &amp;quot;direction&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
  &amp;quot;sequence&amp;quot;: &amp;quot;abonent&amp;quot;,&lt;br /&gt;
  &amp;quot;intercom&amp;quot;: false&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* direction: int, ext, undefined (внутрь, наружу, автоопределение)&lt;br /&gt;
//* sequence: abonent, user (сначала до абонента, сначала до пользователя)&lt;br /&gt;
//* intercom: true|false (интерком-вызов, обычный вызов)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''pbxautocallstartresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM на запрос звонка.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxautocallstartresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;number&amp;quot;: &amp;quot;425&amp;quot;,&lt;br /&gt;
  &amp;quot;direction&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
  &amp;quot;sequence&amp;quot;: &amp;quot;abonent&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;cntNumberNotFound&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* error, errormsg: EACMAnswer:&lt;br /&gt;
//*   cntStartedSuccessfully = 0 //Звонок успешно взят в реализацию&lt;br /&gt;
//*   cntUserNotReady = 1 //У пользователя-инициатора не найдены линии, готовые линии, или состояние кривое&lt;br /&gt;
//*   cntBusy = 2 //При звонке на внутренний номер - признак занятости. В очереди и сам повисеть может&lt;br /&gt;
//*   cntExtLineNotFound = 3, //Не найдены готовые внешние линии&lt;br /&gt;
//*   cntError = 4, //Прочие ошибки, исключения.&lt;br /&gt;
//*   cntControlNotReady = 5, //Режим не доделан.&lt;br /&gt;
//*   cntNumberNotFound = 6 //Внутренний номер не найден (по факту, если сервер сам будет определять &lt;br /&gt;
				  направление звонка, это вообще не будет задействовано)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxautocallabort'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к Oktell на прекращение автодозвона&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxautocallabort&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;28BF3E8F-1F97-47AB-BD42-92D174D4A705&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxtransfercall'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Аналогично запросу из CRM на совершение звонка - запрос на совершение переключения. Если линия свободна - действует аналогично полностью запросу на звонок. Если пользователь в разговоре - через флэш набирает указанный номер.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxtransfercall&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;81FBE5C2-E81B-4D0D-8AC0-72C22ACCD4E2&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;number&amp;quot;: &amp;quot;425&amp;quot;,&lt;br /&gt;
  &amp;quot;direction&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
  &amp;quot;sequence&amp;quot;: &amp;quot;abonent&amp;quot;,&lt;br /&gt;
  &amp;quot;intercom&amp;quot;: false  &lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''pbxtransfercallresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И аналогичный ответ из Oktell в CRM.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxtransfercallresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;81FBE5C2-E81B-4D0D-8AC0-72C22ACCD4E2&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;number&amp;quot;: &amp;quot;425&amp;quot;,&lt;br /&gt;
  &amp;quot;direction&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
  &amp;quot;sequence&amp;quot;: &amp;quot;abonent&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;cntNumberNotFound&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''pbxdeclinecall'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к Oktell на отклонение звонка.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxdeclinecall&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0AFB2B0C-A68F-448B-9B4B-AB42096D4E95&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxabortcall'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к Oktell на обрыв текущего существующего сеанса связи. Не путать с DeclineCall. Прекращает коммутацию, если существует, прекращает автодозвон, если запущен.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxabortcall&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;53F2EE86-46AF-4A37-8C60-2F27EADD10DE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;div id=&amp;quot;pbxmakeflash&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxmakeflash'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на программную эмуляцию флэш.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxmakeflash&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DD836C5D-4F3E-4FD2-9B60-24E330B03FC6&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;mode&amp;quot;: &amp;quot;default&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* mode - abort, switch, next - устанавливает поведение, если на удержании уже находится абонент.&lt;br /&gt;
		abort - обрыв текущему и переключение на того кто на удержании&lt;br /&gt;
		switch - возврат к тому, кто на удержании, с размещением текущего на удержании&lt;br /&gt;
		next - обрыв текущему и переход сразу в набор номера&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxmaketransfer'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на перевод текущего звонка.&amp;lt;br&amp;gt;&lt;br /&gt;
Если A соединен с B, и от А приходит команда трансфер(C), то абонента B переключает на C, а A в отбой.&amp;lt;br&amp;gt;&lt;br /&gt;
Если A соединен с B, а в это время во флеше/холде находится D, то абонента B переключает на C, а A соединяется с D.&amp;lt;br&amp;gt;&lt;br /&gt;
Если A ни с кем не соединен, то просто отбой в A.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxmaketransfer&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DD836C5D-4F3E-4FD2-9B60-24E330B03FC6&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;transferto&amp;quot;: &amp;quot;475&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* transferto - номер, на который осуществить перевод.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxclearflash'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на обрыв линии, находящейся на удержании.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxclearflash&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DD836C5D-4F3E-4FD2-9B60-24E330B03FC6&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxfaxreceive'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на переключение в прием факса.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxfaxreceive&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;59305AD1-40A5-476A-B76D-2DAB1F2A89D3&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;linkmode&amp;quot;: &amp;quot;simple&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* linkmode - full, simple - устанавливает формат ссылок, в котором будут указаны полученные файлы&lt;br /&gt;
		в событии об окончании приема.&lt;br /&gt;
			full - вернуть абсолютную ссылку на скачивание через http.&lt;br /&gt;
			simple - вернуть относительную ссылку на скачивание.&lt;br /&gt;
		При формировании абсолютной ссылки в качестве доменного имени берется значение из &lt;br /&gt;
		раздела [[Интеграция с WEB-Socket CRM]] общих настроек Oktell.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxfaxstop'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на прерывание приема/передачи факса.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxfaxstop&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;59305AD1-40A5-476A-B76D-2DAB1F2A89D3&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxdtmf'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на генерацию софт-DTMF.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxdtmf&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DD836C5D-4F3E-4FD2-9B60-24E330B03FC6&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;dtmf&amp;quot;: &amp;quot;#&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* dtmf: цифры, *, #&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxanswercall'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на снятие трубки при входящем звонке (с помощью изменения SIP-вызова на интерком).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxanswercall&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DD836C5D-4F3E-4FD2-9B60-24E330B03FC6&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxinterceptcall'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на перехват вызова&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxinterceptcall&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DD836C5D-4F3E-4FD2-9B60-24E330B03FC6&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;number&amp;quot;: &amp;quot;400&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* number - внутренний номер, вызов на который необходимо перехватить. Если не задан, то перехват первого доступного из групповых.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Запросы к АТС общего характера====&lt;br /&gt;
 &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''exectmcall'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Осуществляет размещение короткого задания на дозвон и соединение с указанным оператором (пользователем).&lt;br /&gt;
Дозвониться до одного из указанных абонентов-номеров группы A, соединить с одним из указанных абонентов-номеров группы B.&lt;br /&gt;
Результатом выполнения является одна коммутация.&lt;br /&gt;
&lt;br /&gt;
Не требует указания пользователя.&lt;br /&gt;
Считается серверным методом, хотя может вызываться и по индивидуальному клиентскому каналу.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;exectmcall&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;BE06A1E4-759A-4BFA-8D15-5FCF756EEE53&amp;quot;,&lt;br /&gt;
  &amp;quot;taskid&amp;quot;: &amp;quot;qud82039lsdfmnasd&amp;quot;,&lt;br /&gt;
  &amp;quot;a_abonents&amp;quot;: [&lt;br /&gt;
   &amp;quot;7931289&amp;quot;,&lt;br /&gt;
   &amp;quot;83959279394&amp;quot;,&lt;br /&gt;
   &amp;quot;425&amp;quot;,&lt;br /&gt;
   &amp;quot;688C1DD6-7429-4B47-819D-C15827654A53&amp;quot;,&lt;br /&gt;
   { &lt;br /&gt;
    &amp;quot;type&amp;quot;: 11,&lt;br /&gt;
	&amp;quot;key&amp;quot;: &amp;quot;84951435565&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;b_abonents&amp;quot;: [&lt;br /&gt;
   &amp;quot;1211F58F-93AE-470C-895D-E3A163E8FF5F&amp;quot;,&lt;br /&gt;
   &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
   &amp;quot;2BC51D79-BA63-47D7-93CA-1F283029C529&amp;quot;,&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;type&amp;quot;: 12,&lt;br /&gt;
    &amp;quot;key&amp;quot;: &amp;quot;1211F58F-93AE-470C-895D-E3A163E8FF5F&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
  ]&lt;br /&gt;
  &amp;quot;mode&amp;quot;: 0&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;exectmcall&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;BE06A1E4-759A-4BFA-8D15-5FCF756EEE53&amp;quot;,&lt;br /&gt;
  &amp;quot;taskid&amp;quot;: &amp;quot;qud82039lsdfmnasd&amp;quot;,&lt;br /&gt;
  &amp;quot;taskcode&amp;quot;: &amp;quot;xxxxx&amp;quot;,&lt;br /&gt;
  &amp;quot;a_abonents&amp;quot;: [&amp;quot;4952172020&amp;quot;],&lt;br /&gt;
  &amp;quot;b_abonents&amp;quot;: [&amp;quot;417&amp;quot;],&lt;br /&gt;
  &amp;quot;mode&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;ownertext&amp;quot;: &amp;quot;Задача соединения&amp;quot;,&lt;br /&gt;
  &amp;quot;sessionid&amp;quot;: &amp;quot;FB232E90-524A-453C-95BA-1B42251F5A14&amp;quot;,&lt;br /&gt;
  &amp;quot;projectid&amp;quot;: &amp;quot;F95BA34E-2CE2-49FA-B3C2-4344199F5B42&amp;quot;,&lt;br /&gt;
  &amp;quot;a_callerid&amp;quot;: &amp;quot;4959261589&amp;quot;,&lt;br /&gt;
  &amp;quot;a_music&amp;quot;: &amp;quot;Фоновое воспроизведение для оператора&amp;quot;,&lt;br /&gt;
  &amp;quot;a_usequeue&amp;quot;: false,&lt;br /&gt;
  &amp;quot;a_queuepriority&amp;quot;: 10,&lt;br /&gt;
  &amp;quot;a_timeoutsec&amp;quot;: 40,&lt;br /&gt;
  &amp;quot;b_callerid&amp;quot;: &amp;quot;4952172020&amp;quot;,&lt;br /&gt;
  &amp;quot;b_music&amp;quot;: &amp;quot;?**ivr?Фоновое воспроизведение&amp;quot;,&lt;br /&gt;
  &amp;quot;b_usequeue&amp;quot;: true,&lt;br /&gt;
  &amp;quot;b_queuepriority&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;b_timeoutsec&amp;quot;: 40,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Обязательными параметрами являются только a_abonents и b_abonents. Остальные имеют значения по умолчанию.&lt;br /&gt;
			&lt;br /&gt;
//* taskid - уникальный строковый идентификатор задания. &lt;br /&gt;
				Может быть не указан, тогда генерируется автоматически.&lt;br /&gt;
//* taskcode - пользовательский код задачи, передается в сценарии, обслуживающие дозвоны.&lt;br /&gt;
//* a_abonents - набор из одного или нескольких абонентов, относящихся к группе A.&lt;br /&gt;
//* b_abonents - набор из одного или нескольких абонентов, относящихся к группе B.&lt;br /&gt;
		abonent:type - типы представления о конкретном абоненте&lt;br /&gt;
			Undefined	  = 0, //Не определен, определить автоматически.&lt;br /&gt;
			External	  = 11,//Внешний номер	&lt;br /&gt;
			InternalItem	  = 12,//Внутренний элемент - пользователь или линия, &lt;br /&gt;
						задаются ключами (идентификатор, номер, логин, имя).&lt;br /&gt;
			InternalRule	  = 13,//Стандартный внутренний номер&lt;br /&gt;
			InternalFast	  = 14,//Быстрый номер&lt;br /&gt;
			InternalEmergency = 15,//Экстренный номер&lt;br /&gt;
			InternalIVR	  = 16,//Сценарий IVR&lt;br /&gt;
//* mode: &lt;br /&gt;
		0 - вызывает сначала группу A (достает первого ответившего), &lt;br /&gt;
			потом абонентов группы B (достает первого ответившего)&lt;br /&gt;
		1 - вызывает сначала группу B (достает первого ответившего), &lt;br /&gt;
			потом абонентов группы A (достает первого ответившего)&lt;br /&gt;
		2 - вызывает одновременно всех, достает первого ответившего из группы A &lt;br /&gt;
			и первого ответившего из группы B.&lt;br /&gt;
//* a_music, b_music - мелодия ожидания для абонентов группы A и B. Задается с помощью строки:&lt;br /&gt;
	- ''?**ivr?scriptname'', где scriptname - название фонового медиа сценария IVR.&lt;br /&gt;
	- ''?**ff?filepath'', где filepath - абсолютный путь к звуковому файлу (*.mp3 или *.wav).&lt;br /&gt;
	- ''?**ff?folderpath'', где folderpath - абсолютный путь к каталогу со звуковыми файлами, выбираются рандомно.&lt;br /&gt;
	- ''?**ff?filename'', где filename - название файла с расширением (*.mp3 или *.wav) в стандартном каталоге Snd.&lt;br /&gt;
	- абсолютный путь к каталогу cо звуковыми файлами &lt;br /&gt;
	- абсолютный путь к файлу &lt;br /&gt;
	- название файла с расширением в стандартном каталоге Snd&lt;br /&gt;
	- название фонового медиа-сценария IVR&lt;br /&gt;
	- если не указывать, указывать неверно или указывать пустоту - играется &lt;br /&gt;
		[[Музыкальное сопровождение#Alternative|альтернативная мелодия ожидания]] (возможно сценарий) из общих настроек&lt;br /&gt;
//* sessionid - генерируемый идентификатор цепочки коммутаций/сессии.&lt;br /&gt;
//* ownertext - название владельца служебного сценария набора номеров.&lt;br /&gt;
//* projectid - привязанный идентификатор проекта (участвует в поиске сценариев).&lt;br /&gt;
//* a_usequeue, b_usequeue: true|false. Использовать ли очередь ожидания при вызове внутренних абонентов.&lt;br /&gt;
//* a_queuepriority, b_queuepriority: числовой приоритет при размещении в очередях. &lt;br /&gt;
		Традиционно чем меньше значение - тем больше приоритет. &lt;br /&gt;
		Значения по умолчанию определены в [[Настройки менеджера очередей|общих настройках]]&lt;br /&gt;
//* a_timeoutsec, b_timeoutsec: таймаут в секундах для вызова абонентов соответствующей группы.&lt;br /&gt;
		Режим использования таймаута задается в разделе [[Настройки менеджера очередей|настроек менеджера очередей]].&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''exectmcallresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает результат исполнения хранимой процедуры в БД Oktell. Перечисляет все выходные наборы данных.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;exectmcallresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;BE06A1E4-759A-4BFA-8D15-5FCF756EEE53&amp;quot;,&lt;br /&gt;
  &amp;quot;taskid&amp;quot;: &amp;quot;qud82039lsdfmnasd&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* taskid - возвращает идентификатор запущенного задания.&lt;br /&gt;
		В дальнейшем с помощью него можно будет отменить задание (если оно еще не будет к тому времени исполнено)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''exectmcallreport'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Отчет о выполнении задания. Указывает код задания, и причину ошибки в случае неудачи.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;exectmcallreport&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;,&lt;br /&gt;
  &amp;quot;taskid&amp;quot;: &amp;quot;qud82039lsdfmnasd&amp;quot;,&lt;br /&gt;
  &amp;quot;success&amp;quot;: false,&lt;br /&gt;
  &amp;quot;errorid&amp;quot;: 21,&lt;br /&gt;
  &amp;quot;errorstr&amp;quot;: &amp;quot;CallAbonentFailure&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''stoptmcall'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Отменяет ранее запущенное методом ''exectmcall'' задание, если оно еще не завершило исполнение.&lt;br /&gt;
&lt;br /&gt;
Не требует указания пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;stoptmcall&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;,&lt;br /&gt;
  &amp;quot;taskid&amp;quot;: &amp;quot;qud82039lsdfmnasd&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;			&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''stoptmcallresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат отмены задания.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;stoptmcallresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;,&lt;br /&gt;
  &amp;quot;taskid&amp;quot;: &amp;quot;qud82039lsdfmnasd&amp;quot;,&lt;br /&gt;
  &amp;quot;success&amp;quot;: false,&lt;br /&gt;
  &amp;quot;errortext&amp;quot;: &amp;quot;task not found&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''gettotalqueue'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат информации обо всех очередях.&lt;br /&gt;
Может использоваться без указания пользователя.&lt;br /&gt;
Не рекомендуется к частому использованию, так как требует значительных вычислительных ресурсов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;gettotalqueue&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDDB5BCA-A200-448C-93C7-EFEAE5AFE48D&amp;quot;,&lt;br /&gt;
  &amp;quot;skipempty&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''gettotalqueueresultresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает список всех очередей и их абонентов&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;gettotalqueueresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDDB5BCA-A200-448C-93C7-EFEAE5AFE48D&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;numid&amp;quot;: &amp;quot;507db30b-f8f7-46cf-b3c7-6b8ba7b696a8&amp;quot;,&lt;br /&gt;
    &amp;quot;numprefix&amp;quot;: &amp;quot;12&amp;quot;,&lt;br /&gt;
    &amp;quot;ruleid&amp;quot;: &amp;quot;6ffab1ac-7b9b-4ba2-8547-233175368b6d&amp;quot;,&lt;br /&gt;
    &amp;quot;rulename&amp;quot;: &amp;quot;Денис&amp;quot;&lt;br /&gt;
    &amp;quot;queue&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;objectid&amp;quot;: &amp;quot;928efda2-a3b3-423b-9d49-d2e76879c718&amp;quot;,&lt;br /&gt;
      &amp;quot;chainid&amp;quot;: &amp;quot;d1c2b337-6293-4ea0-a355-f59caaeff54b&amp;quot;,&lt;br /&gt;
      &amp;quot;srcelementid&amp;quot;: &amp;quot;38d8b6ad-a68b-4075-a1a3-038510f20a54&amp;quot;,&lt;br /&gt;
      &amp;quot;objecttype&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;objecttypestr&amp;quot;: &amp;quot;qotQueueLogic&amp;quot;,&lt;br /&gt;
      &amp;quot;queuesource&amp;quot;: 1,&lt;br /&gt;
      &amp;quot;queuesourcestr&amp;quot;: &amp;quot;qsLineLogic&amp;quot;,&lt;br /&gt;
      &amp;quot;callerid&amp;quot;: &amp;quot;14&amp;quot;,&lt;br /&gt;
      &amp;quot;calledid&amp;quot;: &amp;quot;12&amp;quot;,&lt;br /&gt;
      &amp;quot;isuser&amp;quot;: true,&lt;br /&gt;
      &amp;quot;userid&amp;quot;: &amp;quot;da803f01-ea77-40fa-bc9d-e2efb36fd5a8&amp;quot;,&lt;br /&gt;
      &amp;quot;userlogin&amp;quot;: &amp;quot;Peter&amp;quot;,&lt;br /&gt;
      &amp;quot;username&amp;quot;: &amp;quot;Петр Александрович&amp;quot;,  &lt;br /&gt;
      &amp;quot;department&amp;quot;: &amp;quot;Программисты&amp;quot;,&lt;br /&gt;
      &amp;quot;managedlineid&amp;quot;: &amp;quot;38d8b6ad-a68b-4075-a1a3-038510f20a54&amp;quot;,&lt;br /&gt;
      &amp;quot;managedlinenumber&amp;quot;: &amp;quot;16001&amp;quot;,&lt;br /&gt;
      &amp;quot;srclineid&amp;quot;: &amp;quot;38d8b6ad-a68b-4075-a1a3-038510f20a54&amp;quot;,&lt;br /&gt;
      &amp;quot;srclinenumber&amp;quot;: &amp;quot;16001&amp;quot;,  &lt;br /&gt;
      &amp;quot;queuepriority&amp;quot;: 9,&lt;br /&gt;
      &amp;quot;startqueuetime&amp;quot;: &amp;quot;2012-06-07 12:58:44&amp;quot;,&lt;br /&gt;
      &amp;quot;lenqueue&amp;quot;: 1.4375,&lt;br /&gt;
      &amp;quot;istask&amp;quot;: false&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
   },&lt;br /&gt;
   ...&lt;br /&gt;
   {}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* result - содержит список всех очередей. Очередь при этом содержится в словаре.&lt;br /&gt;
//*  result:numid - идентификатор стандартного внутреннего номера, при котором данная очередь.&lt;br /&gt;
//*  result:numprefix - стандартный внутреннего номер, при котором данная очередь.&lt;br /&gt;
//*  result:ruleid - идентификатор номерного правила, при котором данная очередь.&lt;br /&gt;
//*  result:rulename - название номерного правила, при котором данная очередь.&lt;br /&gt;
//*  result:queue - список абонентов очереди в порядке убывания. Каждый абонент содержится в словаре.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Запуск служебного сценария====&lt;br /&gt;
 &lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''startsvcscript'''&amp;lt;/span&amp;gt;, &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''execsvcscript'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на запуск служебного сценария. ''startsvcscript'' - от имени пользователя, ''execsvcscript'' - без указания пользователя от имени сервера.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;startsvcscript&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;244E3867-470E-4A56-904D-D435D57CFBFE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;scriptname&amp;quot;: &amp;quot;Служебный сценарий получения почты&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam1&amp;quot;: &amp;quot;значение параметра 1&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam2&amp;quot;: &amp;quot;значение параметра 2&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam3&amp;quot;: &amp;quot;значение параметра 3&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam4&amp;quot;: &amp;quot;значение параметра 4&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam5&amp;quot;: &amp;quot;значение параметра 5&amp;quot;,&lt;br /&gt;
  &amp;quot;waitresponse&amp;quot;: true,&lt;br /&gt;
  &amp;quot;waittimeoutsec&amp;quot;: 10&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;execsvcscript&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;244E3867-470E-4A56-904D-D435D57CFBFE&amp;quot;,&lt;br /&gt;
  &amp;quot;scriptname&amp;quot;: &amp;quot;Служебный сценарий получения почты&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam1&amp;quot;: &amp;quot;значение параметра 1&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam2&amp;quot;: &amp;quot;значение параметра 2&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam3&amp;quot;: &amp;quot;значение параметра 3&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam4&amp;quot;: &amp;quot;значение параметра 4&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam5&amp;quot;: &amp;quot;значение параметра 5&amp;quot;,&lt;br /&gt;
  &amp;quot;waitresponse&amp;quot;: true,&lt;br /&gt;
  &amp;quot;waittimeoutsec&amp;quot;: 10&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* scriptname - название сценария в общем разделе.&lt;br /&gt;
//* startparamN - строковое значение соответствующего параметра.&lt;br /&gt;
		При необходимости передать больше параметров следует объединять параметры в одну строку&lt;br /&gt;
		с использованием символа-разделителя, а в самом сценарии производить обратную операцию.&lt;br /&gt;
//* waitresponse - ожидать ли ответа.&lt;br /&gt;
//* waittimeoutsec - таймаут ожидания ответа в секундах. 0 - вечно.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''startsvcscriptresult'''&amp;lt;/span&amp;gt;,&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''execsvcscriptresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ Oktell на запрос запуска служебного сценария.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;startsvcscriptresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;244E3867-470E-4A56-904D-D435D57CFBFE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;scriptname&amp;quot;: &amp;quot;Служебный сценарий получения почты&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;returnvalue&amp;quot;: &amp;quot;присвоенный в сценарии результат&amp;quot;,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 10&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;execsvcscriptresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;244E3867-470E-4A56-904D-D435D57CFBFE&amp;quot;,&lt;br /&gt;
  &amp;quot;scriptname&amp;quot;: &amp;quot;Служебный сценарий получения почты&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;returnvalue&amp;quot;: &amp;quot;присвоенный в сценарии результат&amp;quot;,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 10&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//*  error: 10 - файл не найден, 11 - исключение, 12 - таймаут&lt;br /&gt;
//*  returnvalue - возвращаемый результат сценария (если сценарий исполнился, и его завершения удалось дождаться)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Конференц-связь====&lt;br /&gt;
 &lt;br /&gt;
Запросы из CRM, ответы от Oktell, события из Oktell&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''confhandleevent'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к Oktell. Подписка/отписка на указанную категорию событий сервера конференций.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confhandleevent&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;eventtype&amp;quot;: &amp;quot;competitors&amp;quot;,&lt;br /&gt;
  &amp;quot;handle&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* eventtype - уровень глубины получаемых сообщений. conferences|competitors|userstates&lt;br /&gt;
               предполагается, что в общем случае инфа идет только о списке конференций (conferences);&lt;br /&gt;
                 когда юзер находится в конференции - дополнительно о внутреннем состоянии конференции (competitors);&lt;br /&gt;
                 когда юзер настраивает конференцию и выбирает из списка участников для автоматического приглашения - &lt;br /&gt;
                   о состояниях всех пользователей (userstates).&lt;br /&gt;
               Подписками управляет сам внешний модуль. Когда потребность уходит - необходимо отписываться, &lt;br /&gt;
                   чтобы не заваливать канал порожняком.&lt;br /&gt;
//* handle - true|false - подписаться/отписаться&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''checkcanconnecttogathertoconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к oktell. В момент коммутации, в случае если во флеш-буфере находится абонент, определяет, существует ли возможность переключиться всем вместе в конференцию единой командой. Это возможно, если один из абонентов - конференция, а другой - линия/пользователь.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;checkcanconnecttogathertoconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''confcheckcanconnecttogatherresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM на запрос возможности совместного переключения в конференцию.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confcheckcanconnecttogatherresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;canconnecttogather&amp;quot;: true,&lt;br /&gt;
  &amp;quot;inconference&amp;quot;: false,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''connecttogathertoconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к oktell. Производит совместное переключение текущего онлайн-абонента и флеш-абонента в существующую конференцию.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;connecttogathertoconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''buildconferencefromcommutation'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к oktell. Производит преобразование текущей коммутации в конференцию с двумя участниками.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;buildconferencefromcommutation&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''attachasghost'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к Oktell. Производит подключение к указанному каналу/пользователю на прослушку/помощь.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;attachasghost&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;ghostedid&amp;quot;: &amp;quot;FE9D6B52-C267-4D39-AC9F-81A0F44713FF&amp;quot;,&lt;br /&gt;
  &amp;quot;ghostedlogin&amp;quot;: &amp;quot;Петров&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''attachasghostresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM на запрос о подключении к каналу на прослушку.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;attachasghostresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 52703&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* ghostedid - ид пользователя или линии, к которому подцепляться для прослушки&lt;br /&gt;
//* ghostedlogin - логин пользователя, к которому подцепляться для прослушки&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getconferences'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат текущих активных конференц-сессий.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getconferences&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getconferencesresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM со списком текущих активных конференц-сессий.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getconferencesresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferencelist&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
    &amp;quot;room&amp;quot;: 884,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Планерка&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;accessmode&amp;quot;: 11,&lt;br /&gt;
    &amp;quot;accessmodestr&amp;quot;: &amp;quot;Free&amp;quot;,&lt;br /&gt;
    &amp;quot;isselector&amp;quot;: true,&lt;br /&gt;
    &amp;quot;record&amp;quot;: true,&lt;br /&gt;
    &amp;quot;creatorid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorname&amp;quot;: &amp;quot;Иван Иванович Иванов&amp;quot;, &lt;br /&gt;
    &amp;quot;directorid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;directorlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;directorname&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;timestart&amp;quot;: &amp;quot;2011-04-03 17:58:22&amp;quot;,&lt;br /&gt;
    &amp;quot;canvieweachother&amp;quot;: true,&lt;br /&gt;
    &amp;quot;everyonecaninvite&amp;quot;: true,&lt;br /&gt;
    &amp;quot;recordrights&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;recordrightsstr&amp;quot;: &amp;quot;Competitors&amp;quot;,&lt;br /&gt;
    &amp;quot;isghost&amp;quot;: false,&lt;br /&gt;
    &amp;quot;ghostmode&amp;quot;: 11,&lt;br /&gt;
    &amp;quot;ghostmodestr&amp;quot;: &amp;quot;Monitor&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getconferencecompetitors'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат текущих участников указанной конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getconferencecompetitors&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;F16D26E3-2A78-49C2-AFCE-815611A16E22&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getconferencecompetitorsresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM со списком текущих участников указанной в запросе конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getconferencecompetitorsresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;F16D26E3-2A78-49C2-AFCE-815611A16E22&amp;quot;,&lt;br /&gt;
  &amp;quot;competitorlist&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;competitorid&amp;quot;: &amp;quot;65AC0E98-64DE-41CF-B609-D00A4C8B07FD&amp;quot;,&lt;br /&gt;
    &amp;quot;chainid&amp;quot;: &amp;quot;91687102-E19F-466C-A0BE-B6C3EEF83EE7&amp;quot;,&lt;br /&gt;
    &amp;quot;sessionid&amp;quot;: &amp;quot;91687102-E19F-466C-A0BE-B6C3EEF83EE7&amp;quot;,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;lineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
    &amp;quot;linenumber&amp;quot;: &amp;quot;17004&amp;quot;,&lt;br /&gt;
    &amp;quot;number&amp;quot;: &amp;quot;472&amp;quot;,&lt;br /&gt;
    &amp;quot;intnumber&amp;quot;: &amp;quot;472&amp;quot;,&lt;br /&gt;
    &amp;quot;extnumber&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;confstate&amp;quot;: 11,&lt;br /&gt;
    &amp;quot;confstatestr&amp;quot;: &amp;quot;OnlineTalking&amp;quot;,&lt;br /&gt;
    &amp;quot;wanttalk&amp;quot;: false,&lt;br /&gt;
    &amp;quot;isdirector&amp;quot;: true,&lt;br /&gt;
    &amp;quot;iscreator&amp;quot;: false,&lt;br /&gt;
    &amp;quot;isghost&amp;quot;: false,&lt;br /&gt;
    &amp;quot;isghostmajor&amp;quot;: false,&lt;br /&gt;
    &amp;quot;islifebuoy&amp;quot;: false&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getusersforconferenceinvitelist'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат возможных участников конференции (учетных записей всех пользователей системы с указанием их состояний и присутствия в других конференциях).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getusersforconferenceinvitelist&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getusersforconferenceinvitelistresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM со списком учетных записей, доступных для приглашения в конференцию с их текущими состояниями и присутствием в других конференциях.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getusersforconferenceinvitelistresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;possiblecompetitorlist&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;groupid&amp;quot;: &amp;quot;F72C315A-F9EA-471E-A679-D4BA4797DB51&amp;quot;,&lt;br /&gt;
    &amp;quot;groupname&amp;quot;: &amp;quot;Руководство&amp;quot;&lt;br /&gt;
    &amp;quot;userstate&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;userstatestr&amp;quot;: &amp;quot;usFullbusy&amp;quot;,&lt;br /&gt;
    &amp;quot;isredirect&amp;quot;: false,&lt;br /&gt;
    &amp;quot;islunch&amp;quot;: false,&lt;br /&gt;
    &amp;quot;inconference&amp;quot;: true,&lt;br /&gt;
    &amp;quot;conferenceid&amp;quot;: &amp;quot;F16D26E3-2A78-49C2-AFCE-815611A16E22&amp;quot;,&lt;br /&gt;
    &amp;quot;confstate&amp;quot;: 11,&lt;br /&gt;
    &amp;quot;confstatestr&amp;quot;: &amp;quot;OnlineTalking&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''createnewconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на создание новой конференции. Указывает параметры самой конференц-сессии, список участников для приглашения на старте.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;createnewconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conference&amp;quot;: {&lt;br /&gt;
   &amp;quot;id&amp;quot;: &amp;quot;17A3F9D2-040C-471B-A4F5-6A13BEB27667&amp;quot;,&lt;br /&gt;
   &amp;quot;room&amp;quot;: 578&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;Совещание с заказчиком&amp;quot;,&lt;br /&gt;
   &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
   &amp;quot;accessmode&amp;quot;: &amp;quot;free&amp;quot;,&lt;br /&gt;
   &amp;quot;isselector&amp;quot;: true,&lt;br /&gt;
   &amp;quot;record&amp;quot;: true,&lt;br /&gt;
   &amp;quot;recordrights&amp;quot;: &amp;quot;selected&amp;quot;,&lt;br /&gt;
   &amp;quot;everyonecaninvite&amp;quot;: true,&lt;br /&gt;
   &amp;quot;canvieweachother&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;competitors&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;lineid&amp;quot;: &amp;quot;F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
    &amp;quot;intnumber&amp;quot;: &amp;quot;472&amp;quot;,&lt;br /&gt;
    &amp;quot;extnumber&amp;quot;: &amp;quot;89047289889&amp;quot;,&lt;br /&gt;
    &amp;quot;cantalk&amp;quot;: true&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;recordusers&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* conference:accessmode - free|shared|closed (свободный вход, вход по запросу, вход запрещен)&lt;br /&gt;
//* conference:recordrights - director|competitors|selected (только управляющий, все участники, избранные участники)&lt;br /&gt;
			Определяет, кто может прослушивать запись конференции.&lt;br /&gt;
//* competitors - список автоматически приглашаемых участников. Допускается/следует указывать только один &lt;br /&gt;
			параметр из набора {userid|userlogin, lineid, intnumber, extnumber}&lt;br /&gt;
//* список recordusers следует указывать, если conference:recordrights=selected.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''createnewconferenceresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом исполнения команды на создание конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;createnewconferenceresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;alreadyexists&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setupexistingconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell от имени управляющего конференции на изменение параметров указанной конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setupexistingconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conference&amp;quot;: {&lt;br /&gt;
   &amp;quot;id&amp;quot;: &amp;quot;17A3F9D2-040C-471B-A4F5-6A13BEB27667&amp;quot;,&lt;br /&gt;
   &amp;quot;room&amp;quot;: 578&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;Совещание с заказчиком&amp;quot;,&lt;br /&gt;
   &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
   &amp;quot;accessmode&amp;quot;: &amp;quot;free&amp;quot;,&lt;br /&gt;
   &amp;quot;isselector&amp;quot;: true,&lt;br /&gt;
   &amp;quot;recordrights&amp;quot;: &amp;quot;selected&amp;quot;,&lt;br /&gt;
   &amp;quot;everyonecaninvite&amp;quot;: true,&lt;br /&gt;
   &amp;quot;canvieweachother&amp;quot;: true,&lt;br /&gt;
   &amp;quot;ghostmode&amp;quot;: &amp;quot;monitor&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;recordusers&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''setupexistingconferenceresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом исполнения команды на изменение параметров конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setupexistingconferenceresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;notfound&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* conference:accessmode - free|shared|closed&lt;br /&gt;
//* conference:recordrights - director|competitors|selected&lt;br /&gt;
//* conference:ghostmode - monitor|help|talk&lt;br /&gt;
//* список recordusers имеет смысл только когда conference:recordrights=selected.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getconferenceinfo'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат текущих параметров указанной конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getconferenceinfo&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getconferenceinforesult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает текущие настройки указанной в запросе конференции, текущих ее участников и их состояния.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getconferenceinforesult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;conference&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
    &amp;quot;room&amp;quot;: 884,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Планерка&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;accessmode&amp;quot;: 11,&lt;br /&gt;
    &amp;quot;accessmodestr&amp;quot;: &amp;quot;Free&amp;quot;,&lt;br /&gt;
    &amp;quot;isselector&amp;quot;: true,&lt;br /&gt;
    &amp;quot;record&amp;quot;: true,&lt;br /&gt;
    &amp;quot;creatorid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorname&amp;quot;: &amp;quot;Иван Иванович Иванов&amp;quot;, &lt;br /&gt;
    &amp;quot;directorid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;directorlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;directorname&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;timestart&amp;quot;: &amp;quot;2011-04-03 17:58:22&amp;quot;,&lt;br /&gt;
    &amp;quot;canvieweachother&amp;quot;: true,&lt;br /&gt;
    &amp;quot;everyonecaninvite&amp;quot;: true,&lt;br /&gt;
    &amp;quot;recordrights&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;recordrightsstr&amp;quot;: &amp;quot;Competitors&amp;quot;,&lt;br /&gt;
    &amp;quot;isghost&amp;quot;: false,&lt;br /&gt;
    &amp;quot;ghostmode&amp;quot;: 11,&lt;br /&gt;
    &amp;quot;ghostmodestr&amp;quot;: &amp;quot;Monitor&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;competitors&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;lineid&amp;quot;: &amp;quot;F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
    &amp;quot;intnumber&amp;quot;: &amp;quot;472&amp;quot;,&lt;br /&gt;
    &amp;quot;extnumber&amp;quot;: &amp;quot;89047289889&amp;quot;,&lt;br /&gt;
    &amp;quot;cantalk&amp;quot;: true&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;recordusers&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''stopconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell от имени управляющего конференции на прекращение указанной конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;stopconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''stopconferenceresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на прекращение указанной конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;stopconferenceresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;accessdenied&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''confsetvoiceparams'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell от имени управляющего конференции на изменение голосовых свойств канала указанного участника указанной конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confsetvoiceparams&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;competitor&amp;quot;: {&lt;br /&gt;
   &amp;quot;competitorid&amp;quot;: &amp;quot;249995A5-8A64-49CC-87CA-D797FCFB7782&amp;quot;,&lt;br /&gt;
   &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
   &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
   &amp;quot;lineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
   &amp;quot;cantalk&amp;quot;: true,&lt;br /&gt;
   &amp;quot;canlisten&amp;quot;: true,&lt;br /&gt;
   &amp;quot;ghosthelp&amp;quot;: false&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* competitor - указывает на одного участника конференции. &lt;br /&gt;
/    	достаточно/следует указывать только один из набора определяющих участника идентификаторов &lt;br /&gt;
							{competitorid, userid|userlogin, lineid}&lt;br /&gt;
&lt;br /&gt;
//*  competitor:cantalk - может ли говорить&lt;br /&gt;
//*  competitor:canlisten - может ли слышать&lt;br /&gt;
//*  competitor:ghosthelp - в режиме прослушки:помощи для одного из подслушиваемых каналов - &lt;br /&gt;
					может ли слышать подключившегося супервизора&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''confsetvoiceparamsresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на изменение голосовых свойств канала.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confsetvoiceparamsresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;accessdenied&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''confsetwanttalk'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell от имени простого бесправного участника селекторного совещания на взятие голоса (сообщение для управляющего).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confsetwanttalk&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;wanttalk&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''confsetwanttalkresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на взятие голоса.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confsetwanttalkresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''confsetghostmode'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell от имени прослушивающего супервизора на изменение режима конференц-помощи.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confsetghostmode&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;ghostmode&amp;quot;: &amp;quot;help&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* ghostmode - monitor, help, conference (подслушивание, помощь, конференция)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''confsetghostmoderesult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на изменение режима конференц-помощи.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confsetghostmoderesult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''exitconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на вывод авторизованного пользователя из конференции. В канал подается отбой. Альтернативой является положение трубки на телефоне.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;exitconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''exitconferenceresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на выход из конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;exitconferenceresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''confdisconnectcompetitor'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell от имени управляющего конференцией на вывод из конференции указанного участника.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confdisconnectcompetitor&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;competitor&amp;quot;: {&lt;br /&gt;
   &amp;quot;competitorid&amp;quot;: &amp;quot;249995A5-8A64-49CC-87CA-D797FCFB7782&amp;quot;,&lt;br /&gt;
   &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
   &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
   &amp;quot;lineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* competitor - указывает на одного участника конференции. &lt;br /&gt;
/    	достаточно/следует указывать только один из набора определяющих участника идентификаторов &lt;br /&gt;
	{competitorid, userid|userlogin, lineid}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''confdisconnectcompetitorresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на вывод указанного в запросе участника.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confdisconnectcompetitorresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''enterconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на вход в конференцию. При необходимости осуществляет запрос на вход у управляющего. Прерывание может производиться командой exitconference&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;enterconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''enterconferenceresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на вход в конференцию.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;enterconferenceresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''confdisconnectcompetitor'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос-команда из CRM в Oktell от имени управляющего конференцией на разрешение/запрет входа в конференцию указанному участнику, ранее запросившему право входа.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confpermitdenyentrance&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;competitor&amp;quot;: {&lt;br /&gt;
   &amp;quot;competitorid&amp;quot;: &amp;quot;249995A5-8A64-49CC-87CA-D797FCFB7782&amp;quot;,&lt;br /&gt;
   &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
   &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
   &amp;quot;lineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
   &amp;quot;permit&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;	&lt;br /&gt;
//* competitor - указывает на одного участника конференции. &lt;br /&gt;
/    	достаточно/следует указывать только один из набора определяющих участника идентификаторов &lt;br /&gt;
	{competitorid, userid|userlogin, lineid}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''confpermitdenyentranceresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на разрешение/запрет входа в конференцию участнику.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confpermitdenyentranceresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''invitetoconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell от имени управляющего конференцией или любого другого участника на приглашение в конференцию стороннего абонента (пользователя, линию, абонента по внутреннему/внешнему номеру).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;invitetoconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;competitors&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;lineid&amp;quot;: &amp;quot;F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
    &amp;quot;intnumber&amp;quot;: &amp;quot;472&amp;quot;,&lt;br /&gt;
    &amp;quot;extnumber&amp;quot;: &amp;quot;89047289889&amp;quot;,&lt;br /&gt;
    &amp;quot;cantalk&amp;quot;: true&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* competitors - список автоматически приглашаемых участников. Допускается/следует указывать только один &lt;br /&gt;
			параметр из набора {userid|userlogin, lineid, intnumber, extnumber}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''invitetoconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на приглашение нового участника конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;invitetoconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====События из Oktell, касающиеся конференций====&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''conflistchanged'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Событие из Oktell в CRM об изменении списка текущих активных конференций.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;conflistchanged&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;2A6380B4-ADD4-4CD3-9A5C-9483A3B3723A&amp;quot;,&lt;br /&gt;
  &amp;quot;conferencelist&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
    &amp;quot;room&amp;quot;: 884,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Планерка&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;accessmode&amp;quot;: 11,&lt;br /&gt;
    &amp;quot;accessmodestr&amp;quot;: &amp;quot;Free&amp;quot;,&lt;br /&gt;
    &amp;quot;isselector&amp;quot;: true,&lt;br /&gt;
    &amp;quot;record&amp;quot;: true,&lt;br /&gt;
    &amp;quot;creatorid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorname&amp;quot;: &amp;quot;Иван Иванович Иванов&amp;quot;, &lt;br /&gt;
    &amp;quot;directorid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;directorlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;directorname&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;timestart&amp;quot;: &amp;quot;2011-04-03 17:58:22&amp;quot;,&lt;br /&gt;
    &amp;quot;canvieweachother&amp;quot;: true,&lt;br /&gt;
    &amp;quot;everyonecaninvite&amp;quot;: true,&lt;br /&gt;
    &amp;quot;recordrights&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;recordrightsstr&amp;quot;: &amp;quot;Competitors&amp;quot;,&lt;br /&gt;
    &amp;quot;isghost&amp;quot;: false,&lt;br /&gt;
    &amp;quot;ghostmode&amp;quot;: 11,&lt;br /&gt;
    &amp;quot;ghostmodestr&amp;quot;: &amp;quot;Monitor&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''&amp;quot;conf***&amp;quot;'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Другие событие из Oktell в CRM об изменениях на сервере конференций. Общий список возможных событий приведен ниже.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;conf***&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;2A6380B4-ADD4-4CD3-9A5C-9483A3B3723A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;eventinfo&amp;quot;: {&lt;br /&gt;
     ***&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* conflistchanged,&lt;br /&gt;
//* confparamschanged, &lt;br /&gt;
//* confcompositionchanged, &lt;br /&gt;
//* confcompetitorstatechanged, &lt;br /&gt;
//* confentrancedenied, &lt;br /&gt;
//* confentrancepermitted, &lt;br /&gt;
//* confentrancerequest, &lt;br /&gt;
//* confnotifyinvite, &lt;br /&gt;
//* confpossiblecompetitorstatechanged&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Состояния пользователей и линий====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''userstatechanged'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о смене состояния пользователя в Oktell. Отправляется на имя пользователя, чье состояние сменилось. Отправляется как результат запроса на смену состояния или независимо.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;userstatechanged&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;66F8D479-0234-47DF-B043-3A065FF464A7&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userstateid&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;onredirect&amp;quot;: true,&lt;br /&gt;
  &amp;quot;onlunch&amp;quot;: false,&lt;br /&gt;
  &amp;quot;oncallcenter&amp;quot;: false,&lt;br /&gt;
  &amp;quot;onccmanual&amp;quot;: false&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setuserstate'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к Oktell на смену состояния пользователя от его имени. При проведении изменений в ответ отправляется сообщение userstatechanged.&lt;br /&gt;
&lt;br /&gt;
Для изменения только одного из параметров состояния можно остальные не указывать (например оставлять только oncallcenter).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setuserstate&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;2A45010A-8EEA-4876-90CB-F062459D4BE2&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userstateid&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;onredirect&amp;quot;: false,&lt;br /&gt;
  &amp;quot;onlunch&amp;quot;: false,&lt;br /&gt;
  &amp;quot;oncallcenter&amp;quot;: false,&lt;br /&gt;
  &amp;quot;onccmanual&amp;quot;: false,&lt;br /&gt;
  &amp;quot;lunchreasonid&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;lunchreasonmsg&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* lunchreasonid и lunchreasonmsg - расширение для будущей статистики, устанавливают причину перерыва. &lt;br /&gt;
			id - если причина одна из стандартных. msg - если что-то уникальное юзер ввел.&lt;br /&gt;
userstateid:&lt;br /&gt;
1 - Готов&lt;br /&gt;
2 - Перерыв&lt;br /&gt;
3 - Отсутствует&lt;br /&gt;
5 - Занят&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getuserstate'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell состояния указанного пользователя системы.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getuserstate&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getuserstateresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с полным состоянием указанного в запросе пользователя системы. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getuserstateresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userstate&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;userstateid&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;userstatestr&amp;quot;: &amp;quot;usFullbusy&amp;quot;,&lt;br /&gt;
  &amp;quot;onredirect&amp;quot;: true,&lt;br /&gt;
  &amp;quot;onlunch&amp;quot;: false,&lt;br /&gt;
  &amp;quot;oncallcenter&amp;quot;: false,&lt;br /&gt;
  &amp;quot;onccmanual&amp;quot;: false&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''checkuserintask'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell о присутствии указанного пользователя в задачах call-центра.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;checkuserintask&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''checkuserintaskresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с ответом на запрос присутствия указанного в запросе пользователя в задачах колл-центра. Описание задачи в случае положительного ответа.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;checkuserintaskresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;intask&amp;quot;: true,&lt;br /&gt;
  &amp;quot;task&amp;quot;: {,&lt;br /&gt;
   &amp;quot;id&amp;quot;: &amp;quot;1D565B41-1D16-46DE-B2C5-CF55ED5279F0&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;Исходящий обзвон&amp;quot;,&lt;br /&gt;
   &amp;quot;code&amp;quot;: &amp;quot;af-2329&amp;quot;,&lt;br /&gt;
   &amp;quot;direction&amp;quot;: &amp;quot;outgoing&amp;quot;,&lt;br /&gt;
   &amp;quot;contacttype&amp;quot;: 0,&lt;br /&gt;
   &amp;quot;contacttypestr&amp;quot;: &amp;quot;Call&amp;quot;,&lt;br /&gt;
   &amp;quot;projectid&amp;quot;: &amp;quot;E6ADBA0D-C9FF-40F2-96FF-6D2F455F9D5A&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getmyuserinfo'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на получение информации о текущем авторизованном пользователе: имя, внутренний номер, номер и идентификатор линии.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getmyuserinfo&amp;quot;, &lt;br /&gt;
 { &lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,	&lt;br /&gt;
  }	  &lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getmyuserinforesult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с ответом на запрос информации о текущем авторизованном пользователе.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getmyuserinforesult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;username&amp;quot;: &amp;quot;Иванов Иван Иванович&amp;quot;,&lt;br /&gt;
  &amp;quot;mainpbxnumber&amp;quot;: &amp;quot;471&amp;quot;,&lt;br /&gt;
  &amp;quot;hasline&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;lineid&amp;quot;: &amp;quot;267F8F36-4713-4B66-81BD-019512E56E7E&amp;quot;,&lt;br /&gt;
  &amp;quot;linenumber&amp;quot;: &amp;quot;17374&amp;quot;,&lt;br /&gt;
  &amp;quot;isoperator&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getuserphoto'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell о текущем изображении (аватарке) указанного пользователя. Можно указывать только логин (''photoownerlogin'') или только идентификатор (''photoownerid'') интересующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getuserphoto&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;photoownerlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
  &amp;quot;photoownerid&amp;quot;: &amp;quot;3F140170-AEEF-4621-AF9D-247116AE1411&amp;quot;&lt;br /&gt;
  &amp;quot;mode&amp;quot;: &amp;quot;link&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* mode - link, page, data. По умолчанию page. &lt;br /&gt;
		link - вернуть абсолютную ссылку на скачивание через http.&lt;br /&gt;
		page - вернуть относительную ссылку на скачивание.&lt;br /&gt;
		вернуть данные изображения в base64.&lt;br /&gt;
	При формировании абсолютной ссылки в качестве доменного имени берется значение из &lt;br /&gt;
	раздела [[Интеграция с WEB-Socket CRM]] общих настроек Oktell.&lt;br /&gt;
//* photoownerlogin, photoownerid - логин и/или идентификатор пользователя, чья аватарка требуется&lt;br /&gt;
	Может не указываться, тогда будет возвращена аватарка авторизованного пользователя.&lt;br /&gt;
&amp;lt;/pre&amp;gt;	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getuserphotoresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с ответом на запрос информации о текущем авторизованном пользователе.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getuserphotoresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;link&amp;quot;: &amp;quot;http://...&amp;quot;&lt;br /&gt;
  &amp;quot;link32&amp;quot;: &amp;quot;http://...&amp;quot;&lt;br /&gt;
  &amp;quot;link96&amp;quot;: &amp;quot;http://...&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* result. В случае отсутствия файла или по любой другой причине неудачи описание неудачи&lt;br /&gt;
		будет находиться в поле errormsg. Например &amp;quot;File not found&amp;quot;.&lt;br /&gt;
//* imagedatab64. В случае возврата целиком изображения, оно будет в base64 строке содержаться в поле.&lt;br /&gt;
//* link, link32, link96. В случае возврата ссылки на изображение в полях лежат соответственно&lt;br /&gt;
		ссылки на полное изображение, 32х32- и 96x96- пиксельные образы.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getalluserphotolink'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на получение ссылок на текущие изображения (аватарки) всех пользователей системы.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getalluserphotolink&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;mode&amp;quot;: &amp;quot;link&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* mode - link, page. По умолчанию page. &lt;br /&gt;
		link - вернуть абсолютную ссылку на скачивание через http.&lt;br /&gt;
		page - вернуть относительную ссылку на скачивание.&lt;br /&gt;
	При формировании абсолютной ссылки в качестве доменного имени берется значение из &lt;br /&gt;
	раздела [[Интеграция с WEB-Socket CRM]] общих настроек Oktell.&lt;br /&gt;
&amp;lt;/pre&amp;gt;	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getalluserphotolinkresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с ответом на запрос ссылкок на текущие изображения (аватарки) всех пользователей системы.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getalluserphotolinkresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;links&amp;quot;: [ &lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;C6036E73-FB90-4F0C-B780-81CE5659BFEA&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Сидоров&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;http://...&amp;quot;,&lt;br /&gt;
    &amp;quot;link32x32&amp;quot;: &amp;quot;http://...&amp;quot;,&lt;br /&gt;
    &amp;quot;link96x96&amp;quot;: &amp;quot;http://...&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* result. Если в наборе есть хотя бы одна аватарка, будет содержать 1. Иначе 0.&lt;br /&gt;
//* links. Содержит набор пользовательских словарей, в каждом из которых идентификатор, &lt;br /&gt;
		логин и набор ссылок link, link32, link96. В полях лежат соответственно&lt;br /&gt;
		ссылки на полное изображение, 32х32- и 96x96- пиксельные образы.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setmyuserphoto'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на установку нового изображения (аватарки) текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setmyuserphoto&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;filepath&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;imagedatab64&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;filename&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* filepath - если файл уже на сервере где-то, то это путь к нему - &lt;br /&gt;
		относительный рабочего каталога, относительный файлового хранилища, или абсолютный.&lt;br /&gt;
		Допускается устанавливать в качестве аватарки изображения размером не более 1 MБ.&lt;br /&gt;
   либо&lt;br /&gt;
//* imagedatab64 и filename - если файл целиком прокачивается через веб-сокет, то тут base64 строка&lt;br /&gt;
		с образом файла.&lt;br /&gt;
&lt;br /&gt;
//* если не указано ни filepath, ни imagedatab64, ни filename - стирает текущую аватарку.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''setmyuserphotoresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с ответом на запрос информации о текущем авторизованном пользователе.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setmyuserphotoresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* result. В случае отсутствия файла или по любой другой причине неудачи описание неудачи&lt;br /&gt;
			будет находиться в поле errormsg. Например &amp;quot;File not found&amp;quot;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''changepassword'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на изменение пароля текущего авторизованного пользователя. &lt;br /&gt;
В версиях 2.7 пароль в нижнем регистре, в версиях 2.8 пароль без изменения регистра.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;changepassword&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;newpwdmd5&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;oldpwdmd5&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* oldpwdmd5 - MD5 текущего пароля.&lt;br /&gt;
//* newpwdmd5 - MD5 нового пароля.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''changepasswordresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM о результате изменения пароля.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;changepasswordresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;password should be md5 string&amp;quot;	&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getcurrentlinestate'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell состояния телефонной линии указанного пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getcurrentlinestate&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getcurrentlinestateresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с полным состоянием телефонной линии указанного в запросе пользователя системы. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getcurrentlinestateresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;hasline&amp;quot;: true,&lt;br /&gt;
  &amp;quot;lineid&amp;quot;: &amp;quot;866692FC-DA08-459D-BAA1-428F9BA6A0D1&amp;quot;,&lt;br /&gt;
  &amp;quot;linenumber&amp;quot;: &amp;quot;17012&amp;quot;,&lt;br /&gt;
  &amp;quot;linetype&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;linetypestr&amp;quot;: &amp;quot;ltIntIP&amp;quot;,&lt;br /&gt;
  &amp;quot;linestate&amp;quot;: 32,&lt;br /&gt;
  &amp;quot;linestatestr&amp;quot;: &amp;quot;lsCommutated&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getcurrentqueue'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell состояния очереди указанного пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getcurrentqueue&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getcurrentqueueresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с состоянием очереди указанного в запросе пользователя системы. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getcurrentqueueresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;queue&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;objectid&amp;quot;: &amp;quot;723114EE-2ABF-4806-9BC6-FBB532C31B44&amp;quot;,&lt;br /&gt;
    &amp;quot;objecttype&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;objecttypestr&amp;quot;: &amp;quot;qotQueueLogic&amp;quot;,&lt;br /&gt;
    &amp;quot;queuesource&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;queuesourcestr&amp;quot;: &amp;quot;qsLineLogic&amp;quot;,&lt;br /&gt;
    &amp;quot;queuepriority&amp;quot;: 9,&lt;br /&gt;
    &amp;quot;srcelementid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
    &amp;quot;srclineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
    &amp;quot;srclinenumber&amp;quot;: &amp;quot;17004&amp;quot;,&lt;br /&gt;
    &amp;quot;startqueuetime&amp;quot;: &amp;quot;2011-04-05 15:02:28&amp;quot;,&lt;br /&gt;
    &amp;quot;lenqueue&amp;quot;: 72,&lt;br /&gt;
    &amp;quot;managedlineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
    &amp;quot;managedlinenumber&amp;quot;: &amp;quot;17004&amp;quot;,&lt;br /&gt;
    &amp;quot;callerid&amp;quot;: &amp;quot;472&amp;quot;,&lt;br /&gt;
    &amp;quot;calledid&amp;quot;: &amp;quot;479&amp;quot;,&lt;br /&gt;
    &amp;quot;isuser&amp;quot;: true,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;department&amp;quot;: &amp;quot;Руководство&amp;quot;,&lt;br /&gt;
    &amp;quot;chainid&amp;quot;: &amp;quot;02B99AD3-C954-4FD3-B07D-DFEDD83C0BF5&amp;quot;,&lt;br /&gt;
    &amp;quot;istask&amp;quot;: true,&lt;br /&gt;
    &amp;quot;taskid&amp;quot;: &amp;quot;95575C37-5FDE-412C-8F42-36D55B1EC6BB&amp;quot;,&lt;br /&gt;
    &amp;quot;taskname&amp;quot;: &amp;quot;Входящая кампания&amp;quot;,&lt;br /&gt;
    &amp;quot;taskdirection&amp;quot;: &amp;quot;incoming&amp;quot;,&lt;br /&gt;
    &amp;quot;tasklistid&amp;quot;: &amp;quot;7D9A3E9C-0AD3-4C68-BC02-4EBFE3684507&amp;quot;,&lt;br /&gt;
    &amp;quot;tasklistinfo&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;Название организации&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;ООО МДГХ&amp;quot;&lt;br /&gt;
     },&lt;br /&gt;
     {...},&lt;br /&gt;
     {...}&lt;br /&gt;
    ]&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getcallingoutabonentinfo'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат информации об абоненте, которому осуществляется исходящий вызов от имени указанного пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getcallingoutabonentinfo&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getcallingoutabonentinforesult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает информацию об абоненте, которому осуществляется исходящий вызов от имени указанного в запросе пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getcallingoutabonentinforesult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968&amp;quot;,&lt;br /&gt;
  &amp;quot;number&amp;quot;: &amp;quot;89032728973&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;lineid&amp;quot;: &amp;quot;98F670D2-20E2-4883-B45E-42CDE1F3365F&amp;quot;,&lt;br /&gt;
  &amp;quot;linenumber&amp;quot;: &amp;quot;13005&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getflashedabonentinfo'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат информации об абоненте, находящемся на удержании.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getflashedabonentinfo&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DC35D182-8BAB-4DE4-919C-5F79090D92DE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getflashedabonentinforesult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает информацию об абоненте, находящемся на удержании&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getflashedabonentinforesult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DC35D182-8BAB-4DE4-919C-5F79090D92DE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;containsflashed&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;abonent&amp;quot;: {&lt;br /&gt;
    &amp;quot;chainid&amp;quot;: &amp;quot;19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968&amp;quot;,&lt;br /&gt;
    &amp;quot;isconference&amp;quot;: 0,&lt;br /&gt;
	&amp;quot;conferenceid&amp;quot;: &amp;quot;0D2A4CA1-FF17-473B-A5E9-E035CB16E257&amp;quot;,&lt;br /&gt;
	&amp;quot;conferenceroom&amp;quot;: &amp;quot;#124&amp;quot;,&lt;br /&gt;
	&amp;quot;conferencename&amp;quot;: &amp;quot;Планерка&amp;quot;,&lt;br /&gt;
	&amp;quot;conferencedescription&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;simplename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;number&amp;quot;: &amp;quot;89032728973&amp;quot;,&lt;br /&gt;
    &amp;quot;lineid&amp;quot;: &amp;quot;98F670D2-20E2-4883-B45E-42CDE1F3365F&amp;quot;,&lt;br /&gt;
    &amp;quot;linenumber&amp;quot;: &amp;quot;13005&amp;quot;,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getextendedlineinfo'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат расширенной информации о текущей линии и ее оппозитных абонентах: текущее состояние, информация об абоненте в коммутации, информация об абоненте на удержании.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getextendedlineinfo&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;55D54351-651E-4EC2-8E48-1D5136811FB9&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getextendedlineinforesult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает информацию о текущей линии и ее оппозитных абонентах&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getextendedlineinforesult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;55D54351-651E-4EC2-8E48-1D5136811FB9&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;linestateid&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;linestatestr&amp;quot;: &amp;quot;lsCommutated,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968&amp;quot;,&lt;br /&gt;
  &amp;quot;datetimeformat&amp;quot; = &amp;quot;dd.MM.yyyy HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;activetimestart&amp;quot; = &amp;quot;01.12.2011 16:59:28&amp;quot;,&lt;br /&gt;
  &amp;quot;abonent&amp;quot;: {&lt;br /&gt;
    &amp;quot;isconference&amp;quot;: false,&lt;br /&gt;
	&amp;quot;conferenceid&amp;quot;: &amp;quot;0D2A4CA1-FF17-473B-A5E9-E035CB16E257&amp;quot;,&lt;br /&gt;
	&amp;quot;conferenceroom&amp;quot;: &amp;quot;#124&amp;quot;,&lt;br /&gt;
	&amp;quot;conferencename&amp;quot;: &amp;quot;Планерка&amp;quot;,&lt;br /&gt;
	&amp;quot;conferencedescription&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;iscommutated&amp;quot;: false,&lt;br /&gt;
    &amp;quot;iswaitingfaxline&amp;quot;: false,&lt;br /&gt;
    &amp;quot;iswaitinginflash&amp;quot;: false,&lt;br /&gt;
    &amp;quot;iswaitingforanswer&amp;quot;: false,&lt;br /&gt;
	&amp;quot;number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;name&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;userid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;userlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;username&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;simplename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;lineid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;linenumber&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;isextline&amp;quot;: false,&lt;br /&gt;
    &amp;quot;iswaitingforanswer&amp;quot;: false,&lt;br /&gt;
	&amp;quot;extnumber&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;queuesourceid&amp;quot;: 1,&lt;br /&gt;
	&amp;quot;queuesourcestr&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;isivr&amp;quot;: false,&lt;br /&gt;
	&amp;quot;ivrname&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;isroutingivr&amp;quot;: false, &lt;br /&gt;
	&amp;quot;ismediaivr&amp;quot;: false, &lt;br /&gt;
	&amp;quot;isrestartivr&amp;quot;: false,&lt;br /&gt;
    &amp;quot;isautocall&amp;quot;: false,&lt;br /&gt;
	&amp;quot;number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;isringing&amp;quot;: false,&lt;br /&gt;
	&amp;quot;ringtimesec&amp;quot;: 172,&lt;br /&gt;
	&amp;quot;isconference&amp;quot;: false,&lt;br /&gt;
		&amp;quot;conferenceid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;conferencename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;conferenceroom&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;conferencedescription&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;inviteruserid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;inviterusername&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;inviteruserlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;name&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;direction&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;isextline&amp;quot;: true,&lt;br /&gt;
	&amp;quot;istask&amp;quot;: false,&lt;br /&gt;
		&amp;quot;taskid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;taskname&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;userid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;userlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;username&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;lineid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;linenumber&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  &amp;quot;isflashing&amp;quot;: true,&lt;br /&gt;
  &amp;quot;flashed&amp;quot;: {&lt;br /&gt;
    &amp;quot;isconference&amp;quot;: true,&lt;br /&gt;
	&amp;quot;conferenceid&amp;quot;: &amp;quot;0D2A4CA1-FF17-473B-A5E9-E035CB16E257&amp;quot;,&lt;br /&gt;
	&amp;quot;conferenceroom&amp;quot;: &amp;quot;#124&amp;quot;,&lt;br /&gt;
	&amp;quot;conferencename&amp;quot;: &amp;quot;Планерка&amp;quot;,&lt;br /&gt;
	&amp;quot;conferencedescription&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;simplename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lineid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;linenumber&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;isextline&amp;quot;: false&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* С отступом в примере указаны поля, появляющиеся в случае, если базовое булево поле имеет значение true. &lt;br /&gt;
//      Например, если isringing=true, то указанные с отступом поля будут присутствовать и представлять собой&lt;br /&gt;
//      информацию об абоненте, осуществляющем вызов текущего канала.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Управление переадресацией====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getredirectrules'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат списка правил переадресации для текущего пользователя с их настройками.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getredirectrules&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getredirectrulesresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает список правил переадресации для текущего пользователя с их настройками.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getredirectrulesresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;redirectrules&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;5FD3120D-E86B-4F4B-B57C-AC32343CD00F&amp;quot;,&lt;br /&gt;
    &amp;quot;caption&amp;quot;: &amp;quot;Постоянное&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Действует всегда, когда я в состоянии переадресации&amp;quot;,&lt;br /&gt;
    &amp;quot;priority&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
    &amp;quot;isenabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;allowcascade&amp;quot;: true,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;statestr&amp;quot;: &amp;quot;Active&amp;quot;,&lt;br /&gt;
    &amp;quot;destinationnumber&amp;quot;: &amp;quot;89050213951&amp;quot;,&lt;br /&gt;
    &amp;quot;onlyforredirectstate&amp;quot;: true,&lt;br /&gt;
    &amp;quot;definesources&amp;quot;: true,&lt;br /&gt;
    &amp;quot;sources&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;type&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;typestr&amp;quot;: &amp;quot;ExtNumber&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
      &amp;quot;srcnumber&amp;quot;: &amp;quot;4959741589&amp;quot;,&lt;br /&gt;
      &amp;quot;srcid&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
     },&lt;br /&gt;
     ...&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;defineschedule&amp;quot;: true,&lt;br /&gt;
    &amp;quot;tformat&amp;quot;: &amp;quot;HH:mm:ss&amp;quot;,&lt;br /&gt;
    &amp;quot;schedule&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;weekday&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;weekdaystr&amp;quot;: &amp;quot;Sunday&amp;quot;,&lt;br /&gt;
      &amp;quot;tstart&amp;quot;: &amp;quot;00:00:00&amp;quot;,&lt;br /&gt;
      &amp;quot;tstop&amp;quot;: &amp;quot;23:59:59&amp;quot;,&lt;br /&gt;
     },&lt;br /&gt;
     ...&lt;br /&gt;
    ]&lt;br /&gt;
   },&lt;br /&gt;
   ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//*  state: disabled=0, enabled=1, active=2&lt;br /&gt;
//*  defineschedule - если false, значит активно всегда&lt;br /&gt;
//*  definesources - если false, значит для всех номеров&lt;br /&gt;
//*  sourcetype - extnumber=0, user=1, client=3, clientgroup=4. &lt;br /&gt;
		Если номер - то указывается scrnumber, иначе srcid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''saveredirectrules'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Сохраняет новое/измененное правило переадресации для текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;saveredirectrules&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;redirectrules&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;5FD3120D-E86B-4F4B-B57C-AC32343CD00F&amp;quot;,&lt;br /&gt;
    &amp;quot;caption&amp;quot;: &amp;quot;Постоянное&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Действует всегда, когда я в состоянии переадресации&amp;quot;,&lt;br /&gt;
    &amp;quot;priority&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
    &amp;quot;isenabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;allowcascade&amp;quot;: true,&lt;br /&gt;
    &amp;quot;destinationnumber&amp;quot;: &amp;quot;89050213951&amp;quot;,&lt;br /&gt;
    &amp;quot;onlyforredirectstate&amp;quot;: true,&lt;br /&gt;
    &amp;quot;definesources&amp;quot;: true,&lt;br /&gt;
    &amp;quot;sources&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;type&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;typestr&amp;quot;: &amp;quot;ExtNumber&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
      &amp;quot;srcnumber&amp;quot;: &amp;quot;4959741589&amp;quot;,&lt;br /&gt;
      &amp;quot;srcid&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
     },&lt;br /&gt;
     ...&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;defineschedule&amp;quot;: true,&lt;br /&gt;
    &amp;quot;tformat&amp;quot;: &amp;quot;HH:mm:ss&amp;quot;,&lt;br /&gt;
    &amp;quot;schedule&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;weekday&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;weekdaystr&amp;quot;: &amp;quot;Sunday&amp;quot;,&lt;br /&gt;
      &amp;quot;tstart&amp;quot;: &amp;quot;00:00:00&amp;quot;,&lt;br /&gt;
      &amp;quot;tstop&amp;quot;: &amp;quot;23:59:59&amp;quot;,&lt;br /&gt;
     },&lt;br /&gt;
     ...&lt;br /&gt;
    ]&lt;br /&gt;
   },&lt;br /&gt;
   ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//*  state: disabled=0, enabled=1, active=2&lt;br /&gt;
//*  defineschedule - если false, значит активно всегда&lt;br /&gt;
//*  definesources - если false, значит для всех номеров&lt;br /&gt;
//*  sourcetype - extnumber=0, user=1, client=3, clientgroup=4. Если номер - то указывается scrnumber, иначе srcid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''saveredirectrulesresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает список правил переадресации для текущего пользователя с их настройками.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;saveredirectrulesresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''deleteredirectrules'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Удаляет указанные правила переадресации для текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;deleteredirectrules&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
  &amp;quot;ids&amp;quot;: [&lt;br /&gt;
   &amp;quot;5FD3120D-E86B-4F4B-B57C-AC32343CD00F&amp;quot;,&lt;br /&gt;
   ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''deleteredirectrulesresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Ничего не возвращает, кроме факта выполнения запроса на удаление правил переадресации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;deleteredirectrulesresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setredirectruleenabled'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Включает/выключает указанные правила переадресации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setredirectruleenabled&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
  &amp;quot;id&amp;quot;: &amp;quot;5FD3120D-E86B-4F4B-B57C-AC32343CD00F&amp;quot;,&lt;br /&gt;
  &amp;quot;enabled&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''setredirectruleenabledresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Ничего не возвращает, кроме факта выполнения запроса на включение/выключения указанных правил переадресации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setredirectruleenabledresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Контент звонка====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getchaincontent'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат контента текущей сессии, в которой участвует линия указанного пользователя. Кто инициировал звонок, когда, с кем коммутировался, кто переключал, куда, на кого, когда, были ли комментарии какие-то установлены в контент...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   [&lt;br /&gt;
     &amp;quot;getchaincontent&amp;quot;,&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
      &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
      &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getchaincontentresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с контентом текущей сессии указанного в запросе пользователя. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getchaincontentresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;content&amp;quot;: {&lt;br /&gt;
   &amp;quot;chainid&amp;quot;: &amp;quot;19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968&amp;quot;,&lt;br /&gt;
   &amp;quot;createtime&amp;quot;: &amp;quot;2011-04-06 20:38:41&amp;quot;,&lt;br /&gt;
   &amp;quot;customfield&amp;quot;: &amp;quot;трололололо&amp;quot;,&lt;br /&gt;
   &amp;quot;trace&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
     &amp;quot;contentelementtype&amp;quot;: &amp;quot;call&amp;quot;,&lt;br /&gt;
     &amp;quot;pbxdirection&amp;quot;: &amp;quot;internal&amp;quot;,&lt;br /&gt;
     &amp;quot;objectid&amp;quot;: &amp;quot;723114EE-2ABF-4806-9BC6-FBB532C31B44&amp;quot;,&lt;br /&gt;
     &amp;quot;objecttype&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;objecttypestr&amp;quot;: &amp;quot;qotQueueLogic&amp;quot;,&lt;br /&gt;
     &amp;quot;queuesource&amp;quot;: 5,&lt;br /&gt;
     &amp;quot;queuesourcestr&amp;quot;: &amp;quot;qsIncomingTask&amp;quot;,&lt;br /&gt;
     &amp;quot;queuepriority&amp;quot;: 7,&lt;br /&gt;
     &amp;quot;srcelementid&amp;quot;: &amp;quot;98F670D2-20E2-4883-B45E-42CDE1F3365F&amp;quot;,&lt;br /&gt;
     &amp;quot;srclineid&amp;quot;: &amp;quot;98F670D2-20E2-4883-B45E-42CDE1F3365F&amp;quot;,&lt;br /&gt;
     &amp;quot;srclinenumber&amp;quot;: &amp;quot;13005&amp;quot;,&lt;br /&gt;
     &amp;quot;startqueuetime&amp;quot;: &amp;quot;2011-04-06 20:38:41&amp;quot;,&lt;br /&gt;
     &amp;quot;managedlineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
     &amp;quot;managedlinenumber&amp;quot;: &amp;quot;17004&amp;quot;,&lt;br /&gt;
     &amp;quot;callerid&amp;quot;: &amp;quot;89048928835&amp;quot;,&lt;br /&gt;
     &amp;quot;calledid&amp;quot;: &amp;quot;4959211586&amp;quot;,&lt;br /&gt;
     &amp;quot;isuser&amp;quot;: false,&lt;br /&gt;
     &amp;quot;department&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
     &amp;quot;istask&amp;quot;: true,&lt;br /&gt;
     &amp;quot;taskid&amp;quot;: &amp;quot;95575C37-5FDE-412C-8F42-36D55B1EC6BB&amp;quot;,&lt;br /&gt;
     &amp;quot;taskname&amp;quot;: &amp;quot;Входящая кампания&amp;quot;,&lt;br /&gt;
     &amp;quot;taskdirection&amp;quot;: &amp;quot;incoming&amp;quot;,&lt;br /&gt;
     &amp;quot;tasklistid&amp;quot;: &amp;quot;7D9A3E9C-0AD3-4C68-BC02-4EBFE3684507&amp;quot;,&lt;br /&gt;
     &amp;quot;tasklistinfo&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;key&amp;quot;: &amp;quot;Название организации&amp;quot;,&lt;br /&gt;
       &amp;quot;value&amp;quot;: &amp;quot;ООО МДГХ&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
     ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
     &amp;quot;contentelementtype&amp;quot;: &amp;quot;commutation&amp;quot;,&lt;br /&gt;
     &amp;quot;commutationid&amp;quot;: &amp;quot;58D76504-DA2D-42C2-9016-1089A94DC1BF&amp;quot;,&lt;br /&gt;
     &amp;quot;timestart&amp;quot;: &amp;quot;2011-04-06 20:40:01&amp;quot;,&lt;br /&gt;
     &amp;quot;timeanswer&amp;quot;: &amp;quot;2011-04-06 20:40:04&amp;quot;,&lt;br /&gt;
     &amp;quot;connectiontype&amp;quot;: 5,&lt;br /&gt;
     &amp;quot;connectiontypestr&amp;quot;: &amp;quot;ctOuterInner&amp;quot;,&lt;br /&gt;
     &amp;quot;isrecorded&amp;quot;: true,&lt;br /&gt;
     &amp;quot;customfield&amp;quot;: &amp;quot;траляляляля&amp;quot;,&lt;br /&gt;
     &amp;quot;alineid&amp;quot;: &amp;quot;98F670D2-20E2-4883-B45E-42CDE1F3365F&amp;quot;,&lt;br /&gt;
     &amp;quot;alinenumber&amp;quot;: &amp;quot;13005&amp;quot;,&lt;br /&gt;
     &amp;quot;anumberdialed&amp;quot;: &amp;quot;4959211586&amp;quot;,&lt;br /&gt;
     &amp;quot;aoutnumber&amp;quot;: &amp;quot;89048928835&amp;quot;,&lt;br /&gt;
     &amp;quot;aisuser&amp;quot;: false,&lt;br /&gt;
     &amp;quot;atext&amp;quot;: &amp;quot;ООО «СДЗЦ» (89048928835)&amp;quot;,&lt;br /&gt;
     &amp;quot;blineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
     &amp;quot;blinenumber&amp;quot;: &amp;quot;17004&amp;quot;,&lt;br /&gt;
     &amp;quot;bnumberdialed&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
     &amp;quot;boutnumber&amp;quot;: &amp;quot;472&amp;quot;,&lt;br /&gt;
     &amp;quot;bisuser&amp;quot;: true,&lt;br /&gt;
     &amp;quot;buserid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
     &amp;quot;buserlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
     &amp;quot;busername&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
     &amp;quot;btext&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
     &amp;quot;timestop&amp;quot;: &amp;quot;2011-04-06 20:42:12&amp;quot;,&lt;br /&gt;
     &amp;quot;length&amp;quot;: 128.32,&lt;br /&gt;
     &amp;quot;stopside&amp;quot;: &amp;quot;a&amp;quot;,&lt;br /&gt;
     &amp;quot;stopreason&amp;quot;: 2,&lt;br /&gt;
     &amp;quot;stopreasonstr&amp;quot;: &amp;quot;scrAbonentHangOff&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {...},&lt;br /&gt;
    {...}&lt;br /&gt;
   ]&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* trace:contentelementtype: &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setchaincontentcustomfield'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на установку комментария в контент текущей сессии, в которой участвует канал указанного пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setchaincontentcustomfield&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;customfield&amp;quot;: &amp;quot;фывафыдвлаожфыдлвао&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''setchaincontentcustomfieldresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом установки комментария в контент текущей сессии, в которой участвует канал указанного в запросе пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setchaincontentcustomfieldresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getchaincontentcustomfield'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат комментария из контента текущей сессии, в которой участвует канал указанного пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getchaincontentcustomfield&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getchaincontentcustomfieldresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает комментарий из контента текущей сессии, в которой участвует канал указанного в запросе пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getchaincontentcustomfieldresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968&amp;quot;,&lt;br /&gt;
  &amp;quot;customfield&amp;quot;: &amp;quot;фывафыдвлаожфыдлвао&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Журнал звонков====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getpbxcalljournal'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат журнала звонков АТС по указанному фильтру в соответствии с правами пользователя.&lt;br /&gt;
В том числе ссылки на файлы записей разговоров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxcalljournal&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;idconn&amp;quot;: &amp;quot;08708573-4AF9-45F2-83B7-B8A0DDEF52EC&amp;quot;,&lt;br /&gt;
    &amp;quot;idchain&amp;quot;: &amp;quot;94B5B657-3009-45E0-9095-F5D7BA163EB2&amp;quot;,&lt;br /&gt;
    &amp;quot;datestart&amp;quot;: &amp;quot;2011-04-07&amp;quot;,&lt;br /&gt;
    &amp;quot;datestop&amp;quot;: &amp;quot;2011-04-07&amp;quot;,&lt;br /&gt;
    &amp;quot;timestart&amp;quot;: &amp;quot;08:00:00&amp;quot;,&lt;br /&gt;
    &amp;quot;timestop&amp;quot;: &amp;quot;20:00:00&amp;quot;,&lt;br /&gt;
    &amp;quot;connectiontype&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
    &amp;quot;intnumber&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;outnumber&amp;quot;: &amp;quot;89503222555&amp;quot;,&lt;br /&gt;
    &amp;quot;minduration&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin: &amp;quot;Петров&amp;quot;&lt;br /&gt;
    &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;showcallcenter&amp;quot;: false,&lt;br /&gt;
    &amp;quot;taskid&amp;quot;: &amp;quot;00000000-0000-0000-0000-000000000000&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* filter - фильтр для запроса. Все поля не являются обязательными.&lt;br /&gt;
	По умолчанию возвращаются разговоры за текущий день с 8:00 до 17:00 без звонков call-центра &lt;br /&gt;
		длительностью более 1 секунды, которые доступны авторизованному пользователю по правам контроля.&lt;br /&gt;
	К фильтру могут быть применены: &lt;br /&gt;
		idconn - идентификатор конкретно интересующей коммутации.&lt;br /&gt;
		idchain - идентификатор конкретно интересующей цепочки коммутаций/сессии.&lt;br /&gt;
		datestart - дата начала интересующего периода. Включительно.&lt;br /&gt;
		datestop - дата окончания интересующего периода. Включительно.&lt;br /&gt;
		timestart - время начала интересующего внутридневного интервала. &lt;br /&gt;
		timestop - время окончания интересующего внутридневного интервала. &lt;br /&gt;
		connectiontype - тип соединения (all, incoming, outgoing, internal, conference).&lt;br /&gt;
		intnumber - интересующий внутренний номер.&lt;br /&gt;
		outnumber - интересующий внешний номер.&lt;br /&gt;
		minduration - минимальная длительность коммутации в секундах, может быть действительным значением.&lt;br /&gt;
		userid - идентификатор интересующего пользователя.&lt;br /&gt;
		userlogin - логин интересующего пользователя.&lt;br /&gt;
		comment - строка включения в комментарии.&lt;br /&gt;
		showcallcenter: true|false. Отображать ли коммутации call-центра.&lt;br /&gt;
		taskid - идентификатор задачи в рамках call-центра, чьи звонки интересны.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getpbxcalljournalresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает журнал звонков АТС по указанному фильтру в соответствии с правами пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxcalljournalresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;dd.MM.yyyy HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;data&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;commutationid&amp;quot;: &amp;quot;044d56f9-7137-49b6-bacf-a10370a54df4&amp;quot;,&lt;br /&gt;
    &amp;quot;chainid&amp;quot;: &amp;quot;672ec703-e77a-47b1-b698-cb8488352fc9&amp;quot;,&lt;br /&gt;
    &amp;quot;connectiontype&amp;quot;: 10,&lt;br /&gt;
    &amp;quot;connectiontypestr&amp;quot;: &amp;quot;conference&amp;quot;,&lt;br /&gt;
    &amp;quot;dtstart&amp;quot;: &amp;quot;2011-04-09 19:55:30&amp;quot;,&lt;br /&gt;
    &amp;quot;dtanswer&amp;quot;: &amp;quot;2011-04-09 19:55:30&amp;quot;,&lt;br /&gt;
    &amp;quot;dtstop&amp;quot;: &amp;quot;2011-04-09 19:55:33&amp;quot;,&lt;br /&gt;
    &amp;quot;length&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;answerlength&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;hascomment&amp;quot;: false,&lt;br /&gt;
    &amp;quot;isbetweenusers&amp;quot;: true,&lt;br /&gt;
    &amp;quot;fromcc&amp;quot;: false,&lt;br /&gt;
    &amp;quot;isconf&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isrecorded&amp;quot;: true,&lt;br /&gt;
    &amp;quot;recordlink&amp;quot;: &amp;quot;/download/rec/AQAAAAAQIKvNHczNCBEBAAAA&amp;quot;,&lt;br /&gt;
    &amp;quot;fileext&amp;quot;: &amp;quot;wav&amp;quot;,&lt;br /&gt;
    &amp;quot;auserid&amp;quot;: &amp;quot;AA3B3E14-2B44-4D08-8C62-3C616F9D27E3&amp;quot;,&lt;br /&gt;
    &amp;quot;auserlogin&amp;quot;: &amp;quot;Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;alineid&amp;quot;: &amp;quot;A117499D-23EA-4BF8-A6B9-F49580E9628C&amp;quot;,&lt;br /&gt;
    &amp;quot;alinenumber&amp;quot;: &amp;quot;16001&amp;quot;,&lt;br /&gt;
    &amp;quot;aoutnumber&amp;quot;: &amp;quot;Семен Егорович Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;anumberdialed&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;atext&amp;quot;: &amp;quot;Семен Егорович Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;conferenceid&amp;quot;: &amp;quot;224476F1-2E41-4C8F-BA85-6BEF0EBB5339&amp;quot;,&lt;br /&gt;
    &amp;quot;conferenceroom&amp;quot;: &amp;quot;751&amp;quot;,&lt;br /&gt;
    &amp;quot;conferencename&amp;quot;: &amp;quot;Автоконференция #751 09.04.11 19:55:30&amp;quot;,&lt;br /&gt;
    &amp;quot;conferencedirectorid&amp;quot;: &amp;quot;AA3B3E14-2B44-4D08-8C62-3C616F9D27E3&amp;quot;,&lt;br /&gt;
    &amp;quot;conferencedirectorlogin&amp;quot;: &amp;quot;Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;conferencedirectorname&amp;quot;: &amp;quot;Семен Егорович Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;reasonstop&amp;quot;: -1,&lt;br /&gt;
    &amp;quot;stopside&amp;quot;: &amp;quot;a&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;commutationid&amp;quot;: &amp;quot;5F64DECF-194C-474B-8CA7-824E82A1C072&amp;quot;,&lt;br /&gt;
    &amp;quot;chainid&amp;quot;: &amp;quot;22A01B17-064B-4E19-99BA-FED96680AF25&amp;quot;,&lt;br /&gt;
    &amp;quot;connectiontype&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;connectiontypestr&amp;quot;: &amp;quot;ctOuterInner&amp;quot;,&lt;br /&gt;
    &amp;quot;dtstart&amp;quot;: &amp;quot;2011-04-09 19:57:24&amp;quot;,&lt;br /&gt;
    &amp;quot;dtanswer&amp;quot;: &amp;quot;2011-04-09 19:57:24&amp;quot;,&lt;br /&gt;
    &amp;quot;dtstop&amp;quot;: &amp;quot;2011-04-09 19:58:13&amp;quot;,&lt;br /&gt;
    &amp;quot;length&amp;quot;: 49,&lt;br /&gt;
    &amp;quot;answerlength&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;hascomment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isbetweenusers&amp;quot;: true,&lt;br /&gt;
    &amp;quot;fromcc&amp;quot;: false,&lt;br /&gt;
    &amp;quot;isrecorded&amp;quot;: true,&lt;br /&gt;
    &amp;quot;recordlink&amp;quot;: &amp;quot;/download/rec/AAAAAABwOltxHczNCGlCAACBPgAA&amp;quot;,&lt;br /&gt;
	  &amp;quot;fileext&amp;quot;: &amp;quot;mp3&amp;quot;,&lt;br /&gt;
    &amp;quot;isconf&amp;quot;: false,&lt;br /&gt;
    &amp;quot;auserid&amp;quot;: &amp;quot;AA3B3E14-2B44-4D08-8C62-3C616F9D27E3&amp;quot;,&lt;br /&gt;
    &amp;quot;auserlogin&amp;quot;: &amp;quot;Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;alineid&amp;quot;: &amp;quot;A117499D-23EA-4BF8-A6B9-F49580E9628C&amp;quot;,&lt;br /&gt;
    &amp;quot;alinenumber&amp;quot;: &amp;quot;16001&amp;quot;,&lt;br /&gt;
    &amp;quot;aoutnumber&amp;quot;: &amp;quot;Семен Егорович Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;anumberdialed&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;atext&amp;quot;: &amp;quot;Семен Егорович Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;buserid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;buserlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;blineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
    &amp;quot;blinenumber&amp;quot;: &amp;quot;17004&amp;quot;,&lt;br /&gt;
    &amp;quot;boutnumber&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;bnumberdialed&amp;quot;: &amp;quot;217&amp;quot;,&lt;br /&gt;
    &amp;quot;btext&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;reasonstop&amp;quot;: -1,&lt;br /&gt;
    &amp;quot;stopside&amp;quot;: &amp;quot;b&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* dtformat - формат представления даты/времени.&lt;br /&gt;
//* data - набор попавших в выдачу коммутаций/конференций. Каждая запись - в отдельном словаре.&lt;br /&gt;
	commutationid - идентификатор коммутации.&lt;br /&gt;
	chainid - идентификатор цепочки коммутаций/сессии.&lt;br /&gt;
	connectiontype, connectiontypestr - Тип соединения:&lt;br /&gt;
		ctInnerOuter	= 1, //внутренняя линия с внешней линией&lt;br /&gt;
		ctInnerIvr	= 2, //внутренняя линия с IVR&lt;br /&gt;
		ctInnerInner	= 3, //внутренняя линия с внутренней линией&lt;br /&gt;
		ctOuterIvr	= 4, //внешняя линия с IVR&lt;br /&gt;
		ctOuterInner	= 5, //внешняя линия с внутренней линией линией&lt;br /&gt;
		ctOuterOuter	= 6, //внешняя линия с внешней линией		&lt;br /&gt;
		ctIvrOuter	= 7, //IVR с внешней линией		&lt;br /&gt;
		ctIvrInner	= 8, //IVR с внутренней линией&lt;br /&gt;
		ctConference	= 10,//Конференция&lt;br /&gt;
		ctSelector	= 11,//Селекторное совещание&lt;br /&gt;
	dtstart - дата/время начала вызова перед осуществлением коммутации.&lt;br /&gt;
	dtanswer - дата/время ответа и начала коммутации.&lt;br /&gt;
	dtstop - дата/время окончания коммутации&lt;br /&gt;
	length - длительность в секундах&lt;br /&gt;
	answerlength - длительность ответа в секундах.&lt;br /&gt;
	hascomment - true|false. Имеет ли данная коммутация комментарий.&lt;br /&gt;
	isbetweenusers - true|false. Является ли текущая коммутация между пользователями системы.&lt;br /&gt;
	fromcc - true|false. Произведена ли текущая коммутация в рамках работы call-центра.&lt;br /&gt;
	isrecorded - true|false. Записана ли коммутация.&lt;br /&gt;
	recordlink - относительная ссылка на скачивание файла записи разговора.&lt;br /&gt;
	fileext - если файл записан, то его расширение mp3 или wav. Возвращает только если в полном &lt;br /&gt;
			результате менее 5 записей, иначе поле отсутствует.&lt;br /&gt;
	isconf - true|false. Является ли текущая запись конференцией.&lt;br /&gt;
	auserid - идентификатор пользователя абонента a. &lt;br /&gt;
			Если IVR - 'ab000000-0000-0000-0000-000000000000',&lt;br /&gt;
			Если внешний абонент - 'bf000000-0000-0000-0000-000000000000'&lt;br /&gt;
	auserlogin - логин пользователя абонента a.&lt;br /&gt;
	alineid - идентификатор линии абонента a.&lt;br /&gt;
	alinenumber - номер линии абонента a.&lt;br /&gt;
	aoutnumber - номер абонента a (CallerId).&lt;br /&gt;
	anumberdialed - набранный абонентом a номер.&lt;br /&gt;
	atext - текстовое описание абонента a.&lt;br /&gt;
	buserid - идентификатор пользователя абонента b. &lt;br /&gt;
			Если IVR - 'ab000000-0000-0000-0000-000000000000',&lt;br /&gt;
			Если внешний абонент - 'bf000000-0000-0000-0000-000000000000'&lt;br /&gt;
	buserlogin - логин пользователя абонента b.&lt;br /&gt;
	blineid - идентификатор линии абонента b.&lt;br /&gt;
	blinenumber - номер линии абонента b.&lt;br /&gt;
	boutnumber - номер абонента b (CallerId).&lt;br /&gt;
	bnumberdialed - набранный абонентом b номер.&lt;br /&gt;
	btext - текстовое описание абонента b.&lt;br /&gt;
	reasonstop - причина разрыва коммутации.&lt;br /&gt;
	stopside - a, b. По чьей инициативе коммутация прервана.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getpbxcallcomment'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат комментария к указанной коммутации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxcallcomment&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;1E3C27C0-BE28-4621-AD39-6D1B31EB37EB&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;73567FD4-EFB9-46BF-9346-35B8638FE644&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getpbxcallcommentresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает комментарий к запрошенной коммутации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxcallcommentresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;1E3C27C0-BE28-4621-AD39-6D1B31EB37EB&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;73567FD4-EFB9-46BF-9346-35B8638FE644&amp;quot;,&lt;br /&gt;
  &amp;quot;comment&amp;quot;: &amp;quot;раз два три четыре пять вышел зайчик погулять&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setpbxcallcomment'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на установку комментария для указанной коммутации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setpbxcallcomment&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;3AB79A11-24FB-4D10-B7FD-5FD1653A679D&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;73567FD4-EFB9-46BF-9346-35B8638FE644&amp;quot;&lt;br /&gt;
  &amp;quot;comment&amp;quot;: &amp;quot;раз два три четыре пять вышел зайчик погулять&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setpbxcallcommentresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат установки комментария к коммутации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setpbxcallcommentresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;3AB79A11-24FB-4D10-B7FD-5FD1653A679D&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getpbxmycalljournal'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат журнала собственных звонков авторизованного пользователя по указанному фильтру.&lt;br /&gt;
В том числе ссылки на файлы записей разговоров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxmycalljournal&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F95D0A08-D904-49C9-A4B9-8C02B1781A89&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;linkmode&amp;quot;: &amp;quot;full&amp;quot;,&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;datestart&amp;quot;: &amp;quot;2011-04-07&amp;quot;,&lt;br /&gt;
    &amp;quot;datestop&amp;quot;: &amp;quot;2011-04-07&amp;quot;,&lt;br /&gt;
    &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;number&amp;quot;: &amp;quot;89503222555&amp;quot;,&lt;br /&gt;
    &amp;quot;media&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;all&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* linkmode - full, simple - устанавливает формат ссылок, в котором будут указаны полученные файлы&lt;br /&gt;
		в событии об окончании приема.&lt;br /&gt;
			full - вернуть абсолютную ссылку на скачивание через http.&lt;br /&gt;
			simple - вернуть относительную ссылку на скачивание.&lt;br /&gt;
		При формировании абсолютной ссылки в качестве доменного имени берется значение из &lt;br /&gt;
		раздела [[Интеграция с WEB-Socket CRM]] общих настроек Oktell.&lt;br /&gt;
//* filter - фильтр для запроса. Все поля не являются обязательными.&lt;br /&gt;
	По умолчанию возвращаются разговоры за текущий день с 8:00 до 17:00, в которых&lt;br /&gt;
		участвовал авторизованный пользователь			&lt;br /&gt;
	К фильтру могут быть применены: &lt;br /&gt;
		datestart - дата начала интересующего периода. Включительно.&lt;br /&gt;
		datestop - дата окончания интересующего периода. Включительно.&lt;br /&gt;
		comment - строка включения в комментарии.&lt;br /&gt;
		number - интересующий номер оппонента.&lt;br /&gt;
		media - external, internal, all. Среда вызова.&lt;br /&gt;
		type - тип звонка:&lt;br /&gt;
			incoming - входящий звонок.&lt;br /&gt;
			outcoming - исходящий звонок.&lt;br /&gt;
			missed - пропущенный звонок. Что является пропущенным звонком определяется в разделе&lt;br /&gt;
					[[Менеджер очередей]] общих настроек Oktell.&lt;br /&gt;
			conference - конференция.&lt;br /&gt;
			selector - селекторное совещание.&lt;br /&gt;
			all - все типы звонков.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getpbxmycalljournalresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает журнал собственных звонков авторизованного пользователя по указанному фильтру.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxmycalljournalresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F95D0A08-D904-49C9-A4B9-8C02B1781A89&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;dd.MM.yyyy HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;data&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;type&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;typestr&amp;quot;: &amp;quot;incoming&amp;quot;,&lt;br /&gt;
    &amp;quot;media&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;mediastr&amp;quot;: &amp;quot;internal&amp;quot;,&lt;br /&gt;
    &amp;quot;commutationid&amp;quot;: &amp;quot;73567FD4-EFB9-46BF-9346-35B8638FE644&amp;quot;,&lt;br /&gt;
    &amp;quot;chainid&amp;quot;: &amp;quot;46fe0543-4a58-49c5-b501-644b8ddad69a&amp;quot;,&lt;br /&gt;
    &amp;quot;dtstart&amp;quot;: &amp;quot;2011-04-09 19:55:25&amp;quot;,&lt;br /&gt;
    &amp;quot;dtanswer&amp;quot;: &amp;quot;2011-04-09 19:55:27&amp;quot;,&lt;br /&gt;
    &amp;quot;dtstop&amp;quot;: &amp;quot;2011-04-09 19:56:29&amp;quot;,&lt;br /&gt;
    &amp;quot;length&amp;quot;: 61,&lt;br /&gt;
    &amp;quot;number&amp;quot;: &amp;quot;14&amp;quot;,&lt;br /&gt;
    &amp;quot;alineid&amp;quot;: &amp;quot;3294CD8F-7865-436A-AC2E-CEA481D8F52D&amp;quot;,&lt;br /&gt;
    &amp;quot;alinenumber&amp;quot;: &amp;quot;17011&amp;quot;,&lt;br /&gt;
    &amp;quot;blineid&amp;quot;: &amp;quot;021BDECD-196B-408F-8C36-8C37C0A94C5A&amp;quot;,&lt;br /&gt;
    &amp;quot;blinenumber&amp;quot;: &amp;quot;17014&amp;quot;,&lt;br /&gt;
    &amp;quot;isrecorded&amp;quot;: true,&lt;br /&gt;
    &amp;quot;recordlink&amp;quot;: &amp;quot;http://192.168.0.12:4055/download/rec/AQAAAADQfMDNHczNCBEBAAAA&amp;quot;,&lt;br /&gt;
    &amp;quot;hascomment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;abonentname&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;isconf&amp;quot;: false&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;type&amp;quot;: 10,&lt;br /&gt;
    &amp;quot;typestr&amp;quot;: &amp;quot;conference&amp;quot;,&lt;br /&gt;
    &amp;quot;media&amp;quot;: 10,&lt;br /&gt;
    &amp;quot;mediastr&amp;quot;: &amp;quot;conference&amp;quot;,&lt;br /&gt;
    &amp;quot;commutationid&amp;quot;: &amp;quot;20CF9B5A-5FFE-4456-8984-E7B79D7166EE&amp;quot;,&lt;br /&gt;
    &amp;quot;chainid&amp;quot;: &amp;quot;E443FEA7-5ABB-49CB-A28D-8CC25F404E97&amp;quot;,&lt;br /&gt;
    &amp;quot;dtstart&amp;quot;: &amp;quot;2011-04-09 19:58:12&amp;quot;,&lt;br /&gt;
    &amp;quot;dtanswer&amp;quot;: &amp;quot;2011-04-09 19:58:12&amp;quot;,&lt;br /&gt;
    &amp;quot;dtstop&amp;quot;: &amp;quot;2011-04-09 19:59:45&amp;quot;,&lt;br /&gt;
    &amp;quot;length&amp;quot;: 93,&lt;br /&gt;
    &amp;quot;alineid&amp;quot;: &amp;quot;3294CD8F-7865-436A-AC2E-CEA481D8F52D&amp;quot;,&lt;br /&gt;
    &amp;quot;alinenumber&amp;quot;: &amp;quot;17011&amp;quot;,&lt;br /&gt;
    &amp;quot;isconf&amp;quot;: true,&lt;br /&gt;
    &amp;quot;conferenceid&amp;quot;: &amp;quot;224476F1-2E41-4C8F-BA85-6BEF0EBB5339&amp;quot;,&lt;br /&gt;
    &amp;quot;conferenceroom&amp;quot;: &amp;quot;751&amp;quot;,&lt;br /&gt;
    &amp;quot;conferencename&amp;quot;: &amp;quot;Автоконференция #751 09.04.11 19:55:30&amp;quot;,&lt;br /&gt;
    &amp;quot;conferencedirectorid&amp;quot;: &amp;quot;AA3B3E14-2B44-4D08-8C62-3C616F9D27E3&amp;quot;,&lt;br /&gt;
    &amp;quot;conferencedirectorlogin&amp;quot;: &amp;quot;Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;conferencedirectorname&amp;quot;: &amp;quot;Семен Егорович Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;isrecorded&amp;quot;: true,&lt;br /&gt;
    &amp;quot;recordlink&amp;quot;: &amp;quot;http://192.168.0.12:4055/download/rec/AAAAAACQSBTLHczNCGlCAACBPgAA&amp;quot;,&lt;br /&gt;
    &amp;quot;hascomment&amp;quot;: true&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* dtformat - формат представления даты/времени.&lt;br /&gt;
//* data - набор попавших в выдачу коммутаций/конференций. Каждая запись - в отдельном словаре.&lt;br /&gt;
		type, typestr - тип звонка:&lt;br /&gt;
			incoming 	= 1 - входящий звонок.&lt;br /&gt;
			outcoming 	= 2 - исходящий звонок.&lt;br /&gt;
			missed 		= 3 - пропущенный звонок. Что является пропущенным звонком определяется &lt;br /&gt;
						в разделе [[Настройки менеджера очередей|Менеджер очередей]] общих настроек Oktell.&lt;br /&gt;
			conference 	= 10 - конференция.&lt;br /&gt;
			selector 	= 11 - селекторное совещание.			&lt;br /&gt;
		media, mediastr - тип среды вызова:&lt;br /&gt;
			external 	= 2 - внешняя среда.&lt;br /&gt;
			internal 	= 1 - внутренний вызов.&lt;br /&gt;
			conference 	= 10 - конференция.&lt;br /&gt;
			selector 	= 11 - селекторное совещание.&lt;br /&gt;
		commutationid - идентификатор коммутации.&lt;br /&gt;
		chainid - идентификатор цепочки коммутаций/сессии.&lt;br /&gt;
		dtstart - дата/время начала вызова перед осуществлением коммутации.&lt;br /&gt;
		dtanswer - дата/время ответа и начала коммутации.&lt;br /&gt;
		dtstop - дата/время окончания коммутации&lt;br /&gt;
		length - длительность в секундах&lt;br /&gt;
		alineid - идентификатор линии абонента a.&lt;br /&gt;
		alinenumber - номер линии абонента a.&lt;br /&gt;
		blineid - идентификатор линии абонента b, если это коммутация.&lt;br /&gt;
		blinenumber - номер линии абонента b, если это коммутация.&lt;br /&gt;
		isrecorded - true|false. Записана ли коммутация.&lt;br /&gt;
		recordlink - относительная или абсолютная ссылка на скачивание файла записи разговора.&lt;br /&gt;
		hascomment - true|false. Имеет ли данная коммутация комментарий.&lt;br /&gt;
		abonentname - текстовое описание оппозитного абонента коммутации.&lt;br /&gt;
		isconf - true|false. Является ли текущая запись конференцией(селектором) или нет.&lt;br /&gt;
		conferenceid - идентификатор конференции/селектора.&lt;br /&gt;
		conferenceroom - номер комнаты конференции/селектора.&lt;br /&gt;
		conferencename - название конференции/селектора.&lt;br /&gt;
		conferencedirectorid - идентификатор управляющего пользователя конференции/селектора.&lt;br /&gt;
		conferencedirectorlogin - логин управляющего пользователя конференции/селектора.&lt;br /&gt;
		conferencedirectorname - имя управляющего пользователя конференции/селектора.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''removepbxcallrecord'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Удаляет запись разговора указанной коммутации в соответствии с правами доступа.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;removepbxcallrecord&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DF061C5B-1B3B-41AA-94FF-A7A2F8FA6AE7&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;73567FD4-EFB9-46BF-9346-35B8638FE644&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''removepbxcallrecordresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат удаления записи разговора.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;removepbxcallrecordresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DF061C5B-1B3B-41AA-94FF-A7A2F8FA6AE7&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getvoiceperc'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Возвращает информацию о [[Управление_базами_данных#ComputeVoices|распределении владения разговором участниками коммутации]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getvoiceperc&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DF061C5B-1B3B-41AA-94FF-A7A2F8FA6AE7&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;73567FD4-EFB9-46BF-9346-35B8638FE644&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getvoicepercresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getvoicepercresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DF061C5B-1B3B-41AA-94FF-A7A2F8FA6AE7&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;aperc&amp;quot;: 12,&lt;br /&gt;
  &amp;quot;bperc&amp;quot;: 29,&lt;br /&gt;
  &amp;quot;alinenum&amp;quot;: &amp;quot;17e003&amp;quot;,&lt;br /&gt;
  &amp;quot;blinenum&amp;quot;: &amp;quot;16e215&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getvoicemap'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Возвращает [[Управление_базами_данных#VoiceMap|детальную карту владения разговором участниками коммутации]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getvoicemap&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DF061C5B-1B3B-41AA-94FF-A7A2F8FA6AE7&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;73567FD4-EFB9-46BF-9346-35B8638FE644&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getvoicepercresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getvoicemapresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DF061C5B-1B3B-41AA-94FF-A7A2F8FA6AE7&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;abinbase64&amp;quot;: [base64 от бинарки (&amp;quot;0100101101011110&amp;quot;-&amp;gt; byte[]-&amp;gt; base64)],&lt;br /&gt;
  &amp;quot;bbinbase64&amp;quot;: [base64 от бинарки (&amp;quot;0100101101011110&amp;quot;-&amp;gt; byte[]-&amp;gt; base64)],&lt;br /&gt;
  &amp;quot;abinlen&amp;quot;: 15,&lt;br /&gt;
  &amp;quot;bbinlen&amp;quot;: 15,&lt;br /&gt;
  &amp;quot;alinenum&amp;quot;: &amp;quot;17e003&amp;quot;,&lt;br /&gt;
  &amp;quot;blinenum&amp;quot;: &amp;quot;16e215&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Номерной план====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''pbxnumberstatechanged'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell о смене состояния внутреннего номера (или группы внутренних номеров)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxnumberstatechanged&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;5B9508DF-565B-44E1-A122-6FEB70ADA0B9&amp;quot;,&lt;br /&gt;
  &amp;quot;numbers&amp;quot;: [&lt;br /&gt;
   {&amp;quot;num&amp;quot;: &amp;quot;425&amp;quot;, &amp;quot;numstateid&amp;quot;: 3},&lt;br /&gt;
   {&amp;quot;num&amp;quot;: &amp;quot;427&amp;quot;, &amp;quot;numstateid&amp;quot;: 2},&lt;br /&gt;
   {&amp;quot;num&amp;quot;: &amp;quot;#82&amp;quot;, &amp;quot;numstateid&amp;quot;: 3}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getusersbynumbers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат информации о пользователях системы по указанным внутренним номерам от имени указанного пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getusersbynumbers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;20D0F23E-F26A-4BD9-BE65-B6F76D91880A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;numbers&amp;quot;: [&lt;br /&gt;
   &amp;quot;883&amp;quot;,&lt;br /&gt;
   &amp;quot;470&amp;quot;,&lt;br /&gt;
   &amp;quot;472&amp;quot;,&lt;br /&gt;
   &amp;quot;485&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getusersbynumbersresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает информацию о пользователях, которые обнаруживаются системой при парсинге указанных в запросе внутренних номеров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getusersbynumbersresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;20D0F23E-F26A-4BD9-BE65-B6F76D91880A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;users&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;2AC66E31-ADF0-4F84-A589-417A5A599EEA&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Сидоров&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;Сидор Сидорович Сидоров&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getitemsbynumbers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат информации о пользователях и линиях системы по указанным внутренним номерам от имени указанного пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getitemsbynumbers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;numbers&amp;quot;: [&lt;br /&gt;
   &amp;quot;883&amp;quot;,&lt;br /&gt;
   &amp;quot;470&amp;quot;,&lt;br /&gt;
   &amp;quot;472&amp;quot;,&lt;br /&gt;
   &amp;quot;485&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getitemsbynumbersresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает информацию о пользователях и линиях, которые обнаруживаются системой при парсинге указанных в запросе внутренних номеров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getitemsbynumbersresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;user&amp;quot;,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;user&amp;quot;,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;2AC66E31-ADF0-4F84-A589-417A5A599EEA&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Сидоров&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;Сидор Сидорович Сидоров&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;line&amp;quot;,&lt;br /&gt;
    &amp;quot;lineid&amp;quot;: &amp;quot;50203B8C-8079-4B52-8D24-ECDA4BF7877A&amp;quot;,&lt;br /&gt;
    &amp;quot;linenumber&amp;quot;: &amp;quot;17025&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getsystemnumberbyuser'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат системного внутреннего номера, по которому может быть произведен вызов указанного в суб-параметре пользователя от имени указанного пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getsystemnumberbyuser&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;user&amp;quot;: {&lt;br /&gt;
   &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
   &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getsystemnumberbyuserresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getsystemnumberbyuserresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;systemnumber&amp;quot;: &amp;quot;U28CA980EF9F84B83B4934454AA54FCD8&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getpbxnumbersforitem'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат текстового списка внутренних номеров указанного в суб-параметре пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxnumbersforitem&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
  &amp;quot;itemtype&amp;quot;: &amp;quot;user&amp;quot;,&lt;br /&gt;
  &amp;quot;itemuserid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
  &amp;quot;itemuserlogin: &amp;quot;Петров&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getpbxnumbersforitemresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает список несистемных внутренних номеров через запятую, по которым возможен вызов пользователя, указанного в суб-параметре запроса.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxnumbersforitemresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;itemtype&amp;quot;: &amp;quot;user&amp;quot;,&lt;br /&gt;
  &amp;quot;itemuserid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
  &amp;quot;itemuserlogin: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
  &amp;quot;itemnumbers&amp;quot;: &amp;quot;403, 472&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*  &amp;quot;itemtype&amp;quot;: &amp;quot;line&amp;quot;,&lt;br /&gt;
/*  &amp;quot;itemlineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
/*  &amp;quot;itemlinenumber&amp;quot;: &amp;quot;17004&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getmainpbxnumberforitem'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат основного несистемного внутреннего номера, по которому возможен вызов объекта системы (пользователя/линии), указанного в суб-параметре.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getmainpbxnumberforitem&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
  &amp;quot;itemtype&amp;quot;: &amp;quot;user&amp;quot;,&lt;br /&gt;
  &amp;quot;itemuserid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
  &amp;quot;itemuserlogin: &amp;quot;Петров&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getmainpbxnumberforitemresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает основной несистемный внутренний номер, по которому возможен вызов объекта системы (пользователя/линии), указанного в суб-параметре запроса.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getmainpbxnumberforitemresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;itemtype&amp;quot;: &amp;quot;user&amp;quot;,&lt;br /&gt;
  &amp;quot;itemuserid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
  &amp;quot;itemuserlogin: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
  &amp;quot;itemnumber&amp;quot;: &amp;quot;472&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*  &amp;quot;itemtype&amp;quot;: &amp;quot;line&amp;quot;,&lt;br /&gt;
/*  &amp;quot;itemlineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
/*  &amp;quot;itemlinenumber&amp;quot;: &amp;quot;17004&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getpbxnumbers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат всех внутренних номеров системы. &lt;br /&gt;
Не требует указания авторизованного пользователя, так как может исполняться по инициативе сервера WebCRM.&lt;br /&gt;
В примере приведен запрос для формирования ответа с перечнем номеров в простом виде.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxnumbers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;mode&amp;quot;: &amp;quot;simple&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* mode: simple, full (простой вид, полный вид).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getpbxnumbersresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает список всех внутренних номеров системы. &lt;br /&gt;
В примере приведен ответ на запрос с перечнем номеров в простом виде.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxnumbersresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;mode&amp;quot;: &amp;quot;simple&amp;quot;,&lt;br /&gt;
  &amp;quot;numbers&amp;quot;: [&lt;br /&gt;
   &amp;quot;401&amp;quot;,&lt;br /&gt;
   &amp;quot;402&amp;quot;,&lt;br /&gt;
   &amp;quot;403&amp;quot;,&lt;br /&gt;
   &amp;quot;404&amp;quot;,&lt;br /&gt;
   &amp;quot;405&amp;quot;,&lt;br /&gt;
   &amp;quot;471&amp;quot;,&lt;br /&gt;
   &amp;quot;472&amp;quot;,&lt;br /&gt;
   &amp;quot;473&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В следующем примере приведен ответ на запрос с перечнем номеров в полном виде со всеми описаниями и состояниями.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxnumbersresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;mode&amp;quot;: &amp;quot;full&amp;quot;,&lt;br /&gt;
  &amp;quot;numbers&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;9079E514-FECF-4DFD-BF48-5EDE4241E3A1&amp;quot;,&lt;br /&gt;
    &amp;quot;number&amp;quot;: &amp;quot;472&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;typestr&amp;quot;: &amp;quot;intRule&amp;quot;,&lt;br /&gt;
    &amp;quot;isgroup&amp;quot;: false,&lt;br /&gt;
    &amp;quot;caption&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;statestr&amp;quot;: &amp;quot;usFullbusy&amp;quot;,&lt;br /&gt;
    &amp;quot;department&amp;quot;: &amp;quot;Руководство&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* number:type - intRule(0), intFast(2), intIVR(3), intEmergency(4)&lt;br /&gt;
/* number:state - usDisconnected(0), usReady(1), usLunch(2), usOff(3), usFullbusy(5),&lt;br /&gt;
				usReserved(6), usWOPhone(7), usError(100), usRinging(201)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getallusernumbers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат списка всех пользователей, содержащего актуальную информацию по их прямым, основным и групповым номерам.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getallusernumbers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;fillsubordinates&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* fillsubordinates: true|false. По умолчанию false.&lt;br /&gt;
	Включать ли информацию о подчиненных (добавляет каждому пользователю поле &amp;quot;sub&amp;quot;:true|false)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getallusernumbersresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает список всех пользователей, содержащий актуальную информацию по их прямым, основным и групповым номерам.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getallusernumbersresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;users&amp;quot;: [&lt;br /&gt;
   {&amp;quot;id&amp;quot;: &amp;quot;47A8B3A0-0B33-41BB-9D08-1D9EB0D6F09B&amp;quot;,&lt;br /&gt;
    &amp;quot;name: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;sub&amp;quot;: true,&lt;br /&gt;
    &amp;quot;main: &amp;quot;14&amp;quot;,&lt;br /&gt;
    &amp;quot;nums&amp;quot;: &amp;quot;14, 625, 773&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   {&amp;quot;id&amp;quot;: &amp;quot;5A84368D-5ED3-434B-8EB2-41AE86E1566A&amp;quot;,&lt;br /&gt;
    &amp;quot;name: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
    &amp;quot;sub&amp;quot;: false&lt;br /&gt;
   },&lt;br /&gt;
   ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*  users:main - основной прямой номер,&lt;br /&gt;
/*  users:nums - перечень номеров, в которых участвует пользователь или его текущая линия. &lt;br /&gt;
			Порядок следования от главного к групповым, затем от главного к групповым с участием линии.&lt;br /&gt;
/*  users:sub - является ли подчиненным пользователем (в соответствии с правами авторизованного пользователя)&lt;br /&gt;
			Включается только если в запросе установлен флаг fillsubordinates.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Управление задачами call-центра ====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;div id=&amp;quot;attachcalltotask&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''cc_attachcalltotask'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на привязку текущего звонка пользователя к задаче.&lt;br /&gt;
Позволяет указать задачу ключом - идентификатор, название, код. &lt;br /&gt;
При необходимости звонок может быть привязан к конкретному абоненту из таблицы абонентов, прикрепленной к задаче (по его числовому идентификатору). В противном случае в таблицу добавляется новая строчка, даже если набираемый номер уже присутствовал в ней. Подробнее о прикреплении звонка к задаче в разделе [[Голосовые задачи#ManualCall|«Call-центр. Голосовые задачи»]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cc_attachcalltotask&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;taskkey&amp;quot;: &amp;quot;EDFE9A1F-E27E-4693-A427-A392C919F8B0&amp;quot;,&lt;br /&gt;
  &amp;quot;idinlist&amp;quot;: 183&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''cc_attachcalltotaskresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат привязки звонка к задаче, дополнительно сообщая номер абонента в списке. В случае неудачи содержит причину.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cc_attachcalltotaskresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;idinlist&amp;quot;: 183,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;div id=&amp;quot;settaskactive&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''cc_settaskactive'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на активацию/деактивацию задачи.&lt;br /&gt;
Позволяет указать задачу ключом - идентификатор, название или код. Тип задачи - ''call'' (по умолчанию) или ''text''.&lt;br /&gt;
Метод доступен с версии 2.8.130909.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cc_settaskactive&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;tasktype&amp;quot;: &amp;quot;call&amp;quot;,&lt;br /&gt;
  &amp;quot;taskkey&amp;quot;: &amp;quot;EDFE9A1F-E27E-4693-A427-A392C919F8B0&amp;quot;,&lt;br /&gt;
  &amp;quot;active&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''cc_settaskactiveresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат активации/деактивации задачи.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cc_settaskactiveresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;div id=&amp;quot;addoperatortotask&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''cc_addoperatortotask'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на добавление оператора к задаче.&lt;br /&gt;
Операция доступна супервизорам задачи, а также самому оператору. Более глубокие фильтры необходимо организовывать на клиентской стороне.&lt;br /&gt;
Позволяет указать задачу ключом - идентификатор, название или код. Позволяет указать оператора ключом - идентификатор, логин, имя.&lt;br /&gt;
Метод доступен с версии 2.8.130909.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cc_addoperatortotask&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;taskkey&amp;quot;: &amp;quot;EDFE9A1F-E27E-4693-A427-A392C919F8B0&amp;quot;,&lt;br /&gt;
  &amp;quot;operatorkey&amp;quot;: &amp;quot;BD252256-08DE-4693-9A31-FC02B600E609&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''cc_addoperatortotaskresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат процедуры добавления оператора в задачу. Неудача возможна при невозможности обнаружить указанного оператора или указанную задачу, а также при отсутствии прав управления задачей.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cc_addoperatortotaskresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;div id=&amp;quot;removeoperatorfromtask&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''cc_removeoperatorfromtask'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на удаление оператора из задачи.&lt;br /&gt;
Операция доступна супервизорам задачи, а также самому оператору. Более глубокие фильтры необходимо организовывать на клиентской стороне.&lt;br /&gt;
Позволяет указать задачу ключом - идентификатор, название или код. Позволяет указать оператора ключом - идентификатор, логин, имя.&lt;br /&gt;
Метод доступен с версии 2.8.130909.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cc_removeoperatorfromtask&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;taskkey&amp;quot;: &amp;quot;EDFE9A1F-E27E-4693-A427-A392C919F8B0&amp;quot;,&lt;br /&gt;
  &amp;quot;operatorkey&amp;quot;: &amp;quot;BD252256-08DE-4693-9A31-FC02B600E609&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''cc_removeoperatorfromtaskresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат процедуры удаления оператора из задачи. Неудача возможна при невозможности обнаружить указанного оператора или указанную задачу, а также при отсутствии прав управления задачей.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cc_removeoperatorfromtaskresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Преобразования====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getuserbyline'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат информации о связанном пользователе по ключу линии. Ключом линии традиционно является идентификатор или номер линии.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getuserbyline&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;linekey&amp;quot;: &amp;quot;17002&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getuserbylineresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getuserbylineresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;founduser&amp;quot;: {&lt;br /&gt;
   &amp;quot;userid&amp;quot;: &amp;quot;BE6A252A-D7E7-4D15-8D75-385A210DF997&amp;quot;,&lt;br /&gt;
   &amp;quot;userlogin&amp;quot;: &amp;quot;john&amp;quot;,&lt;br /&gt;
   &amp;quot;username&amp;quot;: &amp;quot;John Smith&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* founduser - информация о связанном с указанной линии пользователе - его идентификатор, логин, имя.&lt;br /&gt;
		Если линия указана неверно или к ней в данный момент не привязан пользователь - null.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getlinebyuser'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат информации о связанной линии по ключу пользователя. Ключом пользователя традиционно является идентификатор, логин или имя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getlinebyuser&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userkey&amp;quot;: &amp;quot;ivanov&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getlinebyuserresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getlinebyuserresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;foundline&amp;quot;: {&lt;br /&gt;
   &amp;quot;lineid&amp;quot;: &amp;quot;FA86E75A-6383-42B7-873C-37A0654B18EF&amp;quot;,&lt;br /&gt;
   &amp;quot;linenum&amp;quot;: &amp;quot;17002&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* foundline - информация о связанной с указанным авторизованным пользователем линии - ее идентификатор, номер.&lt;br /&gt;
		Если пользователь указана неверно, или не авторизован - null.&lt;br /&gt;
		''Пользователь по умолчанию'' считается авторизованным.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Служебные методы====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getversion'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат информации о версии сервера Oktell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getversion&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;showalloweddbstoredprocs&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* showalloweddbstoredprocs: true|false. Отображать ли список доступных хранимых процедур БД.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getversionresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getversionresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: {&lt;br /&gt;
   &amp;quot;text&amp;quot;: &amp;quot;Версия программы: 2.7.110808(4237.32979). Версия БД: 110713.&amp;quot;,&lt;br /&gt;
   &amp;quot;dated&amp;quot;: &amp;quot;110808&amp;quot;,&lt;br /&gt;
   &amp;quot;build&amp;quot;: &amp;quot;2.7.4237.32979&amp;quot;,&lt;br /&gt;
   &amp;quot;datedhal&amp;quot;: &amp;quot;110808&amp;quot;,&lt;br /&gt;
   &amp;quot;buildhal&amp;quot;: &amp;quot;2.15.3.2871&amp;quot;,&lt;br /&gt;
   &amp;quot;webserverport&amp;quot;: 80,&lt;br /&gt;
   &amp;quot;webservertls&amp;quot;: false&lt;br /&gt;
  }&lt;br /&gt;
  &amp;quot;alloweddbstoredprocs&amp;quot;: {&lt;br /&gt;
   &amp;quot;w_favoritegetbyuser&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;w_favoritesavebyuser&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;w_favoritedeletebyuser&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;w_clientsget&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;w_clientgroupsget&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* version - информация о версии сервера логики и HAL.&lt;br /&gt;
//* version:webserverport - номер порта [[Серверный_HTTP_интерфейс|HTTP веб-сервера oktell]].&lt;br /&gt;
//* version:webservertls - true|false - защищенный ли канал на указанном порте (http или https).&lt;br /&gt;
//* alloweddbstoredprocs - перечень хранимых процедур, доступных для исполнения в БД Oktell &lt;br /&gt;
				посредством метода &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''execpredefineddbstoredproc''&amp;lt;/span&amp;gt;	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''gettemphttppass'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Генерирует и возвращает временный пароль на доступ к [[Веб-интерфейс|HTTP веб-серверу]] без авторизации.&lt;br /&gt;
Временный пароль живет не более 10 секунд до первого обращения к HTTP с указанием этого пароля среди параметров запроса.&lt;br /&gt;
Пароль привязывается к IP адресу дополнительно. &lt;br /&gt;
После этого вне зависимости от способа авторизации, установленного для HTTP веб-сервера Oktell, однократный вызов любого [[Серверный_HTTP_интерфейс|метода серверного веб-интерфейса]] возможен без авторизации с указанием среди параметров дополнительного служебного параметра ''temppass=A'', где A - выданный временный пароль.&lt;br /&gt;
&lt;br /&gt;
Доступно для [[#Arch2|схемы интеграции 2]] и [[#Arch3|схемы интеграции 3]] в рамках индивидуальных подключений.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;gettemphttppass&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;responsetowebsock&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''gettemphttppassresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;gettemphttppassresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;password&amp;quot;: &amp;quot;6f3200ac&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* password - временный пароль для подстановки в качестве значения параметра temppass &lt;br /&gt;
		при осуществлении GET или POST запроса к HTTP веб-серверу Oktell.&lt;br /&gt;
		Следует иметь в виду, что даже в случае POST запроса со специальным контентом&lt;br /&gt;
		указание параметра-пароля возможно в теле самой страницы (по аналогии с GET запросом).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''triggercustomevent'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на генерацию пользовательского произвольного события всем или только указанным пользователям.&lt;br /&gt;
Может быть использовано в [[#Arch2|схеме интеграции 2]] и [[#Arch3|схеме интеграции 3]] в рамках индивидуальных подключений.&lt;br /&gt;
Производит массовую рассылку указанного события. Точно также как и все остальные события требует подписки.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;triggercustomevent&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;eventname&amp;quot;: &amp;quot;newClientCategoryAdded&amp;quot;,&lt;br /&gt;
  &amp;quot;eventparam&amp;quot;: &amp;quot;строка&amp;quot;&lt;br /&gt;
  &amp;quot;sendback&amp;quot;: 1, // отправлять мне самому или нет&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;triggercustomevent&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;eventname&amp;quot;: &amp;quot;newClientCategoryAdded&amp;quot;,&lt;br /&gt;
  &amp;quot;eventparam&amp;quot;: &amp;quot;строка&amp;quot;,&lt;br /&gt;
  &amp;quot;recipients&amp;quot;: [&lt;br /&gt;
   &amp;quot;Петров&amp;quot;,&lt;br /&gt;
   &amp;quot;Сидоров&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;triggercustomevent&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;eventname&amp;quot;: &amp;quot;newClientCategoryAdded&amp;quot;,&lt;br /&gt;
  &amp;quot;eventparam&amp;quot;: { &amp;quot;param1&amp;quot;: &amp;quot;123&amp;quot;, &amp;quot;p2&amp;quot;: { &amp;quot;asdfasd&amp;quot;: &amp;quot;sdfgsdf&amp;quot; } , ... },&lt;br /&gt;
  &amp;quot;recipients&amp;quot;: [&lt;br /&gt;
   &amp;quot;C45D4911-BDE2-40C0-8D11-A4AFF1F160CC&amp;quot;,&lt;br /&gt;
   &amp;quot;BA2C4BAC-7A7C-4959-B1A7-2F63C248DF3D&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* recipients - список идентификаторов/логинов получателей сообщений. &lt;br /&gt;
			Может не быть указанным, тогда отправка производится всем.&lt;br /&gt;
//* sendback - генерировать ли событие для самого отправителя. Имеет смысл, поскольку&lt;br /&gt;
			в случае использования нескольких вкладок в браузере, каждое из подключений&lt;br /&gt;
			получит событие независимо.&lt;br /&gt;
//* eventname - название пользовательского события.&lt;br /&gt;
//* eventparam - параметр пользовательского события. Переходит в сгенерированное сообщение без изменений.&lt;br /&gt;
			Может содержать строку, набор, массив, словарь - все что угодно.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''gettemphttppassresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Событие из Oktell пользователям CRM. Отправляется всем пользователям, указанным при запросе на рассылку события.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;customevent&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;:&amp;quot;aaa3f5c9-bcd5-4bf9-aef9-0b4ee735170d&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;C45D4911-BDE2-40C0-8D11-A4AFF1F160CC&amp;quot;,&lt;br /&gt;
  &amp;quot;eventname&amp;quot;: &amp;quot;newClientCategoryAdded&amp;quot;,&lt;br /&gt;
  &amp;quot;triggereduserid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;triggereduserlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;eventparam&amp;quot;: { &amp;quot;param1&amp;quot;: &amp;quot;123&amp;quot;, &amp;quot;p2&amp;quot;: { &amp;quot;asdfasd&amp;quot;: &amp;quot;sdfgsdf&amp;quot; } , ... }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* eventname - название пользовательского события.&lt;br /&gt;
//* eventparam - параметр пользовательского события в неизменном виде, как в запросе.&lt;br /&gt;
//* triggereduserid - идентификатор пользователя-рассыльщика.&lt;br /&gt;
//* triggereduserlogin - логин пользователя-рассыльщика.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span id=&amp;quot;execpredefineddbstoredproc&amp;quot; style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''execpredefineddbstoredproc'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Исполняет указанную хранимую процедуру в БД Oktell и возвращает данные всех сформированных в ходе выполнения наборов.&lt;br /&gt;
Доступные для исполнения процедуры содержатся в конфигурационном файле ''websocket.config'', а также могут быть возвращены методом ''getversion''.&lt;br /&gt;
&lt;br /&gt;
Существует специальный параметр @authorizeduserid, значение которого перед исполнением заменяется на идентификатор авторизованного пользователя. Такие процедуры нельзя исполнять от имени CRM.&lt;br /&gt;
&lt;br /&gt;
Не требует указания пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;execpredefineddbstoredproc&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;7198D943-7BA9-443D-B283-55812BC82AFB&amp;quot;,&lt;br /&gt;
  &amp;quot;procedure&amp;quot;: &amp;quot;T_GetFavorites&amp;quot;,&lt;br /&gt;
  &amp;quot;inputparams&amp;quot;: {&lt;br /&gt;
	 &amp;quot;param1&amp;quot;: &amp;quot;XXX&amp;quot;, &lt;br /&gt;
	 &amp;quot;param2&amp;quot;: 10&lt;br /&gt;
	}&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* procedure - название процедуры из разрешенного списка. &lt;br /&gt;
//* inputparams - значения параметров процедуры. Имена параметров могут содержать в начале символ ''@'',&lt;br /&gt;
		В случае его отсутствия он добавляется автоматически.&lt;br /&gt;
		Если в списке присутствует параметр ''authorizeduserid'', его значение будет принудительно заменено&lt;br /&gt;
			на идентификатор текущего авторизованного пользователя в Oktell. Этим можно пользоваться для&lt;br /&gt;
			создания в БД процедур, учитывающих инициатора исполнения.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''execpredefineddbstoredprocresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает результат исполнения хранимой процедуры в БД Oktell. Перечисляет все выходные наборы данных.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;execpredefineddbstoredprocresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;7198D943-7BA9-443D-B283-55812BC82AFB&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;errorcode&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorstr&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;dataset&amp;quot;: [&lt;br /&gt;
   [&lt;br /&gt;
    [&amp;quot;column1&amp;quot;, &amp;quot;column2&amp;quot;, &amp;quot;column3&amp;quot;],&lt;br /&gt;
    [&amp;quot;row1val1&amp;quot;, &amp;quot;row1val2&amp;quot;, &amp;quot;row1val3&amp;quot; ],&lt;br /&gt;
    [&amp;quot;row2val1&amp;quot;, &amp;quot;row2val2&amp;quot;, &amp;quot;row2val3&amp;quot; ],&lt;br /&gt;
    ...&lt;br /&gt;
   ],&lt;br /&gt;
   [&lt;br /&gt;
    [&amp;quot;column1&amp;quot;, &amp;quot;column2&amp;quot;]&lt;br /&gt;
   ],&lt;br /&gt;
   ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* result - 1 или 0. Успешно или неудачно проведена операция.&lt;br /&gt;
//* errorcode - код ошибки. 50044 - служебное значение, в случае запрета или исключения при исполнении, &lt;br /&gt;
			не связанного с ошибкой SQL&lt;br /&gt;
//* errorstr - описание ошибки. &lt;br /&gt;
//* dataset - наборы данных по порядку выдачи в ходе исполнения хранимой процедуры.&lt;br /&gt;
		Набор - это список строк, каждая из которых - список значений по ячейкам.&lt;br /&gt;
		Первая строка в наборе - всегда содержит названия столбцов набора.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span id=&amp;quot;execpluginmethod&amp;quot; style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''execpluginmethod'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Исполняет указанный метод в [[Встраиваемые_plugin-модули|серверном плагине]], передавая в него параметры и возвращая результат с выходными параметрами.&lt;br /&gt;
&lt;br /&gt;
Не требует обязательного указания пользователя. Однако если вызов осуществляется в рамках подключения из браузера к серверу Oktell, то пользователь проставляется автоматически перед исполнением метода.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;execpluginmethod&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;7198D943-7BA9-443D-B283-55812BC82AFB&amp;quot;,&lt;br /&gt;
  &amp;quot;pluginid&amp;quot;: &amp;quot;44710EF2-9C5E-489E-B6CC-FD4ED34C13FE&amp;quot;,&lt;br /&gt;
  &amp;quot;formid&amp;quot;: &amp;quot;44710EF2-9C5E-489E-B6CC-FD4ED34C13FE&amp;quot;,&lt;br /&gt;
  &amp;quot;inputparams&amp;quot;: {&lt;br /&gt;
    &amp;quot;param1&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
    &amp;quot;param2&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* pluginid - идентификатор плагина. &lt;br /&gt;
//* formid - идентификатор одной из заявленных форм (методов) плагина.&lt;br /&gt;
//* inputparams - список значений для заявленных плагином входных параметров выбранной формы (метода). &lt;br /&gt;
                В качестве значений параметров могут быть json структуры &lt;br /&gt;
                (октелл осуществляет преобразование в строку самостоятельно).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''execpluginmethodresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает результат исполнения метода в серверном плагине.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;execpluginmethodresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;7198D943-7BA9-443D-B283-55812BC82AFB&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;outputparams&amp;quot;: {&lt;br /&gt;
    &amp;quot;outputdata&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* outputparams - список значений заявленных плагином выходных переменных выбранной формы (метода).&lt;br /&gt;
                  В качестве значений параметров могут быть json структуры.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''ping'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Периодически пробивает канал связи, напоминая о жизнеспособности подключения. Требуется для [[#Arch2|Схемы интеграции 2]] и [[#Arch3|Схемы интеграции 3]] в рамках индивидуальных подключений. Для [[#Arch1|Схемы интеграции 1]] необязательно.&lt;br /&gt;
&lt;br /&gt;
Не требует указания пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;ping&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;			&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''pong'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM на запрос ''ping''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pong&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''subscribeevent'''&amp;lt;/span&amp;gt;, &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''unsubscribeevent'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Производит соответственно подписку и отписку на указанные события.&lt;br /&gt;
&lt;br /&gt;
Доступно и требуется только для [[#Arch2|схемы интеграции 2]] и [[#Arch3|схемы интеграции 3]] в рамках индивидуальных подключений.&lt;br /&gt;
&lt;br /&gt;
В [[#Arch1|схеме интеграции 1]] события поступают в полном объеме, часть из них объединяются и отправляются на сервер WebCRM без привязки к пользователю; ожидается, что сервер WebCRM самостоятельно размножит их. К таким событиям относятся, например ''pbxnumberstatechanged'', ''conflistchanged'' и им подобные. Остальные же направляются с привязкой к пользователю и только в случае, когда пользователь авторизован из-под CRM.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;subscribeevent&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;&lt;br /&gt;
  &amp;quot;eventmethod&amp;quot;: &amp;quot;userstatechanged&amp;quot;,  &lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;			&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;subscribeevent&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;&lt;br /&gt;
  &amp;quot;eventmethod&amp;quot;: [&lt;br /&gt;
   &amp;quot;userstatechanged&amp;quot;,&lt;br /&gt;
   &amp;quot;pbxnumberstatechanged&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;unsubscribeevent&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;&lt;br /&gt;
  &amp;quot;eventmethod&amp;quot;: &amp;quot;userstatechanged&amp;quot;,  &lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;	&lt;br /&gt;
&lt;br /&gt;
События, требующие подписки:&lt;br /&gt;
:* pbxnumberstatechanged&lt;br /&gt;
:* pbxnumberlistmodified&lt;br /&gt;
:* shownotifymessage&lt;br /&gt;
:* voicemailreceived&lt;br /&gt;
:* usertextmessagereceived&lt;br /&gt;
:* usertextmessageviewed&lt;br /&gt;
:* chatcreated&lt;br /&gt;
:* chatnamechanged&lt;br /&gt;
:* chatmemberadded&lt;br /&gt;
:* chatmemberremoved&lt;br /&gt;
:* chatmessage&lt;br /&gt;
:* chatmessageviewed&lt;br /&gt;
:* chat (совокупность всех методов ''chat*'')&lt;br /&gt;
:* userstatechanged&lt;br /&gt;
:* linestatechanged&lt;br /&gt;
:* chainstatechanged&lt;br /&gt;
:* flashstatechanged					&lt;br /&gt;
:* phoneevent_acmcallstarted&lt;br /&gt;
:* phoneevent_acmcallstopped&lt;br /&gt;
:* phoneevent_ringstarted&lt;br /&gt;
:* phoneevent_ringstopped&lt;br /&gt;
:* phoneevent_ivrstarted&lt;br /&gt;
:* phoneevent_ivrstopped&lt;br /&gt;
:* phoneevent_commstarted&lt;br /&gt;
:* phoneevent_commstopped&lt;br /&gt;
:* phoneevent_faxstarted&lt;br /&gt;
:* phoneevent_faxstopped&lt;br /&gt;
:* phoneevent_faxreceived&lt;br /&gt;
:* phoneevent (совокупность всех методов ''phoneevent_*'')&lt;br /&gt;
:* conferenceevent&lt;br /&gt;
:* conflistchanged&lt;br /&gt;
:* confparamschanged&lt;br /&gt;
:* confcompositionchanged&lt;br /&gt;
:* confcompetitorstatechanged&lt;br /&gt;
:* confentrancedenied&lt;br /&gt;
:* confentrancepermitted&lt;br /&gt;
:* confentrancerequest&lt;br /&gt;
:* confnotifyinvite&lt;br /&gt;
:* confpossiblecompetitorstatechanged&lt;br /&gt;
:* conference (совокупность всех методов ''conf*'')&lt;br /&gt;
:* dynamic (совокупность методов executemethod, cancelmethod, showform, closeform)&lt;br /&gt;
:* dynamicwaitabort (совокупность методов executemethodwaitaborted, showformwaitaborted)&lt;br /&gt;
:* dlgcard_showreserve&lt;br /&gt;
:* dlgcard_showconfirm&lt;br /&gt;
:* dlgcard_showformstop&lt;br /&gt;
:* dlgcard_showformdialog&lt;br /&gt;
:* dlgcard_closeall&lt;br /&gt;
:* dlgcard_closereserve&lt;br /&gt;
:* dlgcard_closeformreturnvalues&lt;br /&gt;
:* dlgcard_closeformreturncomment&lt;br /&gt;
:* dlgcard (совокупность методов dlgcard_*)&lt;br /&gt;
:* customevent&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''subscribeeventresult'''&amp;lt;/span&amp;gt;, &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; '''unsubscribeeventresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM на запросы ''subscribeeventresult'' и ''unsubscribeeventresult'' соответственно.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;subscribeeventresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''wp_setuserstate'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос на установку состояния указанному пользователю. Исполняется от имени сервера, даже если пользователь подключен с помощью другого подключения или из толстого клиента. Ответ не возвращается, в случае удачи отправляется событие ''userstatechanged''. Пользователь задается с помощью одного из ключей (wp - рабочее место, line - линия, user - пользователь).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;wp_setuserstate&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;2A45010A-8EEA-4876-90CB-F062459D4BE2&amp;quot;,&lt;br /&gt;
  &amp;quot;wp&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;line&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;user&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;userstateid&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;onredirect&amp;quot;: false,&lt;br /&gt;
  &amp;quot;lunchreasonid&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;lunchreasonmsg&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''wp_getuserstate'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос от сервера CRM на возврат состояния указанного пользователя. Исполняется от имени сервера, даже если пользователь подключен с помощью другого подключения или из толстого клиента. Пользователь задается с помощью одного из ключей (wp - рабочее место, line - линия, user - пользователь).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;wp_getuserstate&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;2A45010A-8EEA-4876-90CB-F062459D4BE2&amp;quot;,&lt;br /&gt;
  &amp;quot;wp&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;line&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;user&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''wp_getuserstateresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ на запрос ''wp_getuserstateresult''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;wp_getuserstateresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;2A45010A-8EEA-4876-90CB-F062459D4BE2&amp;quot;,&lt;br /&gt;
  &amp;quot;wp&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;line&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;user&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;found&amp;quot;: true,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;BDB8519F-AE77-4E33-81DB-41EE8E7D4E33&amp;quot;,&lt;br /&gt;
  &amp;quot;stateid&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;statestr&amp;quot;: &amp;quot;usFullBusy&amp;quot;,&lt;br /&gt;
  &amp;quot;onredirect&amp;quot;: false,&lt;br /&gt;
  &amp;quot;onlunch&amp;quot;: true,&lt;br /&gt;
  &amp;quot;oncc&amp;quot;: true,&lt;br /&gt;
  &amp;quot;onccmanual&amp;quot;: false&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getuserstates'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос от сервера CRM на получение состояний всех пользователей в системе вне зависимости от того, где они авторизованы и авторизованы ли вообще.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getuserstates&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getalluserstatesresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ на запрос ''getuserstates''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getalluserstatesresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;users&amp;quot;:[&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
    &amp;quot;userstate&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;userstateid&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;userstatestr&amp;quot;: &amp;quot;usFullbusy&amp;quot;,&lt;br /&gt;
    &amp;quot;onredirect&amp;quot;: true,&lt;br /&gt;
    &amp;quot;onlunch&amp;quot;: false,&lt;br /&gt;
    &amp;quot;oncallcenter&amp;quot;: false,&lt;br /&gt;
    &amp;quot;onccmanual&amp;quot;: false&lt;br /&gt;
   },&lt;br /&gt;
   ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''closecallbychain'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос от сервера CRM на завершение коммутаций, принадлежащих указанной сессии (цепочке коммутаций). Исполняется от имени сервера, даже если пользователь подключен с помощью другого подключения или из толстого клиента&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;closecallbychain&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;2A45010A-8EEA-4876-90CB-F062459D4BE2&amp;quot;,&lt;br /&gt;
  &amp;quot;idchain&amp;quot;: &amp;quot;A7623B51-41F5-42E6-A2AE-1063C52D010A&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''closecallbychainresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ на запрос ''closecallbychain''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;closecallbychainresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;2A45010A-8EEA-4876-90CB-F062459D4BE2&amp;quot;,&lt;br /&gt;
  &amp;quot;found&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Прочие====&lt;br /&gt;
&lt;br /&gt;
Существует также [[Media:Others.zip|'''набор методов и событий''']] для рабочего места оператора и отображения диалоговых форм. &lt;br /&gt;
Их реализация осуществлена в web-клиенте Oktell и нетривиальна, поскольку требует от клиентского модуля четкого исполнения требований по логическому взаимодействию с менеджером задач сервера Oktell. В частности именно на клиентскую часть возлагается работа по решению вопроса о множественном отображении диалоговой формы и о предоставлении серверу данных по ее заполнению, кэширование метаданных диалоговых форм, подтверждения получения и исполнения запросов и т.д.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Запросы, команды и события от CRM к Oktell:&lt;br /&gt;
* cc_getcallstates (ответ cc_getcallstatesresult)&lt;br /&gt;
* cc_getuserresults (ответ cc_getuserresultsresult)&lt;br /&gt;
* cc_getlunchtypes (ответ cc_getlunchtypesresult)&lt;br /&gt;
* dlgcard_setsupported (ответ dlgcard_setsupportedresult)&lt;br /&gt;
* dlgcard_confirmgot&lt;br /&gt;
* dlgcard_confirmresult&lt;br /&gt;
* dlgcard_showformdone&lt;br /&gt;
* dlgcard_getmetadata (ответ dlgcard_getmetadataresult)&lt;br /&gt;
* dlgcard_getcachedvalues (ответ dlgcard_getcachedvaluesresult)&lt;br /&gt;
* dlgcard_setvaluesonclose&lt;br /&gt;
* dlgcard_setcontrolvalue&lt;br /&gt;
* dlgcard_setresultonnext&lt;br /&gt;
* dlgcard_setresultonstop&lt;br /&gt;
* dlgcard_setstopformresult&lt;br /&gt;
&lt;br /&gt;
События из Oktell в CRM:&lt;br /&gt;
* dlgcard_showreserve&lt;br /&gt;
* dlgcard_showconfirm&lt;br /&gt;
* dlgcard_showformstop&lt;br /&gt;
* dlgcard_showformdialog&lt;br /&gt;
* dlgcard_closeall&lt;br /&gt;
* dlgcard_closereserve&lt;br /&gt;
* dlgcard_closeformreturnvalues&lt;br /&gt;
* dlgcard_closeformreturncomment&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%A4%D0%B0%D0%B9%D0%BB:Others.zip</id>
		<title>Файл:Others.zip</title>
		<link rel="alternate" type="text/html" href="%D0%A4%D0%B0%D0%B9%D0%BB:Others.zip"/>
				<updated>2023-09-21T10:09:42Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>Oktell_Web-Socket_Protocol</id>
		<title>Oktell Web-Socket Protocol</title>
		<link rel="alternate" type="text/html" href="Oktell_Web-Socket_Protocol"/>
				<updated>2023-09-21T09:45:28Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Состояния пользователей и линий */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Веб-интерфейс|Наверх]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В рамках настоящей статьи рассматриваются вопросы интеграции web-системы и коммуникационной системы (в дальнейшем WebCRM и Oktell). WebCRM на рабочем месте сотрудника используется через браузер. Телефон, находящийся на рабочем месте сотрудника подключен к серверу (узлу коммутаций) Oktell. Решается задача функционального объединения двух системы с предоставлением возможности приема и совершения звонков и управления телефоном из интерфейсов WebCRM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;OktellFunc&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Краткое описание возможностей телефонии Oktell===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Стандартный функционал Oktell предоставляет пользователям:&lt;br /&gt;
:* доступ к управлению телефонами (позвонить, переключить, отклонить звонок, организовать конференцию, пригласить других участников в конференцию, подключиться к разговору в режиме прослушивания, помощи и т.д.).&lt;br /&gt;
:* доступ к управлению состояниями пользователей (перерыв - чтобы поток входящих звонков не поступал, занят - чтобы отметить факт обработки звонка, переадресация - чтобы все звонки на пользователя перенаправлялись в соответствии с настроенными правилами, готов - чтобы вернуться к обычному режиму).&lt;br /&gt;
:* информацию о текущем состоянии телефонов, внутренних номеров, пользователей с т.з. занятости в операциях телефонии.&lt;br /&gt;
:* информацию о поступающем звонке, абоненте&lt;br /&gt;
:* доступ к статистике разговоров (по правам).&lt;br /&gt;
:* доступ к записям разговоров (по правам).&lt;br /&gt;
:* доступ к информации об ожидающей очереди абонентов в реальном времени.&lt;br /&gt;
:* доступ к контентам сессий и линий.&lt;br /&gt;
:* доступ к управлению режимом переадресации.&lt;br /&gt;
:* возможность запуска служебных сценариев.&lt;br /&gt;
и т.д.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В рамках настройки сценариев Oktell, имеется возможность отправлять синхронные и асинхронные запросы в WebCRM (фактически исполнять методы по событиям в Oktell) и получать ответы и применять их в рамках проведения маршрутизации или любых других действий, реализуемых в сценариях. Например: &lt;br /&gt;
:* Выяснить, какому клиенту/контакту принадлежит определившийся номер телефона или введенный им вручную с помощью DTMF-набора номер договора, отфильтровать по черному списку, переключить вызов на ответственного за работу с этим контактом пользователя, если пользователя нет в системе - переключить на секретаря, а если контакт новый - соединить с отделом продаж. Если ответственный пользователь занят, предложить оставить голосовое сообщение для VIP клиентов. &lt;br /&gt;
:* В момент поступления звонка открыть карточку у пользователя, которому направляется звонок. Закрыть ее автоматически, если пользователь так и не снял трубку (а снял кто-то другой, или звонок потерялся). &lt;br /&gt;
:* Выполнить какое-то важное с т.з. WebCRM действие в случае, например, если пользователь оставил заказ на встречный звонок, занести его в список задач.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Именно сценарии придают жизнь Oktell и его сервисам. &lt;br /&gt;
&lt;br /&gt;
Среди событий Oktell, отрабатываемых в сценариях:&lt;br /&gt;
&lt;br /&gt;
:* поступление внешнего звонка.&lt;br /&gt;
:* завершение звонка.&lt;br /&gt;
:* переключение абонента на пользователя, группу пользователей, задачу call-центра.&lt;br /&gt;
:* любое из интересующих явлений в ходе обработки звонка (от преобразования номера абонента в нужный формат и сверки времени поступления звонка до обработки контента звонка после завершения и выявления там факта состоявшейся конференции).&lt;br /&gt;
:* наступление определенного времени.&lt;br /&gt;
:* периодический запуск по таймеру.&lt;br /&gt;
:* поступление/отправка e-mail.&lt;br /&gt;
:* поступление/отправка sms/icq/jabber.&lt;br /&gt;
:* контрольные события call-центра (оператор первым положил трубку, оператор слишком долго находится в перерыве или поствызывной обработке, число операторов в задаче меньше минимально допустимого, число абонентов в очереди задачи больше допустимого и т.д.)&lt;br /&gt;
:* ручной запуск сценария по инициативе пользователя или WebCRM.&lt;br /&gt;
:* исходящий звонок от пользователя&lt;br /&gt;
:* поступление голосовой почты&lt;br /&gt;
:* появление где-то в базе данных интересующего события (например появление новой записи в таблице абонентов)&lt;br /&gt;
:* появление где-то на веб-ресурсе интересующего события (например температура на улице опустилась ниже нуля)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Arch1&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Схема интеграции 1 (межсерверное соединение)===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Arch1.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сервер Oktell взаимодействует с телефонами и с веб-сервером WebCRM. &lt;br /&gt;
&lt;br /&gt;
Веб-сервер WebCRM взаимодействует ответно с сервером Oktell и с браузерами (клиентами). &lt;br /&gt;
&lt;br /&gt;
Между сервером Oktell и веб-сервером WebCRM существует только один [[#Exchange|канал для двустороннего обмена сообщениями]].&lt;br /&gt;
&lt;br /&gt;
Установка соединения может производиться как сервером Oktell, так и веб-сервером WebCRM. В случае разрыва соединения сторона-инициатор вновь организует подключение.&lt;br /&gt;
# При выборе соединения со стороны сервера WebCRM в [[Интеграция_с_Web-Socket_CRM|настройках Web-Socket]] Oktell должен быть выбран один из режимов «CRM к Oktell» с указанием требуемого способа авторизации.&lt;br /&gt;
# При выборе соединения со стороны сервера Oktell должен быть выбран один из режимов «Oktell к CRM» с указанием [[#websockver|версии]] протокола Web-Socket.&lt;br /&gt;
&lt;br /&gt;
После установки соединения системы обмениваются данными друг о друге, об авторизованных пользователях, о динамических методах. &lt;br /&gt;
Все авторизованные в WebCRM пользователи автоматически становятся авторизованными в Oktell. В дальнейшем авторизация подключающихся пользователей и вывод отключившихся осуществляется с помощью сообщений login и logoff.&lt;br /&gt;
Считается, что авторизацию пользователь проходит на веб-сервере WebCRM, и повторной проверки пароля в Oktell не требуется. Поэтому при организации сообщений login поле password не требует указания.&lt;br /&gt;
&lt;br /&gt;
Любой запрос от клиента к Oktell отправляется на сервер WebCRM, где формируется интеграционное сообщение и перенаправляется на сервер Oktell.&lt;br /&gt;
Персональные сообщения/команды от Oktell клиенту также направляются на WebCRM, где они должны быть перенаправлены клиенту.&lt;br /&gt;
Общие сообщения/команды от Oktell направляются к серверу, где проводится их обработка.&lt;br /&gt;
&lt;br /&gt;
Часть общих событий, например изменение состояния абонента в номерном плане, отправляется в WebCRM однократно и без привязки к конкретному пользователю, подразумевая тем самым, что веб-сервер WebCRM самостоятельно размножит сообщение и отправит всем заинтересованным клиентам.&lt;br /&gt;
&lt;br /&gt;
В рамках такой интеграции WebCRM может предоставлять в Oktell некоторые общие сервисы, которые доступны администратору при настройке сценариев Oktell. Например, доступ к БД WebCRM на поиск маршрута для обработки звонка конкретного клиента. Подробнее в разделе [[#Dynamic|Динамическое взаимодействие]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Arch2&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Схема интеграции 2 (клиент-серверное соединение)===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Arch2.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сервер Oktell взаимодействует с телефонами и с конечными клиентами (браузерами). &lt;br /&gt;
&lt;br /&gt;
Веб-сервер CRM взаимодействует только с клиентами и БД. &lt;br /&gt;
&lt;br /&gt;
Между Oktell и каждым клиентом существует один или несколько [[#Exchange|каналов для двустороннего обмена сообщениями]] (поддерживается работа в нескольких вкладках браузера).&lt;br /&gt;
&lt;br /&gt;
В данном случае клиенты (браузеры) производят подключения к серверу Oktell, и в его настройках должен быть включен и настроен [[Настройки_веб-сервера|Web-сервер]], а в сообщениях [[#login|''login'']] должен быть указан пароль пользователя (MD5).&lt;br /&gt;
&lt;br /&gt;
При таком способе интеграции у WebCRM не требуется наличие собственного Web-Socket сервера. Каждый клиент (браузер) подключается по Web-Socket протоколу непосредственно к серверу Oktell. Веб-сервер CRM занимается формированием страниц и предоставлением данных из БД WebCRM. Непосредственная взаимосвязь между серверами WebCRM и Oktell отсутствует, доступ не требуется, клиенты самостоятельно обрабатывают и объединяют данные двух систем.&lt;br /&gt;
По такому принципу реализованы [http://www.oktell.ru/weboktell Web-клиент Oktell] и плагин [http://js.oktell.ru/ Oktell.js], доступный для встраивания в другие проекты.&lt;br /&gt;
&lt;br /&gt;
Поскольку клиентов может быть много, при рассылке событий возможна оптимизация за счет исключения тех клиентов, где конкретное событие не является необходимым. Достигается это путем подписки/отписки клиентов на определенные типы сообщений.&lt;br /&gt;
&lt;br /&gt;
Применительно к этому способу интеграции существует ряд дополнительных методов интерфейса. Большинство таких методов доступно и при [[#Arch1|схеме интеграции 1]], но не являются там необходимыми, так как часть данных и работ проводится на веб-сервере WebCRM.&lt;br /&gt;
&lt;br /&gt;
В отличие от [[#Arch1|схемы интеграции 1]], где Oktell запрашивает у сервера WebCRM список [[#Dynamic|динамических методов и форм]], которые затем могут быть использованы в сценариях Oktell, здесь динамические методы недоступны. Чтобы получить доступ к динамическим методам, следует использовать упрощенный вариант [[#Arch3|схемы интеграции 3]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Arch3&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Схема интеграции 3 (межсерверное и клиент-серверное соединение)===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Arch_3.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Является комбинацией [[#Arch1|схемы 1]] и [[#Arch2|схемы 2]]. То есть клиенты имеют возможность подключаться непосредственно к серверу Oktell, минуя websocket-сервер CRM, а связь с сервером происходит по специальному каналу, который может быть обеспечиваться как websocket-подключением, так и периодическими http подключениями. &lt;br /&gt;
&lt;br /&gt;
В этом случае при разработке решений можно пользоваться javascript-библиотекой [http://js.oktell.ru Oktell.js], не требующей ни полного погружения в настоящий интеграционный протокол, ни в настройку websocket. Также в этом случае для CRM не обязательно иметь собственный websocket-сервер для обслуживания клиентов. Более того, можно вообще обойтись лишь настройкой HTTP для обмена сервисными сообщениями вроде [[#whoareyou|взаимных представлений]] и запроса [[#getavailablemethods|динамических методов]] и [[#getavailableforms|форм]]. Исполнение [[#Dynamic|динамических методов и форм]] будет возможно как на сервере, так и на клиентах. На сервере - по межсерверному каналу (http, https, websocket, websocket secure), на клиенте - по индивидуальным websocket-подключениям (защищенным или нет). Все остальные запросы и события имеют персональную подоплеку и отправляются по индивидуальным клиент-серверным подключениям.&lt;br /&gt;
&lt;br /&gt;
При этом в случае websocket соединения между серверами Oktell и CRM остается возможность часть клиентов туннелировать через сервер CRM, а часть клиентов обслуживать непосредственно. В этом смысле это самый широкий способ интеграции, и два других выступают частными случаями.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;UserPhone&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Привязка пользователя к телефону===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Решению подлежит задача сопоставления конкретных пользователей CRM с конкретными телефонными устройствами. Поскольку элементы управления устройством находятся в браузере, а влияют они на поведение конкретного телефона. Например, так выглядит простейшая задача перевода звонка из браузера на врача Михайлова: звонок должен поступить на телефон, находящийся в кабинете 103, за компьютером в котором сейчас сидит Михайлов (в браузере открыта WebCRM и авторизован Михайлов). &lt;br /&gt;
Настройка этого происходит в Oktell. &lt;br /&gt;
&lt;br /&gt;
Пользователи могут работать:&lt;br /&gt;
:* стационарно каждый за своим рабочим местом. &lt;br /&gt;
:* перемещаться с одного рабочего место за другое.&lt;br /&gt;
:* работать посменно за одним рабочим местом.&lt;br /&gt;
(Рабочее место = компьютер + телефон)&lt;br /&gt;
&lt;br /&gt;
Необходимо в каждый момент времени знать, около какого телефона какой пользователь сидит. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Существуют два подхода к решению, также возможны их комбинации в рамках одного сервера.&lt;br /&gt;
&lt;br /&gt;
'''1. Жесткая привязка пользователя к телефонной учетной записи.'''&lt;br /&gt;
&lt;br /&gt;
''Для этого в карте сети Oktell в свойствах телефона требуется указание пользователя WebCRM''&lt;br /&gt;
&lt;br /&gt;
''Плюсы'': При взаимодействии Oktell и WebCRM используются одни и те же идентификаторы (например логины пользователей), соответственно отсутствует проблема привязки как таковая.&lt;br /&gt;
&lt;br /&gt;
''Минусы'': Пользователь вынужден перемещаться с одного компьютера на другой вместе со своим телефоном, или переназначая учетную запись в телефонном аппарате.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Телефон привязывается к компьютеру, а в момент логина пользователя сопоставление производится через этот компьютер.'''&lt;br /&gt;
&lt;br /&gt;
''Плюсы'': Кто бы ни залогинился с этого компьютера, приобретает управление рядом стоящим телефоном, все звонки пользователю попадают на этот телефон.&lt;br /&gt;
&lt;br /&gt;
''Минусы'': Требует указания одного из постоянных идентификаторов компьютера в Oktell, а также передачи его из WebCRM/web-клиента в момент логина для привязки. Это может быть айпи адрес, хостнейм или любой другой постоянный идентификатор, задаваемый в конфигурации.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Синхронизация учетных записей Oktell и WebCRM может производиться по логинам (по умолчанию) или по GUID-идентификаторам. Соответственно в персональных запросах должны указываться userlogin и/или userid.&lt;br /&gt;
&lt;br /&gt;
Логин в Oktell нужен для приведения состояния пользователя в готовность. Без этого звонки на пользователя не поступают, а обрабатываются как и в случае, когда он недоступен. Логофф - обратная операция. В ходе взаимодействия пользователю доступны команды управления своим состоянием. Он может отлучиться, выставить перерыв, переадресацию, занятость и т.д. Все это нужно для того, чтобы изменить направление маршрутизации звонков и режим работы call-центра. А в случае [[#Arch2|схемы интеграции 2]] и [[#Arch3|схемы интеграции 3]] также для авторизации. Индивидуальное подключение не обрабатывает никакие запросы, не осуществив авторизацию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ! Ограничение: Oktell не позволяет пользователям авторизовываться с разных рабочих мест одновременно. Делается это для того, чтобы каждому пользователю соответствовало не более одного телефона. &lt;br /&gt;
Однако персональные соединения [[#Arch2|схемы интеграции 2]] и [[#Arch3|схемы интеграции 3]] могут быть множественными, например как вкладки одного браузера. При этом привязка к телефону осуществляется первым авторизовавшимся подключением и остается таковой до закрытия всех вкладок/подключений этого пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Exchange&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Взаимодействие по каналу связи===&lt;br /&gt;
&lt;br /&gt;
В этом разделе описывается межсерверный канал websocket, а канал HTTP подразумевается ограниченным аналогом.&lt;br /&gt;
&lt;br /&gt;
Все взаимодействие между Oktell и WebCRM (а также между Oktell и браузером) идет по общему каналу путем двустороннего обмена сообщениями между сторонами.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Файл:Socket 3.jpg|500px]][[Файл:Socket 3b.jpg|500px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;websockver&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Взаимодействие на транспортном уровне происходит по Web-Socket протоколу. Поддерживаются версии&lt;br /&gt;
:* [http://tools.ietf.org/html/rfc6455 rfc6455 v13]&lt;br /&gt;
:* [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-08 v8] &lt;br /&gt;
:* [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-07 v7]&lt;br /&gt;
:* [http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-75 75]&lt;br /&gt;
:* [http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76 76]&lt;br /&gt;
&lt;br /&gt;
''[[Примеры WebSocket Handshake]]''.&lt;br /&gt;
&lt;br /&gt;
В зависимости от выбранной схемы интеграции и выбранного в настройках направления и способа подключения одна из сторон производит подключение (Oktell к серверу WebCRM, сервер WebCRM к Oktell, клиенты WebCRM к Oktell).&lt;br /&gt;
Рукопожатие (handshake) на установление Web-Socket соединения предлагается также стороной-инициатором. [http://ru.wikipedia.org/wiki/WebSocket Подробнее].&lt;br /&gt;
Рукопожатие является HTTP запросом и при необходимости поддерживает прохождение Basic или Digest-авторизации. В качестве логина и пароля выступают указанные в [[Интеграция_с_Web-Socket_CRM|настройках Web-Socket]] значения. Описание процедуры рукопожатия описывается в документации к каждой версии протокола Web-Socket.&lt;br /&gt;
&lt;br /&gt;
Все сообщения имеют идентификаторы для организации серий типа «запрос-ответ» (поле &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''qid''&amp;lt;/span&amp;gt;).&lt;br /&gt;
Сообщения могут адресоваться конкретному пользователю или относиться к общим. В первом случае в сообщении должен присутствовать идентификатор, позволяющий различать одинаковые, но направляемые от разных пользователей команды из WebCRM в Oktell и наоборот соответственно.&lt;br /&gt;
&lt;br /&gt;
Возможные направления и типы сообщений:&lt;br /&gt;
:* Oktell генерирует события.&lt;br /&gt;
:* Oktell производит запросы к веб-системе. WebCRM отправляет ответы на получаемые запросы.&lt;br /&gt;
:* WebCRM производит запросы к Oktell. В том числе и команды. Oktell отправляет ответы на запросы.&lt;br /&gt;
&lt;br /&gt;
''В случае HTTP подключения к CRM работа ограничивается запросами из Oktell и ответами на них из CRM.''&lt;br /&gt;
&lt;br /&gt;
Каждое сообщение представляет из себя строку [http://ru.wikipedia.org/wiki/JSON JSON] или [http://ru.wikipedia.org/wiki/XML XML] в кодировке [http://ru.wikipedia.org/wiki/UTF8 UTF-8]. Сообщения в общем потоке данных в канале отделяются друг от друга в соотвествии с версией используемого протокола Web-Socket: &lt;br /&gt;
:*Версии [http://tools.ietf.org/html/rfc6455 rfc6455 v13], [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-08 v8], [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-07 v7] подразумевают использование фреймов, в заголовках которых определяется тип и размер.&lt;br /&gt;
:*Версии [http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76 76] и [http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-75 75] подразумевают отделение сообщений байтами 0 и 255. 0 - в начале сообщения, 255 - в конце. Форматы XML и JSON представления данных в текстовом виде гарантируют отсутствие байтов 0 и 255 в теле сообщений.&lt;br /&gt;
&lt;br /&gt;
''В случае HTTP подключения к CRM запросы из октелл отправляются методом POST с передачей параметра '''data''', значением которого является упакованная в base64 строка JSON или XML.''&lt;br /&gt;
&lt;br /&gt;
Формат самих сообщений определяется непосредственно [[#Список методов интерфейса|протоколом интеграции Oktell-WebCRM]]. Например вот так выглядит сообщение из Oktell в WebCRM о факте входящего вызова в формате json:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Json.jpg]]&lt;br /&gt;
&lt;br /&gt;
Сообщения длиной более 64 КБ упаковываются в [http://ru.wikipedia.org/wiki/Base64 Base64] и разбиваются на несколько сообщений длиной до 64К. Для этого используется формат multipart-сообщения в протоколе Oktell-WebCRM. Если версия протокола Web-Socket для передачи сообщений использует фреймы ([http://tools.ietf.org/html/rfc6455 rfc6455 v13], [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-08 v8], [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-07 v7]), то способ отправки длинных сообщений в нескольких фреймах определен в самом протоколе. Однако это имеет ограничение: при передаче одного длинного сообщения в нескольких фреймах, оно не может быть прервано передачей других сообщений.&lt;br /&gt;
&lt;br /&gt;
Структура каждого сообщения - это список из двух объектов, первый из которых - тип сообщения, второй - словарь параметров. В словаре обязательно присутствует идентификатор запроса (поле &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''qid''&amp;lt;/span&amp;gt; с любым текстовым уникальным значением). В случае, когда сообщение производится от имени пользователя, присутствуют его идентификаторы (&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''userid''&amp;lt;/span&amp;gt; и/или &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''userlogin''&amp;lt;/span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Среди параметров находятся и индивидуальные параметры сообщения. Поддерживается произвольная вложенность объектов: строк, чисел, дат, словарей, списков.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Dynamic&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамическое взаимодействие===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В момент создания сценариев в Oktell администратор имеет возможность настроить индивидуальное взаимодействие с WebCRM.&lt;br /&gt;
Взаимодействие представляет собой вызов определенного метода WebCRM с передачей в него входных параметров, и возможно ожидание его исполнения с возвратом (нескольких) выходных значений.&lt;br /&gt;
&lt;br /&gt;
Сразу после организации подключения к серверу WebCRM Oktell производит запрос доступных в WebCRM динамических методов (как было сказано выше, это происходит в рамках [[#Arch1|схемы интеграции 1]] и [[#Arch3|схемы интеграции 3]]). &lt;br /&gt;
В ответ WebCRM перечисляет список действий, инициативу исполнения которых она готова отдать наружу в Oktell. При описании метода в представлении указываются:&lt;br /&gt;
:* человеческое название;&lt;br /&gt;
:* краткий код метода;&lt;br /&gt;
:* описание для администратора, настраивающего Oktell;&lt;br /&gt;
:* список входных параметров с упоминанием типов (и возможных значений для перечислений);&lt;br /&gt;
:* список выходных параметров, если метод возвращает данные и призван влиять на алгоритм сценария в Oktell;&lt;br /&gt;
:* признак того, нужно ли исполнять метод с привязкой к конкретному пользователю и в направлении индивидуального пользовательского подключения, или это обращение к серверу вообще;&lt;br /&gt;
:* разрешено ли отменять исполнение (например для метода «открыть карточку такую-то» возможна отмена, означающая «закрыть карточку такую-то»);&lt;br /&gt;
:* куда Oktell направлять серверный запрос - через стандартное подключение (websocket или http в соответствии с настройками) или по HTTP/HTTPS на альтернативный URL веб-сервера (передача осуществляется точно также POST запросом с упаковкой сообщения в переменную ''data'' в виде base64.&lt;br /&gt;
&lt;br /&gt;
По каждому методу дополнительно описывается перечень входных и выходных параметров, их типы, способ исполнения метода (по организованному каналу или отдельным http-подключением), возможность его отмены (для длительных асинхронных операций, например метод ''Открыть диалоговую форму'' может быть отменен обратным методом ''Закрыть диалоговую форму'', а может быть прерван с тем же результатом).&lt;br /&gt;
&lt;br /&gt;
В [[#Interface|интеграционном интерфейсе Oktell&amp;lt;-&amp;gt;WebCRM]] отсутствует таким образом необходимость конкретизировать методы WebCRM. &lt;br /&gt;
В момент настройки сценария Oktell администратор уже имеет о них информацию и настраивает конкретный сценарий под место. &lt;br /&gt;
&lt;br /&gt;
Администратором определяется одно или несколько из доступных действий, определяется момент исполнения, определяются входные параметры или способ их вычисления, а также режим ожидания, таймаута или асинхронного выполнения. &lt;br /&gt;
В момент работы Oktell отправляет команду на исполнение в соответствии с определенными администратором настройками и представлением динамического метода. &lt;br /&gt;
Если метод призван исполняться синхронно и возвращать некие значения, то сценарий приостанавливается, а после получения ответа сохраняет результаты в переменных сценария и продолжает выполнение. &lt;br /&gt;
Работа с динамическими методами и формами производится в сценариях Oktell компонентом [[Общие_компоненты_сценариев#Действие/карточка_в_plugin_или_WebCRM|Действие в WebCRM]].&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Для примера: в момент поступления вызова Oktell определил номер абонента. Производит синхронное исполнение динамического метода WebCRM ''Вернуть ид компании по номеру телефона'', дожидается ответа и принимает в сценарий значение. Далее исполняет динамический метод ''Ответственный сотрудник по компании'', дожидается ответа и принимает в сценарий значение. Все это время абоненту проигрывается голосовое или музыкальное приветствие. Когда воспроизведение завершается, Oktell производит маршрутизацию в соответствии с вернувшимися значениями, а также в момент поступления звонка сотруднику исполняет динамический метод ''Открыть карточку компании'' с передачей в качестве параметра идентификатора, вернувшегося на первом шаге. В случае, если сотрудник не снимает трубку, Oktell отменяет исполнение метода, тем самым отдавая команду на закрытие карточки компании. &lt;br /&gt;
&lt;br /&gt;
Ни об одном из перечисленных в примере методов WebCRM сервер Oktell не знает, зато знает администратор, настраивающий систему на работу совместно с WebCRM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Подробно список и интерфейс методов динамического взаимодействия приведен в разделе [[#DynamicMethods|Методы динамического взаимодействия]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Interface&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
===Список методов общего интерфейса===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Взаимодействие происходит путем обмена сообщениями по установившемуся транспортному каналу. &lt;br /&gt;
Часть сообщений носят вид событий, часть - вид запросов (команд), часть - вид ответов на запросы.  Каждое сообщение представляет собой байтовое представление текста с escape-последовательностями, описывающего объект в виде структуры JSON (возможен вариант XML), преобразованного через кодировку UTF8. &lt;br /&gt;
&lt;br /&gt;
На первом уровне объекта - массив из двух значений: строковый кодовый идентификатор сообщения, именованный список параметров:&lt;br /&gt;
&amp;lt;pre&amp;gt;[ &amp;quot;messagecode&amp;quot;, {&amp;quot;var1&amp;quot;:&amp;quot;value1&amp;quot;, &amp;quot;var2&amp;quot;:&amp;quot;value2&amp;quot;, ...} ]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В общем случае среди параметров могут присутствовать сложные объекты (массивы и словари):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;var1&amp;quot;:[&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;]  или &amp;quot;var2&amp;quot;:{&amp;quot;a&amp;quot;:1, &amp;quot;b&amp;quot;:2, &amp;quot;c&amp;quot;:3}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В каждом сообщении присутствует параметр &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''qid''&amp;lt;/span&amp;gt;, содержащий уникальный строковый идентификатор сообщения, обеспечивающий возможность построения из сообщений серий вида «запрос-ответ».&lt;br /&gt;
В случае, когда сообщение относится к конкретному пользователю (отправляется от его имени), в нем присутствуют параметры &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''userlogin''&amp;lt;/span&amp;gt; и &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''userid''&amp;lt;/span&amp;gt;. По умолчанию синхронизация учетных записей пользователей происходит по их уникальным логинам. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Представление систем друг другу====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''whoareyou'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Двунаправленный запрос на возврат информации об удаленной стороне. Служит для выстраивания взаимоотношений на основе типа подключения, а также дает возможность получить имя системы для указания администратору.&lt;br /&gt;
Ответом является сообщение ''iam''.&lt;br /&gt;
&lt;br /&gt;
Применяется в [[#Arch1|схеме интеграции 1]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;whoareyou&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4FEEB8EF-DF4B-47AE-8EFE-4BDA577A6FF8&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;ws-server&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Iris CRM&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: 10.5&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* type - собственный тип сервера, осуществляющего запрос. &lt;br /&gt;
			Oktell при запросе указывает значение ''commserver''.&lt;br /&gt;
			WebCRM может указывать что либо отличное, например ''ws-server'' или ''crm-server''.&lt;br /&gt;
//* name - собственное название службы. &lt;br /&gt;
//* version - собственная версия службы. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''iam'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Двунаправленный ответ на запрос ''whoareyou''. Возвращает информацию об удаленной стороне.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;iam&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;080C0DF2-442B-410E-9204-4ADB3399FCC0&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;commserver&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Oktell&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: 100425,&lt;br /&gt;
  &amp;quot;build&amp;quot;: &amp;quot;2.5.3928.8022&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* type - тип удаленного сервера. &lt;br /&gt;
			Oktell при запросе указывает значение ''commserver''.&lt;br /&gt;
			WebCRM может указывать что либо отличное, например ''ws-server'' или ''crm-server''.&lt;br /&gt;
//* name - название службы на удаленнм сервере.&lt;br /&gt;
//* version - версия службы на удаленном сервере. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;DynamicMethods&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
====Методы динамического взаимодействия====&lt;br /&gt;
&lt;br /&gt;
Информация от CRM о поддерживаемых методах, доступных Oktell для инициации исполнения.&lt;br /&gt;
&lt;br /&gt;
Серия методов forms - частный случай методов, позволяющий выделить в отдельную категорию работу с карточками. Смысл и способ работы тот же самый. Тем не менее карточки могут быть представлены как методы.&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Методы: &lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; getavailablemethods&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; availablemethods&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; executemethod&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; methodresult&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; cancelmethod&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; executemethodwaitaborted&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Формы:&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; getavailableforms&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; availableforms&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; showform&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; closeform&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; formresult&amp;lt;br&amp;gt;&lt;br /&gt;
# &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; showformwaitaborted&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;div id=&amp;quot;getavailablemethods&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getavailablemethods'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Отправляет из Oktell в CRM сообщение-запрос на возврат доступных динамических методов CRM. Отправляется только на сервер CRM (websocket или http).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getavailablemethods&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;76EF6E46-23DA-47B6-B3BD-A7076FEDE170&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''availablemethods'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-ответ из CRM в Oktell со списком доступных динамических методов CRM.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;availablemethods&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;76EF6E46-23DA-47B6-B3BD-A7076FEDE170&amp;quot;,&lt;br /&gt;
  &amp;quot;methods&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;key&amp;quot;: &amp;quot;16893E86-4D73-4F4C-8629-6E484B2CB5B0&amp;quot;, &lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Вернуть данные о компании&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Возвращает информацию о компании по одному из выбранных идентификаторов, чтобы в дальнейшем использовать при открытии карточки данных о компании&amp;quot;,&lt;br /&gt;
    &amp;quot;connectiontype&amp;quot;: &amp;quot;http&amp;quot;,&lt;br /&gt;
    &amp;quot;url&amp;quot;: &amp;quot;http://192.168.0.100:4000/pbxapi/method1.php&amp;quot;,&lt;br /&gt;
    &amp;quot;defineuser&amp;quot;: false,&lt;br /&gt;
    &amp;quot;allowcancel&amp;quot;: false,&lt;br /&gt;
    &amp;quot;inputparams&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;type&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Тип поиска&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;list&amp;quot;,&lt;br /&gt;
      &amp;quot;items&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
        id: &amp;quot;byphone&amp;quot;,&lt;br /&gt;
        name: &amp;quot;По номеру телефона&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       {&lt;br /&gt;
        id: &amp;quot;byaccount&amp;quot;,&lt;br /&gt;
        name: &amp;quot;По номеру договора&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
      ]&lt;br /&gt;
     },&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;data&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Значение идентификатора&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Номер телефона или номер договора (в соответствии с выбранным типом)&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
     },&lt;br /&gt;
     {...},&lt;br /&gt;
     {...}&lt;br /&gt;
    ]&lt;br /&gt;
    &amp;quot;outputparams&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;accountid&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Идентификатор клиента&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Для дальнейшей передачи на отображение карточки&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
     },&lt;br /&gt;
     {...},&lt;br /&gt;
     {...}&lt;br /&gt;
    ]&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;key&amp;quot;: &amp;quot;createrecord&amp;quot;, &lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Создать новое дело&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Отображает контактные данные об абоненте (комании или человеке) при входящем/исходящем звонке&amp;quot;,&lt;br /&gt;
    &amp;quot;connectiontype&amp;quot;: &amp;quot;websocket&amp;quot;,&lt;br /&gt;
    &amp;quot;defineuser&amp;quot;: true,&lt;br /&gt;
    &amp;quot;allowcancel&amp;quot;: false,&lt;br /&gt;
    &amp;quot;inputparams&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;sessionid&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Идентификатор сессии звонка&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Для связи с номером дела&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;outputparams&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;recordid&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Идентификатор созданного дела&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Для дальнейшей передачи на отображение карточки&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     {...},&lt;br /&gt;
     {...}&lt;br /&gt;
    ]&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;key&amp;quot;: &amp;quot;card_records&amp;quot;, &lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Показать карточку «ДЕЛА»&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Отображает контактные данные об абоненте (комании или человеке) при входящем/исходящем звонке&amp;quot;,&lt;br /&gt;
    &amp;quot;connectiontype&amp;quot;: &amp;quot;default&amp;quot;,&lt;br /&gt;
    &amp;quot;defineuser&amp;quot;: true,&lt;br /&gt;
    &amp;quot;allowcancel&amp;quot;: true,&lt;br /&gt;
    &amp;quot;inputparams&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;recordid&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Номер дела&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Номер дела, который ранее был создан при вызове метода «Создать запись дела»&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
     },&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;accountid&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Идентификатор клиента&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Идентификатор клиента в базе данных CRM&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
     },&lt;br /&gt;
     {...},&lt;br /&gt;
     {...}&lt;br /&gt;
    ]&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* method:key, param:key - произвольные строковые идентификаторы, упоминаемые при вызове форм из октелла&lt;br /&gt;
//* method:name, param:name - краткие человеческие названия, отображаются в списках при настройке сценария.&lt;br /&gt;
//* method:description, param:description - описания, если смысл формы/параметра нетривиален, и админу может потребоваться объясняение&lt;br /&gt;
//* method:inputparams - список входных параметров, значения которых требуется передавать в командном сообщении на исполнение соответствующего метода.&lt;br /&gt;
//* method:outputparams - список выходных параметров, значения которых можно ожидать в сообщении о выполнении метода.&lt;br /&gt;
//* param:type - тип параметра: string, int|int64, bool, decimal|float|double, datetime, list. Если не указан - строка. Дает администратору представление.&lt;br /&gt;
//* param:items - в случае если тип параметра=list, здесь идет перечисление вариантов списка&lt;br /&gt;
//* method:connectiontype - websocket|http|https|default - куда ломиться, через веб-сокет (дефолтный канал), или запросом к http-серверу. Дефолтный канал - если к CRM подключение по HTTP, то запрос по тому же адресу будет.&lt;br /&gt;
//* method:defineuser - true|false - определять пользователя, или запрос к веб-серверу вообще.&lt;br /&gt;
//* method:allowcancel - true|false - поддерживается ли отмена исполнения (например закрытие открывшейся карточки).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''executemethod'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-команда из Oktell в CRM на выполнение динамического метода (возможно у конкретного пользователя). В зависимости от представления метода может исполняться на сервере CRM или передаваться в пользовательское подключение. &lt;br /&gt;
&lt;br /&gt;
Параметр ''waitresponsems'' указывает интервал в миллисекундах, которое сценарий предполагает ожидать возврата ответа после исполнения метода; если значение равно нулю, значит метод исполняется асинхронно и ответ не нужен. При этом если происходит прерывание исполнения сценария, или в случае наличия множественных подключений от пользователя при получении первого ответа, отправляется уведомительное событие ''executemethodwaitaborted''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;executemethod&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4A8E20A1-57F9-4CA6-B4EE-221E2EB00364&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;methodkey&amp;quot;: &amp;quot;createrecord&amp;quot;,&lt;br /&gt;
  &amp;quot;executionid&amp;quot;: &amp;quot;25FC81FC-C5D0-40FB-B4E0-882352E12D86&amp;quot;,&lt;br /&gt;
  &amp;quot;inputparameters&amp;quot;: {&lt;br /&gt;
   &amp;quot;sessionid&amp;quot;: &amp;quot;2A2C48FE-D8B6-4B51-951A-09D31543D000&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;waitresponsems&amp;quot;: 0&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''methodresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-результат выполнения динамического метода из CRM в Oktell с возвратом выходных значений. Не отправляется, если исполнение прерывается командой CancelMethod.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;methodresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;A238110C-6B74-4980-AA23-41402B1E9B0E&amp;quot;,&lt;br /&gt;
  &amp;quot;methodkey&amp;quot;: &amp;quot;createrecord&amp;quot;,&lt;br /&gt;
  &amp;quot;executionid&amp;quot;: &amp;quot;25FC81FC-C5D0-40FB-B4E0-882352E12D86&amp;quot;,&lt;br /&gt;
  &amp;quot;outputparameters&amp;quot;: {&lt;br /&gt;
   &amp;quot;recordid&amp;quot;: &amp;quot;ADCB1376-BA66-496C-A56E-AB7A7D5A9193&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''cancelmethod'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-команда из Oktell на прекращение выполнения ранее запущенного динамического метода. Отправляется туда же, куда предварительно было отправлено сообщение ''executemethod''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cancelmethod&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;6ADC3F1E-B1DD-4768-BAF8-3EEB477B2F17&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;methodkey&amp;quot;: &amp;quot;card_records&amp;quot;,&lt;br /&gt;
  &amp;quot;executionid&amp;quot;: &amp;quot;25FC81FC-C5D0-40FB-B4E0-882352E12D86&amp;quot;,&lt;br /&gt;
  &amp;quot;forcecancel&amp;quot;: 0&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''executemethodwaitaborted'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-событие из Oktell, уведомляющее сервер/клиента CRM о прекращении ожидания ответа на выполнение метода. Отправляется туда же, куда предварительно было отправлено сообщение ''executemethod''. Отправляется только в том случае, если Oktell производил ожидание ответа (параметр ''waitresponsems'' не был равен нулю).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;executemethodwaitaborted&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;6ADC3F1E-B1DD-4768-BAF8-3EEB477B2F17&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;methodkey&amp;quot;: &amp;quot;card_records&amp;quot;,&lt;br /&gt;
  &amp;quot;executionid&amp;quot;: &amp;quot;25FC81FC-C5D0-40FB-B4E0-882352E12D86&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;div id=&amp;quot;getavailableforms&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getavailableforms'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Отправляет из Oktell в CRM сообщение-запрос на возврат доступных карточек CRM. Отправляется только на сервер CRM (websocket или http).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getavailableforms&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;7A1FF57A-ED91-4033-A42F-1D2AE630450E&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''availableforms'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-ответ из CRM в Oktell со списком доступных карточек CRM. Команда на отображение форм отправляется в клиентские подключение (или на сервер-мультиплексор), в серверный канал такие команды не отправляются. В этом основное различие динамических методов и форм.&lt;br /&gt;
&lt;br /&gt;
Следует понимать, что формы могут иметь разное назначение, и соответственно разный способ работы с данными. Например форма некоторого запроса отображается с целью получения данных обратно в сценарий - в этом случае форме нужны выходные параметры, и вызов ее происходит с ожиданием ответа. Одновременно могут существовать и использоваться формы, работающие с данными из CRM и взаимодействующие непосредственно с CRM, возможно находящиеся в отображении длительное время. В этом случае Oktell выступает лишь как инициатор их открытия с передачей входных идентификационных параметров. Таким формам выходные значения не нужны.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;availableforms&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;7A1FF57A-ED91-4033-A42F-1D2AE630450E&amp;quot;,&lt;br /&gt;
  &amp;quot;forms&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;key&amp;quot;: &amp;quot;formB840825C&amp;quot;, &lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Данные о компании&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Отображает контактные данные об абоненте (комании или человеке) при входящем/исходящем звонке&amp;quot;,&lt;br /&gt;
    &amp;quot;inputparams&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;accountid&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Код компании&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Код компании, который CRM возвращает в поле [accountid] в ответ на запрос данных о компании по номеру телефона&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
     },&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;page&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Активная страница&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Открываемая страница формы по умолчанию при открытии карточки&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;list&amp;quot;,&lt;br /&gt;
      &amp;quot;items&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
        id: &amp;quot;page1&amp;quot;,&lt;br /&gt;
        name: &amp;quot;Контактные данные&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       {&lt;br /&gt;
        id: &amp;quot;page2&amp;quot;,&lt;br /&gt;
        name: &amp;quot;История взаимодействия&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       {&lt;br /&gt;
        id: &amp;quot;page3&amp;quot;,&lt;br /&gt;
        name: &amp;quot;Комментарии&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
      ]&lt;br /&gt;
     {...},&lt;br /&gt;
     {...}&lt;br /&gt;
    ]&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''showform'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-команда из Oktell в CRM на открытие карточки у конкретного пользователя. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;showform&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;5CF770AE-E308-41DA-B89E-7BBCE75BE36F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;formkey&amp;quot;: &amp;quot;formB840825C&amp;quot;,&lt;br /&gt;
  &amp;quot;windowid&amp;quot;: &amp;quot;9F5D8B1A-8818-41EA-A240-04DA07498C40&amp;quot;,&lt;br /&gt;
  &amp;quot;inputparameters&amp;quot;: {&lt;br /&gt;
   &amp;quot;accountid&amp;quot;: &amp;quot;05379F49-AB22-4872-B2C2-0D4BA019EA0B&amp;quot;,&lt;br /&gt;
   &amp;quot;page&amp;quot;: &amp;quot;page2&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;waitresponsems&amp;quot;: 0&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''formresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-результат из CRM в Oktell при закрытии карточки пользователем с возвратом выходных значений. Не отправляется, если отображение прерывается командой CloseForm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;formresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;EC9E1619-AC1B-4071-98B9-30808B9ED0EC&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;formkey&amp;quot;: &amp;quot;formB840825C&amp;quot;,&lt;br /&gt;
  &amp;quot;windowid&amp;quot;: &amp;quot;9F5D8B1A-8818-41EA-A240-04DA07498C40&amp;quot;,&lt;br /&gt;
  &amp;quot;outputparameters&amp;quot;: {&lt;br /&gt;
   &amp;quot;comment&amp;quot;: &amp;quot;блаблабла&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''closeform'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-команда из Oktell на закрытие карточки у конкретного пользователя. Отправляется туда же, куда предварительно было отправлено сообщение ''executemethod''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;closeform&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;FAA1A503-FEC6-4D23-ADA9-2E4FD63F2C96&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;formkey&amp;quot;: &amp;quot;formB840825C&amp;quot;,&lt;br /&gt;
  &amp;quot;windowid&amp;quot;: &amp;quot;9F5D8B1A-8818-41EA-A240-04DA07498C40&amp;quot;,&lt;br /&gt;
  &amp;quot;forceclose&amp;quot;: 0&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''showformwaitaborted'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-событие из Oktell, уведомляющее сервер/клиента CRM о прекращении ожидания ответа на отображение формы. Отправляется туда же, куда предварительно было отправлено сообщение ''showform''. Отправляется только в том случае, если Oktell производил ожидание ответа (параметр ''waitresponsems'' не был равен нулю).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;showformwaitaborted&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;6ADC3F1E-B1DD-4768-BAF8-3EEB477B2F17&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;formkey&amp;quot;: &amp;quot;formB840825C&amp;quot;,&lt;br /&gt;
  &amp;quot;windowid&amp;quot;: &amp;quot;9F5D8B1A-8818-41EA-A240-04DA07498C40&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Обмен данными об активных пользователях====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getactiveusers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из Oktell в CRM на возврат текущих активных (авторизованных) пользователей. Применяется при старте одной из систем в момент организации подключения.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getactiveusers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;9C44D978-E380-4405-B1B9-C4894BF188A7&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''activeusers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответное сообщение из CRM в Oktell со списком активных авторизованных пользователей CRM.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;activeusers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;9C44D978-E380-4405-B1B9-C4894BF188A7&amp;quot;,&lt;br /&gt;
  &amp;quot;users&amp;quot;: [&lt;br /&gt;
   {&amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;, &amp;quot;userid&amp;quot;: &amp;quot;20394857203948752345&amp;quot;},&lt;br /&gt;
   {&amp;quot;userlogin&amp;quot;: &amp;quot;petrov&amp;quot;, &amp;quot;userid&amp;quot;: &amp;quot;kasjdfhlaksjdfhlaks&amp;quot;},&lt;br /&gt;
   {&amp;quot;userlogin&amp;quot;: &amp;quot;sidorov&amp;quot;, &amp;quot;userid&amp;quot;: &amp;quot;987495873948573945&amp;quot;}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;div id=&amp;quot;login&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''login'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из CRM в Oktell об авторизации пользователя. Запрос кросс-авторизации в Oktell в рамках [[#Arch1|схемы интеграции 1]].&lt;br /&gt;
&lt;br /&gt;
Логин используется в частности для привязки пользователя к конкретному телефонному аппарату. Возможны разные варианты привязки:&lt;br /&gt;
# Для конкретного телефона в [[Карта сети|карте сети]] Oktell задается конкретный пользователь WebCRM, при логине производится автоматическая привязка (если телефону назначен также пользователь по умолчанию, то он отключается). При выходе выходе пользователя из WebCRM происходит обратный процесс. При этом телефоном считается учетная запись (комбинация логин-пароль или IP-адрес устройства, в зависимости от типа регистрации), и фактически разные устройства могут в течение времени принимать эти значения.&lt;br /&gt;
# Во время логина WebCRM в сообщении указывает любой идентификатор (или их список) рабочего места, с которого осуществляется запуск (это может быть HostName, IP-адрес, или любой другой уникальный идентификатор, указанный для сопоставления также и в карте сети в качестве адреса компьютера). Соединенный с этим компьютером логической связью телефон в карте сети становится рабочим телефоном авторизованного таким образом пользователя. По аналогии с работой клиентских приложений Oktell.&lt;br /&gt;
&lt;br /&gt;
В случае индивидуальных подключений [[#Arch2|схемы интеграции 2]] и [[#Arch3|схемы интеграции 3]] требуется указание как логина, так и пароля для проведения полной проверки, причем пароль необходимо указывать в виде MD5 хеша. При этом возможно использование сессий (параметры ''sessionid'' и ''expires''). Клиент указывает время жизни сессии в секундах, сервер возвращает идентификатор сессии; в дальнейшем при повторном подключении в указанный интервал времени клиент может указывать сессию и новое время жизни для продления, но не указывать пароль. Если сессия существует (время не вышло, сервер не перезагружался), то авторизация будет подтверждена.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ВНИМАНИЕ! В версии 2.8 пароли case-sensitive, в версии 2.7 пароли case-insensitive. При переходе между версиями до полного обновления всех паролей рекомендуется указывать пароль в дублированном виде: параметр ''password'' - MD5(lowercase), ''Password'' - MD5(normalcase).&lt;br /&gt;
&lt;br /&gt;
В случае [[#Arch1|схемы интеграции 1]] подразумевается, что авторизация пользователя происходит в WebCRM, и указания пароля при кросс-логине в Oktell не требуется, равно как и сессий. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;login&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;9D484E0E-BE08-47B5-ABBD-490936881056&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;,&lt;br /&gt;
  &amp;quot;password&amp;quot;: &amp;quot;D41D8CD98F00B204E9800998ECF8427E&amp;quot;,&lt;br /&gt;
  &amp;quot;expires&amp;quot;: 86400,&lt;br /&gt;
  &amp;quot;usewebrtc&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;login&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;9D484E0E-BE08-47B5-ABBD-490936881056&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;login&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;9D484E0E-BE08-47B5-ABBD-490936881056&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;,&lt;br /&gt;
  &amp;quot;workplace&amp;quot;: &amp;quot;wp001&amp;quot;,&lt;br /&gt;
  &amp;quot;sessionid&amp;quot;: &amp;quot;838AC713-9D4D-43E2-A57D-D4F2D7545FB5&amp;quot;,&lt;br /&gt;
  &amp;quot;expires&amp;quot;: 86400&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;login&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;9D484E0E-BE08-47B5-ABBD-490936881056&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;,&lt;br /&gt;
  &amp;quot;workplace&amp;quot;: [&lt;br /&gt;
   &amp;quot;wp001&amp;quot;,&lt;br /&gt;
   &amp;quot;192.168.0.204&amp;quot;,&lt;br /&gt;
   &amp;quot;81.22.217.33&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''loginresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о результате авторизации или кросс-авторизации пользователя. Отправляется в ответ на запрос авторизации в Oktell методом ''login'', а в рамках [[#Arch1|схемы интеграции 1]] может быть отправлено самостоятельно по результатам обработки сообщения ''activeusers'' после установки связи с CRM. В случае запроса использования клиентом WebRTC, в ответе направляется информация по учетной записи телефона, ожидающей подключения по SIP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;loginresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;939AA33E-011F-4FEC-B60A-8BC1B4888B5A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 50093,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;Пользователь уже зарегистрирован&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;loginresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;939AA33E-011F-4FEC-B60A-8BC1B4888B5A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;sessionid&amp;quot;: &amp;quot;838AC713-9D4D-43E2-A57D-D4F2D7545FB5&amp;quot;,&lt;br /&gt;
  &amp;quot;expires&amp;quot;: 10000,&lt;br /&gt;
  &amp;quot;sipuser&amp;quot;: &amp;quot;phone81&amp;quot;,&lt;br /&gt;
  &amp;quot;siplogin&amp;quot;: &amp;quot;phone81&amp;quot;,&lt;br /&gt;
  &amp;quot;sippass&amp;quot;: &amp;quot;3kd94FnI&amp;quot;,&lt;br /&gt;
  &amp;quot;sipport&amp;quot;: 5060&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''logout'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из CRM в Oktell о выходе (логауте) пользователя. Команда на кросс-логаут в Oktell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;logout&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;9D484E0E-BE08-47B5-ABBD-490936881056&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''logoutresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о результате кросс-логаута пользователя. Может быть отправлено в ответ на запрос кросс-логаута в Oktell, а может быть отправлено самостоятельно в случае длительного отсутствия откликов от пользователя (не задействовано) или выгрузки пользователя по инициативе сервера.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;logoutresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4B25E210-2D67-4675-A5AE-46DC9CBC32F9&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''updatesession'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Команда из CRM в Oktell о продлении сессии пользователя (для сохранения возможности производить вход без пароля).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;updatesession&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;9D484E0E-BE08-47B5-ABBD-490936881056&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;29834234234&amp;quot;,&lt;br /&gt;
  &amp;quot;sessionid&amp;quot;: &amp;quot;9238749273982734023&amp;quot;,&lt;br /&gt;
  &amp;quot;expires&amp;quot;: 86400&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Обмен состояниями пользователей====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''entercallcenter'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM на вход в режим call-центра. При проведении изменений в ответ отправляется сообщение userstatechanged.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;entercallcenter&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;7DD2ED7A-B6BF-4988-A780-99719C65CA5D&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''exitcallcenter'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM на выход из режима call-центра. При проведении изменений в ответ отправляется сообщение userstatechanged.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;exitcallcenter&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;6E899456-C373-48EB-949E-E2C0D79D45EA&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''checkmyuserprivilege'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM на проверку наличия у пользователя обще-ролевой привилегии.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;checkmyuserprivilege&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;code&amp;quot;: &amp;quot;DashboardCreate&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''checkmyuserprivilegeresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ на ''checkmyuserprivilege''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;checkmyuserprivilegeresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;code&amp;quot;: &amp;quot;DashboardCreate&amp;quot;,&lt;br /&gt;
  &amp;quot;hasprivilege&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getmyuserprivileges'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM на возврат всех имеющихся у пользователя обще-ролевых привилегий.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getmyuserprivileges&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getmyuserprivilegesresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ на ''getmyuserprivileges''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getmyuserprivilegesresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;privileges&amp;quot;:[&lt;br /&gt;
    &amp;quot;ExtWP&amp;quot;,&lt;br /&gt;
    &amp;quot;ViewOffice&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
   ]&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Текстовый чат v.1 (версии до 2.8.130909)====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обмен текстовыми сообщениями в первоначальном варианте, где подразумевается только диалоговое общение между двумя пользователями.&lt;br /&gt;
Начиная с версии 2.8.130909 этот способ считается устаревшим. &lt;br /&gt;
  &lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''usertextmessagereceived'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-событие из Oktell в CRM о новом входящем текстовом сообщении чата.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;usertextmessagereceived&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;D5582E04-2964-438C-A8DB-21AF898BBAE0&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;messageid&amp;quot;: &amp;quot;0263C7BF-DEB3-406F-9CF9-6F56D828C755&amp;quot;,&lt;br /&gt;
  &amp;quot;snduserlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
  &amp;quot;snduserid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
  &amp;quot;sndusername&amp;quot;: &amp;quot;Петров Антон Григорьевич&amp;quot;,&lt;br /&gt;
  &amp;quot;messagetext&amp;quot;: &amp;quot;раз два три четыре пять вышел зайчик погулять&amp;quot;,&lt;br /&gt;
  &amp;quot;messagedate&amp;quot;: &amp;quot;2011-03-27 14:12:28&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''usertextmessageviewed'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение-событие из Oktell в CRM о прочитанности отправленного сообщения.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;usertextmessageviewed&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;D5582E04-2964-438C-A8DB-21AF898BBAE0&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;vieweduserid&amp;quot;: &amp;quot;66D12297-E400-4862-BD24-F6DACCFDF9DA&amp;quot;,&lt;br /&gt;
  &amp;quot;messageids&amp;quot;: [&lt;br /&gt;
    &amp;quot;0263C7BF-DEB3-406F-9CF9-6F56D828C755&amp;quot;,&lt;br /&gt;
    &amp;quot;4B5110FD-899B-4429-A659-2B9695B4D89E&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''sendusertextmessage'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на отправку текстового сообщения в рамках чата другому пользователю. &lt;br /&gt;
Вложения и сообщения в конференциях - опция, используемая веб-клиентом Oktell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;sendusertextmessage&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;messageid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;recvuserlogin&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;recvuserid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;messagetext&amp;quot;: &amp;quot;раз два три четыре пять вышел зайчик погулять&amp;quot;,&lt;br /&gt;
  &amp;quot;isconferencechat&amp;quot;: true,&lt;br /&gt;
  &amp;quot;files&amp;quot;: [&lt;br /&gt;
   &amp;quot;Temp\1.jpg&amp;quot;,&lt;br /&gt;
   &amp;quot;Temp\2.jpg&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''sendusertextmessageresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на команду отправки сообщения.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;sendusertextmessageresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;messageid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;yyyy-MM-dd HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;sentdate&amp;quot;: &amp;quot;2012-03-18 13:06:28&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setusermessageviewed'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на выставление признака прочитанности текстового сообщения пользователем. В ответ возвращается количество реально отмеченных сообщений. Может быть больше или меньше указанного. Событие о прочитанности отправляется пользователю, указанному в поле senderuserid (параметр может не указываться).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setusermessageviewed&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;AA29AE60-50C3-48EE-A32E-3D98265D7412&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;senderuserid&amp;quot;: &amp;quot;689BD58D-2288-4E93-8647-58FB0756F3CA&amp;quot;,&lt;br /&gt;
  &amp;quot;messageids&amp;quot;: [ &lt;br /&gt;
    &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;, &lt;br /&gt;
    &amp;quot;4748964E-9ADC-4999-9ACB-12B8B46660CF&amp;quot; &lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''setusermessageviewedresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на команду установки признака прочитанности ''setusermessageviewed''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setusermessageviewedresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;AA29AE60-50C3-48EE-A32E-3D98265D7412&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;updatedcount&amp;quot;: 12&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Текстовый чат v.2 (версии начиная с 2.8.130909)====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Обмен текстовыми сообщениями протекает в рамках чатов - индивидуальных, массовых, прикрепленных. Вводится понятие чата с соответствующими свойствами - названием, списком участников, возможностью их редактирования. Требует подписки на совокупность событий ''chat''.&lt;br /&gt;
Интерфейс доступен и считается основным начиная с версии 2.8.130909.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatcreate'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на создание нового чата. Чаты создаются одним из участников, все остальные уведомляются о создании. Чаты могут существовать сколь угодно длительное время и использоваться многократно.&lt;br /&gt;
Идентификатор может не указываться, тогда он генерируется и возвращается в ответе. &lt;br /&gt;
Типы: 1 - приватный диалог двух участников, 2 - чат с нерегламентированным количеством участников, 3 - привязанный к конференции. &lt;br /&gt;
По результатам создания генерируется и отправляется событие ''[[chatcreated]]'' всем заявленным участникам чата. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatcreate&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;название чата&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;linkedobjectid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;&lt;br /&gt;
  &amp;quot;members&amp;quot;: [&lt;br /&gt;
    &amp;quot;D9E54EB7-D3D9-43D6-B70C-019ABC6FC457&amp;quot;,&lt;br /&gt;
    &amp;quot;A530C87E-6A07-471C-B70C-E7C1C31AD9A7&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatcreateresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на команду создания нового чата.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatcreateresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatsetname'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на изменение названия существующему чату. &lt;br /&gt;
По результатам изменения генерируется и отправляется событие ''[[chatnamechanged]]'' всем авторизованным участникам чата. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatsetname&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;новое название чата&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatsetnameresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на команду изменения названия чата.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatsetnameresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chataddmembers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на добавление участников к существующему чату. &lt;br /&gt;
Операция доступна только для участников чата.&lt;br /&gt;
В качестве ключей участников ожидаются идентификаторы или логины (более затратная операция в части поиска).&lt;br /&gt;
По результатам изменения генерируется и отправляется событие ''[[chatmemberadded]]'' всем авторизованным участникам чата, включая новых. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chataddmembers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;members&amp;quot;: [&lt;br /&gt;
    &amp;quot;D9E54EB7-D3D9-43D6-B70C-019ABC6FC457&amp;quot;,&lt;br /&gt;
    &amp;quot;A530C87E-6A07-471C-B70C-E7C1C31AD9A7&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chataddmembersresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на команду добавления участников к существующему чату.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chataddmembersresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatremovemembers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на удаление участников из существующего чата. &lt;br /&gt;
Операция доступна только для создателя чата.&lt;br /&gt;
В качестве ключей участников ожидаются идентификаторы или логины (более затратная операция в части поиска).&lt;br /&gt;
По результатам изменения генерируется и отправляется событие ''[[chatmemberremoved]]'' всем авторизованным участникам чата, включая удаленных. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatremovemembers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;members&amp;quot;: [&lt;br /&gt;
    &amp;quot;D9E54EB7-D3D9-43D6-B70C-019ABC6FC457&amp;quot;,&lt;br /&gt;
    &amp;quot;A530C87E-6A07-471C-B70C-E7C1C31AD9A7&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatremovemembersresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на команду удаления участников из существующего чата.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatremovemembersresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatgetmembers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на получение информации о текущих участниках указанного чата. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgetmembers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatgetmembersresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на запрос информации о текущих участниках указанного чата.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgetmembersresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;members&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;id&amp;quot;:&amp;quot;D9E54EB7-D3D9-43D6-B70C-019ABC6FC457&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatsendmessage'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на отправку сообщения в указанный чат. &lt;br /&gt;
Идентификатор messageid может не указываться, тогда генерируется и возвращается в ответе. Сообщение может содержать вложенные файлы ('''files''') и указание на скрытое их хранение на диске ('''hidefiles''').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatsendmessage&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;&lt;br /&gt;
  &amp;quot;messageid&amp;quot;: &amp;quot;2CD5BB8F-CC88-4D01-8A1F-5CEB2CD72AAE&amp;quot;,&lt;br /&gt;
  &amp;quot;messagetext&amp;quot;: &amp;quot;раз два три четыре пять вышел зайчик погулять&amp;quot;&lt;br /&gt;
  &amp;quot;hidefiles&amp;quot;: false,&lt;br /&gt;
  &amp;quot;files&amp;quot;: [&lt;br /&gt;
    &amp;quot;Temp\1.jpg&amp;quot;,&lt;br /&gt;
    &amp;quot;Temp\2.txt&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatsendmessageresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на отправку сообщения в указанный чат.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatsendmessageresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;messageid&amp;quot;: &amp;quot;2CD5BB8F-CC88-4D01-8A1F-5CEB2CD72AAE&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatsetmessageviewed'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на установку флага прочитанности указанного сообщения. Вместе с указанным сообщением маркируются прочитанными также все предшествующие сообщения этого же чата.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatsetmessageviewed&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
  &amp;quot;messageid&amp;quot;: &amp;quot;D9E54EB7-D3D9-43D6-B70C-019ABC6FC457&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatsetmessageviewedresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на установку флага прочитанности сообщения.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatsetmessageviewedresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatgetprivateid'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на получение идентификатора существующего приватного диалога между двумя пользователями, один из которых - авторизованный пользователь. Приватные диалоги соответствуют чатам с типом &amp;quot;1&amp;quot;.&lt;br /&gt;
В системе возможно существование нескольких приватных диалогов между пользователями, в этом случае возвращается любой из них. В случае отсутствия приватных диалогов в качестве идентификатора возвращается null.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgetprivateid&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;opponentid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatgetprivateidresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на запрос идентификатора приватного диалога. Если приватный диалог между пользователями не найден, возвращается null.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgetprivateidresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;D9E54EB7-D3D9-43D6-B70C-019ABC6FC457&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatgetbyid'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на получение информации о чате, указанному с помощью идентификатора. Среди информационных полей возвращаются название, количество участников, последнее сообщение в чате с признаком ''прочитано/не прочитано'', а также идентификатор оппонента, если это приватный диалог.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgetbyid&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;0B9A00D8-12F6-4A0F-A8A3-4C840E98C240&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatgetbyidresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на запрос информации о чате. Если чат не найден по указанному идентификатору, возвращается null.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgetbyidresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;yyyy-MM-dd HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;chat&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;quot;01483664-9D99-4B1B-8131-C46386A6FC68&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;:&amp;quot;приватный чат&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
    &amp;quot;membercount&amp;quot;:&amp;quot;4&amp;quot;,&lt;br /&gt;
    &amp;quot;privateopponentid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
    &amp;quot;linkedobjectid&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lastdtutc&amp;quot;:&amp;quot;2013-09-05 14:08:02&amp;quot;,&lt;br /&gt;
    &amp;quot;lastmessage&amp;quot;:{&lt;br /&gt;
      &amp;quot;id&amp;quot;:&amp;quot;4067F854-E88A-40C1-82C5-7F125A77A25F&amp;quot;,&lt;br /&gt;
      &amp;quot;amiauthor&amp;quot;:false,&lt;br /&gt;
      &amp;quot;authorid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
      &amp;quot;authorlogin&amp;quot;:&amp;quot;sergeev&amp;quot;,&lt;br /&gt;
      &amp;quot;authorname&amp;quot;:&amp;quot;Сергеев Вахтанг Абрикосович&amp;quot;,&lt;br /&gt;
      &amp;quot;dtutc&amp;quot;:&amp;quot;2013-09-05 14:08:02&amp;quot;,&lt;br /&gt;
      &amp;quot;text&amp;quot;:&amp;quot;Зайди как освободишься&amp;quot;,&lt;br /&gt;
      &amp;quot;isnew&amp;quot;:&amp;quot;true&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatgethotlist'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на получение информации о горячих чатах, в рамках которых последние сообщения были сравнительно недавно. &lt;br /&gt;
Запрос информации осуществляется с указанием нужной страницы (в сортированном по убыванию даты последней активности списке ''count'' элементов, начиная с ''startidx'').&lt;br /&gt;
Можно также наложить дополнительные фильтры, применяемые к названию чата и к имени оппонента приватного диалога (''search1'' и ''search2''). &lt;br /&gt;
Возвращаемая информация аналогична методу ''chatgetbyid''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgethotlist&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;startidx&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;count&amp;quot;: 10,&lt;br /&gt;
  &amp;quot;search1&amp;quot;: &amp;quot;мой чат&amp;quot;,&lt;br /&gt;
  &amp;quot;search2&amp;quot;: &amp;quot;vjq xfn&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatgethotlistresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на запрос информации о горячих чатах.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgethotlistresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;yyyy-MM-dd HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;chatlist&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;quot;01483664-9D99-4B1B-8131-C46386A6FC68&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;:&amp;quot;приватный чат&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
    &amp;quot;membercount&amp;quot;:&amp;quot;4&amp;quot;,&lt;br /&gt;
    &amp;quot;privateopponentid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
    &amp;quot;linkedobjectid&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lastdtutc&amp;quot;:&amp;quot;2013-09-05 14:08:02&amp;quot;,&lt;br /&gt;
    &amp;quot;lastmessage&amp;quot;:{&lt;br /&gt;
      &amp;quot;id&amp;quot;:&amp;quot;4067F854-E88A-40C1-82C5-7F125A77A25F&amp;quot;,&lt;br /&gt;
      &amp;quot;amiauthor&amp;quot;:false,&lt;br /&gt;
      &amp;quot;authorid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
      &amp;quot;authorlogin&amp;quot;:&amp;quot;sergeev&amp;quot;,&lt;br /&gt;
      &amp;quot;authorname&amp;quot;:&amp;quot;Сергеев Вахтанг Абрикосович&amp;quot;,&lt;br /&gt;
      &amp;quot;dtutc&amp;quot;:&amp;quot;2013-09-05 14:08:02&amp;quot;,&lt;br /&gt;
      &amp;quot;text&amp;quot;:&amp;quot;Зайди как освободишься&amp;quot;,&lt;br /&gt;
      &amp;quot;isnew&amp;quot;:&amp;quot;true&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatgettotalnewmessagecount'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на получение количества непрочитанных сообщений всего по всем чатам с участием пользователя. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgettotalnewmessagecount&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatgettotalnewmessagecountresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на запрос количества непрочитанных сообщений всего.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgettotalnewmessagecountresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;count&amp;quot;: 31&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''chatgetmessagehistory'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на получение истории сообщений по чату. &lt;br /&gt;
Может быть наложен дополнительный фильтр на текст сообщения (''search1'' и ''search2''), ограничения на период выдачи истории (''dtstartutc'', ''dtstoputc''). По умолчанию весь период истории без фильтрации по тексту сообщений.&lt;br /&gt;
Данные выдаются из сортированного по убыванию даты отправки списка сообщений с указанной страницы (''startidx'', ''count''). По умолчанию первые 10 сообщений.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgetmessagehistory&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;14D6DBB7-D5CB-471B-888A-9AACC8CD737B&amp;quot;,&lt;br /&gt;
  &amp;quot;startidx&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;count&amp;quot;: 50,&lt;br /&gt;
  &amp;quot;dtstartutc&amp;quot;: &amp;quot;2013-07-12 13:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;dtstoputc&amp;quot;: &amp;quot;2013-07-12 15:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;search1&amp;quot;: &amp;quot;abkmnh&amp;quot;,&lt;br /&gt;
  &amp;quot;search2&amp;quot;: &amp;quot;фильтр&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatgetmessagehistoryresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell на запрос истории сообщений в чате.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatgetmessagehistoryresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;yyyy-MM-dd HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;messagelist&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
     &amp;quot;id&amp;quot;:&amp;quot;4067F854-E88A-40C1-82C5-7F125A77A25F&amp;quot;,&lt;br /&gt;
     &amp;quot;amiauthor&amp;quot;:false,&lt;br /&gt;
     &amp;quot;authorid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
     &amp;quot;authorlogin&amp;quot;:&amp;quot;sergeev&amp;quot;,&lt;br /&gt;
     &amp;quot;authorname&amp;quot;:&amp;quot;Сергеев Вахтанг Абрикосович&amp;quot;,&lt;br /&gt;
     &amp;quot;dtutc&amp;quot;:&amp;quot;2013-09-05 14:08:02&amp;quot;,&lt;br /&gt;
     &amp;quot;text&amp;quot;:&amp;quot;Зайди как освободишься&amp;quot;,&lt;br /&gt;
     &amp;quot;isnew&amp;quot;:&amp;quot;true&amp;quot;&lt;br /&gt;
     &amp;quot;files&amp;quot;:[&lt;br /&gt;
       {&lt;br /&gt;
        &amp;quot;path&amp;quot;:&amp;quot;Temp\1.jpg&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;:329002&lt;br /&gt;
       },&lt;br /&gt;
       ...&lt;br /&gt;
     ]&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatcreated'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о факте создания нового текстового чата с участием авторизованного пользователя.&lt;br /&gt;
Отправляется всем участникам созданного чата.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatcreated&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;yyyy-MM-dd HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;chat&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;quot;01483664-9D99-4B1B-8131-C46386A6FC68&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;:&amp;quot;приватный чат&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
    &amp;quot;membercount&amp;quot;:&amp;quot;4&amp;quot;,&lt;br /&gt;
    &amp;quot;privateopponentid&amp;quot;:&amp;quot;F6CDFE11-91D2-47C0-89ED-FA9243B80A77&amp;quot;,&lt;br /&gt;
    &amp;quot;linkedobjectid&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lastdtutc&amp;quot;:&amp;quot;2013-09-05 14:08:02&amp;quot;,&lt;br /&gt;
    &amp;quot;members&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      ...&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatnamechanged'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о факте изменения названия существующего текстового чата.&lt;br /&gt;
Отправляется всем участникам этого чата.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatnamechanged&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;41EE8C8F-A7DE-4F78-8F57-7F299CE2767B&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;новое имя&amp;quot;&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatmemberadded'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о факте добавления новых участников к существующему текстовому чату. &lt;br /&gt;
Отправляется всем участникам этого чата.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatmemberadded&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;41EE8C8F-A7DE-4F78-8F57-7F299CE2767B&amp;quot;,&lt;br /&gt;
  &amp;quot;members&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatmemberremoved'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о факте удаления некоторых участников из существующего текстового чата. &lt;br /&gt;
Отправляется всем участникам этого чата.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatmemberremoved&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;41EE8C8F-A7DE-4F78-8F57-7F299CE2767B&amp;quot;,&lt;br /&gt;
  &amp;quot;members&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatmessage'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о факте поступления сообщения из текстового чата. &lt;br /&gt;
Отправляется всем участникам этого чата, включая отправителя (в этом случае поля authorname и authorlogin отсутствуют).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatmessage&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;yyyy-MM-dd HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;41EE8C8F-A7DE-4F78-8F57-7F299CE2767B&amp;quot;,&lt;br /&gt;
  &amp;quot;messageid&amp;quot;: &amp;quot;14D6DBB7-D5CB-471B-888A-9AACC8CD737B&amp;quot;,&lt;br /&gt;
  &amp;quot;amiauthor&amp;quot;: false,&lt;br /&gt;
  &amp;quot;authorid&amp;quot;: &amp;quot;B1D4DCA9-2246-4EA1-B71E-68FF29AC92E4&amp;quot;,&lt;br /&gt;
  &amp;quot;authorname&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;authorlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;dtutc&amp;quot;: &amp;quot;2013-09-05 16:10:04&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;тело сообщения&amp;quot;,&lt;br /&gt;
  &amp;quot;isnew&amp;quot;: true&lt;br /&gt;
  &amp;quot;files&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
     &amp;quot;path&amp;quot;:&amp;quot;Temp\1.jpg&amp;quot;,&lt;br /&gt;
     &amp;quot;size&amp;quot;:329002&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''chatmessageviewed'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о факте прочтения сообщения кем либо из участников текстового чата. &lt;br /&gt;
Генерируется для отправителя сообщения, а также для пользователя, который прочитал сообщение.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;chatmessageviewed&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F14F31B7-F203-4462-975F-3A37DD16240B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chatid&amp;quot;: &amp;quot;41EE8C8F-A7DE-4F78-8F57-7F299CE2767B&amp;quot;,&lt;br /&gt;
  &amp;quot;messageid&amp;quot;: &amp;quot;14D6DBB7-D5CB-471B-888A-9AACC8CD737B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Голосовая почта====&lt;br /&gt;
 &lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''voicemailreceived'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о факте поступления голосовой почты на ящик пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;voicemailreceived&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;080C0DF2-442B-410E-9204-4ADB3399FCC0&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Всплывающие уведомления====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''shownotifymessage'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Команда из Oktell в CRM об уведомлении пользователя по аналогии с всплывающими уведомлениями клиентского приложения Oktell&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;shownotifymessage&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;99CC8C57-1793-486A-AFB1-6E5CA3E6855E&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;id&amp;quot;: &amp;quot;A33027E1-096F-38B8-1198-BB4D7C15823A&amp;quot;,&lt;br /&gt;
  &amp;quot;sender&amp;quot;: &amp;quot;АТС&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
  &amp;quot;savedb&amp;quot;: &amp;quot;true&amp;quot;,&lt;br /&gt;
  &amp;quot;autohide&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;dd.MM.yyyy HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;dt&amp;quot;: &amp;quot;25.09.2011 13:07:12&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: 262144,&lt;br /&gt;
  &amp;quot;backcolor&amp;quot;: &amp;quot;00FF0000&amp;quot;,&lt;br /&gt;
  &amp;quot;uniquekey&amp;quot;: &amp;quot;E7899B61-55C3-4007-91EE-DDB348913AA8&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* id - идентификатор сообщения. Присутствует, если сообщение сохранено в БД.&lt;br /&gt;
//* savedb: true|false. Сохранено ли сообщение в БД.&lt;br /&gt;
//* dt - дата/время генерации уведомления.&lt;br /&gt;
//* uniquekey - код сообщения. Может отсутствовать. Но если есть - допускается одновременное отображение только &lt;br /&gt;
             одного уведомления с таким кодом (либо закрывать автоматически предыдущее, либо не отображать это)&lt;br /&gt;
//* backcolor - hex AARRGGBB&lt;br /&gt;
//* type - тип сообщения из флагового списка кратных двойке кодов&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setnotifyshown'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell об установке признака прочтенности уведомления. Это актуально для уведомлений, сохраняемых в БД.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setnotifyshown&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;id&amp;quot;: &amp;quot;A33027E1-096F-38B8-1198-BB4D7C15823A&amp;quot;,&lt;br /&gt;
  &amp;quot;wasshown&amp;quot;: false&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* id - идентификатор сообщения. Может отсутствовать. Но если есть - допускается одновременное отображение только &lt;br /&gt;
             одного уведомления с таким кодом (либо закрывать автоматически предыдущее, либо не отображать это)&lt;br /&gt;
//* ids - список идентификаторов отображенных уведомлений.			 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Сообщения от АТС====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_ringstarted'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о входящем звонке. Не имеет отношения к постановке звонка в очередь. Фактически когда телефон пользователя начал звенеть.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_ringstarted&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;00488421-97E4-443B-81B7-D645E403AEBB&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;,&lt;br /&gt;
  &amp;quot;callerlineid&amp;quot;: &amp;quot;BC1FD50B-651F-459D-B659-28230E919673&amp;quot;,&lt;br /&gt;
  &amp;quot;callerlinenum&amp;quot;: &amp;quot;13027&amp;quot;,&lt;br /&gt;
  &amp;quot;callerdirection&amp;quot;: &amp;quot;oktell_pbx&amp;quot;,&lt;br /&gt;
  &amp;quot;callerid&amp;quot;: &amp;quot;73439170203&amp;quot;,&lt;br /&gt;
  &amp;quot;callername&amp;quot;: &amp;quot;ОАО Металлург&amp;quot;,&lt;br /&gt;
  &amp;quot;callerdescription&amp;quot;: &amp;quot;Металлоконструкции, изделия из черных и цветных металлов&amp;quot;,&lt;br /&gt;
  &amp;quot;callerinfo&amp;quot;: &amp;quot;Абонент: 315, Задача 'Входящие в call-центр'&amp;quot;,&lt;br /&gt;
  &amp;quot;callercomment&amp;quot;: &amp;quot;Еще что-то об абоненте&amp;quot;,&lt;br /&gt;
  &amp;quot;calleruserlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;calleruserid&amp;quot;: &amp;quot;00000000-0000-0000-0000-000000000000&amp;quot;,&lt;br /&gt;
  &amp;quot;isextline&amp;quot;: true,&lt;br /&gt;
  &amp;quot;canfax&amp;quot;: true,&lt;br /&gt;
  &amp;quot;canvideo&amp;quot;: false,&lt;br /&gt;
  &amp;quot;isconference&amp;quot;: false,&lt;br /&gt;
  &amp;quot;confid&amp;quot;: &amp;quot;00000000-0000-0000-0000-000000000000&amp;quot;,&lt;br /&gt;
  &amp;quot;confname&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;confroom&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;confinviternumber&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;confinviteruserid&amp;quot;: &amp;quot;00000000-0000-0000-0000-000000000000&amp;quot;,&lt;br /&gt;
  &amp;quot;confinviteruserlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;istask&amp;quot;: true,&lt;br /&gt;
  &amp;quot;taskid&amp;quot;: &amp;quot;F94BD1FE-B628-4CC3-B215-F3F84B275EDD&amp;quot;,&lt;br /&gt;
  &amp;quot;taskname&amp;quot;: &amp;quot;Входящие в call-центр&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* Частично могут отсутстовать параметры, описывающие абонента. &lt;br /&gt;
//    Если istask=false, то остутствуют taskid, taskname, tasktalklimitsec, taskfromhandlesec&lt;br /&gt;
//    Если звонок не от другого пользователя, то отсутствуют calleruserlogin, calleruserid&lt;br /&gt;
//    Если isconference=false, то отсутствует confid, confname, confroom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_ringstopped'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о прекращении входящего вызова. Если пользователь не снял трубку, а вызов прекратился.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_ringstopped&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;BEB91146-BA27-4236-9CAC-EF562719E7E5&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_commstarted'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о коммутации&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_commstarted&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;B7ACFEC1-65BB-4773-A425-DC39F5D1A48C&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;072F2EE0-4B3B-49A7-AB5B-E213AE752A53&amp;quot;&lt;br /&gt;
  &amp;quot;callerlineid&amp;quot;: &amp;quot;BC1FD50B-651F-459D-B659-28230E919673&amp;quot;,&lt;br /&gt;
  &amp;quot;callerlinenum&amp;quot;: &amp;quot;13027&amp;quot;,&lt;br /&gt;
  &amp;quot;callerid&amp;quot;: &amp;quot;73439170203&amp;quot;,&lt;br /&gt;
  &amp;quot;callername&amp;quot;: &amp;quot;ОАО Металлург&amp;quot;,&lt;br /&gt;
  &amp;quot;callerdescription&amp;quot;: &amp;quot;Металлоконструкции, изделия из черных и цветных металлов&amp;quot;,&lt;br /&gt;
  &amp;quot;callerinfosimple&amp;quot;: &amp;quot;Абонент: 315, Задача 'Входящие в call-центр'&amp;quot;,&lt;br /&gt;
  &amp;quot;callercomment&amp;quot;: &amp;quot;Еще что-то об абоненте&amp;quot;,&lt;br /&gt;
  &amp;quot;calleruserlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;calleruserid&amp;quot;: &amp;quot;00000000-0000-0000-0000-000000000000&amp;quot;,&lt;br /&gt;
  &amp;quot;isextline&amp;quot;: true,&lt;br /&gt;
  &amp;quot;canfax&amp;quot;: true,&lt;br /&gt;
  &amp;quot;canvideo&amp;quot;: false,&lt;br /&gt;
  &amp;quot;cansendfiles&amp;quot;: true,&lt;br /&gt;
  &amp;quot;canbuildconf&amp;quot;: true,&lt;br /&gt;
  &amp;quot;isivrscript&amp;quot;: false,&lt;br /&gt;
  &amp;quot;isconference&amp;quot;: false,&lt;br /&gt;
  &amp;quot;confid&amp;quot;: &amp;quot;00000000-0000-0000-0000-000000000000&amp;quot;,&lt;br /&gt;
  &amp;quot;confname&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;confroom&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;istask&amp;quot;: true,&lt;br /&gt;
  &amp;quot;taskid&amp;quot;: &amp;quot;F94BD1FE-B628-4CC3-B215-F3F84B275EDD&amp;quot;,&lt;br /&gt;
  &amp;quot;taskname&amp;quot;: &amp;quot;Входящие в call-центр&amp;quot;,&lt;br /&gt;
  &amp;quot;tasktalklimitsec&amp;quot;: 180,&lt;br /&gt;
  &amp;quot;taskfromhandlesec&amp;quot;: 24&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* Частично могут отсутстовать параметры, описывающие абонента. &lt;br /&gt;
//    Если istask=false, то остутствуют taskid, taskname, tasktalklimitsec, taskfromhandlesec&lt;br /&gt;
//    Если звонок не от другого пользователя, то отсутствуют calleruserlogin, calleruserid&lt;br /&gt;
//    Если isconference=false, то отсутствует confid, confname, confroom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_commstopped'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о завершении коммутации. Не путать со звонком. Коммутаций в рамках обработки звонка может быть много.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_commstopped&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;D514511C-BD4F-406B-B9C7-695CDC6C40E7&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;072F2EE0-4B3B-49A7-AB5B-E213AE752A53&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_ivrstarted'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о соединении с IVR-сценарием.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_ivrstarted&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;46E07742-0B24-4DD6-B4C6-12CDC1F7B938&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;scriptname&amp;quot;: &amp;quot;(Служебный) Вход в АТС&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;072F2EE0-4B3B-49A7-AB5B-E213AE752A53&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_ivrstopped'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о завершении соединения с IVR сценарием.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_ivrstopped&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;FC9DD78C-1A5F-4E06-9AB5-A9CEDE025F6A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_acmcallstarted'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о запуске автодозвона.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_acmcallstarted&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;410B1930-423E-4632-B3DE-54EC48C0E8A0&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;,&lt;br /&gt;
  &amp;quot;callnumber&amp;quot;: &amp;quot;471&amp;quot;,&lt;br /&gt;
  &amp;quot;isextline&amp;quot;: false,&lt;br /&gt;
  &amp;quot;callername&amp;quot;: &amp;quot;Сигизмунд Львович Кац&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_acmcallstopped'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM об остановке автодозвона.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_acmcallstopped&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;410B1930-423E-4632-B3DE-54EC48C0E8A0&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_faxstarted'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell о начале факс-сеанса на оппозитном канале.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_faxstarted&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;28979AE8-8E06-4EED-9114-98CB126CA8F4&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;,&lt;br /&gt;
  &amp;quot;opponentlineid&amp;quot;: &amp;quot;BC1FD50B-651F-459D-B659-28230E919673&amp;quot;,&lt;br /&gt;
  &amp;quot;faxdirection&amp;quot;: &amp;quot;send&amp;quot;,&lt;br /&gt;
  &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_faxstopped'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell о завершении факс-сеанса на оппозитном канале (следом возврат в коммутацию, если трубку не положили там).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_faxstopped&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;324CD087-BC2D-4FF3-A9BD-86A7276A4DED&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;D6C8232D-4E4A-48BB-954E-C719582A4718&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 65289,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;NoFaxPages&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* error: список FaxError&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''phoneevent_faxreceived'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cообщение из Oktell о завершении приема факса со ссылками на файлы.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;phoneevent_faxreceived&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C20E48DF-628D-4954-ADDE-D2C3B31C6700&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;files&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;filename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;filesize&amp;quot;: 172934,&lt;br /&gt;
    &amp;quot;filelink&amp;quot;: &amp;quot;\/temp\/receivedfax\/a802d3ea\/img01.tiff&amp;quot;,&lt;br /&gt;
    &amp;quot;availabletill&amp;quot;: &amp;quot;2011-03-27 23:39:18&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* Даже если result=0, могут быть частично полученные файлы.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''flashstatechanged'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cообщение из Oktell о смене состояния линии, находящейся на удержании.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;flashstatechanged&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;99CC8C57-1793-486A-AFB1-6E5CA3E6855E&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;flashtypeid&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;flashtypestr&amp;quot;: &amp;quot;Put&amp;quot;,&lt;br /&gt;
  &amp;quot;oppositeid&amp;quot;: &amp;quot;91FD3E18-B3A7-4662-8E06-C95C7D245DC3&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* Список возможных состояний:&lt;br /&gt;
	Put		= 1  — постановка на удержание&lt;br /&gt;
	Return		= 2  — возврат с удержания&lt;br /&gt;
	Abort		= 3  — прерывание удержания при положении трубки или другими действиями. Абонент на удержании получит сигнал занято.&lt;br /&gt;
	Lost		= 4  — абонент прервал ожидание, либо ошибка при попытке переключения на него&lt;br /&gt;
	Switch		= 5  — перевод ожидающего на кого-то другого&lt;br /&gt;
	Invite		= 6  — переключение с абонентом в конференцию&lt;br /&gt;
	Between		= 7  — переключение между двумя абонентами на удержании(без обрыва)&lt;br /&gt;
	Next		= 8  — отбой текущего абонента и переход сразу на набор номера без возврата к абоненту на удержании&lt;br /&gt;
	Flashed		= 11 — пользовать сам был поставлен кем-то на удержание&lt;br /&gt;
	Restored	= 12 — пользователь возвращён из удержания&lt;br /&gt;
	Aborted		= 13 — удержание пользователя прервано&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''linestatechanged'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cообщение из Oktell о смене состояния внутренней линии&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;linestatechanged&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;99CC8C57-1793-486A-AFB1-6E5CA3E6855E&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;linestateid&amp;quot;: 4,&lt;br /&gt;
  &amp;quot;linestatestr&amp;quot;: &amp;quot;lsReady&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* Список возможных состояний внутренней линии:&lt;br /&gt;
	lsDisconnected	= 1	— не подключена&lt;br /&gt;
	lsOff		= 2	— выключена&lt;br /&gt;
	lsReady		= 4	— готова&lt;br /&gt;
	lsHookUp	= 8	— поднята трубка&lt;br /&gt;
	lsIncomingCall	= 16	— входящий звонок&lt;br /&gt;
	lsCommutated	= 32	— скоммутирована&lt;br /&gt;
	lsWait		= 64	— ожидание дозвона\коммутации&lt;br /&gt;
	lsFlash		= 128	— флеш\удержание&lt;br /&gt;
	lsWaitDown	= 256	— ожидание с положенной трубкой(отдельный статус резервирования линии при использовании сервиса автодозвона)&lt;br /&gt;
	lsListenBusy	= 512	— сигнал &amp;quot;Занято&amp;quot; в линии(коммутация разорвана по инициативе противоположной стороны)&lt;br /&gt;
	lsUndefined	= 1024	— неопределено&lt;br /&gt;
	lsReserved	= 2048	— зарезервирована&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Команды к АТС====&lt;br /&gt;
 &lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxautocallstart'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к Oktell на совершение звонка. В зависимости от текущего состояния линии - запускается автодозвон или нет, звонок на внешнюю линию, во внутрений номерной план, или автоопределение, сначала вызываться сам пользователь будет, а потом звонок абоненту, или сначала дозвон до абонента, а потом вызов пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxautocallstart&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;number&amp;quot;: &amp;quot;425&amp;quot;,&lt;br /&gt;
  &amp;quot;direction&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
  &amp;quot;sequence&amp;quot;: &amp;quot;abonent&amp;quot;,&lt;br /&gt;
  &amp;quot;intercom&amp;quot;: false&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* direction: int, ext, undefined (внутрь, наружу, автоопределение)&lt;br /&gt;
//* sequence: abonent, user (сначала до абонента, сначала до пользователя)&lt;br /&gt;
//* intercom: true|false (интерком-вызов, обычный вызов)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''pbxautocallstartresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM на запрос звонка.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxautocallstartresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;number&amp;quot;: &amp;quot;425&amp;quot;,&lt;br /&gt;
  &amp;quot;direction&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
  &amp;quot;sequence&amp;quot;: &amp;quot;abonent&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;cntNumberNotFound&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* error, errormsg: EACMAnswer:&lt;br /&gt;
//*   cntStartedSuccessfully = 0 //Звонок успешно взят в реализацию&lt;br /&gt;
//*   cntUserNotReady = 1 //У пользователя-инициатора не найдены линии, готовые линии, или состояние кривое&lt;br /&gt;
//*   cntBusy = 2 //При звонке на внутренний номер - признак занятости. В очереди и сам повисеть может&lt;br /&gt;
//*   cntExtLineNotFound = 3, //Не найдены готовые внешние линии&lt;br /&gt;
//*   cntError = 4, //Прочие ошибки, исключения.&lt;br /&gt;
//*   cntControlNotReady = 5, //Режим не доделан.&lt;br /&gt;
//*   cntNumberNotFound = 6 //Внутренний номер не найден (по факту, если сервер сам будет определять &lt;br /&gt;
				  направление звонка, это вообще не будет задействовано)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxautocallabort'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к Oktell на прекращение автодозвона&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxautocallabort&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;28BF3E8F-1F97-47AB-BD42-92D174D4A705&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxtransfercall'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Аналогично запросу из CRM на совершение звонка - запрос на совершение переключения. Если линия свободна - действует аналогично полностью запросу на звонок. Если пользователь в разговоре - через флэш набирает указанный номер.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxtransfercall&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;81FBE5C2-E81B-4D0D-8AC0-72C22ACCD4E2&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;number&amp;quot;: &amp;quot;425&amp;quot;,&lt;br /&gt;
  &amp;quot;direction&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
  &amp;quot;sequence&amp;quot;: &amp;quot;abonent&amp;quot;,&lt;br /&gt;
  &amp;quot;intercom&amp;quot;: false  &lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''pbxtransfercallresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И аналогичный ответ из Oktell в CRM.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxtransfercallresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;81FBE5C2-E81B-4D0D-8AC0-72C22ACCD4E2&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;number&amp;quot;: &amp;quot;425&amp;quot;,&lt;br /&gt;
  &amp;quot;direction&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
  &amp;quot;sequence&amp;quot;: &amp;quot;abonent&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;cntNumberNotFound&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''pbxdeclinecall'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к Oktell на отклонение звонка.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxdeclinecall&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0AFB2B0C-A68F-448B-9B4B-AB42096D4E95&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxabortcall'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к Oktell на обрыв текущего существующего сеанса связи. Не путать с DeclineCall. Прекращает коммутацию, если существует, прекращает автодозвон, если запущен.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxabortcall&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;53F2EE86-46AF-4A37-8C60-2F27EADD10DE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;div id=&amp;quot;pbxmakeflash&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxmakeflash'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на программную эмуляцию флэш.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxmakeflash&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DD836C5D-4F3E-4FD2-9B60-24E330B03FC6&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;mode&amp;quot;: &amp;quot;default&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* mode - abort, switch, next - устанавливает поведение, если на удержании уже находится абонент.&lt;br /&gt;
		abort - обрыв текущему и переключение на того кто на удержании&lt;br /&gt;
		switch - возврат к тому, кто на удержании, с размещением текущего на удержании&lt;br /&gt;
		next - обрыв текущему и переход сразу в набор номера&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxmaketransfer'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на перевод текущего звонка.&amp;lt;br&amp;gt;&lt;br /&gt;
Если A соединен с B, и от А приходит команда трансфер(C), то абонента B переключает на C, а A в отбой.&amp;lt;br&amp;gt;&lt;br /&gt;
Если A соединен с B, а в это время во флеше/холде находится D, то абонента B переключает на C, а A соединяется с D.&amp;lt;br&amp;gt;&lt;br /&gt;
Если A ни с кем не соединен, то просто отбой в A.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxmaketransfer&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DD836C5D-4F3E-4FD2-9B60-24E330B03FC6&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;transferto&amp;quot;: &amp;quot;475&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* transferto - номер, на который осуществить перевод.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxclearflash'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на обрыв линии, находящейся на удержании.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxclearflash&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DD836C5D-4F3E-4FD2-9B60-24E330B03FC6&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxfaxreceive'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на переключение в прием факса.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxfaxreceive&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;59305AD1-40A5-476A-B76D-2DAB1F2A89D3&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;linkmode&amp;quot;: &amp;quot;simple&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* linkmode - full, simple - устанавливает формат ссылок, в котором будут указаны полученные файлы&lt;br /&gt;
		в событии об окончании приема.&lt;br /&gt;
			full - вернуть абсолютную ссылку на скачивание через http.&lt;br /&gt;
			simple - вернуть относительную ссылку на скачивание.&lt;br /&gt;
		При формировании абсолютной ссылки в качестве доменного имени берется значение из &lt;br /&gt;
		раздела [[Интеграция с WEB-Socket CRM]] общих настроек Oktell.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxfaxstop'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на прерывание приема/передачи факса.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxfaxstop&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;59305AD1-40A5-476A-B76D-2DAB1F2A89D3&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxdtmf'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на генерацию софт-DTMF.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxdtmf&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DD836C5D-4F3E-4FD2-9B60-24E330B03FC6&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;dtmf&amp;quot;: &amp;quot;#&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* dtmf: цифры, *, #&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxanswercall'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на снятие трубки при входящем звонке (с помощью изменения SIP-вызова на интерком).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxanswercall&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DD836C5D-4F3E-4FD2-9B60-24E330B03FC6&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''pbxinterceptcall'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на перехват вызова&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxinterceptcall&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DD836C5D-4F3E-4FD2-9B60-24E330B03FC6&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;number&amp;quot;: &amp;quot;400&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* number - внутренний номер, вызов на который необходимо перехватить. Если не задан, то перехват первого доступного из групповых.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Запросы к АТС общего характера====&lt;br /&gt;
 &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''exectmcall'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Осуществляет размещение короткого задания на дозвон и соединение с указанным оператором (пользователем).&lt;br /&gt;
Дозвониться до одного из указанных абонентов-номеров группы A, соединить с одним из указанных абонентов-номеров группы B.&lt;br /&gt;
Результатом выполнения является одна коммутация.&lt;br /&gt;
&lt;br /&gt;
Не требует указания пользователя.&lt;br /&gt;
Считается серверным методом, хотя может вызываться и по индивидуальному клиентскому каналу.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;exectmcall&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;BE06A1E4-759A-4BFA-8D15-5FCF756EEE53&amp;quot;,&lt;br /&gt;
  &amp;quot;taskid&amp;quot;: &amp;quot;qud82039lsdfmnasd&amp;quot;,&lt;br /&gt;
  &amp;quot;a_abonents&amp;quot;: [&lt;br /&gt;
   &amp;quot;7931289&amp;quot;,&lt;br /&gt;
   &amp;quot;83959279394&amp;quot;,&lt;br /&gt;
   &amp;quot;425&amp;quot;,&lt;br /&gt;
   &amp;quot;688C1DD6-7429-4B47-819D-C15827654A53&amp;quot;,&lt;br /&gt;
   { &lt;br /&gt;
    &amp;quot;type&amp;quot;: 11,&lt;br /&gt;
	&amp;quot;key&amp;quot;: &amp;quot;84951435565&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;b_abonents&amp;quot;: [&lt;br /&gt;
   &amp;quot;1211F58F-93AE-470C-895D-E3A163E8FF5F&amp;quot;,&lt;br /&gt;
   &amp;quot;ivanov&amp;quot;,&lt;br /&gt;
   &amp;quot;2BC51D79-BA63-47D7-93CA-1F283029C529&amp;quot;,&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;type&amp;quot;: 12,&lt;br /&gt;
    &amp;quot;key&amp;quot;: &amp;quot;1211F58F-93AE-470C-895D-E3A163E8FF5F&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
  ]&lt;br /&gt;
  &amp;quot;mode&amp;quot;: 0&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;exectmcall&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;BE06A1E4-759A-4BFA-8D15-5FCF756EEE53&amp;quot;,&lt;br /&gt;
  &amp;quot;taskid&amp;quot;: &amp;quot;qud82039lsdfmnasd&amp;quot;,&lt;br /&gt;
  &amp;quot;taskcode&amp;quot;: &amp;quot;xxxxx&amp;quot;,&lt;br /&gt;
  &amp;quot;a_abonents&amp;quot;: [&amp;quot;4952172020&amp;quot;],&lt;br /&gt;
  &amp;quot;b_abonents&amp;quot;: [&amp;quot;417&amp;quot;],&lt;br /&gt;
  &amp;quot;mode&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;ownertext&amp;quot;: &amp;quot;Задача соединения&amp;quot;,&lt;br /&gt;
  &amp;quot;sessionid&amp;quot;: &amp;quot;FB232E90-524A-453C-95BA-1B42251F5A14&amp;quot;,&lt;br /&gt;
  &amp;quot;projectid&amp;quot;: &amp;quot;F95BA34E-2CE2-49FA-B3C2-4344199F5B42&amp;quot;,&lt;br /&gt;
  &amp;quot;a_callerid&amp;quot;: &amp;quot;4959261589&amp;quot;,&lt;br /&gt;
  &amp;quot;a_music&amp;quot;: &amp;quot;Фоновое воспроизведение для оператора&amp;quot;,&lt;br /&gt;
  &amp;quot;a_usequeue&amp;quot;: false,&lt;br /&gt;
  &amp;quot;a_queuepriority&amp;quot;: 10,&lt;br /&gt;
  &amp;quot;a_timeoutsec&amp;quot;: 40,&lt;br /&gt;
  &amp;quot;b_callerid&amp;quot;: &amp;quot;4952172020&amp;quot;,&lt;br /&gt;
  &amp;quot;b_music&amp;quot;: &amp;quot;?**ivr?Фоновое воспроизведение&amp;quot;,&lt;br /&gt;
  &amp;quot;b_usequeue&amp;quot;: true,&lt;br /&gt;
  &amp;quot;b_queuepriority&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;b_timeoutsec&amp;quot;: 40,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Обязательными параметрами являются только a_abonents и b_abonents. Остальные имеют значения по умолчанию.&lt;br /&gt;
			&lt;br /&gt;
//* taskid - уникальный строковый идентификатор задания. &lt;br /&gt;
				Может быть не указан, тогда генерируется автоматически.&lt;br /&gt;
//* taskcode - пользовательский код задачи, передается в сценарии, обслуживающие дозвоны.&lt;br /&gt;
//* a_abonents - набор из одного или нескольких абонентов, относящихся к группе A.&lt;br /&gt;
//* b_abonents - набор из одного или нескольких абонентов, относящихся к группе B.&lt;br /&gt;
		abonent:type - типы представления о конкретном абоненте&lt;br /&gt;
			Undefined	  = 0, //Не определен, определить автоматически.&lt;br /&gt;
			External	  = 11,//Внешний номер	&lt;br /&gt;
			InternalItem	  = 12,//Внутренний элемент - пользователь или линия, &lt;br /&gt;
						задаются ключами (идентификатор, номер, логин, имя).&lt;br /&gt;
			InternalRule	  = 13,//Стандартный внутренний номер&lt;br /&gt;
			InternalFast	  = 14,//Быстрый номер&lt;br /&gt;
			InternalEmergency = 15,//Экстренный номер&lt;br /&gt;
			InternalIVR	  = 16,//Сценарий IVR&lt;br /&gt;
//* mode: &lt;br /&gt;
		0 - вызывает сначала группу A (достает первого ответившего), &lt;br /&gt;
			потом абонентов группы B (достает первого ответившего)&lt;br /&gt;
		1 - вызывает сначала группу B (достает первого ответившего), &lt;br /&gt;
			потом абонентов группы A (достает первого ответившего)&lt;br /&gt;
		2 - вызывает одновременно всех, достает первого ответившего из группы A &lt;br /&gt;
			и первого ответившего из группы B.&lt;br /&gt;
//* a_music, b_music - мелодия ожидания для абонентов группы A и B. Задается с помощью строки:&lt;br /&gt;
	- ''?**ivr?scriptname'', где scriptname - название фонового медиа сценария IVR.&lt;br /&gt;
	- ''?**ff?filepath'', где filepath - абсолютный путь к звуковому файлу (*.mp3 или *.wav).&lt;br /&gt;
	- ''?**ff?folderpath'', где folderpath - абсолютный путь к каталогу со звуковыми файлами, выбираются рандомно.&lt;br /&gt;
	- ''?**ff?filename'', где filename - название файла с расширением (*.mp3 или *.wav) в стандартном каталоге Snd.&lt;br /&gt;
	- абсолютный путь к каталогу cо звуковыми файлами &lt;br /&gt;
	- абсолютный путь к файлу &lt;br /&gt;
	- название файла с расширением в стандартном каталоге Snd&lt;br /&gt;
	- название фонового медиа-сценария IVR&lt;br /&gt;
	- если не указывать, указывать неверно или указывать пустоту - играется &lt;br /&gt;
		[[Музыкальное сопровождение#Alternative|альтернативная мелодия ожидания]] (возможно сценарий) из общих настроек&lt;br /&gt;
//* sessionid - генерируемый идентификатор цепочки коммутаций/сессии.&lt;br /&gt;
//* ownertext - название владельца служебного сценария набора номеров.&lt;br /&gt;
//* projectid - привязанный идентификатор проекта (участвует в поиске сценариев).&lt;br /&gt;
//* a_usequeue, b_usequeue: true|false. Использовать ли очередь ожидания при вызове внутренних абонентов.&lt;br /&gt;
//* a_queuepriority, b_queuepriority: числовой приоритет при размещении в очередях. &lt;br /&gt;
		Традиционно чем меньше значение - тем больше приоритет. &lt;br /&gt;
		Значения по умолчанию определены в [[Настройки менеджера очередей|общих настройках]]&lt;br /&gt;
//* a_timeoutsec, b_timeoutsec: таймаут в секундах для вызова абонентов соответствующей группы.&lt;br /&gt;
		Режим использования таймаута задается в разделе [[Настройки менеджера очередей|настроек менеджера очередей]].&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''exectmcallresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает результат исполнения хранимой процедуры в БД Oktell. Перечисляет все выходные наборы данных.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;exectmcallresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;BE06A1E4-759A-4BFA-8D15-5FCF756EEE53&amp;quot;,&lt;br /&gt;
  &amp;quot;taskid&amp;quot;: &amp;quot;qud82039lsdfmnasd&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* taskid - возвращает идентификатор запущенного задания.&lt;br /&gt;
		В дальнейшем с помощью него можно будет отменить задание (если оно еще не будет к тому времени исполнено)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''exectmcallreport'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Отчет о выполнении задания. Указывает код задания, и причину ошибки в случае неудачи.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;exectmcallreport&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;,&lt;br /&gt;
  &amp;quot;taskid&amp;quot;: &amp;quot;qud82039lsdfmnasd&amp;quot;,&lt;br /&gt;
  &amp;quot;success&amp;quot;: false,&lt;br /&gt;
  &amp;quot;errorid&amp;quot;: 21,&lt;br /&gt;
  &amp;quot;errorstr&amp;quot;: &amp;quot;CallAbonentFailure&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''stoptmcall'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Отменяет ранее запущенное методом ''exectmcall'' задание, если оно еще не завершило исполнение.&lt;br /&gt;
&lt;br /&gt;
Не требует указания пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;stoptmcall&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;,&lt;br /&gt;
  &amp;quot;taskid&amp;quot;: &amp;quot;qud82039lsdfmnasd&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;			&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''stoptmcallresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат отмены задания.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;stoptmcallresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;,&lt;br /&gt;
  &amp;quot;taskid&amp;quot;: &amp;quot;qud82039lsdfmnasd&amp;quot;,&lt;br /&gt;
  &amp;quot;success&amp;quot;: false,&lt;br /&gt;
  &amp;quot;errortext&amp;quot;: &amp;quot;task not found&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''gettotalqueue'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат информации обо всех очередях.&lt;br /&gt;
Может использоваться без указания пользователя.&lt;br /&gt;
Не рекомендуется к частому использованию, так как требует значительных вычислительных ресурсов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;gettotalqueue&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDDB5BCA-A200-448C-93C7-EFEAE5AFE48D&amp;quot;,&lt;br /&gt;
  &amp;quot;skipempty&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''gettotalqueueresultresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает список всех очередей и их абонентов&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;gettotalqueueresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDDB5BCA-A200-448C-93C7-EFEAE5AFE48D&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;numid&amp;quot;: &amp;quot;507db30b-f8f7-46cf-b3c7-6b8ba7b696a8&amp;quot;,&lt;br /&gt;
    &amp;quot;numprefix&amp;quot;: &amp;quot;12&amp;quot;,&lt;br /&gt;
    &amp;quot;ruleid&amp;quot;: &amp;quot;6ffab1ac-7b9b-4ba2-8547-233175368b6d&amp;quot;,&lt;br /&gt;
    &amp;quot;rulename&amp;quot;: &amp;quot;Денис&amp;quot;&lt;br /&gt;
    &amp;quot;queue&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;objectid&amp;quot;: &amp;quot;928efda2-a3b3-423b-9d49-d2e76879c718&amp;quot;,&lt;br /&gt;
      &amp;quot;chainid&amp;quot;: &amp;quot;d1c2b337-6293-4ea0-a355-f59caaeff54b&amp;quot;,&lt;br /&gt;
      &amp;quot;srcelementid&amp;quot;: &amp;quot;38d8b6ad-a68b-4075-a1a3-038510f20a54&amp;quot;,&lt;br /&gt;
      &amp;quot;objecttype&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;objecttypestr&amp;quot;: &amp;quot;qotQueueLogic&amp;quot;,&lt;br /&gt;
      &amp;quot;queuesource&amp;quot;: 1,&lt;br /&gt;
      &amp;quot;queuesourcestr&amp;quot;: &amp;quot;qsLineLogic&amp;quot;,&lt;br /&gt;
      &amp;quot;callerid&amp;quot;: &amp;quot;14&amp;quot;,&lt;br /&gt;
      &amp;quot;calledid&amp;quot;: &amp;quot;12&amp;quot;,&lt;br /&gt;
      &amp;quot;isuser&amp;quot;: true,&lt;br /&gt;
      &amp;quot;userid&amp;quot;: &amp;quot;da803f01-ea77-40fa-bc9d-e2efb36fd5a8&amp;quot;,&lt;br /&gt;
      &amp;quot;userlogin&amp;quot;: &amp;quot;Peter&amp;quot;,&lt;br /&gt;
      &amp;quot;username&amp;quot;: &amp;quot;Петр Александрович&amp;quot;,  &lt;br /&gt;
      &amp;quot;department&amp;quot;: &amp;quot;Программисты&amp;quot;,&lt;br /&gt;
      &amp;quot;managedlineid&amp;quot;: &amp;quot;38d8b6ad-a68b-4075-a1a3-038510f20a54&amp;quot;,&lt;br /&gt;
      &amp;quot;managedlinenumber&amp;quot;: &amp;quot;16001&amp;quot;,&lt;br /&gt;
      &amp;quot;srclineid&amp;quot;: &amp;quot;38d8b6ad-a68b-4075-a1a3-038510f20a54&amp;quot;,&lt;br /&gt;
      &amp;quot;srclinenumber&amp;quot;: &amp;quot;16001&amp;quot;,  &lt;br /&gt;
      &amp;quot;queuepriority&amp;quot;: 9,&lt;br /&gt;
      &amp;quot;startqueuetime&amp;quot;: &amp;quot;2012-06-07 12:58:44&amp;quot;,&lt;br /&gt;
      &amp;quot;lenqueue&amp;quot;: 1.4375,&lt;br /&gt;
      &amp;quot;istask&amp;quot;: false&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
   },&lt;br /&gt;
   ...&lt;br /&gt;
   {}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* result - содержит список всех очередей. Очередь при этом содержится в словаре.&lt;br /&gt;
//*  result:numid - идентификатор стандартного внутреннего номера, при котором данная очередь.&lt;br /&gt;
//*  result:numprefix - стандартный внутреннего номер, при котором данная очередь.&lt;br /&gt;
//*  result:ruleid - идентификатор номерного правила, при котором данная очередь.&lt;br /&gt;
//*  result:rulename - название номерного правила, при котором данная очередь.&lt;br /&gt;
//*  result:queue - список абонентов очереди в порядке убывания. Каждый абонент содержится в словаре.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Запуск служебного сценария====&lt;br /&gt;
 &lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''startsvcscript'''&amp;lt;/span&amp;gt;, &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''execsvcscript'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на запуск служебного сценария. ''startsvcscript'' - от имени пользователя, ''execsvcscript'' - без указания пользователя от имени сервера.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;startsvcscript&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;244E3867-470E-4A56-904D-D435D57CFBFE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;scriptname&amp;quot;: &amp;quot;Служебный сценарий получения почты&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam1&amp;quot;: &amp;quot;значение параметра 1&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam2&amp;quot;: &amp;quot;значение параметра 2&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam3&amp;quot;: &amp;quot;значение параметра 3&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam4&amp;quot;: &amp;quot;значение параметра 4&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam5&amp;quot;: &amp;quot;значение параметра 5&amp;quot;,&lt;br /&gt;
  &amp;quot;waitresponse&amp;quot;: true,&lt;br /&gt;
  &amp;quot;waittimeoutsec&amp;quot;: 10&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;execsvcscript&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;244E3867-470E-4A56-904D-D435D57CFBFE&amp;quot;,&lt;br /&gt;
  &amp;quot;scriptname&amp;quot;: &amp;quot;Служебный сценарий получения почты&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam1&amp;quot;: &amp;quot;значение параметра 1&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam2&amp;quot;: &amp;quot;значение параметра 2&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam3&amp;quot;: &amp;quot;значение параметра 3&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam4&amp;quot;: &amp;quot;значение параметра 4&amp;quot;,&lt;br /&gt;
  &amp;quot;startparam5&amp;quot;: &amp;quot;значение параметра 5&amp;quot;,&lt;br /&gt;
  &amp;quot;waitresponse&amp;quot;: true,&lt;br /&gt;
  &amp;quot;waittimeoutsec&amp;quot;: 10&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* scriptname - название сценария в общем разделе.&lt;br /&gt;
//* startparamN - строковое значение соответствующего параметра.&lt;br /&gt;
		При необходимости передать больше параметров следует объединять параметры в одну строку&lt;br /&gt;
		с использованием символа-разделителя, а в самом сценарии производить обратную операцию.&lt;br /&gt;
//* waitresponse - ожидать ли ответа.&lt;br /&gt;
//* waittimeoutsec - таймаут ожидания ответа в секундах. 0 - вечно.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''startsvcscriptresult'''&amp;lt;/span&amp;gt;,&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''execsvcscriptresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ Oktell на запрос запуска служебного сценария.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;startsvcscriptresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;244E3867-470E-4A56-904D-D435D57CFBFE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;scriptname&amp;quot;: &amp;quot;Служебный сценарий получения почты&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;returnvalue&amp;quot;: &amp;quot;присвоенный в сценарии результат&amp;quot;,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 10&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;execsvcscriptresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;244E3867-470E-4A56-904D-D435D57CFBFE&amp;quot;,&lt;br /&gt;
  &amp;quot;scriptname&amp;quot;: &amp;quot;Служебный сценарий получения почты&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;returnvalue&amp;quot;: &amp;quot;присвоенный в сценарии результат&amp;quot;,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 10&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//*  error: 10 - файл не найден, 11 - исключение, 12 - таймаут&lt;br /&gt;
//*  returnvalue - возвращаемый результат сценария (если сценарий исполнился, и его завершения удалось дождаться)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Конференц-связь====&lt;br /&gt;
 &lt;br /&gt;
Запросы из CRM, ответы от Oktell, события из Oktell&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''confhandleevent'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к Oktell. Подписка/отписка на указанную категорию событий сервера конференций.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confhandleevent&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;eventtype&amp;quot;: &amp;quot;competitors&amp;quot;,&lt;br /&gt;
  &amp;quot;handle&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* eventtype - уровень глубины получаемых сообщений. conferences|competitors|userstates&lt;br /&gt;
               предполагается, что в общем случае инфа идет только о списке конференций (conferences);&lt;br /&gt;
                 когда юзер находится в конференции - дополнительно о внутреннем состоянии конференции (competitors);&lt;br /&gt;
                 когда юзер настраивает конференцию и выбирает из списка участников для автоматического приглашения - &lt;br /&gt;
                   о состояниях всех пользователей (userstates).&lt;br /&gt;
               Подписками управляет сам внешний модуль. Когда потребность уходит - необходимо отписываться, &lt;br /&gt;
                   чтобы не заваливать канал порожняком.&lt;br /&gt;
//* handle - true|false - подписаться/отписаться&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''checkcanconnecttogathertoconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к oktell. В момент коммутации, в случае если во флеш-буфере находится абонент, определяет, существует ли возможность переключиться всем вместе в конференцию единой командой. Это возможно, если один из абонентов - конференция, а другой - линия/пользователь.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;checkcanconnecttogathertoconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''confcheckcanconnecttogatherresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM на запрос возможности совместного переключения в конференцию.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confcheckcanconnecttogatherresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;canconnecttogather&amp;quot;: true,&lt;br /&gt;
  &amp;quot;inconference&amp;quot;: false,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''connecttogathertoconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к oktell. Производит совместное переключение текущего онлайн-абонента и флеш-абонента в существующую конференцию.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;connecttogathertoconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''buildconferencefromcommutation'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к oktell. Производит преобразование текущей коммутации в конференцию с двумя участниками.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;buildconferencefromcommutation&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''attachasghost'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к Oktell. Производит подключение к указанному каналу/пользователю на прослушку/помощь.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;attachasghost&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;ghostedid&amp;quot;: &amp;quot;FE9D6B52-C267-4D39-AC9F-81A0F44713FF&amp;quot;,&lt;br /&gt;
  &amp;quot;ghostedlogin&amp;quot;: &amp;quot;Петров&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''attachasghostresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM на запрос о подключении к каналу на прослушку.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;attachasghostresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 52703&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* ghostedid - ид пользователя или линии, к которому подцепляться для прослушки&lt;br /&gt;
//* ghostedlogin - логин пользователя, к которому подцепляться для прослушки&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getconferences'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат текущих активных конференц-сессий.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getconferences&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getconferencesresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM со списком текущих активных конференц-сессий.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getconferencesresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferencelist&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
    &amp;quot;room&amp;quot;: 884,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Планерка&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;accessmode&amp;quot;: 11,&lt;br /&gt;
    &amp;quot;accessmodestr&amp;quot;: &amp;quot;Free&amp;quot;,&lt;br /&gt;
    &amp;quot;isselector&amp;quot;: true,&lt;br /&gt;
    &amp;quot;record&amp;quot;: true,&lt;br /&gt;
    &amp;quot;creatorid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorname&amp;quot;: &amp;quot;Иван Иванович Иванов&amp;quot;, &lt;br /&gt;
    &amp;quot;directorid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;directorlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;directorname&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;timestart&amp;quot;: &amp;quot;2011-04-03 17:58:22&amp;quot;,&lt;br /&gt;
    &amp;quot;canvieweachother&amp;quot;: true,&lt;br /&gt;
    &amp;quot;everyonecaninvite&amp;quot;: true,&lt;br /&gt;
    &amp;quot;recordrights&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;recordrightsstr&amp;quot;: &amp;quot;Competitors&amp;quot;,&lt;br /&gt;
    &amp;quot;isghost&amp;quot;: false,&lt;br /&gt;
    &amp;quot;ghostmode&amp;quot;: 11,&lt;br /&gt;
    &amp;quot;ghostmodestr&amp;quot;: &amp;quot;Monitor&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getconferencecompetitors'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат текущих участников указанной конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getconferencecompetitors&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;F16D26E3-2A78-49C2-AFCE-815611A16E22&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getconferencecompetitorsresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM со списком текущих участников указанной в запросе конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getconferencecompetitorsresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;F16D26E3-2A78-49C2-AFCE-815611A16E22&amp;quot;,&lt;br /&gt;
  &amp;quot;competitorlist&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;competitorid&amp;quot;: &amp;quot;65AC0E98-64DE-41CF-B609-D00A4C8B07FD&amp;quot;,&lt;br /&gt;
    &amp;quot;chainid&amp;quot;: &amp;quot;91687102-E19F-466C-A0BE-B6C3EEF83EE7&amp;quot;,&lt;br /&gt;
    &amp;quot;sessionid&amp;quot;: &amp;quot;91687102-E19F-466C-A0BE-B6C3EEF83EE7&amp;quot;,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;lineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
    &amp;quot;linenumber&amp;quot;: &amp;quot;17004&amp;quot;,&lt;br /&gt;
    &amp;quot;number&amp;quot;: &amp;quot;472&amp;quot;,&lt;br /&gt;
    &amp;quot;intnumber&amp;quot;: &amp;quot;472&amp;quot;,&lt;br /&gt;
    &amp;quot;extnumber&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;confstate&amp;quot;: 11,&lt;br /&gt;
    &amp;quot;confstatestr&amp;quot;: &amp;quot;OnlineTalking&amp;quot;,&lt;br /&gt;
    &amp;quot;wanttalk&amp;quot;: false,&lt;br /&gt;
    &amp;quot;isdirector&amp;quot;: true,&lt;br /&gt;
    &amp;quot;iscreator&amp;quot;: false,&lt;br /&gt;
    &amp;quot;isghost&amp;quot;: false,&lt;br /&gt;
    &amp;quot;isghostmajor&amp;quot;: false,&lt;br /&gt;
    &amp;quot;islifebuoy&amp;quot;: false&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getusersforconferenceinvitelist'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат возможных участников конференции (учетных записей всех пользователей системы с указанием их состояний и присутствия в других конференциях).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getusersforconferenceinvitelist&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getusersforconferenceinvitelistresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM со списком учетных записей, доступных для приглашения в конференцию с их текущими состояниями и присутствием в других конференциях.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getusersforconferenceinvitelistresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;possiblecompetitorlist&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;groupid&amp;quot;: &amp;quot;F72C315A-F9EA-471E-A679-D4BA4797DB51&amp;quot;,&lt;br /&gt;
    &amp;quot;groupname&amp;quot;: &amp;quot;Руководство&amp;quot;&lt;br /&gt;
    &amp;quot;userstate&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;userstatestr&amp;quot;: &amp;quot;usFullbusy&amp;quot;,&lt;br /&gt;
    &amp;quot;isredirect&amp;quot;: false,&lt;br /&gt;
    &amp;quot;islunch&amp;quot;: false,&lt;br /&gt;
    &amp;quot;inconference&amp;quot;: true,&lt;br /&gt;
    &amp;quot;conferenceid&amp;quot;: &amp;quot;F16D26E3-2A78-49C2-AFCE-815611A16E22&amp;quot;,&lt;br /&gt;
    &amp;quot;confstate&amp;quot;: 11,&lt;br /&gt;
    &amp;quot;confstatestr&amp;quot;: &amp;quot;OnlineTalking&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''createnewconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на создание новой конференции. Указывает параметры самой конференц-сессии, список участников для приглашения на старте.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;createnewconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conference&amp;quot;: {&lt;br /&gt;
   &amp;quot;id&amp;quot;: &amp;quot;17A3F9D2-040C-471B-A4F5-6A13BEB27667&amp;quot;,&lt;br /&gt;
   &amp;quot;room&amp;quot;: 578&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;Совещание с заказчиком&amp;quot;,&lt;br /&gt;
   &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
   &amp;quot;accessmode&amp;quot;: &amp;quot;free&amp;quot;,&lt;br /&gt;
   &amp;quot;isselector&amp;quot;: true,&lt;br /&gt;
   &amp;quot;record&amp;quot;: true,&lt;br /&gt;
   &amp;quot;recordrights&amp;quot;: &amp;quot;selected&amp;quot;,&lt;br /&gt;
   &amp;quot;everyonecaninvite&amp;quot;: true,&lt;br /&gt;
   &amp;quot;canvieweachother&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;competitors&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;lineid&amp;quot;: &amp;quot;F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
    &amp;quot;intnumber&amp;quot;: &amp;quot;472&amp;quot;,&lt;br /&gt;
    &amp;quot;extnumber&amp;quot;: &amp;quot;89047289889&amp;quot;,&lt;br /&gt;
    &amp;quot;cantalk&amp;quot;: true&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;recordusers&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* conference:accessmode - free|shared|closed (свободный вход, вход по запросу, вход запрещен)&lt;br /&gt;
//* conference:recordrights - director|competitors|selected (только управляющий, все участники, избранные участники)&lt;br /&gt;
			Определяет, кто может прослушивать запись конференции.&lt;br /&gt;
//* competitors - список автоматически приглашаемых участников. Допускается/следует указывать только один &lt;br /&gt;
			параметр из набора {userid|userlogin, lineid, intnumber, extnumber}&lt;br /&gt;
//* список recordusers следует указывать, если conference:recordrights=selected.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''createnewconferenceresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом исполнения команды на создание конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;createnewconferenceresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;alreadyexists&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setupexistingconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell от имени управляющего конференции на изменение параметров указанной конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setupexistingconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conference&amp;quot;: {&lt;br /&gt;
   &amp;quot;id&amp;quot;: &amp;quot;17A3F9D2-040C-471B-A4F5-6A13BEB27667&amp;quot;,&lt;br /&gt;
   &amp;quot;room&amp;quot;: 578&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;Совещание с заказчиком&amp;quot;,&lt;br /&gt;
   &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
   &amp;quot;accessmode&amp;quot;: &amp;quot;free&amp;quot;,&lt;br /&gt;
   &amp;quot;isselector&amp;quot;: true,&lt;br /&gt;
   &amp;quot;recordrights&amp;quot;: &amp;quot;selected&amp;quot;,&lt;br /&gt;
   &amp;quot;everyonecaninvite&amp;quot;: true,&lt;br /&gt;
   &amp;quot;canvieweachother&amp;quot;: true,&lt;br /&gt;
   &amp;quot;ghostmode&amp;quot;: &amp;quot;monitor&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;recordusers&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''setupexistingconferenceresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом исполнения команды на изменение параметров конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setupexistingconferenceresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;notfound&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* conference:accessmode - free|shared|closed&lt;br /&gt;
//* conference:recordrights - director|competitors|selected&lt;br /&gt;
//* conference:ghostmode - monitor|help|talk&lt;br /&gt;
//* список recordusers имеет смысл только когда conference:recordrights=selected.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getconferenceinfo'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат текущих параметров указанной конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getconferenceinfo&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getconferenceinforesult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает текущие настройки указанной в запросе конференции, текущих ее участников и их состояния.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getconferenceinforesult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;conference&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
    &amp;quot;room&amp;quot;: 884,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Планерка&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;accessmode&amp;quot;: 11,&lt;br /&gt;
    &amp;quot;accessmodestr&amp;quot;: &amp;quot;Free&amp;quot;,&lt;br /&gt;
    &amp;quot;isselector&amp;quot;: true,&lt;br /&gt;
    &amp;quot;record&amp;quot;: true,&lt;br /&gt;
    &amp;quot;creatorid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorname&amp;quot;: &amp;quot;Иван Иванович Иванов&amp;quot;, &lt;br /&gt;
    &amp;quot;directorid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;directorlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;directorname&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;timestart&amp;quot;: &amp;quot;2011-04-03 17:58:22&amp;quot;,&lt;br /&gt;
    &amp;quot;canvieweachother&amp;quot;: true,&lt;br /&gt;
    &amp;quot;everyonecaninvite&amp;quot;: true,&lt;br /&gt;
    &amp;quot;recordrights&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;recordrightsstr&amp;quot;: &amp;quot;Competitors&amp;quot;,&lt;br /&gt;
    &amp;quot;isghost&amp;quot;: false,&lt;br /&gt;
    &amp;quot;ghostmode&amp;quot;: 11,&lt;br /&gt;
    &amp;quot;ghostmodestr&amp;quot;: &amp;quot;Monitor&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;competitors&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;lineid&amp;quot;: &amp;quot;F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
    &amp;quot;intnumber&amp;quot;: &amp;quot;472&amp;quot;,&lt;br /&gt;
    &amp;quot;extnumber&amp;quot;: &amp;quot;89047289889&amp;quot;,&lt;br /&gt;
    &amp;quot;cantalk&amp;quot;: true&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;recordusers&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''stopconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell от имени управляющего конференции на прекращение указанной конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;stopconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''stopconferenceresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на прекращение указанной конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;stopconferenceresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;accessdenied&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''confsetvoiceparams'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell от имени управляющего конференции на изменение голосовых свойств канала указанного участника указанной конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confsetvoiceparams&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;competitor&amp;quot;: {&lt;br /&gt;
   &amp;quot;competitorid&amp;quot;: &amp;quot;249995A5-8A64-49CC-87CA-D797FCFB7782&amp;quot;,&lt;br /&gt;
   &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
   &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
   &amp;quot;lineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
   &amp;quot;cantalk&amp;quot;: true,&lt;br /&gt;
   &amp;quot;canlisten&amp;quot;: true,&lt;br /&gt;
   &amp;quot;ghosthelp&amp;quot;: false&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* competitor - указывает на одного участника конференции. &lt;br /&gt;
/    	достаточно/следует указывать только один из набора определяющих участника идентификаторов &lt;br /&gt;
							{competitorid, userid|userlogin, lineid}&lt;br /&gt;
&lt;br /&gt;
//*  competitor:cantalk - может ли говорить&lt;br /&gt;
//*  competitor:canlisten - может ли слышать&lt;br /&gt;
//*  competitor:ghosthelp - в режиме прослушки:помощи для одного из подслушиваемых каналов - &lt;br /&gt;
					может ли слышать подключившегося супервизора&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''confsetvoiceparamsresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на изменение голосовых свойств канала.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confsetvoiceparamsresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;accessdenied&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''confsetwanttalk'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell от имени простого бесправного участника селекторного совещания на взятие голоса (сообщение для управляющего).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confsetwanttalk&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;wanttalk&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''confsetwanttalkresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на взятие голоса.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confsetwanttalkresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''confsetghostmode'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell от имени прослушивающего супервизора на изменение режима конференц-помощи.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confsetghostmode&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;ghostmode&amp;quot;: &amp;quot;help&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* ghostmode - monitor, help, conference (подслушивание, помощь, конференция)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''confsetghostmoderesult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на изменение режима конференц-помощи.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confsetghostmoderesult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''exitconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на вывод авторизованного пользователя из конференции. В канал подается отбой. Альтернативой является положение трубки на телефоне.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;exitconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''exitconferenceresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на выход из конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;exitconferenceresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''confdisconnectcompetitor'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell от имени управляющего конференцией на вывод из конференции указанного участника.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confdisconnectcompetitor&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;competitor&amp;quot;: {&lt;br /&gt;
   &amp;quot;competitorid&amp;quot;: &amp;quot;249995A5-8A64-49CC-87CA-D797FCFB7782&amp;quot;,&lt;br /&gt;
   &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
   &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
   &amp;quot;lineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* competitor - указывает на одного участника конференции. &lt;br /&gt;
/    	достаточно/следует указывать только один из набора определяющих участника идентификаторов &lt;br /&gt;
	{competitorid, userid|userlogin, lineid}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''confdisconnectcompetitorresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на вывод указанного в запросе участника.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confdisconnectcompetitorresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''enterconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на вход в конференцию. При необходимости осуществляет запрос на вход у управляющего. Прерывание может производиться командой exitconference&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;enterconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''enterconferenceresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на вход в конференцию.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;enterconferenceresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''confdisconnectcompetitor'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос-команда из CRM в Oktell от имени управляющего конференцией на разрешение/запрет входа в конференцию указанному участнику, ранее запросившему право входа.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confpermitdenyentrance&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;competitor&amp;quot;: {&lt;br /&gt;
   &amp;quot;competitorid&amp;quot;: &amp;quot;249995A5-8A64-49CC-87CA-D797FCFB7782&amp;quot;,&lt;br /&gt;
   &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
   &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
   &amp;quot;lineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
   &amp;quot;permit&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;	&lt;br /&gt;
//* competitor - указывает на одного участника конференции. &lt;br /&gt;
/    	достаточно/следует указывать только один из набора определяющих участника идентификаторов &lt;br /&gt;
	{competitorid, userid|userlogin, lineid}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''confpermitdenyentranceresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на разрешение/запрет входа в конференцию участнику.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;confpermitdenyentranceresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''invitetoconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell от имени управляющего конференцией или любого другого участника на приглашение в конференцию стороннего абонента (пользователя, линию, абонента по внутреннему/внешнему номеру).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;invitetoconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;competitors&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;lineid&amp;quot;: &amp;quot;F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
    &amp;quot;intnumber&amp;quot;: &amp;quot;472&amp;quot;,&lt;br /&gt;
    &amp;quot;extnumber&amp;quot;: &amp;quot;89047289889&amp;quot;,&lt;br /&gt;
    &amp;quot;cantalk&amp;quot;: true&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* competitors - список автоматически приглашаемых участников. Допускается/следует указывать только один &lt;br /&gt;
			параметр из набора {userid|userlogin, lineid, intnumber, extnumber}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''invitetoconference'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом выполнения запроса на приглашение нового участника конференции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;invitetoconference&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4F78270D-B35F-48A9-B88A-557B1AA97A1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;conferenceid&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====События из Oktell, касающиеся конференций====&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''conflistchanged'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Событие из Oktell в CRM об изменении списка текущих активных конференций.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;conflistchanged&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;2A6380B4-ADD4-4CD3-9A5C-9483A3B3723A&amp;quot;,&lt;br /&gt;
  &amp;quot;conferencelist&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3&amp;quot;,&lt;br /&gt;
    &amp;quot;room&amp;quot;: 884,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Планерка&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;accessmode&amp;quot;: 11,&lt;br /&gt;
    &amp;quot;accessmodestr&amp;quot;: &amp;quot;Free&amp;quot;,&lt;br /&gt;
    &amp;quot;isselector&amp;quot;: true,&lt;br /&gt;
    &amp;quot;record&amp;quot;: true,&lt;br /&gt;
    &amp;quot;creatorid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
    &amp;quot;creatorname&amp;quot;: &amp;quot;Иван Иванович Иванов&amp;quot;, &lt;br /&gt;
    &amp;quot;directorid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;directorlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;directorname&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;timestart&amp;quot;: &amp;quot;2011-04-03 17:58:22&amp;quot;,&lt;br /&gt;
    &amp;quot;canvieweachother&amp;quot;: true,&lt;br /&gt;
    &amp;quot;everyonecaninvite&amp;quot;: true,&lt;br /&gt;
    &amp;quot;recordrights&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;recordrightsstr&amp;quot;: &amp;quot;Competitors&amp;quot;,&lt;br /&gt;
    &amp;quot;isghost&amp;quot;: false,&lt;br /&gt;
    &amp;quot;ghostmode&amp;quot;: 11,&lt;br /&gt;
    &amp;quot;ghostmodestr&amp;quot;: &amp;quot;Monitor&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''&amp;quot;conf***&amp;quot;'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Другие событие из Oktell в CRM об изменениях на сервере конференций. Общий список возможных событий приведен ниже.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;conf***&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;2A6380B4-ADD4-4CD3-9A5C-9483A3B3723A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;eventinfo&amp;quot;: {&lt;br /&gt;
     ***&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* conflistchanged,&lt;br /&gt;
//* confparamschanged, &lt;br /&gt;
//* confcompositionchanged, &lt;br /&gt;
//* confcompetitorstatechanged, &lt;br /&gt;
//* confentrancedenied, &lt;br /&gt;
//* confentrancepermitted, &lt;br /&gt;
//* confentrancerequest, &lt;br /&gt;
//* confnotifyinvite, &lt;br /&gt;
//* confpossiblecompetitorstatechanged&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Состояния пользователей и линий====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''userstatechanged'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell в CRM о смене состояния пользователя в Oktell. Отправляется на имя пользователя, чье состояние сменилось. Отправляется как результат запроса на смену состояния или независимо.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;userstatechanged&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;66F8D479-0234-47DF-B043-3A065FF464A7&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userstateid&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;onredirect&amp;quot;: true,&lt;br /&gt;
  &amp;quot;onlunch&amp;quot;: false,&lt;br /&gt;
  &amp;quot;oncallcenter&amp;quot;: false,&lt;br /&gt;
  &amp;quot;onccmanual&amp;quot;: false&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setuserstate'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM к Oktell на смену состояния пользователя от его имени. При проведении изменений в ответ отправляется сообщение userstatechanged.&lt;br /&gt;
&lt;br /&gt;
Для изменения только одного из параметров состояния можно остальные не указывать (например оставлять только oncallcenter).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setuserstate&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;2A45010A-8EEA-4876-90CB-F062459D4BE2&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userstateid&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;onredirect&amp;quot;: false,&lt;br /&gt;
  &amp;quot;onlunch&amp;quot;: false,&lt;br /&gt;
  &amp;quot;oncallcenter&amp;quot;: false,&lt;br /&gt;
  &amp;quot;onccmanual&amp;quot;: false,&lt;br /&gt;
  &amp;quot;lunchreasonid&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;lunchreasonmsg&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* lunchreasonid и lunchreasonmsg - расширение для будущей статистики, устанавливают причину перерыва. &lt;br /&gt;
			id - если причина одна из стандартных. msg - если что-то уникальное юзер ввел.&lt;br /&gt;
userstateid:&lt;br /&gt;
1 - Готов&lt;br /&gt;
2 - Перерыв&lt;br /&gt;
3 - Отсутствует&lt;br /&gt;
5 - Занят&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getuserstate'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell состояния указанного пользователя системы.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getuserstate&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getuserstateresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с полным состоянием указанного в запросе пользователя системы. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getuserstateresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userstate&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;userstateid&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;userstatestr&amp;quot;: &amp;quot;usFullbusy&amp;quot;,&lt;br /&gt;
  &amp;quot;onredirect&amp;quot;: true,&lt;br /&gt;
  &amp;quot;onlunch&amp;quot;: false,&lt;br /&gt;
  &amp;quot;oncallcenter&amp;quot;: false,&lt;br /&gt;
  &amp;quot;onccmanual&amp;quot;: false&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''checkuserintask'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell о присутствии указанного пользователя в задачах call-центра.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;checkuserintask&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''checkuserintaskresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с ответом на запрос присутствия указанного в запросе пользователя в задачах колл-центра. Описание задачи в случае положительного ответа.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;checkuserintaskresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;intask&amp;quot;: true,&lt;br /&gt;
  &amp;quot;task&amp;quot;: {,&lt;br /&gt;
   &amp;quot;id&amp;quot;: &amp;quot;1D565B41-1D16-46DE-B2C5-CF55ED5279F0&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;Исходящий обзвон&amp;quot;,&lt;br /&gt;
   &amp;quot;code&amp;quot;: &amp;quot;af-2329&amp;quot;,&lt;br /&gt;
   &amp;quot;direction&amp;quot;: &amp;quot;outgoing&amp;quot;,&lt;br /&gt;
   &amp;quot;contacttype&amp;quot;: 0,&lt;br /&gt;
   &amp;quot;contacttypestr&amp;quot;: &amp;quot;Call&amp;quot;,&lt;br /&gt;
   &amp;quot;projectid&amp;quot;: &amp;quot;E6ADBA0D-C9FF-40F2-96FF-6D2F455F9D5A&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getmyuserinfo'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на получение информации о текущем авторизованном пользователе: имя, внутренний номер, номер и идентификатор линии.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getmyuserinfo&amp;quot;, &lt;br /&gt;
 { &lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,	&lt;br /&gt;
  }	  &lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getmyuserinforesult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с ответом на запрос информации о текущем авторизованном пользователе.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getmyuserinforesult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;username&amp;quot;: &amp;quot;Иванов Иван Иванович&amp;quot;,&lt;br /&gt;
  &amp;quot;mainpbxnumber&amp;quot;: &amp;quot;471&amp;quot;,&lt;br /&gt;
  &amp;quot;hasline&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;lineid&amp;quot;: &amp;quot;267F8F36-4713-4B66-81BD-019512E56E7E&amp;quot;,&lt;br /&gt;
  &amp;quot;linenumber&amp;quot;: &amp;quot;17374&amp;quot;,&lt;br /&gt;
  &amp;quot;isoperator&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getuserphoto'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell о текущем изображении (аватарке) указанного пользователя. Можно указывать только логин (''photoownerlogin'') или только идентификатор (''photoownerid'') интересующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getuserphoto&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;photoownerlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
  &amp;quot;photoownerid&amp;quot;: &amp;quot;3F140170-AEEF-4621-AF9D-247116AE1411&amp;quot;&lt;br /&gt;
  &amp;quot;mode&amp;quot;: &amp;quot;link&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* mode - link, page, data. По умолчанию page. &lt;br /&gt;
		link - вернуть абсолютную ссылку на скачивание через http.&lt;br /&gt;
		page - вернуть относительную ссылку на скачивание.&lt;br /&gt;
		вернуть данные изображения в base64.&lt;br /&gt;
	При формировании абсолютной ссылки в качестве доменного имени берется значение из &lt;br /&gt;
	раздела [[Интеграция с WEB-Socket CRM]] общих настроек Oktell.&lt;br /&gt;
//* photoownerlogin, photoownerid - логин и/или идентификатор пользователя, чья аватарка требуется&lt;br /&gt;
	Может не указываться, тогда будет возвращена аватарка авторизованного пользователя.&lt;br /&gt;
&amp;lt;/pre&amp;gt;	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getuserphotoresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с ответом на запрос информации о текущем авторизованном пользователе.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getuserphotoresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;link&amp;quot;: &amp;quot;http://...&amp;quot;&lt;br /&gt;
  &amp;quot;link32&amp;quot;: &amp;quot;http://...&amp;quot;&lt;br /&gt;
  &amp;quot;link96&amp;quot;: &amp;quot;http://...&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* result. В случае отсутствия файла или по любой другой причине неудачи описание неудачи&lt;br /&gt;
		будет находиться в поле errormsg. Например &amp;quot;File not found&amp;quot;.&lt;br /&gt;
//* imagedatab64. В случае возврата целиком изображения, оно будет в base64 строке содержаться в поле.&lt;br /&gt;
//* link, link32, link96. В случае возврата ссылки на изображение в полях лежат соответственно&lt;br /&gt;
		ссылки на полное изображение, 32х32- и 96x96- пиксельные образы.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getalluserphotolink'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на получение ссылок на текущие изображения (аватарки) всех пользователей системы.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getalluserphotolink&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;mode&amp;quot;: &amp;quot;link&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* mode - link, page. По умолчанию page. &lt;br /&gt;
		link - вернуть абсолютную ссылку на скачивание через http.&lt;br /&gt;
		page - вернуть относительную ссылку на скачивание.&lt;br /&gt;
	При формировании абсолютной ссылки в качестве доменного имени берется значение из &lt;br /&gt;
	раздела [[Интеграция с WEB-Socket CRM]] общих настроек Oktell.&lt;br /&gt;
&amp;lt;/pre&amp;gt;	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getalluserphotolinkresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с ответом на запрос ссылкок на текущие изображения (аватарки) всех пользователей системы.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getalluserphotolinkresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;links&amp;quot;: [ &lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;C6036E73-FB90-4F0C-B780-81CE5659BFEA&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Сидоров&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;http://...&amp;quot;,&lt;br /&gt;
    &amp;quot;link32x32&amp;quot;: &amp;quot;http://...&amp;quot;,&lt;br /&gt;
    &amp;quot;link96x96&amp;quot;: &amp;quot;http://...&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* result. Если в наборе есть хотя бы одна аватарка, будет содержать 1. Иначе 0.&lt;br /&gt;
//* links. Содержит набор пользовательских словарей, в каждом из которых идентификатор, &lt;br /&gt;
		логин и набор ссылок link, link32, link96. В полях лежат соответственно&lt;br /&gt;
		ссылки на полное изображение, 32х32- и 96x96- пиксельные образы.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setmyuserphoto'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на установку нового изображения (аватарки) текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setmyuserphoto&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;filepath&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;imagedatab64&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;filename&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* filepath - если файл уже на сервере где-то, то это путь к нему - &lt;br /&gt;
		относительный рабочего каталога, относительный файлового хранилища, или абсолютный.&lt;br /&gt;
		Допускается устанавливать в качестве аватарки изображения размером не более 1 MБ.&lt;br /&gt;
   либо&lt;br /&gt;
//* imagedatab64 и filename - если файл целиком прокачивается через веб-сокет, то тут base64 строка&lt;br /&gt;
		с образом файла.&lt;br /&gt;
&lt;br /&gt;
//* если не указано ни filepath, ни imagedatab64, ни filename - стирает текущую аватарку.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''setmyuserphotoresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с ответом на запрос информации о текущем авторизованном пользователе.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setmyuserphotoresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0DD06DFF-E7C7-431B-BC29-920EAC81F76F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* result. В случае отсутствия файла или по любой другой причине неудачи описание неудачи&lt;br /&gt;
			будет находиться в поле errormsg. Например &amp;quot;File not found&amp;quot;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''changepassword'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на изменение пароля текущего авторизованного пользователя. &lt;br /&gt;
В версиях 2.7 пароль в нижнем регистре, в версиях 2.8 пароль без изменения регистра.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;changepassword&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;newpwdmd5&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;oldpwdmd5&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* oldpwdmd5 - MD5 текущего пароля.&lt;br /&gt;
//* newpwdmd5 - MD5 нового пароля.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''changepasswordresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM о результате изменения пароля.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;changepasswordresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;password should be md5 string&amp;quot;	&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getcurrentlinestate'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell состояния телефонной линии указанного пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getcurrentlinestate&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getcurrentlinestateresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с полным состоянием телефонной линии указанного в запросе пользователя системы. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getcurrentlinestateresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;hasline&amp;quot;: true,&lt;br /&gt;
  &amp;quot;lineid&amp;quot;: &amp;quot;866692FC-DA08-459D-BAA1-428F9BA6A0D1&amp;quot;,&lt;br /&gt;
  &amp;quot;linenumber&amp;quot;: &amp;quot;17012&amp;quot;,&lt;br /&gt;
  &amp;quot;linetype&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;linetypestr&amp;quot;: &amp;quot;ltIntIP&amp;quot;,&lt;br /&gt;
  &amp;quot;linestate&amp;quot;: 32,&lt;br /&gt;
  &amp;quot;linestatestr&amp;quot;: &amp;quot;lsCommutated&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getcurrentqueue'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell состояния очереди указанного пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getcurrentqueue&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getcurrentqueueresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с состоянием очереди указанного в запросе пользователя системы. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getcurrentqueueresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;queue&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;objectid&amp;quot;: &amp;quot;723114EE-2ABF-4806-9BC6-FBB532C31B44&amp;quot;,&lt;br /&gt;
    &amp;quot;objecttype&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;objecttypestr&amp;quot;: &amp;quot;qotQueueLogic&amp;quot;,&lt;br /&gt;
    &amp;quot;queuesource&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;queuesourcestr&amp;quot;: &amp;quot;qsLineLogic&amp;quot;,&lt;br /&gt;
    &amp;quot;queuepriority&amp;quot;: 9,&lt;br /&gt;
    &amp;quot;srcelementid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
    &amp;quot;srclineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
    &amp;quot;srclinenumber&amp;quot;: &amp;quot;17004&amp;quot;,&lt;br /&gt;
    &amp;quot;startqueuetime&amp;quot;: &amp;quot;2011-04-05 15:02:28&amp;quot;,&lt;br /&gt;
    &amp;quot;lenqueue&amp;quot;: 72,&lt;br /&gt;
    &amp;quot;managedlineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
    &amp;quot;managedlinenumber&amp;quot;: &amp;quot;17004&amp;quot;,&lt;br /&gt;
    &amp;quot;callerid&amp;quot;: &amp;quot;472&amp;quot;,&lt;br /&gt;
    &amp;quot;calledid&amp;quot;: &amp;quot;479&amp;quot;,&lt;br /&gt;
    &amp;quot;isuser&amp;quot;: true,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;department&amp;quot;: &amp;quot;Руководство&amp;quot;,&lt;br /&gt;
    &amp;quot;chainid&amp;quot;: &amp;quot;02B99AD3-C954-4FD3-B07D-DFEDD83C0BF5&amp;quot;,&lt;br /&gt;
    &amp;quot;istask&amp;quot;: true,&lt;br /&gt;
    &amp;quot;taskid&amp;quot;: &amp;quot;95575C37-5FDE-412C-8F42-36D55B1EC6BB&amp;quot;,&lt;br /&gt;
    &amp;quot;taskname&amp;quot;: &amp;quot;Входящая кампания&amp;quot;,&lt;br /&gt;
    &amp;quot;taskdirection&amp;quot;: &amp;quot;incoming&amp;quot;,&lt;br /&gt;
    &amp;quot;tasklistid&amp;quot;: &amp;quot;7D9A3E9C-0AD3-4C68-BC02-4EBFE3684507&amp;quot;,&lt;br /&gt;
    &amp;quot;tasklistinfo&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;key&amp;quot;: &amp;quot;Название организации&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;ООО МДГХ&amp;quot;&lt;br /&gt;
     },&lt;br /&gt;
     {...},&lt;br /&gt;
     {...}&lt;br /&gt;
    ]&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getcallingoutabonentinfo'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат информации об абоненте, которому осуществляется исходящий вызов от имени указанного пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getcallingoutabonentinfo&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getcallingoutabonentinforesult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает информацию об абоненте, которому осуществляется исходящий вызов от имени указанного в запросе пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getcallingoutabonentinforesult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968&amp;quot;,&lt;br /&gt;
  &amp;quot;number&amp;quot;: &amp;quot;89032728973&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;lineid&amp;quot;: &amp;quot;98F670D2-20E2-4883-B45E-42CDE1F3365F&amp;quot;,&lt;br /&gt;
  &amp;quot;linenumber&amp;quot;: &amp;quot;13005&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getflashedabonentinfo'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат информации об абоненте, находящемся на удержании.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getflashedabonentinfo&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DC35D182-8BAB-4DE4-919C-5F79090D92DE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getflashedabonentinforesult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает информацию об абоненте, находящемся на удержании&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getflashedabonentinforesult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DC35D182-8BAB-4DE4-919C-5F79090D92DE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;containsflashed&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;abonent&amp;quot;: {&lt;br /&gt;
    &amp;quot;chainid&amp;quot;: &amp;quot;19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968&amp;quot;,&lt;br /&gt;
    &amp;quot;isconference&amp;quot;: 0,&lt;br /&gt;
	&amp;quot;conferenceid&amp;quot;: &amp;quot;0D2A4CA1-FF17-473B-A5E9-E035CB16E257&amp;quot;,&lt;br /&gt;
	&amp;quot;conferenceroom&amp;quot;: &amp;quot;#124&amp;quot;,&lt;br /&gt;
	&amp;quot;conferencename&amp;quot;: &amp;quot;Планерка&amp;quot;,&lt;br /&gt;
	&amp;quot;conferencedescription&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;simplename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;number&amp;quot;: &amp;quot;89032728973&amp;quot;,&lt;br /&gt;
    &amp;quot;lineid&amp;quot;: &amp;quot;98F670D2-20E2-4883-B45E-42CDE1F3365F&amp;quot;,&lt;br /&gt;
    &amp;quot;linenumber&amp;quot;: &amp;quot;13005&amp;quot;,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getextendedlineinfo'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат расширенной информации о текущей линии и ее оппозитных абонентах: текущее состояние, информация об абоненте в коммутации, информация об абоненте на удержании.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getextendedlineinfo&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;55D54351-651E-4EC2-8E48-1D5136811FB9&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getextendedlineinforesult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает информацию о текущей линии и ее оппозитных абонентах&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getextendedlineinforesult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;55D54351-651E-4EC2-8E48-1D5136811FB9&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;linestateid&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;linestatestr&amp;quot;: &amp;quot;lsCommutated,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968&amp;quot;,&lt;br /&gt;
  &amp;quot;datetimeformat&amp;quot; = &amp;quot;dd.MM.yyyy HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;activetimestart&amp;quot; = &amp;quot;01.12.2011 16:59:28&amp;quot;,&lt;br /&gt;
  &amp;quot;abonent&amp;quot;: {&lt;br /&gt;
    &amp;quot;isconference&amp;quot;: false,&lt;br /&gt;
	&amp;quot;conferenceid&amp;quot;: &amp;quot;0D2A4CA1-FF17-473B-A5E9-E035CB16E257&amp;quot;,&lt;br /&gt;
	&amp;quot;conferenceroom&amp;quot;: &amp;quot;#124&amp;quot;,&lt;br /&gt;
	&amp;quot;conferencename&amp;quot;: &amp;quot;Планерка&amp;quot;,&lt;br /&gt;
	&amp;quot;conferencedescription&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;iscommutated&amp;quot;: false,&lt;br /&gt;
    &amp;quot;iswaitingfaxline&amp;quot;: false,&lt;br /&gt;
    &amp;quot;iswaitinginflash&amp;quot;: false,&lt;br /&gt;
    &amp;quot;iswaitingforanswer&amp;quot;: false,&lt;br /&gt;
	&amp;quot;number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;name&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;userid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;userlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;username&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;simplename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;lineid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;linenumber&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;isextline&amp;quot;: false,&lt;br /&gt;
    &amp;quot;iswaitingforanswer&amp;quot;: false,&lt;br /&gt;
	&amp;quot;extnumber&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;queuesourceid&amp;quot;: 1,&lt;br /&gt;
	&amp;quot;queuesourcestr&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;isivr&amp;quot;: false,&lt;br /&gt;
	&amp;quot;ivrname&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;isroutingivr&amp;quot;: false, &lt;br /&gt;
	&amp;quot;ismediaivr&amp;quot;: false, &lt;br /&gt;
	&amp;quot;isrestartivr&amp;quot;: false,&lt;br /&gt;
    &amp;quot;isautocall&amp;quot;: false,&lt;br /&gt;
	&amp;quot;number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;isringing&amp;quot;: false,&lt;br /&gt;
	&amp;quot;ringtimesec&amp;quot;: 172,&lt;br /&gt;
	&amp;quot;isconference&amp;quot;: false,&lt;br /&gt;
		&amp;quot;conferenceid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;conferencename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;conferenceroom&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;conferencedescription&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;inviteruserid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;inviterusername&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;inviteruserlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;name&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;direction&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;isextline&amp;quot;: true,&lt;br /&gt;
	&amp;quot;istask&amp;quot;: false,&lt;br /&gt;
		&amp;quot;taskid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;taskname&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;userid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;userlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;username&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;lineid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;linenumber&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  &amp;quot;isflashing&amp;quot;: true,&lt;br /&gt;
  &amp;quot;flashed&amp;quot;: {&lt;br /&gt;
    &amp;quot;isconference&amp;quot;: true,&lt;br /&gt;
	&amp;quot;conferenceid&amp;quot;: &amp;quot;0D2A4CA1-FF17-473B-A5E9-E035CB16E257&amp;quot;,&lt;br /&gt;
	&amp;quot;conferenceroom&amp;quot;: &amp;quot;#124&amp;quot;,&lt;br /&gt;
	&amp;quot;conferencename&amp;quot;: &amp;quot;Планерка&amp;quot;,&lt;br /&gt;
	&amp;quot;conferencedescription&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
	&amp;quot;number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;simplename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lineid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;linenumber&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;isextline&amp;quot;: false&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* С отступом в примере указаны поля, появляющиеся в случае, если базовое булево поле имеет значение true. &lt;br /&gt;
//      Например, если isringing=true, то указанные с отступом поля будут присутствовать и представлять собой&lt;br /&gt;
//      информацию об абоненте, осуществляющем вызов текущего канала.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Управление переадресацией====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getredirectrules'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат списка правил переадресации для текущего пользователя с их настройками.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getredirectrules&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getredirectrulesresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает список правил переадресации для текущего пользователя с их настройками.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getredirectrulesresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;redirectrules&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;5FD3120D-E86B-4F4B-B57C-AC32343CD00F&amp;quot;,&lt;br /&gt;
    &amp;quot;caption&amp;quot;: &amp;quot;Постоянное&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Действует всегда, когда я в состоянии переадресации&amp;quot;,&lt;br /&gt;
    &amp;quot;priority&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
    &amp;quot;isenabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;allowcascade&amp;quot;: true,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;statestr&amp;quot;: &amp;quot;Active&amp;quot;,&lt;br /&gt;
    &amp;quot;destinationnumber&amp;quot;: &amp;quot;89050213951&amp;quot;,&lt;br /&gt;
    &amp;quot;onlyforredirectstate&amp;quot;: true,&lt;br /&gt;
    &amp;quot;definesources&amp;quot;: true,&lt;br /&gt;
    &amp;quot;sources&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;type&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;typestr&amp;quot;: &amp;quot;ExtNumber&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
      &amp;quot;srcnumber&amp;quot;: &amp;quot;4959741589&amp;quot;,&lt;br /&gt;
      &amp;quot;srcid&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
     },&lt;br /&gt;
     ...&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;defineschedule&amp;quot;: true,&lt;br /&gt;
    &amp;quot;tformat&amp;quot;: &amp;quot;HH:mm:ss&amp;quot;,&lt;br /&gt;
    &amp;quot;schedule&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;weekday&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;weekdaystr&amp;quot;: &amp;quot;Sunday&amp;quot;,&lt;br /&gt;
      &amp;quot;tstart&amp;quot;: &amp;quot;00:00:00&amp;quot;,&lt;br /&gt;
      &amp;quot;tstop&amp;quot;: &amp;quot;23:59:59&amp;quot;,&lt;br /&gt;
     },&lt;br /&gt;
     ...&lt;br /&gt;
    ]&lt;br /&gt;
   },&lt;br /&gt;
   ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//*  state: disabled=0, enabled=1, active=2&lt;br /&gt;
//*  defineschedule - если false, значит активно всегда&lt;br /&gt;
//*  definesources - если false, значит для всех номеров&lt;br /&gt;
//*  sourcetype - extnumber=0, user=1, client=3, clientgroup=4. &lt;br /&gt;
		Если номер - то указывается scrnumber, иначе srcid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''saveredirectrules'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Сохраняет новое/измененное правило переадресации для текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;saveredirectrules&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;redirectrules&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;5FD3120D-E86B-4F4B-B57C-AC32343CD00F&amp;quot;,&lt;br /&gt;
    &amp;quot;caption&amp;quot;: &amp;quot;Постоянное&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Действует всегда, когда я в состоянии переадресации&amp;quot;,&lt;br /&gt;
    &amp;quot;priority&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
    &amp;quot;isenabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;allowcascade&amp;quot;: true,&lt;br /&gt;
    &amp;quot;destinationnumber&amp;quot;: &amp;quot;89050213951&amp;quot;,&lt;br /&gt;
    &amp;quot;onlyforredirectstate&amp;quot;: true,&lt;br /&gt;
    &amp;quot;definesources&amp;quot;: true,&lt;br /&gt;
    &amp;quot;sources&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;type&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;typestr&amp;quot;: &amp;quot;ExtNumber&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
      &amp;quot;srcnumber&amp;quot;: &amp;quot;4959741589&amp;quot;,&lt;br /&gt;
      &amp;quot;srcid&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
     },&lt;br /&gt;
     ...&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;defineschedule&amp;quot;: true,&lt;br /&gt;
    &amp;quot;tformat&amp;quot;: &amp;quot;HH:mm:ss&amp;quot;,&lt;br /&gt;
    &amp;quot;schedule&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;weekday&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;weekdaystr&amp;quot;: &amp;quot;Sunday&amp;quot;,&lt;br /&gt;
      &amp;quot;tstart&amp;quot;: &amp;quot;00:00:00&amp;quot;,&lt;br /&gt;
      &amp;quot;tstop&amp;quot;: &amp;quot;23:59:59&amp;quot;,&lt;br /&gt;
     },&lt;br /&gt;
     ...&lt;br /&gt;
    ]&lt;br /&gt;
   },&lt;br /&gt;
   ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//*  state: disabled=0, enabled=1, active=2&lt;br /&gt;
//*  defineschedule - если false, значит активно всегда&lt;br /&gt;
//*  definesources - если false, значит для всех номеров&lt;br /&gt;
//*  sourcetype - extnumber=0, user=1, client=3, clientgroup=4. Если номер - то указывается scrnumber, иначе srcid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''saveredirectrulesresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает список правил переадресации для текущего пользователя с их настройками.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;saveredirectrulesresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''deleteredirectrules'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Удаляет указанные правила переадресации для текущего пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;deleteredirectrules&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
  &amp;quot;ids&amp;quot;: [&lt;br /&gt;
   &amp;quot;5FD3120D-E86B-4F4B-B57C-AC32343CD00F&amp;quot;,&lt;br /&gt;
   ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''deleteredirectrulesresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Ничего не возвращает, кроме факта выполнения запроса на удаление правил переадресации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;deleteredirectrulesresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setredirectruleenabled'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Включает/выключает указанные правила переадресации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setredirectruleenabled&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
  &amp;quot;id&amp;quot;: &amp;quot;5FD3120D-E86B-4F4B-B57C-AC32343CD00F&amp;quot;,&lt;br /&gt;
  &amp;quot;enabled&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''setredirectruleenabledresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Ничего не возвращает, кроме факта выполнения запроса на включение/выключения указанных правил переадресации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setredirectruleenabledresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Контент звонка====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getchaincontent'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат контента текущей сессии, в которой участвует линия указанного пользователя. Кто инициировал звонок, когда, с кем коммутировался, кто переключал, куда, на кого, когда, были ли комментарии какие-то установлены в контент...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   [&lt;br /&gt;
     &amp;quot;getchaincontent&amp;quot;,&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
      &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
      &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getchaincontentresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с контентом текущей сессии указанного в запросе пользователя. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getchaincontentresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;content&amp;quot;: {&lt;br /&gt;
   &amp;quot;chainid&amp;quot;: &amp;quot;19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968&amp;quot;,&lt;br /&gt;
   &amp;quot;createtime&amp;quot;: &amp;quot;2011-04-06 20:38:41&amp;quot;,&lt;br /&gt;
   &amp;quot;customfield&amp;quot;: &amp;quot;трололололо&amp;quot;,&lt;br /&gt;
   &amp;quot;trace&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
     &amp;quot;contentelementtype&amp;quot;: &amp;quot;call&amp;quot;,&lt;br /&gt;
     &amp;quot;pbxdirection&amp;quot;: &amp;quot;internal&amp;quot;,&lt;br /&gt;
     &amp;quot;objectid&amp;quot;: &amp;quot;723114EE-2ABF-4806-9BC6-FBB532C31B44&amp;quot;,&lt;br /&gt;
     &amp;quot;objecttype&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;objecttypestr&amp;quot;: &amp;quot;qotQueueLogic&amp;quot;,&lt;br /&gt;
     &amp;quot;queuesource&amp;quot;: 5,&lt;br /&gt;
     &amp;quot;queuesourcestr&amp;quot;: &amp;quot;qsIncomingTask&amp;quot;,&lt;br /&gt;
     &amp;quot;queuepriority&amp;quot;: 7,&lt;br /&gt;
     &amp;quot;srcelementid&amp;quot;: &amp;quot;98F670D2-20E2-4883-B45E-42CDE1F3365F&amp;quot;,&lt;br /&gt;
     &amp;quot;srclineid&amp;quot;: &amp;quot;98F670D2-20E2-4883-B45E-42CDE1F3365F&amp;quot;,&lt;br /&gt;
     &amp;quot;srclinenumber&amp;quot;: &amp;quot;13005&amp;quot;,&lt;br /&gt;
     &amp;quot;startqueuetime&amp;quot;: &amp;quot;2011-04-06 20:38:41&amp;quot;,&lt;br /&gt;
     &amp;quot;managedlineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
     &amp;quot;managedlinenumber&amp;quot;: &amp;quot;17004&amp;quot;,&lt;br /&gt;
     &amp;quot;callerid&amp;quot;: &amp;quot;89048928835&amp;quot;,&lt;br /&gt;
     &amp;quot;calledid&amp;quot;: &amp;quot;4959211586&amp;quot;,&lt;br /&gt;
     &amp;quot;isuser&amp;quot;: false,&lt;br /&gt;
     &amp;quot;department&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
     &amp;quot;istask&amp;quot;: true,&lt;br /&gt;
     &amp;quot;taskid&amp;quot;: &amp;quot;95575C37-5FDE-412C-8F42-36D55B1EC6BB&amp;quot;,&lt;br /&gt;
     &amp;quot;taskname&amp;quot;: &amp;quot;Входящая кампания&amp;quot;,&lt;br /&gt;
     &amp;quot;taskdirection&amp;quot;: &amp;quot;incoming&amp;quot;,&lt;br /&gt;
     &amp;quot;tasklistid&amp;quot;: &amp;quot;7D9A3E9C-0AD3-4C68-BC02-4EBFE3684507&amp;quot;,&lt;br /&gt;
     &amp;quot;tasklistinfo&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;key&amp;quot;: &amp;quot;Название организации&amp;quot;,&lt;br /&gt;
       &amp;quot;value&amp;quot;: &amp;quot;ООО МДГХ&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
     ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
     &amp;quot;contentelementtype&amp;quot;: &amp;quot;commutation&amp;quot;,&lt;br /&gt;
     &amp;quot;commutationid&amp;quot;: &amp;quot;58D76504-DA2D-42C2-9016-1089A94DC1BF&amp;quot;,&lt;br /&gt;
     &amp;quot;timestart&amp;quot;: &amp;quot;2011-04-06 20:40:01&amp;quot;,&lt;br /&gt;
     &amp;quot;timeanswer&amp;quot;: &amp;quot;2011-04-06 20:40:04&amp;quot;,&lt;br /&gt;
     &amp;quot;connectiontype&amp;quot;: 5,&lt;br /&gt;
     &amp;quot;connectiontypestr&amp;quot;: &amp;quot;ctOuterInner&amp;quot;,&lt;br /&gt;
     &amp;quot;isrecorded&amp;quot;: true,&lt;br /&gt;
     &amp;quot;customfield&amp;quot;: &amp;quot;траляляляля&amp;quot;,&lt;br /&gt;
     &amp;quot;alineid&amp;quot;: &amp;quot;98F670D2-20E2-4883-B45E-42CDE1F3365F&amp;quot;,&lt;br /&gt;
     &amp;quot;alinenumber&amp;quot;: &amp;quot;13005&amp;quot;,&lt;br /&gt;
     &amp;quot;anumberdialed&amp;quot;: &amp;quot;4959211586&amp;quot;,&lt;br /&gt;
     &amp;quot;aoutnumber&amp;quot;: &amp;quot;89048928835&amp;quot;,&lt;br /&gt;
     &amp;quot;aisuser&amp;quot;: false,&lt;br /&gt;
     &amp;quot;atext&amp;quot;: &amp;quot;ООО «СДЗЦ» (89048928835)&amp;quot;,&lt;br /&gt;
     &amp;quot;blineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
     &amp;quot;blinenumber&amp;quot;: &amp;quot;17004&amp;quot;,&lt;br /&gt;
     &amp;quot;bnumberdialed&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
     &amp;quot;boutnumber&amp;quot;: &amp;quot;472&amp;quot;,&lt;br /&gt;
     &amp;quot;bisuser&amp;quot;: true,&lt;br /&gt;
     &amp;quot;buserid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
     &amp;quot;buserlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
     &amp;quot;busername&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
     &amp;quot;btext&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
     &amp;quot;timestop&amp;quot;: &amp;quot;2011-04-06 20:42:12&amp;quot;,&lt;br /&gt;
     &amp;quot;length&amp;quot;: 128.32,&lt;br /&gt;
     &amp;quot;stopside&amp;quot;: &amp;quot;a&amp;quot;,&lt;br /&gt;
     &amp;quot;stopreason&amp;quot;: 2,&lt;br /&gt;
     &amp;quot;stopreasonstr&amp;quot;: &amp;quot;scrAbonentHangOff&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {...},&lt;br /&gt;
    {...}&lt;br /&gt;
   ]&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* trace:contentelementtype: &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setchaincontentcustomfield'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на установку комментария в контент текущей сессии, в которой участвует канал указанного пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setchaincontentcustomfield&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;customfield&amp;quot;: &amp;quot;фывафыдвлаожфыдлвао&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''setchaincontentcustomfieldresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM с результатом установки комментария в контент текущей сессии, в которой участвует канал указанного в запросе пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setchaincontentcustomfieldresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getchaincontentcustomfield'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат комментария из контента текущей сессии, в которой участвует канал указанного пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getchaincontentcustomfield&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getchaincontentcustomfieldresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает комментарий из контента текущей сессии, в которой участвует канал указанного в запросе пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getchaincontentcustomfieldresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;chainid&amp;quot;: &amp;quot;19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968&amp;quot;,&lt;br /&gt;
  &amp;quot;customfield&amp;quot;: &amp;quot;фывафыдвлаожфыдлвао&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Журнал звонков====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getpbxcalljournal'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат журнала звонков АТС по указанному фильтру в соответствии с правами пользователя.&lt;br /&gt;
В том числе ссылки на файлы записей разговоров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxcalljournal&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;idconn&amp;quot;: &amp;quot;08708573-4AF9-45F2-83B7-B8A0DDEF52EC&amp;quot;,&lt;br /&gt;
    &amp;quot;idchain&amp;quot;: &amp;quot;94B5B657-3009-45E0-9095-F5D7BA163EB2&amp;quot;,&lt;br /&gt;
    &amp;quot;datestart&amp;quot;: &amp;quot;2011-04-07&amp;quot;,&lt;br /&gt;
    &amp;quot;datestop&amp;quot;: &amp;quot;2011-04-07&amp;quot;,&lt;br /&gt;
    &amp;quot;timestart&amp;quot;: &amp;quot;08:00:00&amp;quot;,&lt;br /&gt;
    &amp;quot;timestop&amp;quot;: &amp;quot;20:00:00&amp;quot;,&lt;br /&gt;
    &amp;quot;connectiontype&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
    &amp;quot;intnumber&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;outnumber&amp;quot;: &amp;quot;89503222555&amp;quot;,&lt;br /&gt;
    &amp;quot;minduration&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin: &amp;quot;Петров&amp;quot;&lt;br /&gt;
    &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;showcallcenter&amp;quot;: false,&lt;br /&gt;
    &amp;quot;taskid&amp;quot;: &amp;quot;00000000-0000-0000-0000-000000000000&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* filter - фильтр для запроса. Все поля не являются обязательными.&lt;br /&gt;
	По умолчанию возвращаются разговоры за текущий день с 8:00 до 17:00 без звонков call-центра &lt;br /&gt;
		длительностью более 1 секунды, которые доступны авторизованному пользователю по правам контроля.&lt;br /&gt;
	К фильтру могут быть применены: &lt;br /&gt;
		idconn - идентификатор конкретно интересующей коммутации.&lt;br /&gt;
		idchain - идентификатор конкретно интересующей цепочки коммутаций/сессии.&lt;br /&gt;
		datestart - дата начала интересующего периода. Включительно.&lt;br /&gt;
		datestop - дата окончания интересующего периода. Включительно.&lt;br /&gt;
		timestart - время начала интересующего внутридневного интервала. &lt;br /&gt;
		timestop - время окончания интересующего внутридневного интервала. &lt;br /&gt;
		connectiontype - тип соединения (all, incoming, outgoing, internal, conference).&lt;br /&gt;
		intnumber - интересующий внутренний номер.&lt;br /&gt;
		outnumber - интересующий внешний номер.&lt;br /&gt;
		minduration - минимальная длительность коммутации в секундах, может быть действительным значением.&lt;br /&gt;
		userid - идентификатор интересующего пользователя.&lt;br /&gt;
		userlogin - логин интересующего пользователя.&lt;br /&gt;
		comment - строка включения в комментарии.&lt;br /&gt;
		showcallcenter: true|false. Отображать ли коммутации call-центра.&lt;br /&gt;
		taskid - идентификатор задачи в рамках call-центра, чьи звонки интересны.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getpbxcalljournalresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает журнал звонков АТС по указанному фильтру в соответствии с правами пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxcalljournalresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;4CC7EDEC-499B-4C03-95D3-57B8C30FC110&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;dd.MM.yyyy HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;data&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;commutationid&amp;quot;: &amp;quot;044d56f9-7137-49b6-bacf-a10370a54df4&amp;quot;,&lt;br /&gt;
    &amp;quot;chainid&amp;quot;: &amp;quot;672ec703-e77a-47b1-b698-cb8488352fc9&amp;quot;,&lt;br /&gt;
    &amp;quot;connectiontype&amp;quot;: 10,&lt;br /&gt;
    &amp;quot;connectiontypestr&amp;quot;: &amp;quot;conference&amp;quot;,&lt;br /&gt;
    &amp;quot;dtstart&amp;quot;: &amp;quot;2011-04-09 19:55:30&amp;quot;,&lt;br /&gt;
    &amp;quot;dtanswer&amp;quot;: &amp;quot;2011-04-09 19:55:30&amp;quot;,&lt;br /&gt;
    &amp;quot;dtstop&amp;quot;: &amp;quot;2011-04-09 19:55:33&amp;quot;,&lt;br /&gt;
    &amp;quot;length&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;answerlength&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;hascomment&amp;quot;: false,&lt;br /&gt;
    &amp;quot;isbetweenusers&amp;quot;: true,&lt;br /&gt;
    &amp;quot;fromcc&amp;quot;: false,&lt;br /&gt;
    &amp;quot;isconf&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isrecorded&amp;quot;: true,&lt;br /&gt;
    &amp;quot;recordlink&amp;quot;: &amp;quot;/download/rec/AQAAAAAQIKvNHczNCBEBAAAA&amp;quot;,&lt;br /&gt;
    &amp;quot;fileext&amp;quot;: &amp;quot;wav&amp;quot;,&lt;br /&gt;
    &amp;quot;auserid&amp;quot;: &amp;quot;AA3B3E14-2B44-4D08-8C62-3C616F9D27E3&amp;quot;,&lt;br /&gt;
    &amp;quot;auserlogin&amp;quot;: &amp;quot;Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;alineid&amp;quot;: &amp;quot;A117499D-23EA-4BF8-A6B9-F49580E9628C&amp;quot;,&lt;br /&gt;
    &amp;quot;alinenumber&amp;quot;: &amp;quot;16001&amp;quot;,&lt;br /&gt;
    &amp;quot;aoutnumber&amp;quot;: &amp;quot;Семен Егорович Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;anumberdialed&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;atext&amp;quot;: &amp;quot;Семен Егорович Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;conferenceid&amp;quot;: &amp;quot;224476F1-2E41-4C8F-BA85-6BEF0EBB5339&amp;quot;,&lt;br /&gt;
    &amp;quot;conferenceroom&amp;quot;: &amp;quot;751&amp;quot;,&lt;br /&gt;
    &amp;quot;conferencename&amp;quot;: &amp;quot;Автоконференция #751 09.04.11 19:55:30&amp;quot;,&lt;br /&gt;
    &amp;quot;conferencedirectorid&amp;quot;: &amp;quot;AA3B3E14-2B44-4D08-8C62-3C616F9D27E3&amp;quot;,&lt;br /&gt;
    &amp;quot;conferencedirectorlogin&amp;quot;: &amp;quot;Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;conferencedirectorname&amp;quot;: &amp;quot;Семен Егорович Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;reasonstop&amp;quot;: -1,&lt;br /&gt;
    &amp;quot;stopside&amp;quot;: &amp;quot;a&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;commutationid&amp;quot;: &amp;quot;5F64DECF-194C-474B-8CA7-824E82A1C072&amp;quot;,&lt;br /&gt;
    &amp;quot;chainid&amp;quot;: &amp;quot;22A01B17-064B-4E19-99BA-FED96680AF25&amp;quot;,&lt;br /&gt;
    &amp;quot;connectiontype&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;connectiontypestr&amp;quot;: &amp;quot;ctOuterInner&amp;quot;,&lt;br /&gt;
    &amp;quot;dtstart&amp;quot;: &amp;quot;2011-04-09 19:57:24&amp;quot;,&lt;br /&gt;
    &amp;quot;dtanswer&amp;quot;: &amp;quot;2011-04-09 19:57:24&amp;quot;,&lt;br /&gt;
    &amp;quot;dtstop&amp;quot;: &amp;quot;2011-04-09 19:58:13&amp;quot;,&lt;br /&gt;
    &amp;quot;length&amp;quot;: 49,&lt;br /&gt;
    &amp;quot;answerlength&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;hascomment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isbetweenusers&amp;quot;: true,&lt;br /&gt;
    &amp;quot;fromcc&amp;quot;: false,&lt;br /&gt;
    &amp;quot;isrecorded&amp;quot;: true,&lt;br /&gt;
    &amp;quot;recordlink&amp;quot;: &amp;quot;/download/rec/AAAAAABwOltxHczNCGlCAACBPgAA&amp;quot;,&lt;br /&gt;
	  &amp;quot;fileext&amp;quot;: &amp;quot;mp3&amp;quot;,&lt;br /&gt;
    &amp;quot;isconf&amp;quot;: false,&lt;br /&gt;
    &amp;quot;auserid&amp;quot;: &amp;quot;AA3B3E14-2B44-4D08-8C62-3C616F9D27E3&amp;quot;,&lt;br /&gt;
    &amp;quot;auserlogin&amp;quot;: &amp;quot;Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;alineid&amp;quot;: &amp;quot;A117499D-23EA-4BF8-A6B9-F49580E9628C&amp;quot;,&lt;br /&gt;
    &amp;quot;alinenumber&amp;quot;: &amp;quot;16001&amp;quot;,&lt;br /&gt;
    &amp;quot;aoutnumber&amp;quot;: &amp;quot;Семен Егорович Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;anumberdialed&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;atext&amp;quot;: &amp;quot;Семен Егорович Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;buserid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;buserlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;blineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
    &amp;quot;blinenumber&amp;quot;: &amp;quot;17004&amp;quot;,&lt;br /&gt;
    &amp;quot;boutnumber&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;bnumberdialed&amp;quot;: &amp;quot;217&amp;quot;,&lt;br /&gt;
    &amp;quot;btext&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;reasonstop&amp;quot;: -1,&lt;br /&gt;
    &amp;quot;stopside&amp;quot;: &amp;quot;b&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* dtformat - формат представления даты/времени.&lt;br /&gt;
//* data - набор попавших в выдачу коммутаций/конференций. Каждая запись - в отдельном словаре.&lt;br /&gt;
	commutationid - идентификатор коммутации.&lt;br /&gt;
	chainid - идентификатор цепочки коммутаций/сессии.&lt;br /&gt;
	connectiontype, connectiontypestr - Тип соединения:&lt;br /&gt;
		ctInnerOuter	= 1, //внутренняя линия с внешней линией&lt;br /&gt;
		ctInnerIvr	= 2, //внутренняя линия с IVR&lt;br /&gt;
		ctInnerInner	= 3, //внутренняя линия с внутренней линией&lt;br /&gt;
		ctOuterIvr	= 4, //внешняя линия с IVR&lt;br /&gt;
		ctOuterInner	= 5, //внешняя линия с внутренней линией линией&lt;br /&gt;
		ctOuterOuter	= 6, //внешняя линия с внешней линией		&lt;br /&gt;
		ctIvrOuter	= 7, //IVR с внешней линией		&lt;br /&gt;
		ctIvrInner	= 8, //IVR с внутренней линией&lt;br /&gt;
		ctConference	= 10,//Конференция&lt;br /&gt;
		ctSelector	= 11,//Селекторное совещание&lt;br /&gt;
	dtstart - дата/время начала вызова перед осуществлением коммутации.&lt;br /&gt;
	dtanswer - дата/время ответа и начала коммутации.&lt;br /&gt;
	dtstop - дата/время окончания коммутации&lt;br /&gt;
	length - длительность в секундах&lt;br /&gt;
	answerlength - длительность ответа в секундах.&lt;br /&gt;
	hascomment - true|false. Имеет ли данная коммутация комментарий.&lt;br /&gt;
	isbetweenusers - true|false. Является ли текущая коммутация между пользователями системы.&lt;br /&gt;
	fromcc - true|false. Произведена ли текущая коммутация в рамках работы call-центра.&lt;br /&gt;
	isrecorded - true|false. Записана ли коммутация.&lt;br /&gt;
	recordlink - относительная ссылка на скачивание файла записи разговора.&lt;br /&gt;
	fileext - если файл записан, то его расширение mp3 или wav. Возвращает только если в полном &lt;br /&gt;
			результате менее 5 записей, иначе поле отсутствует.&lt;br /&gt;
	isconf - true|false. Является ли текущая запись конференцией.&lt;br /&gt;
	auserid - идентификатор пользователя абонента a. &lt;br /&gt;
			Если IVR - 'ab000000-0000-0000-0000-000000000000',&lt;br /&gt;
			Если внешний абонент - 'bf000000-0000-0000-0000-000000000000'&lt;br /&gt;
	auserlogin - логин пользователя абонента a.&lt;br /&gt;
	alineid - идентификатор линии абонента a.&lt;br /&gt;
	alinenumber - номер линии абонента a.&lt;br /&gt;
	aoutnumber - номер абонента a (CallerId).&lt;br /&gt;
	anumberdialed - набранный абонентом a номер.&lt;br /&gt;
	atext - текстовое описание абонента a.&lt;br /&gt;
	buserid - идентификатор пользователя абонента b. &lt;br /&gt;
			Если IVR - 'ab000000-0000-0000-0000-000000000000',&lt;br /&gt;
			Если внешний абонент - 'bf000000-0000-0000-0000-000000000000'&lt;br /&gt;
	buserlogin - логин пользователя абонента b.&lt;br /&gt;
	blineid - идентификатор линии абонента b.&lt;br /&gt;
	blinenumber - номер линии абонента b.&lt;br /&gt;
	boutnumber - номер абонента b (CallerId).&lt;br /&gt;
	bnumberdialed - набранный абонентом b номер.&lt;br /&gt;
	btext - текстовое описание абонента b.&lt;br /&gt;
	reasonstop - причина разрыва коммутации.&lt;br /&gt;
	stopside - a, b. По чьей инициативе коммутация прервана.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getpbxcallcomment'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат комментария к указанной коммутации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxcallcomment&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;1E3C27C0-BE28-4621-AD39-6D1B31EB37EB&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;73567FD4-EFB9-46BF-9346-35B8638FE644&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getpbxcallcommentresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает комментарий к запрошенной коммутации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxcallcommentresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;1E3C27C0-BE28-4621-AD39-6D1B31EB37EB&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;73567FD4-EFB9-46BF-9346-35B8638FE644&amp;quot;,&lt;br /&gt;
  &amp;quot;comment&amp;quot;: &amp;quot;раз два три четыре пять вышел зайчик погулять&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setpbxcallcomment'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на установку комментария для указанной коммутации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setpbxcallcomment&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;3AB79A11-24FB-4D10-B7FD-5FD1653A679D&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;73567FD4-EFB9-46BF-9346-35B8638FE644&amp;quot;&lt;br /&gt;
  &amp;quot;comment&amp;quot;: &amp;quot;раз два три четыре пять вышел зайчик погулять&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''setpbxcallcommentresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат установки комментария к коммутации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;setpbxcallcommentresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;3AB79A11-24FB-4D10-B7FD-5FD1653A679D&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getpbxmycalljournal'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат журнала собственных звонков авторизованного пользователя по указанному фильтру.&lt;br /&gt;
В том числе ссылки на файлы записей разговоров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxmycalljournal&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F95D0A08-D904-49C9-A4B9-8C02B1781A89&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;linkmode&amp;quot;: &amp;quot;full&amp;quot;,&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;datestart&amp;quot;: &amp;quot;2011-04-07&amp;quot;,&lt;br /&gt;
    &amp;quot;datestop&amp;quot;: &amp;quot;2011-04-07&amp;quot;,&lt;br /&gt;
    &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;number&amp;quot;: &amp;quot;89503222555&amp;quot;,&lt;br /&gt;
    &amp;quot;media&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;all&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* linkmode - full, simple - устанавливает формат ссылок, в котором будут указаны полученные файлы&lt;br /&gt;
		в событии об окончании приема.&lt;br /&gt;
			full - вернуть абсолютную ссылку на скачивание через http.&lt;br /&gt;
			simple - вернуть относительную ссылку на скачивание.&lt;br /&gt;
		При формировании абсолютной ссылки в качестве доменного имени берется значение из &lt;br /&gt;
		раздела [[Интеграция с WEB-Socket CRM]] общих настроек Oktell.&lt;br /&gt;
//* filter - фильтр для запроса. Все поля не являются обязательными.&lt;br /&gt;
	По умолчанию возвращаются разговоры за текущий день с 8:00 до 17:00, в которых&lt;br /&gt;
		участвовал авторизованный пользователь			&lt;br /&gt;
	К фильтру могут быть применены: &lt;br /&gt;
		datestart - дата начала интересующего периода. Включительно.&lt;br /&gt;
		datestop - дата окончания интересующего периода. Включительно.&lt;br /&gt;
		comment - строка включения в комментарии.&lt;br /&gt;
		number - интересующий номер оппонента.&lt;br /&gt;
		media - external, internal, all. Среда вызова.&lt;br /&gt;
		type - тип звонка:&lt;br /&gt;
			incoming - входящий звонок.&lt;br /&gt;
			outcoming - исходящий звонок.&lt;br /&gt;
			missed - пропущенный звонок. Что является пропущенным звонком определяется в разделе&lt;br /&gt;
					[[Менеджер очередей]] общих настроек Oktell.&lt;br /&gt;
			conference - конференция.&lt;br /&gt;
			selector - селекторное совещание.&lt;br /&gt;
			all - все типы звонков.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getpbxmycalljournalresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает журнал собственных звонков авторизованного пользователя по указанному фильтру.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxmycalljournalresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F95D0A08-D904-49C9-A4B9-8C02B1781A89&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;dtformat&amp;quot;: &amp;quot;dd.MM.yyyy HH:mm:ss&amp;quot;,&lt;br /&gt;
  &amp;quot;data&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;type&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;typestr&amp;quot;: &amp;quot;incoming&amp;quot;,&lt;br /&gt;
    &amp;quot;media&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;mediastr&amp;quot;: &amp;quot;internal&amp;quot;,&lt;br /&gt;
    &amp;quot;commutationid&amp;quot;: &amp;quot;73567FD4-EFB9-46BF-9346-35B8638FE644&amp;quot;,&lt;br /&gt;
    &amp;quot;chainid&amp;quot;: &amp;quot;46fe0543-4a58-49c5-b501-644b8ddad69a&amp;quot;,&lt;br /&gt;
    &amp;quot;dtstart&amp;quot;: &amp;quot;2011-04-09 19:55:25&amp;quot;,&lt;br /&gt;
    &amp;quot;dtanswer&amp;quot;: &amp;quot;2011-04-09 19:55:27&amp;quot;,&lt;br /&gt;
    &amp;quot;dtstop&amp;quot;: &amp;quot;2011-04-09 19:56:29&amp;quot;,&lt;br /&gt;
    &amp;quot;length&amp;quot;: 61,&lt;br /&gt;
    &amp;quot;number&amp;quot;: &amp;quot;14&amp;quot;,&lt;br /&gt;
    &amp;quot;alineid&amp;quot;: &amp;quot;3294CD8F-7865-436A-AC2E-CEA481D8F52D&amp;quot;,&lt;br /&gt;
    &amp;quot;alinenumber&amp;quot;: &amp;quot;17011&amp;quot;,&lt;br /&gt;
    &amp;quot;blineid&amp;quot;: &amp;quot;021BDECD-196B-408F-8C36-8C37C0A94C5A&amp;quot;,&lt;br /&gt;
    &amp;quot;blinenumber&amp;quot;: &amp;quot;17014&amp;quot;,&lt;br /&gt;
    &amp;quot;isrecorded&amp;quot;: true,&lt;br /&gt;
    &amp;quot;recordlink&amp;quot;: &amp;quot;http://192.168.0.12:4055/download/rec/AQAAAADQfMDNHczNCBEBAAAA&amp;quot;,&lt;br /&gt;
    &amp;quot;hascomment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;abonentname&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;isconf&amp;quot;: false&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;type&amp;quot;: 10,&lt;br /&gt;
    &amp;quot;typestr&amp;quot;: &amp;quot;conference&amp;quot;,&lt;br /&gt;
    &amp;quot;media&amp;quot;: 10,&lt;br /&gt;
    &amp;quot;mediastr&amp;quot;: &amp;quot;conference&amp;quot;,&lt;br /&gt;
    &amp;quot;commutationid&amp;quot;: &amp;quot;20CF9B5A-5FFE-4456-8984-E7B79D7166EE&amp;quot;,&lt;br /&gt;
    &amp;quot;chainid&amp;quot;: &amp;quot;E443FEA7-5ABB-49CB-A28D-8CC25F404E97&amp;quot;,&lt;br /&gt;
    &amp;quot;dtstart&amp;quot;: &amp;quot;2011-04-09 19:58:12&amp;quot;,&lt;br /&gt;
    &amp;quot;dtanswer&amp;quot;: &amp;quot;2011-04-09 19:58:12&amp;quot;,&lt;br /&gt;
    &amp;quot;dtstop&amp;quot;: &amp;quot;2011-04-09 19:59:45&amp;quot;,&lt;br /&gt;
    &amp;quot;length&amp;quot;: 93,&lt;br /&gt;
    &amp;quot;alineid&amp;quot;: &amp;quot;3294CD8F-7865-436A-AC2E-CEA481D8F52D&amp;quot;,&lt;br /&gt;
    &amp;quot;alinenumber&amp;quot;: &amp;quot;17011&amp;quot;,&lt;br /&gt;
    &amp;quot;isconf&amp;quot;: true,&lt;br /&gt;
    &amp;quot;conferenceid&amp;quot;: &amp;quot;224476F1-2E41-4C8F-BA85-6BEF0EBB5339&amp;quot;,&lt;br /&gt;
    &amp;quot;conferenceroom&amp;quot;: &amp;quot;751&amp;quot;,&lt;br /&gt;
    &amp;quot;conferencename&amp;quot;: &amp;quot;Автоконференция #751 09.04.11 19:55:30&amp;quot;,&lt;br /&gt;
    &amp;quot;conferencedirectorid&amp;quot;: &amp;quot;AA3B3E14-2B44-4D08-8C62-3C616F9D27E3&amp;quot;,&lt;br /&gt;
    &amp;quot;conferencedirectorlogin&amp;quot;: &amp;quot;Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;conferencedirectorname&amp;quot;: &amp;quot;Семен Егорович Крючков&amp;quot;,&lt;br /&gt;
    &amp;quot;isrecorded&amp;quot;: true,&lt;br /&gt;
    &amp;quot;recordlink&amp;quot;: &amp;quot;http://192.168.0.12:4055/download/rec/AAAAAACQSBTLHczNCGlCAACBPgAA&amp;quot;,&lt;br /&gt;
    &amp;quot;hascomment&amp;quot;: true&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* dtformat - формат представления даты/времени.&lt;br /&gt;
//* data - набор попавших в выдачу коммутаций/конференций. Каждая запись - в отдельном словаре.&lt;br /&gt;
		type, typestr - тип звонка:&lt;br /&gt;
			incoming 	= 1 - входящий звонок.&lt;br /&gt;
			outcoming 	= 2 - исходящий звонок.&lt;br /&gt;
			missed 		= 3 - пропущенный звонок. Что является пропущенным звонком определяется &lt;br /&gt;
						в разделе [[Настройки менеджера очередей|Менеджер очередей]] общих настроек Oktell.&lt;br /&gt;
			conference 	= 10 - конференция.&lt;br /&gt;
			selector 	= 11 - селекторное совещание.			&lt;br /&gt;
		media, mediastr - тип среды вызова:&lt;br /&gt;
			external 	= 2 - внешняя среда.&lt;br /&gt;
			internal 	= 1 - внутренний вызов.&lt;br /&gt;
			conference 	= 10 - конференция.&lt;br /&gt;
			selector 	= 11 - селекторное совещание.&lt;br /&gt;
		commutationid - идентификатор коммутации.&lt;br /&gt;
		chainid - идентификатор цепочки коммутаций/сессии.&lt;br /&gt;
		dtstart - дата/время начала вызова перед осуществлением коммутации.&lt;br /&gt;
		dtanswer - дата/время ответа и начала коммутации.&lt;br /&gt;
		dtstop - дата/время окончания коммутации&lt;br /&gt;
		length - длительность в секундах&lt;br /&gt;
		alineid - идентификатор линии абонента a.&lt;br /&gt;
		alinenumber - номер линии абонента a.&lt;br /&gt;
		blineid - идентификатор линии абонента b, если это коммутация.&lt;br /&gt;
		blinenumber - номер линии абонента b, если это коммутация.&lt;br /&gt;
		isrecorded - true|false. Записана ли коммутация.&lt;br /&gt;
		recordlink - относительная или абсолютная ссылка на скачивание файла записи разговора.&lt;br /&gt;
		hascomment - true|false. Имеет ли данная коммутация комментарий.&lt;br /&gt;
		abonentname - текстовое описание оппозитного абонента коммутации.&lt;br /&gt;
		isconf - true|false. Является ли текущая запись конференцией(селектором) или нет.&lt;br /&gt;
		conferenceid - идентификатор конференции/селектора.&lt;br /&gt;
		conferenceroom - номер комнаты конференции/селектора.&lt;br /&gt;
		conferencename - название конференции/селектора.&lt;br /&gt;
		conferencedirectorid - идентификатор управляющего пользователя конференции/селектора.&lt;br /&gt;
		conferencedirectorlogin - логин управляющего пользователя конференции/селектора.&lt;br /&gt;
		conferencedirectorname - имя управляющего пользователя конференции/селектора.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''removepbxcallrecord'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Удаляет запись разговора указанной коммутации в соответствии с правами доступа.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;removepbxcallrecord&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DF061C5B-1B3B-41AA-94FF-A7A2F8FA6AE7&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;73567FD4-EFB9-46BF-9346-35B8638FE644&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''removepbxcallrecordresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат удаления записи разговора.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;removepbxcallrecordresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DF061C5B-1B3B-41AA-94FF-A7A2F8FA6AE7&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getvoiceperc'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Возвращает информацию о [[Управление_базами_данных#ComputeVoices|распределении владения разговором участниками коммутации]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getvoiceperc&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DF061C5B-1B3B-41AA-94FF-A7A2F8FA6AE7&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;73567FD4-EFB9-46BF-9346-35B8638FE644&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getvoicepercresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getvoicepercresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DF061C5B-1B3B-41AA-94FF-A7A2F8FA6AE7&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;aperc&amp;quot;: 12,&lt;br /&gt;
  &amp;quot;bperc&amp;quot;: 29,&lt;br /&gt;
  &amp;quot;alinenum&amp;quot;: &amp;quot;17e003&amp;quot;,&lt;br /&gt;
  &amp;quot;blinenum&amp;quot;: &amp;quot;16e215&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getvoicemap'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Возвращает [[Управление_базами_данных#VoiceMap|детальную карту владения разговором участниками коммутации]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getvoicemap&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DF061C5B-1B3B-41AA-94FF-A7A2F8FA6AE7&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;commutationid&amp;quot;: &amp;quot;73567FD4-EFB9-46BF-9346-35B8638FE644&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getvoicepercresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getvoicemapresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DF061C5B-1B3B-41AA-94FF-A7A2F8FA6AE7&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;abinbase64&amp;quot;: [base64 от бинарки (&amp;quot;0100101101011110&amp;quot;-&amp;gt; byte[]-&amp;gt; base64)],&lt;br /&gt;
  &amp;quot;bbinbase64&amp;quot;: [base64 от бинарки (&amp;quot;0100101101011110&amp;quot;-&amp;gt; byte[]-&amp;gt; base64)],&lt;br /&gt;
  &amp;quot;abinlen&amp;quot;: 15,&lt;br /&gt;
  &amp;quot;bbinlen&amp;quot;: 15,&lt;br /&gt;
  &amp;quot;alinenum&amp;quot;: &amp;quot;17e003&amp;quot;,&lt;br /&gt;
  &amp;quot;blinenum&amp;quot;: &amp;quot;16e215&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Номерной план====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''pbxnumberstatechanged'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сообщение из Oktell о смене состояния внутреннего номера (или группы внутренних номеров)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pbxnumberstatechanged&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;5B9508DF-565B-44E1-A122-6FEB70ADA0B9&amp;quot;,&lt;br /&gt;
  &amp;quot;numbers&amp;quot;: [&lt;br /&gt;
   {&amp;quot;num&amp;quot;: &amp;quot;425&amp;quot;, &amp;quot;numstateid&amp;quot;: 3},&lt;br /&gt;
   {&amp;quot;num&amp;quot;: &amp;quot;427&amp;quot;, &amp;quot;numstateid&amp;quot;: 2},&lt;br /&gt;
   {&amp;quot;num&amp;quot;: &amp;quot;#82&amp;quot;, &amp;quot;numstateid&amp;quot;: 3}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getusersbynumbers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат информации о пользователях системы по указанным внутренним номерам от имени указанного пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getusersbynumbers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;20D0F23E-F26A-4BD9-BE65-B6F76D91880A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;numbers&amp;quot;: [&lt;br /&gt;
   &amp;quot;883&amp;quot;,&lt;br /&gt;
   &amp;quot;470&amp;quot;,&lt;br /&gt;
   &amp;quot;472&amp;quot;,&lt;br /&gt;
   &amp;quot;485&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getusersbynumbersresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает информацию о пользователях, которые обнаруживаются системой при парсинге указанных в запросе внутренних номеров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getusersbynumbersresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;20D0F23E-F26A-4BD9-BE65-B6F76D91880A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;users&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;2AC66E31-ADF0-4F84-A589-417A5A599EEA&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Сидоров&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;Сидор Сидорович Сидоров&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getitemsbynumbers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат информации о пользователях и линиях системы по указанным внутренним номерам от имени указанного пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getitemsbynumbers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;numbers&amp;quot;: [&lt;br /&gt;
   &amp;quot;883&amp;quot;,&lt;br /&gt;
   &amp;quot;470&amp;quot;,&lt;br /&gt;
   &amp;quot;472&amp;quot;,&lt;br /&gt;
   &amp;quot;485&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getitemsbynumbersresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает информацию о пользователях и линиях, которые обнаруживаются системой при парсинге указанных в запросе внутренних номеров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getitemsbynumbersresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;user&amp;quot;,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;Петр Петрович Петров&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;user&amp;quot;,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;2AC66E31-ADF0-4F84-A589-417A5A599EEA&amp;quot;,&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Сидоров&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;Сидор Сидорович Сидоров&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;line&amp;quot;,&lt;br /&gt;
    &amp;quot;lineid&amp;quot;: &amp;quot;50203B8C-8079-4B52-8D24-ECDA4BF7877A&amp;quot;,&lt;br /&gt;
    &amp;quot;linenumber&amp;quot;: &amp;quot;17025&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getsystemnumberbyuser'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат системного внутреннего номера, по которому может быть произведен вызов указанного в суб-параметре пользователя от имени указанного пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getsystemnumberbyuser&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;user&amp;quot;: {&lt;br /&gt;
   &amp;quot;userid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
   &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getsystemnumberbyuserresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getsystemnumberbyuserresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;systemnumber&amp;quot;: &amp;quot;U28CA980EF9F84B83B4934454AA54FCD8&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getpbxnumbersforitem'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат текстового списка внутренних номеров указанного в суб-параметре пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxnumbersforitem&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
  &amp;quot;itemtype&amp;quot;: &amp;quot;user&amp;quot;,&lt;br /&gt;
  &amp;quot;itemuserid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
  &amp;quot;itemuserlogin: &amp;quot;Петров&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getpbxnumbersforitemresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает список несистемных внутренних номеров через запятую, по которым возможен вызов пользователя, указанного в суб-параметре запроса.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxnumbersforitemresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;itemtype&amp;quot;: &amp;quot;user&amp;quot;,&lt;br /&gt;
  &amp;quot;itemuserid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
  &amp;quot;itemuserlogin: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
  &amp;quot;itemnumbers&amp;quot;: &amp;quot;403, 472&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*  &amp;quot;itemtype&amp;quot;: &amp;quot;line&amp;quot;,&lt;br /&gt;
/*  &amp;quot;itemlineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
/*  &amp;quot;itemlinenumber&amp;quot;: &amp;quot;17004&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getmainpbxnumberforitem'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат основного несистемного внутреннего номера, по которому возможен вызов объекта системы (пользователя/линии), указанного в суб-параметре.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getmainpbxnumberforitem&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;&lt;br /&gt;
  &amp;quot;itemtype&amp;quot;: &amp;quot;user&amp;quot;,&lt;br /&gt;
  &amp;quot;itemuserid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
  &amp;quot;itemuserlogin: &amp;quot;Петров&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getmainpbxnumberforitemresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает основной несистемный внутренний номер, по которому возможен вызов объекта системы (пользователя/линии), указанного в суб-параметре запроса.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getmainpbxnumberforitemresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;itemtype&amp;quot;: &amp;quot;user&amp;quot;,&lt;br /&gt;
  &amp;quot;itemuserid&amp;quot;: &amp;quot;8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002&amp;quot;,&lt;br /&gt;
  &amp;quot;itemuserlogin: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
  &amp;quot;itemnumber&amp;quot;: &amp;quot;472&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*  &amp;quot;itemtype&amp;quot;: &amp;quot;line&amp;quot;,&lt;br /&gt;
/*  &amp;quot;itemlineid&amp;quot;: &amp;quot;9F93FE9C-0B80-4242-BD24-D338BE8E4FC0&amp;quot;,&lt;br /&gt;
/*  &amp;quot;itemlinenumber&amp;quot;: &amp;quot;17004&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getpbxnumbers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат всех внутренних номеров системы. &lt;br /&gt;
Не требует указания авторизованного пользователя, так как может исполняться по инициативе сервера WebCRM.&lt;br /&gt;
В примере приведен запрос для формирования ответа с перечнем номеров в простом виде.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxnumbers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;mode&amp;quot;: &amp;quot;simple&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* mode: simple, full (простой вид, полный вид).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getpbxnumbersresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает список всех внутренних номеров системы. &lt;br /&gt;
В примере приведен ответ на запрос с перечнем номеров в простом виде.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxnumbersresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;mode&amp;quot;: &amp;quot;simple&amp;quot;,&lt;br /&gt;
  &amp;quot;numbers&amp;quot;: [&lt;br /&gt;
   &amp;quot;401&amp;quot;,&lt;br /&gt;
   &amp;quot;402&amp;quot;,&lt;br /&gt;
   &amp;quot;403&amp;quot;,&lt;br /&gt;
   &amp;quot;404&amp;quot;,&lt;br /&gt;
   &amp;quot;405&amp;quot;,&lt;br /&gt;
   &amp;quot;471&amp;quot;,&lt;br /&gt;
   &amp;quot;472&amp;quot;,&lt;br /&gt;
   &amp;quot;473&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В следующем примере приведен ответ на запрос с перечнем номеров в полном виде со всеми описаниями и состояниями.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getpbxnumbersresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;mode&amp;quot;: &amp;quot;full&amp;quot;,&lt;br /&gt;
  &amp;quot;numbers&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;9079E514-FECF-4DFD-BF48-5EDE4241E3A1&amp;quot;,&lt;br /&gt;
    &amp;quot;number&amp;quot;: &amp;quot;472&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;typestr&amp;quot;: &amp;quot;intRule&amp;quot;,&lt;br /&gt;
    &amp;quot;isgroup&amp;quot;: false,&lt;br /&gt;
    &amp;quot;caption&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;statestr&amp;quot;: &amp;quot;usFullbusy&amp;quot;,&lt;br /&gt;
    &amp;quot;department&amp;quot;: &amp;quot;Руководство&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   {...},&lt;br /&gt;
   {...}&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* number:type - intRule(0), intFast(2), intIVR(3), intEmergency(4)&lt;br /&gt;
/* number:state - usDisconnected(0), usReady(1), usLunch(2), usOff(3), usFullbusy(5),&lt;br /&gt;
				usReserved(6), usWOPhone(7), usError(100), usRinging(201)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getallusernumbers'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат списка всех пользователей, содержащего актуальную информацию по их прямым, основным и групповым номерам.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getallusernumbers&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;fillsubordinates&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* fillsubordinates: true|false. По умолчанию false.&lt;br /&gt;
	Включать ли информацию о подчиненных (добавляет каждому пользователю поле &amp;quot;sub&amp;quot;:true|false)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getallusernumbersresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает список всех пользователей, содержащий актуальную информацию по их прямым, основным и групповым номерам.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getallusernumbersresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;users&amp;quot;: [&lt;br /&gt;
   {&amp;quot;id&amp;quot;: &amp;quot;47A8B3A0-0B33-41BB-9D08-1D9EB0D6F09B&amp;quot;,&lt;br /&gt;
    &amp;quot;name: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
    &amp;quot;sub&amp;quot;: true,&lt;br /&gt;
    &amp;quot;main: &amp;quot;14&amp;quot;,&lt;br /&gt;
    &amp;quot;nums&amp;quot;: &amp;quot;14, 625, 773&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   {&amp;quot;id&amp;quot;: &amp;quot;5A84368D-5ED3-434B-8EB2-41AE86E1566A&amp;quot;,&lt;br /&gt;
    &amp;quot;name: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
    &amp;quot;sub&amp;quot;: false&lt;br /&gt;
   },&lt;br /&gt;
   ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*  users:main - основной прямой номер,&lt;br /&gt;
/*  users:nums - перечень номеров, в которых участвует пользователь или его текущая линия. &lt;br /&gt;
			Порядок следования от главного к групповым, затем от главного к групповым с участием линии.&lt;br /&gt;
/*  users:sub - является ли подчиненным пользователем (в соответствии с правами авторизованного пользователя)&lt;br /&gt;
			Включается только если в запросе установлен флаг fillsubordinates.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Управление задачами call-центра ====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;div id=&amp;quot;attachcalltotask&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''cc_attachcalltotask'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на привязку текущего звонка пользователя к задаче.&lt;br /&gt;
Позволяет указать задачу ключом - идентификатор, название, код. &lt;br /&gt;
При необходимости звонок может быть привязан к конкретному абоненту из таблицы абонентов, прикрепленной к задаче (по его числовому идентификатору). В противном случае в таблицу добавляется новая строчка, даже если набираемый номер уже присутствовал в ней. Подробнее о прикреплении звонка к задаче в разделе [[Голосовые задачи#ManualCall|«Call-центр. Голосовые задачи»]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cc_attachcalltotask&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;taskkey&amp;quot;: &amp;quot;EDFE9A1F-E27E-4693-A427-A392C919F8B0&amp;quot;,&lt;br /&gt;
  &amp;quot;idinlist&amp;quot;: 183&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''cc_attachcalltotaskresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат привязки звонка к задаче, дополнительно сообщая номер абонента в списке. В случае неудачи содержит причину.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cc_attachcalltotaskresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;idinlist&amp;quot;: 183,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;div id=&amp;quot;settaskactive&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''cc_settaskactive'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на активацию/деактивацию задачи.&lt;br /&gt;
Позволяет указать задачу ключом - идентификатор, название или код. Тип задачи - ''call'' (по умолчанию) или ''text''.&lt;br /&gt;
Метод доступен с версии 2.8.130909.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cc_settaskactive&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;tasktype&amp;quot;: &amp;quot;call&amp;quot;,&lt;br /&gt;
  &amp;quot;taskkey&amp;quot;: &amp;quot;EDFE9A1F-E27E-4693-A427-A392C919F8B0&amp;quot;,&lt;br /&gt;
  &amp;quot;active&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''cc_settaskactiveresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат активации/деактивации задачи.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cc_settaskactiveresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;div id=&amp;quot;addoperatortotask&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''cc_addoperatortotask'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на добавление оператора к задаче.&lt;br /&gt;
Операция доступна супервизорам задачи, а также самому оператору. Более глубокие фильтры необходимо организовывать на клиентской стороне.&lt;br /&gt;
Позволяет указать задачу ключом - идентификатор, название или код. Позволяет указать оператора ключом - идентификатор, логин, имя.&lt;br /&gt;
Метод доступен с версии 2.8.130909.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cc_addoperatortotask&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;taskkey&amp;quot;: &amp;quot;EDFE9A1F-E27E-4693-A427-A392C919F8B0&amp;quot;,&lt;br /&gt;
  &amp;quot;operatorkey&amp;quot;: &amp;quot;BD252256-08DE-4693-9A31-FC02B600E609&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''cc_addoperatortotaskresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат процедуры добавления оператора в задачу. Неудача возможна при невозможности обнаружить указанного оператора или указанную задачу, а также при отсутствии прав управления задачей.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cc_addoperatortotaskresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;div id=&amp;quot;removeoperatorfromtask&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''cc_removeoperatorfromtask'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на удаление оператора из задачи.&lt;br /&gt;
Операция доступна супервизорам задачи, а также самому оператору. Более глубокие фильтры необходимо организовывать на клиентской стороне.&lt;br /&gt;
Позволяет указать задачу ключом - идентификатор, название или код. Позволяет указать оператора ключом - идентификатор, логин, имя.&lt;br /&gt;
Метод доступен с версии 2.8.130909.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cc_removeoperatorfromtask&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;taskkey&amp;quot;: &amp;quot;EDFE9A1F-E27E-4693-A427-A392C919F8B0&amp;quot;,&lt;br /&gt;
  &amp;quot;operatorkey&amp;quot;: &amp;quot;BD252256-08DE-4693-9A31-FC02B600E609&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''cc_removeoperatorfromtaskresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM. Возвращает результат процедуры удаления оператора из задачи. Неудача возможна при невозможности обнаружить указанного оператора или указанную задачу, а также при отсутствии прав управления задачей.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;cc_removeoperatorfromtaskresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;0423AABC-F20D-4A94-BF2B-94EEEAB1FE40&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Преобразования====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getuserbyline'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат информации о связанном пользователе по ключу линии. Ключом линии традиционно является идентификатор или номер линии.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getuserbyline&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;linekey&amp;quot;: &amp;quot;17002&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getuserbylineresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getuserbylineresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;founduser&amp;quot;: {&lt;br /&gt;
   &amp;quot;userid&amp;quot;: &amp;quot;BE6A252A-D7E7-4D15-8D75-385A210DF997&amp;quot;,&lt;br /&gt;
   &amp;quot;userlogin&amp;quot;: &amp;quot;john&amp;quot;,&lt;br /&gt;
   &amp;quot;username&amp;quot;: &amp;quot;John Smith&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* founduser - информация о связанном с указанной линии пользователе - его идентификатор, логин, имя.&lt;br /&gt;
		Если линия указана неверно или к ней в данный момент не привязан пользователь - null.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getlinebyuser'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат информации о связанной линии по ключу пользователя. Ключом пользователя традиционно является идентификатор, логин или имя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getlinebyuser&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;userkey&amp;quot;: &amp;quot;ivanov&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getlinebyuserresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getlinebyuserresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;foundline&amp;quot;: {&lt;br /&gt;
   &amp;quot;lineid&amp;quot;: &amp;quot;FA86E75A-6383-42B7-873C-37A0654B18EF&amp;quot;,&lt;br /&gt;
   &amp;quot;linenum&amp;quot;: &amp;quot;17002&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* foundline - информация о связанной с указанным авторизованным пользователем линии - ее идентификатор, номер.&lt;br /&gt;
		Если пользователь указана неверно, или не авторизован - null.&lt;br /&gt;
		''Пользователь по умолчанию'' считается авторизованным.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Служебные методы====&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getversion'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на возврат информации о версии сервера Oktell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getversion&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;showalloweddbstoredprocs&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* showalloweddbstoredprocs: true|false. Отображать ли список доступных хранимых процедур БД.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getversionresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getversionresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: {&lt;br /&gt;
   &amp;quot;text&amp;quot;: &amp;quot;Версия программы: 2.7.110808(4237.32979). Версия БД: 110713.&amp;quot;,&lt;br /&gt;
   &amp;quot;dated&amp;quot;: &amp;quot;110808&amp;quot;,&lt;br /&gt;
   &amp;quot;build&amp;quot;: &amp;quot;2.7.4237.32979&amp;quot;,&lt;br /&gt;
   &amp;quot;datedhal&amp;quot;: &amp;quot;110808&amp;quot;,&lt;br /&gt;
   &amp;quot;buildhal&amp;quot;: &amp;quot;2.15.3.2871&amp;quot;,&lt;br /&gt;
   &amp;quot;webserverport&amp;quot;: 80,&lt;br /&gt;
   &amp;quot;webservertls&amp;quot;: false&lt;br /&gt;
  }&lt;br /&gt;
  &amp;quot;alloweddbstoredprocs&amp;quot;: {&lt;br /&gt;
   &amp;quot;w_favoritegetbyuser&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;w_favoritesavebyuser&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;w_favoritedeletebyuser&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;w_clientsget&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;w_clientgroupsget&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* version - информация о версии сервера логики и HAL.&lt;br /&gt;
//* version:webserverport - номер порта [[Серверный_HTTP_интерфейс|HTTP веб-сервера oktell]].&lt;br /&gt;
//* version:webservertls - true|false - защищенный ли канал на указанном порте (http или https).&lt;br /&gt;
//* alloweddbstoredprocs - перечень хранимых процедур, доступных для исполнения в БД Oktell &lt;br /&gt;
				посредством метода &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''execpredefineddbstoredproc''&amp;lt;/span&amp;gt;	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''gettemphttppass'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Генерирует и возвращает временный пароль на доступ к [[Веб-интерфейс|HTTP веб-серверу]] без авторизации.&lt;br /&gt;
Временный пароль живет не более 10 секунд до первого обращения к HTTP с указанием этого пароля среди параметров запроса.&lt;br /&gt;
Пароль привязывается к IP адресу дополнительно. &lt;br /&gt;
После этого вне зависимости от способа авторизации, установленного для HTTP веб-сервера Oktell, однократный вызов любого [[Серверный_HTTP_интерфейс|метода серверного веб-интерфейса]] возможен без авторизации с указанием среди параметров дополнительного служебного параметра ''temppass=A'', где A - выданный временный пароль.&lt;br /&gt;
&lt;br /&gt;
Доступно для [[#Arch2|схемы интеграции 2]] и [[#Arch3|схемы интеграции 3]] в рамках индивидуальных подключений.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;gettemphttppass&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;responsetowebsock&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''gettemphttppassresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;gettemphttppassresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;21D38282-DFB7-4DEF-8C76-BFB338A80947&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;password&amp;quot;: &amp;quot;6f3200ac&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* password - временный пароль для подстановки в качестве значения параметра temppass &lt;br /&gt;
		при осуществлении GET или POST запроса к HTTP веб-серверу Oktell.&lt;br /&gt;
		Следует иметь в виду, что даже в случае POST запроса со специальным контентом&lt;br /&gt;
		указание параметра-пароля возможно в теле самой страницы (по аналогии с GET запросом).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''triggercustomevent'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell на генерацию пользовательского произвольного события всем или только указанным пользователям.&lt;br /&gt;
Может быть использовано в [[#Arch2|схеме интеграции 2]] и [[#Arch3|схеме интеграции 3]] в рамках индивидуальных подключений.&lt;br /&gt;
Производит массовую рассылку указанного события. Точно также как и все остальные события требует подписки.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;triggercustomevent&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;eventname&amp;quot;: &amp;quot;newClientCategoryAdded&amp;quot;,&lt;br /&gt;
  &amp;quot;eventparam&amp;quot;: &amp;quot;строка&amp;quot;&lt;br /&gt;
  &amp;quot;sendback&amp;quot;: 1, // отправлять мне самому или нет&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;triggercustomevent&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;eventname&amp;quot;: &amp;quot;newClientCategoryAdded&amp;quot;,&lt;br /&gt;
  &amp;quot;eventparam&amp;quot;: &amp;quot;строка&amp;quot;,&lt;br /&gt;
  &amp;quot;recipients&amp;quot;: [&lt;br /&gt;
   &amp;quot;Петров&amp;quot;,&lt;br /&gt;
   &amp;quot;Сидоров&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;triggercustomevent&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;C13CE714-A502-4699-BE1A-9C4DB28BB70A&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;eventname&amp;quot;: &amp;quot;newClientCategoryAdded&amp;quot;,&lt;br /&gt;
  &amp;quot;eventparam&amp;quot;: { &amp;quot;param1&amp;quot;: &amp;quot;123&amp;quot;, &amp;quot;p2&amp;quot;: { &amp;quot;asdfasd&amp;quot;: &amp;quot;sdfgsdf&amp;quot; } , ... },&lt;br /&gt;
  &amp;quot;recipients&amp;quot;: [&lt;br /&gt;
   &amp;quot;C45D4911-BDE2-40C0-8D11-A4AFF1F160CC&amp;quot;,&lt;br /&gt;
   &amp;quot;BA2C4BAC-7A7C-4959-B1A7-2F63C248DF3D&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* recipients - список идентификаторов/логинов получателей сообщений. &lt;br /&gt;
			Может не быть указанным, тогда отправка производится всем.&lt;br /&gt;
//* sendback - генерировать ли событие для самого отправителя. Имеет смысл, поскольку&lt;br /&gt;
			в случае использования нескольких вкладок в браузере, каждое из подключений&lt;br /&gt;
			получит событие независимо.&lt;br /&gt;
//* eventname - название пользовательского события.&lt;br /&gt;
//* eventparam - параметр пользовательского события. Переходит в сгенерированное сообщение без изменений.&lt;br /&gt;
			Может содержать строку, набор, массив, словарь - все что угодно.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''gettemphttppassresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Событие из Oktell пользователям CRM. Отправляется всем пользователям, указанным при запросе на рассылку события.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;customevent&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;:&amp;quot;aaa3f5c9-bcd5-4bf9-aef9-0b4ee735170d&amp;quot;,&lt;br /&gt;
  &amp;quot;userlogin&amp;quot;: &amp;quot;Петров&amp;quot;,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;C45D4911-BDE2-40C0-8D11-A4AFF1F160CC&amp;quot;,&lt;br /&gt;
  &amp;quot;eventname&amp;quot;: &amp;quot;newClientCategoryAdded&amp;quot;,&lt;br /&gt;
  &amp;quot;triggereduserid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
  &amp;quot;triggereduserlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
  &amp;quot;eventparam&amp;quot;: { &amp;quot;param1&amp;quot;: &amp;quot;123&amp;quot;, &amp;quot;p2&amp;quot;: { &amp;quot;asdfasd&amp;quot;: &amp;quot;sdfgsdf&amp;quot; } , ... }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* eventname - название пользовательского события.&lt;br /&gt;
//* eventparam - параметр пользовательского события в неизменном виде, как в запросе.&lt;br /&gt;
//* triggereduserid - идентификатор пользователя-рассыльщика.&lt;br /&gt;
//* triggereduserlogin - логин пользователя-рассыльщика.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span id=&amp;quot;execpredefineddbstoredproc&amp;quot; style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''execpredefineddbstoredproc'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Исполняет указанную хранимую процедуру в БД Oktell и возвращает данные всех сформированных в ходе выполнения наборов.&lt;br /&gt;
Доступные для исполнения процедуры содержатся в конфигурационном файле ''websocket.config'', а также могут быть возвращены методом ''getversion''.&lt;br /&gt;
&lt;br /&gt;
Существует специальный параметр @authorizeduserid, значение которого перед исполнением заменяется на идентификатор авторизованного пользователя. Такие процедуры нельзя исполнять от имени CRM.&lt;br /&gt;
&lt;br /&gt;
Не требует указания пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;execpredefineddbstoredproc&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;7198D943-7BA9-443D-B283-55812BC82AFB&amp;quot;,&lt;br /&gt;
  &amp;quot;procedure&amp;quot;: &amp;quot;T_GetFavorites&amp;quot;,&lt;br /&gt;
  &amp;quot;inputparams&amp;quot;: {&lt;br /&gt;
	 &amp;quot;param1&amp;quot;: &amp;quot;XXX&amp;quot;, &lt;br /&gt;
	 &amp;quot;param2&amp;quot;: 10&lt;br /&gt;
	}&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* procedure - название процедуры из разрешенного списка. &lt;br /&gt;
//* inputparams - значения параметров процедуры. Имена параметров могут содержать в начале символ ''@'',&lt;br /&gt;
		В случае его отсутствия он добавляется автоматически.&lt;br /&gt;
		Если в списке присутствует параметр ''authorizeduserid'', его значение будет принудительно заменено&lt;br /&gt;
			на идентификатор текущего авторизованного пользователя в Oktell. Этим можно пользоваться для&lt;br /&gt;
			создания в БД процедур, учитывающих инициатора исполнения.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''execpredefineddbstoredprocresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает результат исполнения хранимой процедуры в БД Oktell. Перечисляет все выходные наборы данных.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;execpredefineddbstoredprocresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;7198D943-7BA9-443D-B283-55812BC82AFB&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;errorcode&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorstr&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;dataset&amp;quot;: [&lt;br /&gt;
   [&lt;br /&gt;
    [&amp;quot;column1&amp;quot;, &amp;quot;column2&amp;quot;, &amp;quot;column3&amp;quot;],&lt;br /&gt;
    [&amp;quot;row1val1&amp;quot;, &amp;quot;row1val2&amp;quot;, &amp;quot;row1val3&amp;quot; ],&lt;br /&gt;
    [&amp;quot;row2val1&amp;quot;, &amp;quot;row2val2&amp;quot;, &amp;quot;row2val3&amp;quot; ],&lt;br /&gt;
    ...&lt;br /&gt;
   ],&lt;br /&gt;
   [&lt;br /&gt;
    [&amp;quot;column1&amp;quot;, &amp;quot;column2&amp;quot;]&lt;br /&gt;
   ],&lt;br /&gt;
   ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* result - 1 или 0. Успешно или неудачно проведена операция.&lt;br /&gt;
//* errorcode - код ошибки. 50044 - служебное значение, в случае запрета или исключения при исполнении, &lt;br /&gt;
			не связанного с ошибкой SQL&lt;br /&gt;
//* errorstr - описание ошибки. &lt;br /&gt;
//* dataset - наборы данных по порядку выдачи в ходе исполнения хранимой процедуры.&lt;br /&gt;
		Набор - это список строк, каждая из которых - список значений по ячейкам.&lt;br /&gt;
		Первая строка в наборе - всегда содержит названия столбцов набора.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span id=&amp;quot;execpluginmethod&amp;quot; style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''execpluginmethod'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Исполняет указанный метод в [[Встраиваемые_plugin-модули|серверном плагине]], передавая в него параметры и возвращая результат с выходными параметрами.&lt;br /&gt;
&lt;br /&gt;
Не требует обязательного указания пользователя. Однако если вызов осуществляется в рамках подключения из браузера к серверу Oktell, то пользователь проставляется автоматически перед исполнением метода.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;execpluginmethod&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;7198D943-7BA9-443D-B283-55812BC82AFB&amp;quot;,&lt;br /&gt;
  &amp;quot;pluginid&amp;quot;: &amp;quot;44710EF2-9C5E-489E-B6CC-FD4ED34C13FE&amp;quot;,&lt;br /&gt;
  &amp;quot;formid&amp;quot;: &amp;quot;44710EF2-9C5E-489E-B6CC-FD4ED34C13FE&amp;quot;,&lt;br /&gt;
  &amp;quot;inputparams&amp;quot;: {&lt;br /&gt;
    &amp;quot;param1&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
    &amp;quot;param2&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* pluginid - идентификатор плагина. &lt;br /&gt;
//* formid - идентификатор одной из заявленных форм (методов) плагина.&lt;br /&gt;
//* inputparams - список значений для заявленных плагином входных параметров выбранной формы (метода). &lt;br /&gt;
                В качестве значений параметров могут быть json структуры &lt;br /&gt;
                (октелл осуществляет преобразование в строку самостоятельно).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''execpluginmethodresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ из Oktell в CRM. Возвращает результат исполнения метода в серверном плагине.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;execpluginmethodresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;7198D943-7BA9-443D-B283-55812BC82AFB&amp;quot;,&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;error&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errormsg&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  &amp;quot;outputparams&amp;quot;: {&lt;br /&gt;
    &amp;quot;outputdata&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//* outputparams - список значений заявленных плагином выходных переменных выбранной формы (метода).&lt;br /&gt;
                  В качестве значений параметров могут быть json структуры.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''ping'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Периодически пробивает канал связи, напоминая о жизнеспособности подключения. Требуется для [[#Arch2|Схемы интеграции 2]] и [[#Arch3|Схемы интеграции 3]] в рамках индивидуальных подключений. Для [[#Arch1|Схемы интеграции 1]] необязательно.&lt;br /&gt;
&lt;br /&gt;
Не требует указания пользователя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;ping&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;			&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''pong'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM на запрос ''ping''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;pong&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''subscribeevent'''&amp;lt;/span&amp;gt;, &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''unsubscribeevent'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос из CRM в Oktell. Производит соответственно подписку и отписку на указанные события.&lt;br /&gt;
&lt;br /&gt;
Доступно и требуется только для [[#Arch2|схемы интеграции 2]] и [[#Arch3|схемы интеграции 3]] в рамках индивидуальных подключений.&lt;br /&gt;
&lt;br /&gt;
В [[#Arch1|схеме интеграции 1]] события поступают в полном объеме, часть из них объединяются и отправляются на сервер WebCRM без привязки к пользователю; ожидается, что сервер WebCRM самостоятельно размножит их. К таким событиям относятся, например ''pbxnumberstatechanged'', ''conflistchanged'' и им подобные. Остальные же направляются с привязкой к пользователю и только в случае, когда пользователь авторизован из-под CRM.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;subscribeevent&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;&lt;br /&gt;
  &amp;quot;eventmethod&amp;quot;: &amp;quot;userstatechanged&amp;quot;,  &lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;			&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;subscribeevent&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;&lt;br /&gt;
  &amp;quot;eventmethod&amp;quot;: [&lt;br /&gt;
   &amp;quot;userstatechanged&amp;quot;,&lt;br /&gt;
   &amp;quot;pbxnumberstatechanged&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;unsubscribeevent&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;&lt;br /&gt;
  &amp;quot;eventmethod&amp;quot;: &amp;quot;userstatechanged&amp;quot;,  &lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;	&lt;br /&gt;
&lt;br /&gt;
События, требующие подписки:&lt;br /&gt;
:* pbxnumberstatechanged&lt;br /&gt;
:* pbxnumberlistmodified&lt;br /&gt;
:* shownotifymessage&lt;br /&gt;
:* voicemailreceived&lt;br /&gt;
:* usertextmessagereceived&lt;br /&gt;
:* usertextmessageviewed&lt;br /&gt;
:* chatcreated&lt;br /&gt;
:* chatnamechanged&lt;br /&gt;
:* chatmemberadded&lt;br /&gt;
:* chatmemberremoved&lt;br /&gt;
:* chatmessage&lt;br /&gt;
:* chatmessageviewed&lt;br /&gt;
:* chat (совокупность всех методов ''chat*'')&lt;br /&gt;
:* userstatechanged&lt;br /&gt;
:* linestatechanged&lt;br /&gt;
:* chainstatechanged&lt;br /&gt;
:* flashstatechanged					&lt;br /&gt;
:* phoneevent_acmcallstarted&lt;br /&gt;
:* phoneevent_acmcallstopped&lt;br /&gt;
:* phoneevent_ringstarted&lt;br /&gt;
:* phoneevent_ringstopped&lt;br /&gt;
:* phoneevent_ivrstarted&lt;br /&gt;
:* phoneevent_ivrstopped&lt;br /&gt;
:* phoneevent_commstarted&lt;br /&gt;
:* phoneevent_commstopped&lt;br /&gt;
:* phoneevent_faxstarted&lt;br /&gt;
:* phoneevent_faxstopped&lt;br /&gt;
:* phoneevent_faxreceived&lt;br /&gt;
:* phoneevent (совокупность всех методов ''phoneevent_*'')&lt;br /&gt;
:* conferenceevent&lt;br /&gt;
:* conflistchanged&lt;br /&gt;
:* confparamschanged&lt;br /&gt;
:* confcompositionchanged&lt;br /&gt;
:* confcompetitorstatechanged&lt;br /&gt;
:* confentrancedenied&lt;br /&gt;
:* confentrancepermitted&lt;br /&gt;
:* confentrancerequest&lt;br /&gt;
:* confnotifyinvite&lt;br /&gt;
:* confpossiblecompetitorstatechanged&lt;br /&gt;
:* conference (совокупность всех методов ''conf*'')&lt;br /&gt;
:* dynamic (совокупность методов executemethod, cancelmethod, showform, closeform)&lt;br /&gt;
:* dynamicwaitabort (совокупность методов executemethodwaitaborted, showformwaitaborted)&lt;br /&gt;
:* dlgcard_showreserve&lt;br /&gt;
:* dlgcard_showconfirm&lt;br /&gt;
:* dlgcard_showformstop&lt;br /&gt;
:* dlgcard_showformdialog&lt;br /&gt;
:* dlgcard_closeall&lt;br /&gt;
:* dlgcard_closereserve&lt;br /&gt;
:* dlgcard_closeformreturnvalues&lt;br /&gt;
:* dlgcard_closeformreturncomment&lt;br /&gt;
:* dlgcard (совокупность методов dlgcard_*)&lt;br /&gt;
:* customevent&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''subscribeeventresult'''&amp;lt;/span&amp;gt;, &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; '''unsubscribeeventresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ от Oktell в CRM на запросы ''subscribeeventresult'' и ''unsubscribeeventresult'' соответственно.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;subscribeeventresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;DDA55585-F598-4F8C-B605-E6E186E6D859&amp;quot;&lt;br /&gt;
  &amp;quot;result&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''wp_setuserstate'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос на установку состояния указанному пользователю. Исполняется от имени сервера, даже если пользователь подключен с помощью другого подключения или из толстого клиента. Ответ не возвращается, в случае удачи отправляется событие ''userstatechanged''. Пользователь задается с помощью одного из ключей (wp - рабочее место, line - линия, user - пользователь).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;wp_setuserstate&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;2A45010A-8EEA-4876-90CB-F062459D4BE2&amp;quot;,&lt;br /&gt;
  &amp;quot;wp&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;line&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;user&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;userstateid&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;onredirect&amp;quot;: false,&lt;br /&gt;
  &amp;quot;lunchreasonid&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;lunchreasonmsg&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''wp_getuserstate'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос от сервера CRM на возврат состояния указанного пользователя. Исполняется от имени сервера, даже если пользователь подключен с помощью другого подключения или из толстого клиента. Пользователь задается с помощью одного из ключей (wp - рабочее место, line - линия, user - пользователь).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;wp_getuserstate&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;2A45010A-8EEA-4876-90CB-F062459D4BE2&amp;quot;,&lt;br /&gt;
  &amp;quot;wp&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;line&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;user&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''wp_getuserstateresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ на запрос ''wp_getuserstateresult''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;wp_getuserstateresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;2A45010A-8EEA-4876-90CB-F062459D4BE2&amp;quot;,&lt;br /&gt;
  &amp;quot;wp&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;line&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;user&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;found&amp;quot;: true,&lt;br /&gt;
  &amp;quot;userid&amp;quot;: &amp;quot;BDB8519F-AE77-4E33-81DB-41EE8E7D4E33&amp;quot;,&lt;br /&gt;
  &amp;quot;stateid&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;statestr&amp;quot;: &amp;quot;usFullBusy&amp;quot;,&lt;br /&gt;
  &amp;quot;onredirect&amp;quot;: false,&lt;br /&gt;
  &amp;quot;onlunch&amp;quot;: true,&lt;br /&gt;
  &amp;quot;oncc&amp;quot;: true,&lt;br /&gt;
  &amp;quot;onccmanual&amp;quot;: false&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''getuserstates'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос от сервера CRM на получение состояний всех пользователей в системе вне зависимости от того, где они авторизованы и авторизованы ли вообще.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getuserstates&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''getalluserstatesresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ на запрос ''getuserstates''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;getalluserstatesresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;F19E223C-3EF3-4002-B1D6-B756DF8E978F&amp;quot;,&lt;br /&gt;
  &amp;quot;users&amp;quot;:[&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;userlogin&amp;quot;: &amp;quot;Иванов&amp;quot;,&lt;br /&gt;
    &amp;quot;userid&amp;quot;: &amp;quot;3357F4D2-B37C-4809-9A1A-E4D64808DE1B&amp;quot;,&lt;br /&gt;
    &amp;quot;userstate&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;userstateid&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;userstatestr&amp;quot;: &amp;quot;usFullbusy&amp;quot;,&lt;br /&gt;
    &amp;quot;onredirect&amp;quot;: true,&lt;br /&gt;
    &amp;quot;onlunch&amp;quot;: false,&lt;br /&gt;
    &amp;quot;oncallcenter&amp;quot;: false,&lt;br /&gt;
    &amp;quot;onccmanual&amp;quot;: false&lt;br /&gt;
   },&lt;br /&gt;
   ...&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt; '''closecallbychain'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрос от сервера CRM на завершение коммутаций, принадлежащих указанной сессии (цепочке коммутаций). Исполняется от имени сервера, даже если пользователь подключен с помощью другого подключения или из толстого клиента&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;closecallbychain&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;2A45010A-8EEA-4876-90CB-F062459D4BE2&amp;quot;,&lt;br /&gt;
  &amp;quot;idchain&amp;quot;: &amp;quot;A7623B51-41F5-42E6-A2AE-1063C52D010A&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; '''closecallbychainresult'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ на запрос ''closecallbychain''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 &amp;quot;closecallbychainresult&amp;quot;,&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;qid&amp;quot;: &amp;quot;2A45010A-8EEA-4876-90CB-F062459D4BE2&amp;quot;,&lt;br /&gt;
  &amp;quot;found&amp;quot;: true&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Прочие====&lt;br /&gt;
&lt;br /&gt;
Существует также набор методов и событий для рабочего места оператора и отображения диалоговых форм. &lt;br /&gt;
Их реализация осуществлена в web-клиенте Oktell и нетривиальна, поскольку требует от клиентского модуля четкого исполнения требований по логическому взаимодействию с менеджером задач сервера Oktell. В частности именно на клиентскую часть возлагается работа по решению вопроса о множественном отображении диалоговой формы и о предоставлении серверу данных по ее заполнению, кэширование метаданных диалоговых форм, подтверждения получения и исполнения запросов и т.д.&lt;br /&gt;
&lt;br /&gt;
Запросы, команды и события от CRM к Oktell:&lt;br /&gt;
* cc_getcallstates (ответ cc_getcallstatesresult)&lt;br /&gt;
* cc_getuserresults (ответ cc_getuserresultsresult)&lt;br /&gt;
* cc_getlunchtypes (ответ cc_getlunchtypesresult)&lt;br /&gt;
* dlgcard_setsupported (ответ dlgcard_setsupportedresult)&lt;br /&gt;
* dlgcard_confirmgot&lt;br /&gt;
* dlgcard_confirmresult&lt;br /&gt;
* dlgcard_showformdone&lt;br /&gt;
* dlgcard_getmetadata (ответ dlgcard_getmetadataresult)&lt;br /&gt;
* dlgcard_getcachedvalues (ответ dlgcard_getcachedvaluesresult)&lt;br /&gt;
* dlgcard_setvaluesonclose&lt;br /&gt;
* dlgcard_setcontrolvalue&lt;br /&gt;
* dlgcard_setresultonnext&lt;br /&gt;
* dlgcard_setresultonstop&lt;br /&gt;
* dlgcard_setstopformresult&lt;br /&gt;
&lt;br /&gt;
События из Oktell в CRM:&lt;br /&gt;
* dlgcard_showreserve&lt;br /&gt;
* dlgcard_showconfirm&lt;br /&gt;
* dlgcard_showformstop&lt;br /&gt;
* dlgcard_showformdialog&lt;br /&gt;
* dlgcard_closeall&lt;br /&gt;
* dlgcard_closereserve&lt;br /&gt;
* dlgcard_closeformreturnvalues&lt;br /&gt;
* dlgcard_closeformreturncomment&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2_%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D0%B8</id>
		<title>Параметры файлов конфигурации</title>
		<link rel="alternate" type="text/html" href="%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2_%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D0%B8"/>
				<updated>2023-06-16T10:45:29Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Параметры файла конфигурации серверного приложения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Техническая документация|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Ряд настроек комплекса хранится в файлах конфигурации соответствующих приложений. Файл конфигурации загружается однократно в момент запуска приложения, и хранящиеся в нем настройки не могут быть изменены в ходе работы. Любые изменения файлов конфигурации применяются только при следующем запуске соответствующего приложения. &lt;br /&gt;
&lt;br /&gt;
Настройки файла конфигурации клиентского приложения влияют на работу только конкретного клиента.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Файлы конфигурации находятся в том же каталоге, в котором расположен запускаемый модуль.&lt;br /&gt;
&lt;br /&gt;
Файл конфигурации клиентского приложения: oktell.ClientStarter4.exe.config&lt;br /&gt;
&lt;br /&gt;
Файл конфигурации серверной службы: oktell.ServerService.exe.config (приложения - oktell.ServerForm.exe.config)&lt;br /&gt;
&lt;br /&gt;
Файлы конфигурации есть также у ряда сопутствующих сервисов: служба файл-сервера, служба обмена межсерверными сообщениями, служба туннелирования запросов в БД, служба сервера видео-конференций, и т.д.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Изменять файлы необходимо в редакторах, не изменяющих кодировку (рекомендуется стандартный редактор «Блокнот»). Такие редакторы как «Microsoft Word» и «Wordpad» сбивают кодировку, в следствие чего запуск приложения системы становится невозможным. При попытке запуска с некорректным конфигурационном файлом возникает системное окно с описанием ошибки.&lt;br /&gt;
&lt;br /&gt;
Конфигурационные файлы содержат ряд служебных настроек, поэтому в целях сохранения целостности и работоспособности не рекомендуется изменять формат файла и параметры, у которых нет описания.&lt;br /&gt;
&lt;br /&gt;
Формат представляет собой стандартный XML-документ со специфическими элементами. Допустимые настройки находятся в разделе между тегами &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;&amp;lt;appSettings&amp;gt;&amp;lt;/span&amp;gt; и &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;&amp;lt;/appSettings&amp;gt;&amp;lt;/span&amp;gt;. Каждый конкретный параметр представляет собой строку &lt;br /&gt;
&lt;br /&gt;
      &amp;lt;pre&amp;gt; &amp;lt;add key=&amp;quot;KEY_STRING&amp;quot; value=&amp;quot;VALUE_STRING&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;KEY_STRING&amp;lt;/span&amp;gt;-название параметра,&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;VALUE_STRING&amp;lt;/span&amp;gt;-значение параметра.Комментарии располагаются между строками &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt; и &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Обновление клиентских конфигураций===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
При необходимости обновить настройки файлов конфигурации у всех или некоторых клиентов можно воспользоваться системой обновления (каталог LiveUpdate сервера). Размещение клиентского конфигурационного файла целиком возможно только в том случае, когда все настройки, включая адрес сервера, идентичны у всех клиентов. При различиях можно воспользоваться служебным механизмом частичного обновления: файлы update*.config, находящиеся в каталоге LiveUpdate, сортируются лексикографически и применяются к тем клиентам, которые определены в настройках каждого из этих файлов. При этом могут быть указаны конкретные клиентские места, или исключения. Клиентские места указываются с помощью идентификатора, определяющего его в карте сети (любой принадлежащий ему IP-адрес, имя хоста, либо хеш-идентификатор, определенный ключом [[#ManualHostAddress|ManualHostAddress]]).&lt;br /&gt;
&lt;br /&gt;
Например, нижеприведенный файл update1.config применится на всех клиентах, локальный адрес которых 192.168.0.12 или 192.168.0.13.&lt;br /&gt;
При этом будут добавлены/обновлены ключи &amp;quot;xxx&amp;quot; и &amp;quot;yyy&amp;quot;, а ключ &amp;quot;zzz&amp;quot; будет удален.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;configuration&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;updateAddress&amp;gt;&lt;br /&gt;
  	&amp;lt;include address=&amp;quot;192.168.0.12&amp;quot;/&amp;gt;&lt;br /&gt;
  	&amp;lt;include address=&amp;quot;192.168.0.13&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/updateAddress&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;appSettings&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;add key=&amp;quot;xxx&amp;quot; value=&amp;quot;111&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;add key=&amp;quot;yyy&amp;quot; value=&amp;quot;555&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;add key=&amp;quot;zzz&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/appSettings&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
По умолчанию при отсутствии раздела ''updateAddress'' изменение конфигурационного файла производится на всех клиентских рабочих местах, подключающихся к серверу.&lt;br /&gt;
Могут быть обновлены конкретные (&amp;lt;include address=&amp;quot;*&amp;quot;/&amp;gt;), или все кроме указанных (&amp;lt;exclude address=&amp;quot;*&amp;quot;/&amp;gt;), где * - IP-адрес, имя хоста или хеш-идентификатор.&lt;br /&gt;
&lt;br /&gt;
Обновиться самостоятельно могут только те клиенты, которые в силу текущих настроек конфигурационного файла способны подключиться к серверу.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Параметры файла конфигурации серверного приложения===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;Language&amp;lt;/span&amp;gt;. Определяет языковую схему, используемую комплексом. В основном каталоге приложения находятся файлы Lang*.xml, представляющие собой наборы текстов для отображения в клиентских интерфейсах и БД. Для выбора того или иного языка необходимо в качестве значения данного параметра выставить соответствующее расширение имени файла (*). Например для использования файла LangRus.xml необходимо прописать значение «rus».&lt;br /&gt;
&lt;br /&gt;
Язык по умолчанию – русский (применяется, если в конфигурационном файле не указан язык, или если не найден файл указанного языка).&lt;br /&gt;
&lt;br /&gt;
Русский также является базовым языком. То есть если какого-либо кода не найдено в файле языка, то в альтернативу будет применен русский текст, заданный в коде программы. Язык также определяется в конфигурационном файле клиентского приложения, но после подключения к серверу клиентское приложение синхронизирует язык с установленным на сервере. &lt;br /&gt;
&lt;br /&gt;
Локализация программы производится компаниями-партнерами, файлы с текстами могут распространяться в открытом и шифрованном виде. В последнем случае осуществляется привязка к лицензии.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;HALSeparate&amp;lt;/span&amp;gt;. Режим запуска модуля поддержки оборудования. «0» - в текущем процессе, «1» - в отдельном процессе используя взаимодействие через NET.Remoting, «2» - в отдельном процессе используя собственный альтернативный канал связи по протоколу TCP. &lt;br /&gt;
&lt;br /&gt;
В случае, если оборудование в некоторых случаях вызывает критические ошибки, подгрузка модуля поддержки оборудования в отдельном процессе позволяет не терять основной работоспособности сервера. В моменты падения процесса основная служба перезапускает его, производит фоновую регистрацию и продолжает работу. &lt;br /&gt;
&lt;br /&gt;
В момент перерегистрации все линии переходят в состояние «Отключена», пользователи переходят в состояние «Без телефона», все коммутации разрываются, логика резервирований очищается. Менеджер задач реагирует способом, аналогичным тому случаю, когда абоненты на внешних линиях положили трубки. Возможно файлы записей оборвавшихся разговоров будут иметь некорректный заголовок, что сделает невозможным их прослушивание стандартными средствами. Полностью процесс автоматической переинициализации занимает 5-10 секунд.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;HALRemoteAddress&amp;lt;/span&amp;gt;. Адрес расположения вынесенной в отдельной процесс службы HAL. По умолчанию localhost.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;HALRemotePort&amp;lt;/span&amp;gt;. Порт доступа к вынесенной в отдельный процесс службе HAL. По умолчанию 4052.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Раздел &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;Настройки серверов HAL&amp;lt;/span&amp;gt;.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;START_SERVER&amp;lt;/span&amp;gt;. Индексированные параметры, определяющие запускаемые серверы аппаратуры. Доступные серверы: Сервер CTI плат Ольха-9, Сервер CTI плат Ольха-14, сервер CTI плат Synway, сервер SIP, серверы VoIP телефонии. При установке системы параметры выставляются согласно выбранным в дистрибутиве значениям. Однако в сложных системах могут потребоваться модификации. Например, в случае если происходит замена типа платы на рабочей системе, использование нескольких разных типов плат, а также при запуске нескольких VoIP серверов, обслуживающих разные подсети. Загрузке подлежат серверы с индексами от 1 до 32 (в примере - часть строки XX).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Сервер плат «Ольха 9», «Ольха 14»:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;add key=&amp;quot;START_SERVER_XX&amp;quot; value=&amp;quot;Alder9 Server;oktell.HALAlder9Srv.dll;Alder9;_Loaders\&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;add key=&amp;quot;START_SERVER_XX&amp;quot; value=&amp;quot;Alder14 Server;oktell.HALAlder9Srv.dll;Alder14;_Loaders\&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Последний элемент строки после точки с запятой указывает путь к файлам-загрузчикам. По умолчанию это подкаталог серверной службы _Loaders.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Сервер плат «Synway»:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;add key=&amp;quot;START_SERVER_XX&amp;quot; value=&amp;quot;Synway Server;oktell.HALSynwaySrv.dll;ShCti;&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Сервер плат «Yeastar»:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;add key=&amp;quot;START_SERVER_XX&amp;quot; value=&amp;quot;E1 Yeastar Server;oktell.HALYeastarSrv.dll;YeaCTI&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;add key=&amp;quot;START_SERVER_XX&amp;quot; value=&amp;quot;TDM800 Yeastar Server;oktell.HALYeastarSrv.dll;TDM800&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Сервер SIP:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;add key=&amp;quot;START_SERVER_XX&amp;quot; value=&amp;quot;SIP Server;oktell.HALSipSrv.dll;SIP;sip:*:5060&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Последний элемент строки после точки с запятой устанавливает детальные настройки сетевого интерфейса и порта, на которых запускаемый SIP-сервер будет активен. По умолчанию «sip:*:5060», то есть сервер слушает все интерфейсы на порте 5060. При необходимости установить какой-либо конкретный интерфейс необходимо вместо «*» указать его адрес.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Серверы VoIP:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;add key=&amp;quot;START_SERVER_XX&amp;quot; value=&amp;quot;Buildin VOIP Server;;Voip;localhost:4003&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Последний элемент строки после точки с запятой указывает сетевой интерфейс и порт слушателя регистраций локальных устройств. При необходимости использования сервера для поддержки локальных устройств разных подсетей возможно запустить несколько VoIP-серверов - несколько однотипных строчек файла конфигурации с разными индексами и разными сетевыми интерфейсами.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Сервер виртуальных каналов&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;add key=&amp;quot;START_SERVER_XX&amp;quot; value=&amp;quot;Virtual Server;oktell.HALVirtualSrv.dll;VS;12/10&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Последний элемент строки указывает количество используемых каналов - внешних/внутренних.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;RTP_PORT_START&amp;lt;/span&amp;gt;. Начальный порт для обмена RTP-трафиком медиа-подсистемой (SIP, VoIP). По умолчанию 9000.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;RTP_PORT_COUNT&amp;lt;/span&amp;gt;. Количество портов, начиная со стартового, доступные для медиа-подсистемы (SIP, VoIP). По умолчанию 10000.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;RTP_MAX_CHANNELS&amp;lt;/span&amp;gt;. Количество сокетов получения RTP-трафика на один поток-слушатель. От 1 до 32. (SIP, VoIP). По умолчанию 8.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;USE_AFFINITY_MASK&amp;lt;/span&amp;gt;. «1» - использовать разделение задач по процессорам. Половина процессоров для сервера логики, другая половина для  сервера HAL. «0» - значение по умолчанию. В этом случае операционная система самостоятельно занимается распределением.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;JITTER_DEPTH&amp;lt;/span&amp;gt;. Значение глубины джиттер-буфера на сервере. Минимальное значение - «4», по умолчанию - «4». При увеличении значения происходит рост задержки в голосовом обмене по направлению звука к серверу, эффективнее исключая влияние проблем сети.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;TIMER_TYPE&amp;lt;/span&amp;gt;. Тип используемого таймера высокой разрешающей способности для тактирования звуковых пакетов. На разных операционных системах и компьютерах различные варианты таймеров могут иметь достаточно сильную погрешность, влияющую на итоговое качество звука. Основная задача при выборе таймера состоит в обеспечении корректного среднего промежутка времени между тиками. Замечены случаи, когда некоторые из вариантов таймеров ОС тактируют постоянно увеличенные интервалы времени (например постоянно 46 мс вместо 40 положенных). Если не происходит корректировок, то такой таймер следует заменить на другой тип. Для определения значений всех вариантов таймеров можно использовать специальное тестовое приложение.&lt;br /&gt;
&lt;br /&gt;
Возможные значения:&lt;br /&gt;
&lt;br /&gt;
:::0 - Системный таймер по умолчанию. Дает более точное тактирование по сравнению с таймером на ожидании. Выдает точное тактирование в Windows Vista и некоторую погрешность в предыдущих версиях Windows. Система буферизации звука в этом случае сглаживает разброс, однако существуют компьютеры, где погрешность таймера постоянна. Это влечет пропуск пакетов и заметное ухудшение итогового качества звука. На таких компьютерах необходимо использовать другие типы таймеров. Рекомендуется мультимедийный.&lt;br /&gt;
&lt;br /&gt;
:::1 - Системный таймер в собственном потоке приложения.&lt;br /&gt;
&lt;br /&gt;
:::2 - Имплементация таймера в потоке с использованием функции WaitForSingleObject(). &lt;br /&gt;
&lt;br /&gt;
:::3 - Мультимедийный таймер. Дает наиболее точное тактирование, однако имеет общее ограничение на количество одновременно существующих таймеров в системе (16 объектов). Сервер Oktell использует 3 объекта таймера высокой разрешающей способности.&lt;br /&gt;
&lt;br /&gt;
:::4 - Автоопределение. На старте системы осуществляется тестовый прогон всех вариантов таймеров и определяется средне наиболее точный. В случае, если все имеют одинаковую среднюю точность, предпочтение отдается таймеру с меньшим индексом (таймер по умолчанию системный, таймер ожидания, мультимедийный). На прогон теста на старте системы выделяется лишняя секунда.По умолчанию «4».&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;TIMER_HIGHRES&amp;lt;/span&amp;gt;. Тип используемого счетчика интервалов времени. «0» - миллисекундный системный счетчик GetTickCount, «1» - Query Performance Counter. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;FORCE_BRACKETS_FOR_URI&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;FORCE_BRACKETS_FOR_URI&amp;lt;/span&amp;gt;. «1» - значения заголовков To и From отправляемых SIP-пакетов размещаются в треугольных скобках. По умолчанию «0».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;EnableSipTransportFilter&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;EnableSipTransportFilter&amp;lt;/span&amp;gt;. «1» - активирует на сервере спам-фильтр, защищающий от атак на SIP-подсистему. При поступлении с одного IP-адреса за короткий отрезок времени чрезмерно большого количества регистрационных пакетов, завершающихся неудачей по причине неверной авторизационной информации, осуществляется блокирование адреса на период времени, указанный в параметре и исчислимый в минутах. На все попытки регистрации с заблокированного IP-адреса сервер не отвечает никаким образом. По умолчанию 1440 минут (= 1 сутки), 1 - не отключать фильтрацию адреса вплоть до перезагрузки сервера, остальные действительные значения являются непосредственными значениями интервала в минутах. 0 - режим отключен.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Раздел &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;Настройки клиентских подключений&amp;lt;/span&amp;gt;.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PBXServerPort&amp;lt;/span&amp;gt;. Порт для подключения собственных клиентских приложений через механизм NET.Remoting (устаревш.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;InternalClientPort&amp;lt;/span&amp;gt;. Порт для подключения собственных клиентских приложений и приложений на базе клиентского ядра через встроенную надстройку над протоколом TCP. По умолчанию 4054.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ExternalClientPort&amp;lt;/span&amp;gt;. Порт для подключения внешних приложений 4053.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;SIP_ENABLE_TCP&amp;lt;/span&amp;gt;. Разрешает TCP-подключение по протоколу SIP. Конкретный порт зависит от настроек SIP-сервера (по умолчанию 5060). «0» - не активно, «1» - активно. По умолчанию «0».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Раздел &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;Настройки автодозвона&amp;lt;/span&amp;gt;.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ACM_UseIntercom&amp;lt;/span&amp;gt;. «1» - активирует интерком-звонок при автодозвоне, в случае схемы &amp;quot;абонент, затем пользователь&amp;quot;, «0» - выключает. По умолчанию «1»&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ACM_DisableIntercomModeBack&amp;lt;/span&amp;gt;. «0» - активирует интерком-звонок при автодозвоне, в случае схемы &amp;quot;пользователь, затем абонент&amp;quot;, «1» - выключает. По умолчанию «0»&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Раздел &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;Настройки рабочего каталога&amp;lt;/span&amp;gt;.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;WORK_ROOTDIR&amp;lt;/span&amp;gt;. Устанавливает в явном виде путь к рабочей папке серверной службы. Временные файлы, сценарии, проекты, плагины, каталог по умолчанию для записи разговоров, резервные копии - все, кроме основных сборок службы, размещается именно там.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;WORK_ROOTDIR_TYPE&amp;lt;/span&amp;gt;. Устанавливает один из нескольких возможных вариантов размещения рабочей папки. Используется, если не задана рабочая папка в явном виде. Возможные варианты: 0 – папка запустившего процесс выполняемого файла, 2 – Documents And Settings\All Users, 3 – Documents And Settings\CurrentUser (''C:\Users\User\AppData\Roaming\Oktell\Client\Scripts\Ivr'')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Раздел &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;Настройки доступа к БД&amp;lt;/span&amp;gt;.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DBServerName&amp;lt;/span&amp;gt;. Адрес сервера, на котором находится база данных MSSQL. По умолчанию «(local)».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DBName&amp;lt;/span&amp;gt;. Имя основной оперативной базы данных, к которой производится подключение. По умолчанию «oktell».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DBNameCC&amp;lt;/span&amp;gt;. Имя базы данных статистики call-центра. По умолчанию «oktell_cc_temp».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DBNameSettings&amp;lt;/span&amp;gt;. Имя базы данных с настройками системы. По умолчанию «oktell_settings».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DBLogin&amp;lt;/span&amp;gt;. Имя пользователя, учетной записью которого пользуется система. По умолчанию «AutelService».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DBInstanceName&amp;lt;/span&amp;gt;. Имя экземпляра сервера MSSQL. По умолчанию «MSSQLSERVER». Для доступа к службе, обеспечивающей работу БД. В момент запуска службы Oktell осуществляется проверка доступности БД. Если SQLServer, обслуживающий БД коммуникационного сервера, находится на том же компьютере, что и служба Oktell, то при невозможности обращения к БД  Oktellпроверяет и перезапускает локальную службу SQLServer (указанный instance). &lt;br /&gt;
&lt;br /&gt;
Если работа SQLServer осуществляется на другом компьютере, то во избежании запуска службы SQLServer на локальной машине в значение поля можно поставить «0». Октелл будет осуществлять бесконечное ожидание корректного подключения к БД перед началом загрузки, а сервер баз данных не будет загружать в ОЗУ свои данные, тем самым коммуникационный сервер будет гарантирован от кэширования данных на диск, и, как следствие, временных приостановок операционной системой работы всех служб и приложений в ожидании завершения операции, что достаточно критично при активных коммутациях.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DBConnectionString&amp;lt;/span&amp;gt;. Строка подключения, задаваемая явно. Используется при настройке подключения к службам SQL с индивидуальными параметрами, при которых не подходят параметры по умолчанию. При отсуствии этого свойства, или пустом его значении, подставляется строка: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;server=(local);database=oktell;uid=AutelService;pwd=[pwd];pooling=true&amp;quot;,&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где значения параметров server, database и uid подставляются из вышеописанных свойств. При явном указании строки подключения пароль может быть указан явно, либо использована последовательность символов «[pwd]», указывающая системе на необходимость подстановки пароля для логина AutelService.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DBTransactionLogSize_1, DBTransactionLogSize_2&amp;lt;/span&amp;gt;. Размеры транзакционных лог-файлов баз данных - основной и пространственной. По умолчанию по 500 МБ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DBBackupDir&amp;lt;/span&amp;gt;. Путь к каталогу на сервере баз данных, в котором осуществляется создание резервных копий баз данных. По умолчанию это Backup в рабочей папке сервера. Однако в случае, если сервер баз данных работает на отдельном компьютере, путь должен существовать именно на нём. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DBAutoDailyBackup&amp;lt;/span&amp;gt;. «1» - устанавливает режим автоматического ежедневного резервного копирования баз данных одновременно с  оптимизацией используемых баз данных. Режим оптимизации сам по себе настраивается в разделе [[Управление базами данных|Администрирование. Общие настройки. Управление базами данных]]. Если режим ежедневной оптимизации отключен, то вне зависимости от значения описываемого параметра резервная копия создана не будет. Cоздание файлов резервных копий производится на компьютере, где установлен текущий используемый MSSQLServer. Файлы размещаются в каталоге, установленном параметром [[#Параметры файла конфигурации серверного приложения|DBBackupDir]], а при его отсутствии в каталоге, путь к которому совпадает с рабочей папкой службы сервера в подкаталоге \Backup. Файлы резервных копий баз имеют названия db_ok.bak, db_okcc.bak, db_okset.bak, при ежедневном автоматическом создании резервных копий предыдущие резервные копии автоматически заменяются новыми. При необходимости осуществлять хранение нескольких копий за некоторый промежуток времени необходимо налаживать схему бэкапа или копирования файлов самостоятельно.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ScrBackupDir&amp;lt;/span&amp;gt;. Путь к каталогу на сервере АТС, в котором осуществляется создание резервных архивов со сценариями. По умолчанию это каталог Backup в рабочей папке сервера.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;RepUpdateDir&amp;lt;/span&amp;gt;. Каталог с обновлениями отчетов call-центра.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DBUpdateDir&amp;lt;/span&amp;gt;. Каталог с обновлениями для БД.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DBUpdateDirExtern&amp;lt;/span&amp;gt;. Каталог с внешними обновлениями для БД. Расположенные здесь файлы с текстом, представляющим собой  один совокупность нескольких SQL-batch, исполняются в БД по очередности их имен в момент запуска сервера. После успешного исполнения файлы удаляются. В случае возникновения ошибок их описание можно обнаружить в лог-журнале Exception. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PauseTMOnDbQueueLength&amp;lt;/span&amp;gt;. Определяет количество сообщений в очереди на сохранение в БД, при котором менеджер задач приостанавливает совершение звонков по исходящим голосовым задачам. Система считает, что таким образом нагрузка уменьшается, и БД имеет больше шансов к уменьшению очереди запросов. По умолчанию 100. Бывают случаи временной загрузки БД, когда своп происходит редко и длится в течение минуты или более того, а в остальные случаи сервер БД не подвержен притормаживанию. В этом случае имеет смысл оценить производительность сервера и увеличить максимальный предел очереди вплоть до нескольких тысяч. Отсутствие предела может привести в особо критичных случаях к тому, что данных в очереди накопится чрезмерно много, что выльется либо в нехватку памяти процессу, либо в несохранение результатов звонков после их совершения в случае сбоя сервера или базы данных.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PauseProgressiveOnDbQueueLength&amp;lt;/span&amp;gt;. Аналогичный предыдущему параметр для прогрессивного пула задач. Может иметь обособленную настройку и сказывается на запуск прогрессивных исходящих звонков. По умолчанию 50;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;DbRemote&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;UseDbRemote&amp;lt;/span&amp;gt;. Довольно большое количество обращений из клиентских приложений к серверу являются суть запросами к БД. 1 - использует отдельный процесс туннелирования (oktell.DbRemoteService.exe) для прямых обращений к БД из клиентских приложений. 0 - все обращения к БД через основную службу. По умолчанию 0. При подключении к службе туннелирования все клиенты проходят аутентификацию. Служба туннелирования получает параметры доступа к БД из конфигурационного файла основной службы Oktell. Собственный конфигурационный файл необходим лишь для определения способа старта (служба или приложение), порта слушателя TCP подключений, а также возможно некоторых настроек логирования. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;CheckStartDbRemote&amp;lt;/span&amp;gt;. Применяется в случае использования отдельного процесса туннелирования доступа клиентских приложений к БД. 1 - указывает серверу на необходимость самостоятельного запуска процесса; процесс при этом запускается на том же физическом сервере, где и основная служба Oktell; при завершении службы при этом процесс выгружается. 0 - указывает на необходимость подключения к постоянно запущенной службе (при этом служба может находиться на другом физическом сервере). По умолчанию 1. В конфигурационном файле службы туннелирования устанавливается, какой способ запуска используется - как служба или как приложение (ключ IsService). Настройки доступа к процессу туннелирования и самого процесса должны соответствовать друг другу.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DbRemoteServer&amp;lt;/span&amp;gt;. Применяется в случае использования отдельного процесса туннелирования доступа клиентских приложений к БД. Определяет адрес и порт для TCP доступа к приложению («address:port»). Сервер с помощью них осуществляет самостоятельное подключение для управления, а также выдает этот адрес клиентам для организации их собственных каналов связи. В случае, если указан localhost (используется по умолчанию), сервер выдает клиентам свой публичный адрес. Порт указывается в конфигурационном файле приложения/службы oktell.DbRemoteService.exe, по умолчанию 4086. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Раздел &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;Настройки службы&amp;lt;/span&amp;gt;.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;EnableEmptyAdmin&amp;lt;/span&amp;gt;. «1» - активирует на сервере возможность пользования учетной записью системного администратора. По умолчанию запись доступна только на сервере, где неактивен сервер состояний или среди учетных записей пользователей которого не существует ни одной, обладающей базовой ролью администратора. Может понадобиться в случае, если пароль учетной записи администратора утерян. Для применения требуется перезапуск службы сервера. По умолчанию «0».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;EnableAutoMap&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;EnableAutoMap&amp;lt;/span&amp;gt;. «1» - активирован режим, при котором авторизация с рабочего места, не имеющего в карте сети учетной записи, приводит к автоматической временной регистрации на сервере рабочего места, снабженного USB-телефоном. «0» - доступ с неизвестных рабочих станций заблокирован. В целях обеспечения работы веб-клиентов, значение по умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;EnableAutoMapSip&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;EnableAutoMapSip&amp;lt;/span&amp;gt;. «1» - активирован режим, при котором при динамической регистрации вместо создания динамической линии USB-телефона производится связка с существующим в карте сети SIP-телефоном. Связка осуществляется по совпадению логина телефона с логином пользователя, либо по совпадению назначенного «пользователя по умолчанию» с авторизующимся пользователем. Для работы требуется включение параметра [[#EnableAutoMap|EnableAutoMap]]. «0» - связка динамических рабочих мест с SIP-телефонами не используется.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;UseWlockForDynamicReg&amp;lt;/span&amp;gt;. «1» - использовать блокировку писателя при добавлении/удалении динамических рабочих мест. По умолчанию «0» - использовать блокировку читателя.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Use4xLineNumbers&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;Use4xLineNumbers&amp;lt;/span&amp;gt;. «1» - использовать при создании линий четырехзначную числовую нумерацию (0000-9999). Может быть использовано в проектах с более чем 1000 линий одного типа. По умолчанию «0».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ManualHostAddress&amp;lt;/span&amp;gt;. Устанавливает уникальное имя сервера для идентификации в карте сети на старте службы. В случае, если в качестве адреса сервера в карте сети указано это значение - позволяет устранить зависимость от смены DNS-имени, а также смены и назначения динамических адресов сервера. &lt;br /&gt;
&lt;br /&gt;
Следует обратить внимание, что сервер может являться также и клиентской рабочей станцией. В этом случае необходимо в файл конфигурации клиентского приложения на сервере задать аналогичный параметр тем же значением, либо создать в карте сети отдельный компьютер с указанным реальным адресом или любой другой уникальной строкой (в случае использования на клиенте аналогичной схемы подмены адреса).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ProcessPriority&amp;lt;/span&amp;gt;. Приоритет серверного процесса. По умолчанию «0» - Нормальный. «1» - выше среднего, «2» - высокий, «3» - реального времени.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;HALRemoteProcessPriority&amp;lt;/span&amp;gt;. Приоритет процесса HALRemote. «0» - нормальный, «1» - выше среднего (по умолчанию), «2» - высокий, «3» - реального времени.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;Default_DateTime_Format&amp;lt;/span&amp;gt;. Индексированные параметры, определяющие нестандартныей варианты преобразования типа СТРОКА к типу ДАТАВРЕМЯ. Используются строки с индексами от 0 до 99, перебор в ходе работы осуществляется в порядке увеличения индексов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;MixerDeleteSourceRecords&amp;lt;/span&amp;gt;. «1» - удалять исходные файлы записей коммутаций после упаковки и/или микширования, «0» - оставлять на месте. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;CheckRecordDriveEmptySpace&amp;lt;/span&amp;gt;. «1» - осуществляет слежение за объемом свободного места на диске для записи разговоров. «0» - игнорирует проверку. Игнорирование может потребоваться при использовании сетевых дисков для записи, размер свободного пространства которых системой определяется нулевым, а также при использовании файлового сервера. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;TaskListAbonentUseLikeNumber&amp;lt;/span&amp;gt;. «1» - позволяет активировать поиск абонентской строчки в таблице абонентов с фильтром &amp;quot;number like '%x%'&amp;quot;. По умолчанию «0» и поиск осуществляется только по идентификатору абонента.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;SkipCloseMutexCommand&amp;lt;/span&amp;gt;. Режим автоматического закрытия сервера через мьютекс-команду необходим в целях исключения проблем с  операциями обнаружения процессов. Встречаются системы, в которых отключены или недееспособны службы, необходимые для обнаружения внешнего процесса. В этом случае процесс копира не в состоянии при необходимости остановить серверный процесс перед обновлением и/или для перезапуска. «1» - пропускать команду закрытия, отданную через системные мьютексы процессом копира. «0» и другие значения - команда будет распознаваться и сервер будет реагировать на нее автоматическим закрытием.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;UseSimpleLineState&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;UseSimpleLineState&amp;lt;/span&amp;gt;. Определяет способ привязки состояний внутренних номеров, ссылающихся на линии к состоянию самих линий. Если указать 0, то состояние номера, в случае свободности подчиненной ему линии, будет оцениваться по состоянию привязанного к ней пользователя. По умолчанию 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;HideGhostMonitor&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;HideGhostMonitor&amp;lt;/span&amp;gt;. 1 - скрывает [[Прослушивание и помощь|слушателей разговора]] друг от друга, 0 - делает их доступными друг другу. По умолчанию 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;GCCollectorPeriodMin&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;GCCollectorPeriodMin&amp;lt;/span&amp;gt;. Определяет периодичность принудительного запуска сборщика мусора .NET в минутах. По умолчанию 1 минута.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;UseNumStateChangedEventDelayer&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;UseNumStateChangedEventDelayer&amp;lt;/span&amp;gt;. Интервал в мс, определяющий задержку перед рассылкой уведомлений о смене состояния номеров в номерном плане. 0 - выключено. По умолчанию 500. Применяется при большом количестве номеров и пользователей, следящих за их изменением. За время задержки происходит накопление данных и отправка одним пакетом. Позволяет экономить вычислительную мощность.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DEBUG_incomingemail&amp;lt;/span&amp;gt;. Логирование в common логе сервера принимаемых e-mail сообщений (pop3) &amp;quot;1&amp;quot; - включено. По умолчанию выключено.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;DEBUG_LogActiveThreadStackTrace&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DEBUG_LogActiveThreadStackTrace&amp;lt;/span&amp;gt;. При установке значения «1» производит вывод в лог ''DEBUG'' информации о стеке всех активных потоков основной службы сервера.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;UsePriorSwitchCallername&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;UsePriorSwitchCallername&amp;lt;/span&amp;gt;. При осуществлении переключения из сценария на внутренний номер определяет, что будет отображаться в качестве имени абонента (callername) на sip-телефоне. 0 - автоопределение; если пусто, то callername из компонента «Переключение на номер» сценария IVR. 1 - наоборот, с приоритетом заданного в компоненте значения. По умолчанию 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;UserMessageCheckPeriodSec&amp;lt;/span&amp;gt;. Позволяет активировать отслеживание появления новых сообщений между пользователями в базе данных и отправить их на отображение. Применяется в случае индивидуальной или внешней настройки и отправки сообщений путем размещения в таблицу A_UserMessages в БД. Указывается период отслеживания появления новых в секундах. 0 - выключено. По умолчанию 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;UserMessageCheckMakeViewed&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;UserMessageCheckMakeViewed&amp;lt;/span&amp;gt;. В случае периодического отслеживания появления новых сообщений между пользователями в БД, указывает, отмечать ли их сразу как прочитанные с тем, чтобы при следующей итерации они не возникали вновь.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;DBPluginCommandTimeoutSec&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DBPluginCommandTimeoutSec&amp;lt;/span&amp;gt;. Позволяет задать таймаут в секундах на исполнение запросов от плагинов к БД. По умолчанию 600. Начиная с версии 120911.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;AllowDownloadFilesDirectlyOnlyFromTemp&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;AllowDownloadFilesDirectlyOnlyFromTemp&amp;lt;/span&amp;gt;. 1 - блокирует скачивание файлов с сервера через HTTP интерфейс отовсюду, кроме как из временной папки Temp и [[Настройки веб-сервера#LocalStoragePath|локального хранилища]]. 0 - разрешает скачивать произвольные файлы с диска сервера по прямой ссылке. По умолчанию 1 (блокировать).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;BanUserAgent&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;BanUserAgentXX&amp;lt;/span&amp;gt;, XX - порядковый номер от 00 до 99. Позволяет установить SIP-транспортный фильтр для определенных значений поля User-Agent. По умолчанию банится &amp;quot;Friendly-Scanner&amp;quot; в целях снижения нагрузки и уменьшения вероятности взлома.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;WhiteListIps&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;WhiteListIps&amp;lt;/span&amp;gt;. Позволяет установить список разрешённых IP-адресов, которые исключаются из проверки спам-фильтром.  Можно указать несколько адресов через точку запятой. По умолчанию пустой список.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;UpdateSelectorOnDirectorDisconnect&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;UpdateSelectorOnDirectorDisconnect&amp;lt;/span&amp;gt;. 1 - при выходе/выпадении управляющего из селекторного совещания производит преобразование селектора к общей конференции. 0 - оставляет селектор с теми правами и в том виде, в котором он находился в последний момент присутствия управляющего. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;PBX_Use180SdpAs183&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PBX_Use180SdpAs183&amp;lt;/span&amp;gt;. 1 - воспринимает команду ''180 Ringing'' с SDP содержимым как команду ''183 Progress'' и начинает сеанс медиасвязи. Используется в режиме ''прослушивание медиа-потока'' компонента [[Компоненты_сценариев_IVR#SwitchExt|Переключение на внешние линии]]. 0 - генерирует стандартный сигнал КПВ (длинные гудки). По умолчанию 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;PBX_BackFrom183To180&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PBX_BackFrom183To180&amp;lt;/span&amp;gt;. 1 - воспринимает команду ''180 Ringing'' к обязательному исполнению - начинает генерацию сигнала КПВ (длинные гудки), даже если предварительно был получен ответ ''183 Progress'' и канал находится в медиа-коммутации. Используется в режиме ''прослушивание медиа-потока'' компонента [[Компоненты_сценариев_IVR#SwitchExt|Переключение на внешние линии]]. 0 - пропускает такую команду. По умолчанию 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;UseAssertedIdentity&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;UseAssertedIdentity&amp;lt;/span&amp;gt;. Включает отправку SIP-заголовоков ''P-Asserted-Identity'' и ''Remote-Party-ID'' в ответ на входящие вызовы с внутренних SIP-устройств на сервер с целью отправить на отображение в SIP-устройство ''Сaller-name'' вызываемого абонента. Применяется в случае осуществления вызова на внутренний номер.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ScreenShotSize&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;AutoScreenshotWidth&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;AutoScreenshotHeight&amp;lt;/span&amp;gt;. Определяют максимальные размеры скриншотов экранов, снимаемых с помощью компонента сценариев [[Общие компоненты сценариев#UserState|Статус объекта]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;PredictivePoolTimerIntervalMs&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PredictivePoolTimerIntervalMs&amp;lt;/span&amp;gt;. Устанавливает общий для всей системы интервал пересчета параметров предиктивных задач в мс, в ходе которого могут быть начаты новые дозвоны (по умолчанию 5000). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;PredictivePoolClearStatOnDeactivate&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PredictivePoolClearStatOnDeactivate&amp;lt;/span&amp;gt;. Устанавливает общий для всей системы режим очистки статистики в предиктивных задачах при деактивации (по умолчанию 0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;PredictivePoolExtraShiftTimeoutMs&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PredictivePoolExtraShiftTimeoutMs&amp;lt;/span&amp;gt;. Устанавливает общий для всей системы дополнительный интервал в мс, применяемый безусловно к спрогнозированным параметрам. Может быть отрицательным и положительным. Если указать положительное число, следующий звонок будет совершаться с запозданием, давая операторам некоторое дополнительное время, например, для перерыва. Если указать отрицательное число, следующий звонок будет совершаться раньше, чем это требуется, тем самым ускоряя темп обзвона. По умолчанию 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;WebServerNoAuth_Loopback&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;WebServerNoAuth_Loopback&amp;lt;/span&amp;gt;. Позволяет отменить требование базовой авторизации при обращении к веб-серверу по loopback-интерфейсу (из приложений на самом сервере). По умолчанию 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;FileServer&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;FileServer_Log&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;FileServer_Record&amp;lt;/span&amp;gt;. Позволяет активировать сохранение соответственно лог-журналов и записей разговоров на удаленный файл-сервер. Значение задается в формате «address:port», например «192.168.0.199:4088». В качестве файлсервера может выступать любой компьютер с установленной и активированной службой oktell.FileService.exe из каталога серверной службы Oktell. О настройке и способах работы файл-сервера доступна [[Запись лог-журналов и записей разговоров на удаленный файловый сервер|статья]] в базе знаний.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;FileServerRecDir&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Хранение записей может происходить в разных каталогах в соответствии с настройкой в Oktell. При использовании файл-сервера в качестве хранилища записей может потребоваться подключать дополнительные хранилища и изменять путь для сохранения записей и последующего доступа к ним. Чтобы это обеспечить, необходимо подвергать корректировке совместно настройку каталога для записи в Oktell и конфиг файлового-сервера. При этом в конфигурационном файле файлового сервера требуется указание соответствия переданного службой Oktell пути с локальным путем (ключ ''BaseDir_*'', где * - это subdir.ToLower(recordedfiles\dirname), а dirname - название последнего внутреннего каталога по выбранному службой Oktell пути; значение - локальный путь на файловом сервере. Например &amp;lt;add key=&amp;quot;BaseDir_recordedfiles\path2&amp;quot; value=&amp;quot;D:\_OktellWorkDir\Files\Base2\&amp;quot;/&amp;gt;. При настройке Oktell следует указывать пути, последний каталог которых имеет уникальное название и ранее не использовалось).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;FaceTime&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
'''Раздел &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;Настройки сервера видео-конференций&amp;lt;/span&amp;gt;.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;FaceTimeLocalPort&amp;lt;/span&amp;gt;. Определяет порт локального сервиса видео-конференций. По умолчанию 4090.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;FaceTimeServer&amp;lt;/span&amp;gt;. Определяет доступные серверы видео-конференций. Перечисляются через запятую с помощью алиасов, которые затем определяются отдельными ключами конфигурации. По умолчанию доступен только локальный сервер, но могут быть вместо или дополнительно настроены один или несколько обособленных серверов. Локальный сервер определяется алиасом «local». Например &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;add key=&amp;quot;FaceTimeServer&amp;quot; value=&amp;quot;local, futurama, videoserver&amp;quot;/&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;FaceTime_*&amp;lt;/span&amp;gt;. Определяет адрес и порт обособленного сервера видео-конференций. Вместо символа * подлежит указанию алиас сервера. Эта настройка должна присутствовать для каждого упомянутого алиаса кроме «local». Например &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;add key=&amp;quot;FaceTime_futurama&amp;quot; value=&amp;quot;192.168.0.10:4092&amp;quot;/&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ThreadManagement&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
'''Раздел &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;Управление потоками&amp;lt;/span&amp;gt;.'''&lt;br /&gt;
&lt;br /&gt;
Позволяет ограничивать максимальное количество потоков-обработчиков для отдельных видов работ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ThreadCountLowLimit&amp;lt;/span&amp;gt;. Количество потоков в общем пуле системы, свободно доступных службе сервера. По умолчанию 500.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ThreadCountHighLimit&amp;lt;/span&amp;gt;. Максимально допустимое количество потоков в общем пуле системы, доступных службе сервера. Потоки, находящиеся в разнице между нижним и верхним ограничениями, выделяются системой с запаздыванием. По умолчанию 700.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;CachedThreadFreeMode&amp;lt;/span&amp;gt;. Режим работы пула асинхронных потоков. «0» по умолчанию - использовать пул, никогда не уничтожать потоки, «1» - не использовать пул, уничтожать потоки сразу после использования, «2» - размещать в пул на 1 секунду, уничтожать по истечении в случае простоя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;CheckReleaseRWOnAbort&amp;lt;/span&amp;gt;. По умолчанию «1» - производить дополнительную проверку блокировки критической секции сервера состояний перед освобождением асинхронного потока и освобождать в случае обнаружения. «0» - не производить.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;OKTCP_CP_ThreadCountLimit&amp;lt;/span&amp;gt;. 0 - отключает ограничение на количество потоков, обслуживающих клиентские запросы. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;OKTCP_CP_ThreadCountLimitHighest&amp;lt;/span&amp;gt;. Устанавливает максимально допустимое количество потоков, доступных системе для обработки высокоприоритетных клиентских запросов, таких как Ping. По умолчанию 10.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;OKTCP_CP_ThreadCountLimitData&amp;lt;/span&amp;gt;. Устанавливает максимально допустимое количество потоков, доступных системе для обработки клиентских запросов, возвращающих большие объемы данных. По умолчанию 10. В момент длительной отправки данных по сети поток не считается использующимся.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;OKTCP_CP_ThreadCountLimitDownload&amp;lt;/span&amp;gt;. Устанавливает максимально допустимое количество потоков, доступных системе для обработки клиентских запросов на скачивание и закачивание файлов. По умолчанию 10. В момент длительной отправки данных по сети поток не считается использующимся.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;OKTCP_CP_ThreadCountLimitSetup&amp;lt;/span&amp;gt;. Устанавливает максимально допустимое количество потоков, доступных системе для обработки клиентских запросов из раздела администрирования. По умолчанию 5.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;OKTCP_CP_ThreadCountLimitLiveupdate&amp;lt;/span&amp;gt;. Устанавливает максимально допустимое количество потоков, доступных системе для обработки клиентских запросов в части проверки обновлений, подготовки архива и его скачивания. По умолчанию совпадает с половиной общего количества ядер всех процессоров сервера, но не менее 2. В момент длительной отправки данных по сети поток не считается использующимся.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;OKTCP_CP_ThreadCountLimitNormal&amp;lt;/span&amp;gt;. Устанавливает максимально допустимое количество потоков, доступных системе для обработки клиентских запросов в части проверки обновлений, подготовки архива и его скачивания. По умолчанию 100.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;OKTCP_CP_ThreadCountLimitEvent&amp;lt;/span&amp;gt;. Устанавливает максимально допустимое количество потоков, доступных системе для рассылки событий клиентским приложениям. По умолчанию 10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Этот же набор параметров с другим префиксом действует для службы туннелирования клиентских запросов в БД. Их указание требуется в конфигурационном файле сервера, так как конфигурационные параметры передаются в службу туннелирования из основной службы.&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;OKTCP_DB_ThreadCountLimit&amp;lt;/span&amp;gt;. &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;OKTCP_DB_ThreadCountLimitHighest&amp;lt;/span&amp;gt;. &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;OKTCP_DB_ThreadCountLimitData&amp;lt;/span&amp;gt;. &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;OKTCP_DB_ThreadCountLimitDownload&amp;lt;/span&amp;gt;. &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;OKTCP_DB_ThreadCountLimitSetup&amp;lt;/span&amp;gt;. &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;OKTCP_DB_ThreadCountLimitNormal&amp;lt;/span&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;OKTCP_HALL_ThreadCountLimit&amp;lt;/span&amp;gt;. Устанавливает максимально допустимое количество потоков, доступных системе для взаимодействия с внешним процессом HAL. По умолчанию 0 - не ограничено.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;OKTCP_HALR_ThreadCountLimit&amp;lt;/span&amp;gt;. Применяется в конфигурационном файле внешнего процесса HAL (oktell.HALRemoteApp.exe) или в собственном (если процесс настроен на работу с конфигурационным файлом основной службы). Устанавливает максимально допустимое количество потоков, доступных внешнему процессу HAL для взаимодействия с основным процессом службы. По умолчанию 0 - не ограничено.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;Line_ThreadCountLimit&amp;lt;/span&amp;gt;. Устанавливает максимально допустимое количество потоков, обслуживающих каналы АТС. По умолчанию 20.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;Script_ThreadCountLimit&amp;lt;/span&amp;gt;. Устанавливает максимально допустимое количество потоков, обслуживающих сценарии. По умолчанию 20.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;TML_ThreadCountLimit&amp;lt;/span&amp;gt;. Устанавливает максимально допустимое количество потоков, обслуживающих звонки в голосовых задачах. По умолчанию 10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Раздел &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;LOG&amp;lt;/span&amp;gt;.'''&lt;br /&gt;
&lt;br /&gt;
Хранит настройки лог-сервера комплекса. Среди неописываемых настроек - пути к папкам для сбора журналов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;LOG_storedays&amp;lt;/span&amp;gt;. Длительность хранения лог-журналов в днях. По умолчанию «7». По истечении указанного периода журналы удаляются системой. В некоторых случаях объем журналов может достигать нескольких гигабайтов за день.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;LOG_maxfilesize&amp;lt;/span&amp;gt;. Максимальный размер одного файла лог-журнала в МБ. При достижении лог-журналом указанного размера логирование прекращается. Имеет воздействие на все лог-журналы, исключая HAL (Hardware). По умолчанию 3 ГБ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;LOG_maxpartsize&amp;lt;/span&amp;gt;. Позволяет настроить максимальный размер одного файла в МБ. По умолчанию 500 МБ. При достижении лог-журналом указанного размера формируется новый файл. Имеет воздействие на все лог-журналы, исключая HAL (Hardware).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;LOG_root&amp;lt;/span&amp;gt;. Абсолютный или относительный путь к папке с лог-журналами. По умолчанию «Log», то есть относительный путь в каталоге серверной службы/приложения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;LOG_asyncwrite&amp;lt;/span&amp;gt;. Использовать асинхронную запись в лог модулем аппаратуры. По умолчанию «0» - выключено.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;LOG_cachesize&amp;lt;/span&amp;gt;. Размер кэша памяти(в Кб) хранения логов перед записью на диск. По умолчанию 128 Кб.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;LOG_cachefreq&amp;lt;/span&amp;gt;. Частота(в мс) записи кэша на диск. По умолчанию 100 мс.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;DebugLogTcpBufferSizeKB&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DebugLogTcpBufferSizeKB&amp;lt;/span&amp;gt;. Позволяет включить логирование информации обо всех объемных пакетах, переданных или отправленных сервером. Указывается размер в KB, выше которого пакеты логируются в Debug лог. По умолчанию 0 - не логировать.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;DebugLogCPEventTypes&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;DebugLogCPEventTypes&amp;lt;/span&amp;gt;. 1 - включает логирование информации обо всех событиях, отправляемых в клиентские приложения в Debug-лог. По умолчанию 0 - выключено.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;WEBSOCK_LogTransform&amp;lt;/span&amp;gt;. При установке 1 выводит в лог TCP информацию о работе протокола WebSocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;WEBSOCK_LogListener&amp;lt;/span&amp;gt;. При установке 1 выводит в лог TCP информацию о работе протокола WebSocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;WEBSOCK_LogDebug&amp;lt;/span&amp;gt;. При установке 1 выводит в лог TCP информацию о работе протокола WebSocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;WEBSOCK_LogPackets&amp;lt;/span&amp;gt;. При установке 1 выводит в лог TCP информацию о работе протокола WebSocket.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Раздел &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;DEBUGGING&amp;lt;/span&amp;gt;.'''&lt;br /&gt;
&lt;br /&gt;
Хранит настройки, согласно которым ведется заполнение служебного сервисного лог-журнала. По умолчанию все параметры выставлены в «1», что влечет полное логирование служб сервера. Полное или частичное отключение уменьшает размер журнала, однако не даст информации в случае возникновения сбоев и общением с технической поддержкой.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Раздел &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;KEYREMOTE&amp;lt;/span&amp;gt;.'''&lt;br /&gt;
&lt;br /&gt;
Хранит настройки для подключения к внешнему серверу, управляющему ключом защиты. Необходимо в редких случаях, если USB-порт на сервере не функционирует должным образом.&lt;br /&gt;
&lt;br /&gt;
===Параметры файла конфигурации клиентского приложения===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;Language&amp;lt;/span&amp;gt;. Определяет языковую схему, используемую клиентским приложением до момента подключения к соответствующему серверу. После подключения производится принудительная синхронизация языковой схемы. Фактически это происходит в момент отображения окна авторизации. Подробнее в [[#Параметры файла конфигурации серверного приложения|описании ключа]] в разделе серверного приложения.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ServerSelectMode&amp;lt;/span&amp;gt;. Определяет, каким образом происходит выбор сервера в случае, если указано несколько адресов (нижеперечисленные ключи конфигурации). «0» - в окне авторизации отображается список серверов в соответствии с перечислением в конфигурационном файле. При автоматическом переподключении всегда берется последний активный сервер. «1» - осуществляется автоматический перебор серверов начиная с самого первого. Подключение производится к тому, который дал положительный ответ. При автоматическом подключении без окна авторизации в учет берется не только подключение, но и ответ авторизации. Таким образом будет активирован сервер, успешно подключенный и разрешивший вход. В этом случае в окне авторизации список серверов для выбора не отображается. «2» - перебор серверов осуществляется автоматически, начиная с последнего активированного. «3» - случайный выбор сервера. «4» - основной сервер единственный, при потере связи с ним подключение осуществляется к одному из резервных на основании случайного выбора. По умолчанию - 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ConnectBackReserve&amp;lt;/span&amp;gt;. «1» - активирует режим мониторинга за появлением основного сервера в случае, если текущее подключение установлено с резервным сервером. Применяется при настройке резервных схем с преимущественной привязкой к одному серверу.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Раздел &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;Подключения к серверу&amp;lt;/span&amp;gt;.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;NetConnectionName&amp;lt;/span&amp;gt;. Название подключения (сервера) для отображения в окне авторизации (при указании нескольких возможных подключений).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;LogicServerAddress&amp;lt;/span&amp;gt;. Адрес для подключения к серверу логики.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;LogicServerPort&amp;lt;/span&amp;gt;. Порт для подключения к серверу логики.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ConnectProtocol&amp;lt;/span&amp;gt;. Устанавливает протокол, по которому осуществляется подключение клиента к серверу. 0 - по умолчанию 1 - Remoting, 2 - OkTCP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;NETCLIENT_SERVER_ADDRESS&amp;lt;/span&amp;gt;. Адрес для подключения к серверу аппаратуры.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;NETCLIENT_SERVER_PORT&amp;lt;/span&amp;gt;. Порт на сервере для подключения к нему по сигнальному протоколу.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;NETCLIENT_LOCAL_PORT&amp;lt;/span&amp;gt;. Локальный порт для обмена сигнальным трафиком по UDP. Используется для версий 2.9 и ниже, работающих по VOIP-технологии.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;NETCLIENT_VOICE_PORT&amp;lt;/span&amp;gt;. Локальный порт для обмена голосовым трафиком по UDP. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;SipDomain&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;SipDomain&amp;lt;/span&amp;gt;. Переопределяет доменное имя SIP-сервера при отправке регистрационных пакетов с клиентского локального устройства. Явное указание может потребоваться в случае нестандартных настроек NAT сервера.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;SipPort&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;SipPort&amp;lt;/span&amp;gt;. Переопределяет порт SIP-сервера при отправке SIP пакетов с клиентского локального устройства. Явное указание может потребоваться в случае нестандартных настроек NAT сервера. По умолчанию 5060. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;SipLocalPort&amp;lt;/span&amp;gt;. Переопределяет локальный порт клиентского приложения для обмена сигнальным трафиком по протоколу SIP. По умолчанию 5080. Работает начиная с версии 2.11.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;ВНИМАНИЕ! Вышеперечисленные параметры (NetConnectionName, ..., NETCLIENT_VOICE_PORT) определяют различные адреса и порты для организации сетевого канала подключения к серверу. Эти параметры могут присутствовать в конфигурационном файле несколько раз с добавлением к концу строки-ключа разных целочисленных индексов. Например NetConnectionName_1 и NetConnectionName_2. Индекс 0 не указывается, вместо него используется значение без индекса. В случае указания в конфигурационном файле нескольких подключений в окне авторизации будет отображен список их имен и доступен выбор одного из них. Это удобно использовать при работе с несколькими серверами с одних и тех же клиентских рабочих станций.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;SipDomainMode&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;SipDomainMode&amp;lt;/span&amp;gt;. Режим формирования доменного имени при подключении локального устройства по SIP к серверу. По умолчанию используется IP-адрес указанного в конфигурационном файле [[#LogicServerAddress|доменного имени логического сервера]] (''=2''). Варианты: ''0'' - имя хоста серверной машины, ''1'' - указанное в конфигурационном файле [[#LogicServerAddress|доменное имя логического сервера]]. В любом случае доменное имя может быть явно переопределено параметром конфига [[#SipDomain]], если он установлен для текущего подключения. В большинстве случаев изменения значения этого параметра не требуется&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;SipForceKeepAliveIntervalSec&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;SipForceKeepAliveIntervalSec&amp;lt;/span&amp;gt;. Позволяет явно включить и задать интервал в секундах для отправки пакетов Keep-Alive в SIP-подключении к серверу. Может потребоваться при настройках NAT для удерживания порта.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;WORK_ROOTDIR&amp;lt;/span&amp;gt;. Устанавливает в явном виде путь к рабочей папке клиентского приложения. Временные файлы, сценарии, проекты, плагины, каталог по умолчанию для записи разговоров - все кроме основных сборок службы размещается именно там.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;WORK_ROOTDIR_TYPE&amp;lt;/span&amp;gt;. Устанавливает один из нескольких возможных вариантов размещения рабочей папки. Используется, если не задана рабочая папка в явном виде. Возможные варианты: 0 – папка запустившего процесс выполняемого файла, 1 – папка размещения основных сборок приложения, 2 – Documents And Settings\All Users, 3 – Documents And Settings\CurrentUser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;AutoUpdate&amp;lt;/span&amp;gt;. «1» - обновлять клиента автоматически. «0» - не обновлять автоматически при запуске, если обнаружено отличие версий. По умолчанию «1». Настоятельно не рекомендуется оставлять рабочую версию программы со значением «0» и использовать этот режим только для отладочных целей.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;AutoUpdateGateway&amp;lt;/span&amp;gt;. «1» - обновлять шлюз автоматически. «0» - не трогать. По умолчанию «0». В список шлюзов требуется добавить адрес сервера, если подключение  производится к серверу с несколькими сетевыми интерфейсами через интерфейс с индексом более 1. В большинстве случаев указания не требуется.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ManualHostAddress&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ManualHostAddress&amp;lt;/span&amp;gt;. Альтернативный псевдо-адрес клиентского компьютера для идентификации на сервере в карте сети. Может быть использован для подключения к серверу при динамически выделяемом IP-адресе и сложностях с идентификацией по HostName. Каждый клиент должен иметь уникальное значение ключа, не совпадающее с реальными возможными адресами и именами других компьютеров сети.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;TerminalMode&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;TerminalMode&amp;lt;/span&amp;gt;. Определяет режим подстановки адреса (для организации работы в терминальном режиме) - какой адрес берется, какое терминальное расширение для идентификации в карте сети используется (''address/terminalkey''). С помощью настройки вы можете передавать название вашего компьютера через удаленное подключение. &lt;br /&gt;
 0 — адрес локальный, без терминального расширения: ''address''.&lt;br /&gt;
 1 — адрес локальный, терминальное расширение из текущего конфигурационного файла [[#TerminalAddress|TerminalAddress]]: ''address/terminalkey''.&lt;br /&gt;
 2 — адрес локальный, терминальное расширение с помощью текущего авторизованного Win-User: ''address/user''.&lt;br /&gt;
 3 — адрес клиентского терминала (ищется активная сессия авторизованная под совпадающим с текущим win-user), терминальное расширение из текущего&lt;br /&gt;
 конфигурационного файла [[#TerminalAddress|TerminalAddress]]: ''clientaddress/terminalkey''. &lt;br /&gt;
 Если удовлетворяющая условиям терминальная сессия не найдена, то используется локальный адрес. Если терминальное расширение не задано - не используется. &lt;br /&gt;
По умолчанию 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;TerminalAddress&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;TerminalAddress&amp;lt;/span&amp;gt;. Строка, определяющая уникальный адрес клиентского места. Приписывается ко всем адресам компьютера для определения клиентского места в карте офиса (например «FUTURAMA/terminal1»). Именно эту строку необходимо будет указать в карте офиса для идентификации. Решает проблему терминальных подключений, где все клиенты физически запускаются с одного компьютера. По умолчанию «».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ShowLoginAuthMode&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ShowLoginAuthMode&amp;lt;/span&amp;gt;. ''1'' - отображать выбор способа авторизации (active dictionary/oktell), ''0'' - не отображать и использовать всегда стандартный режим. По умолчанию ''1''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;TimeSynchronization&amp;lt;/span&amp;gt;. «1» - синхронизировать время с сервером при запуске, «0» - не синхронизировать. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;RestartApplicationWithProcess&amp;lt;/span&amp;gt;. «1» - любой перезапуск клиента производится с выгрузкой процесса. «0» - выгрузка процесса производится только для применения обновлений, другие перезапуски осуществляются внутри процесса. По умолчанию «0». &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ProcessPriority&amp;lt;/span&amp;gt;. Приоритет процесса клиентского приложения и процесса обслуживания внешних звуковых устройств. «0» - нормальный, «1» - выше среднего, «2» - высокий, «3» - реального времени. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;HAL_skip_loading&amp;lt;/span&amp;gt;. «1» - пропускать загрузку модуля обслуживания устройств работы со звуком. «0» - нормальный режим.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;Register_ocx&amp;lt;/span&amp;gt;. «1» - регистрировать библиотеки обслуживаемых устройств перед запуском, «0» - не регистрировать. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ClientWebServerPort&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ClientWebServerPort&amp;lt;/span&amp;gt;. Устанавливает порт слушателя [[Клиентский_HTTP_интерфейс|HTTP-запросов]] к клиентскому приложению (например запрос http://localhost:4059/callto?number=184 - команда на звонок через Oktell). Доступ возможен только по локальному loopback интерфейсу.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ComAsyncEventing&amp;lt;/span&amp;gt;. Применяется для форсированной активации/отключения соответствующего режима COM-ядра без изменения кода приложения. Активирует/деактивирует режим раздачи событий COM-объекта в асинхронных служебных потоках. Применяется только в случае указания значений «1» или «0». По умолчанию применяется режим, установленный в коде внешнего интегрирующего приложения. Подробно в руководстве по интеграции (раздел «Октелл в других проектах», статья «Загрузка и выгрузка модуля»).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ComXmlFullLogging&amp;lt;/span&amp;gt;. Применяется для форсированной активации/отключения соответствующего режима COM-ядра без изменения кода приложения. Активирует/деактивирует режим полного логирования всех событий и вызовов управляющего объекта. Применяется только в случае указания значений «1» или «0». По умолчанию применяется режим, установленный в коде внешнего интегрирующего приложения. Подробно в руководстве по интеграции (раздел «Октелл в других проектах», статья «Загрузка и выгрузка модуля»).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;TRACE_HARDWARE&amp;lt;/span&amp;gt;. Уровень трассировки аппаратного модуля. Применяется для логирования событий в момент запуска системы. Возможны следующие ключи: CALL, NET, TRANS, SESSION, PROTO, EVENTS, TIMER, ERRORS, WARNING, RTP-FLOW, MEDIA-FLOW. Ключи необходимо перечислить в атрибуте value друг за другом через пробел. Прочитать описание ключей можно в статье [[Логирование#.D0.9F.D0.B0.D1.80.D0.B0.D0.BC.D0.B5.D1.82.D1.80.D1.8B_.D0.B0.D0.BF.D0.BF.D0.B0.D1.80.D0.B0.D1.82.D1.83.D1.80.D1.8B._.D0.9A.D0.BE.D0.BD.D1.84.D0.B8.D0.B3.D1.83.D1.80.D0.B0.D1.86.D0.B8.D1.8F|Логирование]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;SEPARATE_PROCESS&amp;lt;/span&amp;gt;. «1» - запускать отдельный процесс для работы с устройствами. «0» - работать с устройствами в собственном процессе. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;JITTER_DEPTH&amp;lt;/span&amp;gt;. Значение глубины джиттер-буфера на клиенте, измеряемое в количестве пакетов по 20 мс. Минимальное значение - «0», по умолчанию - «6». При увеличении значения происходит рост задержки в голосовом обмене по направлению звука в локальное устройство, эффективнее устраняя влияние проблем сети. При указании «0» джиттер буфер не используется.&lt;br /&gt;
&lt;br /&gt;
Если наблюдается поступление пакетов вперемешку с незначительным разбросом, и/или периодические задержки с последующим одновременным поступлением серии пакетов, увеличение значения может способствовать выравниванию звука. Для диагностики этого явления можно активировать логирование голосового трафика (TRACE_HARDWARE) или использовать программы-перехватчики трафика (снифферы), например WireShark.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;WAVE_COUNT&amp;lt;/span&amp;gt;. Значение, определяющее количество буферов для обмена звуком со звуковым устройством. Минимальное значение - «2», по умолчанию - «2». При увеличении значения происходит рост задержки в голосовом обмене по направлению звука в локальное устройство, эффективнее устраняя влияние проблем в медлительности звукового устройства.&lt;br /&gt;
&lt;br /&gt;
Если при ровно поступающем звуке из сети (диагностировать можно с помощью отладочной записи на входе - WAVE_COUNT, либо с помощью программ-перехватчиков трафика, например WireShark) наблюдается щелканье или пропадание кусков голосового потока, увеличение значения может способствовать выравниванию звука.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;WRITE_VOICE&amp;lt;/span&amp;gt;. Отладочный параметр для оценки звукового потока на входе в клиентский HAL из сети до воспроизведения непосредственно в устройстве. «1» - отладочная запись в файл включена, файл с именем, соответствующим текущему времени размещается в корне клиентского приложения . «0» - отладочная запись отключена. По умолчанию «0».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;WAVEIN_AUTOCLOSE&amp;lt;/span&amp;gt;. «1» - закрывать устройство ввода звука после завершения коммутации. «0» - оставлять открытым. По умолчанию «0». &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;WAVEOUT_AUTOCLOSE&amp;lt;/span&amp;gt;. «1» - закрывать устройство вывода звука после завершения коммутации. «0» - оставлять открытым. По умолчанию «0».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;USE_DIRECTSOUND&amp;lt;/span&amp;gt;. Тип работы со звуком по умолчанию. Выбирается в клиентском интерфейсе. «1» - использовать для работы со звуком библиотеки DirectSound. «0» - обычный режим через системные функции Windows Multimedia (WMM). По умолчанию «0».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;NETCLIENT_PAYLOAD&amp;lt;/span&amp;gt;. Кодек по умолчанию для обмена голосовым трафиком. Выбирается в клиентском интерфейсе. Здесь служит для задания начальной настройки. 0 - 711mulaw, 8 - 711alaw, 41 - gsm610. По умолчанию «8».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PHONEDEVICE_WAVEOUT&amp;lt;/span&amp;gt;. Устройство вывода звука (спикер) по умолчанию. Выбирается в клиентском интерфейсе. Здесь служит для задания начальной настройки.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PHONEDEVICE_WAVEIN&amp;lt;/span&amp;gt;. Устройство ввода звука (микрофон) по умолчанию. Выбирается в клиентском интерфейсе. Здесь служит для задания начальной настройки.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PHONEDEVICE&amp;lt;/span&amp;gt;. Имя устройства по умолчанию. Выбирается в клиентском интерфейсе. Здесь служит для задания начальной настройки.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;SIGNAL_VOLUME&amp;lt;/span&amp;gt;. 0-100. Уровень громкости генерируемых в локальное устройство системных звуков и тонов. По умолчанию 50.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;UseKeyHook&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;UseKeyHook&amp;lt;/span&amp;gt;. Параметр позволяет принудительно отключить режим перехвата действий клавиатуры для управления гарнитурой. Отключение может понадобиться при обнаружении проблем и конфликтов с операционной системой. «1» - режим перехвата активирован. «0» - режим перехвата деактивирован. По умолчанию «1». Выключение требуется на 64 разрядных ОС при работе версий до 2.8.130325.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;default_HeadSet_AutoHookUp&amp;lt;/span&amp;gt;. Определяет используемый по умолчанию режим автоподнятия трубки на гарнитуре при поступлении входящего звонка. После фактического изменения настроек пользователем в параметрах локального устройства значение из конфигурационного файла теряет актуальность. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;default_HeadSet_UseKeyBoard&amp;lt;/span&amp;gt;. Определяет используемый по умолчанию режим перехвата нажатий на клавиатуре для управления гарнитурой. После фактического изменения настроек пользователем в параметрах локального устройства значение из конфигурационного файла теряет актуальность. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;default_HeadSet_UseACM&amp;lt;/span&amp;gt;. Определяет, активен ли по умолчанию режим автодозвона для гарнитуры. После фактического изменения настроек пользователем в параметрах локального устройства значение из конфигурационного файла теряет актуальность. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;default_Phone_ShowRingPopup&amp;lt;/span&amp;gt;. Определяет используемый по умолчанию способ отображения информации о вызывающем абоненте (всплывающее окно/всплывающее уведомление). После фактического изменения настроек пользователем в параметрах локального устройства значение из конфигурационного файла теряет актуальность. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;WatcherResourceLogType&amp;lt;/span&amp;gt;. Формат логирования ресурсов. С помощью параметра можно настроить вывод в клиентский лог-журнал WATCHER информации по использованию процессом ресурсов системы. Объем используемой памяти, количество открытых дескрипторов, количество потоков, пользовательские системные ресурсы, ориентировочное среднее процессорное время по всему процессу и отдельно по всем его потокам. 0 - не логировать, 1 - информация о процессе каждую секунду, 2 - информация о процессе и активным потокам каждую секунду, 3 - информация о процессе и всем его потокам каждую секунду, 4 - информация о процессе каждую минуту. По умолчанию 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;RestoreLastModules&amp;lt;/span&amp;gt;. «1» - осуществляет при загрузке приложения загрузку и восстановление модулей, активных перед закрытием программы. «0» - запускает приложение с пустым фоном без дополнительной загрузки модулей; это экономит время на загрузке, так как некоторые модули требуют достаточно длительного времени для полной загрузки, однако пользователь при необходимости сам может активировать модуль по стандартной схеме из главного меню. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ShowVideoNoise&amp;lt;/span&amp;gt;. «1» - в видео-окне модуля ТЕЛЕФОН при отсутствии видео-сигнала отображается черно-белый шум, «0» - черное окно. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;CameraFrameFrequencyLimit&amp;lt;/span&amp;gt;. Устанавливает ограничение на количество передаваемых кадров из клиентского приложения в сеть в ходе видео-сессии. Может использоваться при необходимости снизить исходящий трафик при видео-коммутациях с настраиваемой клиентской рабочей станцией.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;CameraJitterDepth&amp;lt;/span&amp;gt;. Глубина джиттер-буфера фреймов с камеры. Позволяет нивелировать задержку в выдаче кадров в целях выравнивания отправляемого видео-потока. По умолчанию «3». «0» - не использовать джиттер.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;SkipLoadCamera&amp;lt;/span&amp;gt;. «1» - пропускать загрузку модуля работы с веб-камерой. «0» - нормальный режим.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;Phone_UseBlockedDelay&amp;lt;/span&amp;gt;. «1» - использует асинхронный отложенный механизм по выставлению заблокированного состояния модулю [[Телефон]]. «0» - заблокированное состояние выставляется сразу (может потребоваться при работе на медленных машинах, где асинхронность сказывается отрицательно с приведением телефона в недееспособное состояние. Рекомендуется изменять только при соответствующем запросе службы технической поддержки). По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;Phone_ACMMode&amp;lt;/span&amp;gt;. Определяет порядок действий при нажатии на кнопку «Позвонить» в модуле [[Телефон]]. «0» - стандартная последовательность действий: сначала производится вызов абонента, потом обратный вызов пользователя. «1» - обратная последовательность: сначала производится вызов самого пользователя, потом абонента. См. раздел [[Звонки и сервис автодозвона|Телефон. Звонки]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ACM_directcallfrommodules&amp;lt;/span&amp;gt;. Режим использования сервиса автодозвона в разделах клиентского приложения для доступных команд контекстного меню (Например: Позвонить). По умолчанию ''1''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ACM_callsequence&amp;lt;/span&amp;gt;. Используется при установке ключа '''ACM_directcallfrommodules'''=0. Режим автодозвона в разделах клиентского приложения где доступно контекстное меню &amp;quot;Позвонить&amp;quot;. «0» - сначала абонент, затем обратный вызов пользователя. «1» - сначала обратный вызов пользователя, затем набор номера. По умолчанию ''0''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ACM_switchsequence&amp;lt;/span&amp;gt;. Используется при установке ключа '''ACM_directcallfrommodules'''=0. Режим автодозвона в разделах клиентского приложения где доступно контекстное меню &amp;quot;Переключить&amp;quot;. «0» - сначала абонент, затем обратный вызов пользователя. «1» - сначала обратный вызов пользователя, затем набор номера. По умолчанию ''1''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;PhoneAllowHotline&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PhoneAllowHotline&amp;lt;/span&amp;gt;. ''1'' - разрешить ''HOTLINE'' вызовы из локального устройства на SIP-сервер (при звонке на пустой номер), ''0'' - запретить. По умолчанию ''1''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;HeadsetNonACMMode&amp;lt;/span&amp;gt;. Режим вызова с гарнитуры без использования автодозвона. «0» - сначала обратный вызов пользователя, потом набор абонента. «1» - поднятие трубки, таймаут, набор номера. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;UseAutoReconnectOnFly&amp;lt;/span&amp;gt;. При установке значения «1» в случае потери связи по каналу TCP между клиентом и сервером клиентское приложение будет пытаться переподключиться без перезагрузки. Неактуально при использовании протокола Remoting (по умолчанию порт 4050).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ShowHelpInside&amp;lt;/span&amp;gt;. Определяет, где отображать справку по системе. «0» - в отдельных процессах браузера по умолчанию «1» - во встроенном браузере в окне клиентского приложения. По умолчанию «0».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;PlugRegLoadType&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PlugRegLoadType&amp;lt;/span&amp;gt;. Устанавливает режим загрузки при настройке plugin-программ. «1» - стандартный режим в отдельном домене с последующей выгрузкой. «2» - загрузка plugin-программ в отдельный процесс для настройки. Для загрузки plugin-библиотек используется запускающий модуль oktell.PluginStarter.exe, который может быть скопирован под другим названием. Используемая версия .NET Framework для работы плагина в отдельном процессе определяется в конфигурационном файле этого процесса (по умолчанию oktell.PluginStarter.exe.config). Сам же запускающий модуль (название файла в каталоге клиентского приложения) определяется в конфигурационном файле oktell (клиентском и возможно серверном) с ключом, зависящим от названия основной библиотеки plugin-программы. Например &amp;lt;add key=&amp;quot;PluginTcp_libnamewithoutextension&amp;quot; value=&amp;quot;oktell.PluginStarter2.exe&amp;quot;/&amp;gt;. Существующий модуль oktell.PluginStarter.exe может скопирован под другим именем и снабжен таким образом индивидуальным конфигурационным файлом. Это может понадобиться в частности для применения разных версий .NET Framework к разным plugin-программам.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;AutoSortGroups&amp;lt;/span&amp;gt;. Устанавливает режим сортировки отделов для модуля [[Сотрудники]] по названиям. По умолчанию «1». В случае отключения ожидается, что сортировкой занимается хранимая процедура, результаты ее исполнения выводятся последовательно.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PersonalHandleDepartments&amp;lt;/span&amp;gt;. При установке значения «1» обновление состояний внутренних номеров в разделе [[Сотрудники|«Сотрудники. Отделы»]] производится только для номеров, входящих в выделенный отдел. Имеет смысл применять для сокращения трафика. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;SplitDepartmentsTreeByDot&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;SplitDepartmentsTreeByDot&amp;lt;/span&amp;gt;. «1» - осуществлять построение глубокого дерева вложенных отделов в модуле «Сотрудники», разбивая указанные для сотрудников отделы на категории по символу «.». «0» - одноуровневое дерево отделов. По умолчанию «0».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ExportCsvDelimiter&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ExportCsvDelimiter&amp;lt;/span&amp;gt;. Устанавливает символ-разделитель столбцов при формировании файлов экспорта CSV во всех модулях клиентского приложения. Список возможных значений: comma, space, semicolon, tab.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ExportTextDelimiter&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ExportTextDelimiter&amp;lt;/span&amp;gt;. Устанавливает символ-разделитель столбцов при формировании текстовых файлов с отчетами во всех модулях клиентского приложения. Список возможных значений: comma, space, semicolon, tab.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;CCJournalTopCount&amp;lt;/span&amp;gt;. Для версий ниже 2.11.2.141120. Устанавливает ограничение на количество выводимых строк в статистике Call-центра.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;HandleSessionToChangeUserState&amp;lt;/span&amp;gt;. «1» - при блокировании сессии авторизованного пользователя windows производится автоматический перевод состояния авторизованного пользователя oktell в «Нет на месте». При возврате в сессию производится автоматический перевод в «На месте». При этом перевод не осуществляется, если в момент блокировки пользователь не был свободен (находился в разговоре, в резерве или в состоянии перерыва), при этом не производится и обратного перевода при входе в сессию. «0» - действие по автоматической смене состояний не применяется. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;RecordDownloadNameAddInfo&amp;lt;/span&amp;gt;. «1» - устанавливает режим выгрузки записей разговоров статистики с включением в имена файлов имен участвующих абонентов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;Memory_UseSameDialogForms&amp;lt;/span&amp;gt;. «1» - активирует режим использования одних и тех же окон в режиме операторских диалоговых форм без уничтожения и создания при каждом показе. Используется на компьютерах с минимальным объемом оперативной памяти во избежание скачкообразного роста используемой памяти. «0» - деактивирует режим. По умолчанию «0».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;Debug_PingErrorRestart&amp;lt;/span&amp;gt;. «0» - отключает автоматическую перезагрузку клиентского приложения при отсутствии откликов сервера на команды Ping. Используется для отладочных режимов, в основном при отладке plugin-программ. «1» - обычный режим. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PingTimeoutNotify&amp;lt;/span&amp;gt;. Устанавливает период в миллисекундах, при превышении которого в момент вызова метода Ping возникает уведомление о плохой связи с сервером. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;Debug_PingPause&amp;lt;/span&amp;gt;. Устанавливает паузу между опросами от клиентского приложения к серверу.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;Debug_PingOutTimes&amp;lt;/span&amp;gt;. Устанавливает количество неудачных опросов, после которого закрывать клиентское приложение.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ActivationServer&amp;lt;/span&amp;gt;. Ссылка на сайт активаций для режима автоматической активации тестовой версии. По умолчанию «http://activate.telsystems.ru».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;ShowLoadingBar&amp;lt;/span&amp;gt;. Отображает полосу загрузки при открытии модулей клиентского приложения. В некоторых случаях, улучшает работу отрисовки приложения. «0» - не отображает, «1» - отображает. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;helplinks&amp;lt;/span&amp;gt;. Тип используемой справки: «0» - встроенная справка в файле manual.chm, «1» - ссылка на вики. По умолчанию «1».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;BrowserType&amp;lt;/span&amp;gt;. Используемый браузер в приложении: «1»- IE7, «2»- IE7, «3»- Chrome18. По умолчанию «3»&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;FaxPreperformProcess&amp;lt;/span&amp;gt;. Режим работы факса при отправке с клиентского приложения: «0» - обычный режим отправки изображений с преобразованием на сервере к необходимому виду. «1» - использование локального XPS-принтера для изготовления общего многостраничного файла TIFF из нескольких выбранных документов (для этого режима необходимы .NET Framework 3.0, установленный Microsoft Office версии 2003 или старше, установленный XPS принтер). По умолчанию «0».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;AutoUserStateChangeOnSystemLock&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;AutoUserStateChangeOnSystemLock&amp;lt;/span&amp;gt;. 1 - активирует режим автоматического перевода состояния пользователя в ''Отключен'' или ''Перерыв'' (в зависимости от присутствия пользователя в режиме Call-центра) при блокировке ОС и автоматический перевод обратно при входе в систему снова. 0 - не использует режим. По умолчанию 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;PhoneDirectDigit&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PhoneDirectDigit&amp;lt;/span&amp;gt;. Определяет поведение софт-телефона. 1 - в активном состоянии набор символов осуществляется по одному, ввод в текстовое поле невозможен, кнопка «Набрать» недоступна. 0 - набор осуществляется в текстовое поле, после чего кнопкой «Набрать» отправляется на сервер. По умолчанию 0. Это касается состояний набора номера, коммутаций с абонентами, коммутаций с IVR, ожидания ответа, ожидания факс-сеанса.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PhoneIvrDirectDigit&amp;lt;/span&amp;gt;. Определяет поведение софт-телефона в состоянии коммутации с IVR при отключенном режиме прямого набора символов. 1 - позволяет активировать прямой набор только для случая коммутации с IVR. 0 - оставляет доступным только набор в текстовое поле с последующей отправкой по нажатию на «Набрать», при этом сценарий завершается и осуществляется набор номера по-новой. По умолчанию 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;PhoneLineDirectDigit&amp;lt;/span&amp;gt;. Определяет поведение софт-телефона в состоянии коммутации с абонентом при отключенном режиме прямого набора символов. 1 - позволяет активировать прямой набор только для случая коммутации с абонентом. 0 - оставляет доступным только набор в текстовое поле с последующей отправкой по нажатию на «Набрать», при этом осуществляется переключение. По умолчанию 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Раздел &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;LOG&amp;lt;/span&amp;gt;.'''&lt;br /&gt;
&lt;br /&gt;
Хранит настройки лог-сервера комплекса. Среди неописываемых настроек - пути к папкам для сбора журналов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;LOG_storedays&amp;lt;/span&amp;gt;. Длительность хранения лог-журналов в днях. По умолчанию «7». По истечении указанного периода журналы удаляются системой. В некоторых случаях объем журналов может достигать нескольких гигабайтов за день.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;LOG_maxfilesize&amp;lt;/span&amp;gt;. Максимальный размер одного файла лог-журнала в байтах. Имеет воздействие на все лог-журналы, исключая HAL (Hardware). По умолчанию 3 ГБ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;LOG_root&amp;lt;/span&amp;gt;. Абсолютный или относительный путь к папке с лог-журналами. По умолчанию «Log», то есть относительный путь в каталоге  клиентского приложения.&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>Okapp_2.12</id>
		<title>Okapp 2.12</title>
		<link rel="alternate" type="text/html" href="Okapp_2.12"/>
				<updated>2023-06-08T06:29:05Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Утилиты | Наверх]]    &amp;lt;span style=&amp;quot;color:darkviolet&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;[Oktell 2.12+]&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;ul&amp;gt;Предыдущие версии статьи&amp;lt;li&amp;gt;[//wiki.oktell.ru/Okapp Okapp]&amp;lt;/ul&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Введение =&lt;br /&gt;
&lt;br /&gt;
'''Okapp''' —  web-приложение для работы и настройки Oktell в браузере. Не требует установки дополнительного ПО кроме браузера, что позволяет использовать операционные системы отличные от '''Windows''' ('''Linux''', '''iOS''', '''Android''' и др). Напомним, что стандартное клиентское приложение может работать только в ОС '''Windows'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Okapp представляет из себя одностраничное веб-приложение и состоит из следующих функциональных частей:&lt;br /&gt;
*Боковое меню — отображаются все модули, до которых у пользователя есть доступ. Следует учитывать, что некоторые приложения могут работать в фоновом режиме (например, карточка оператора).&lt;br /&gt;
*Основное окно активного модуля — отображение рабочей области расширения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:okapp_212_1.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Настройки профиля текущего пользователя располагаются в левом нижнем углу меню. &lt;br /&gt;
&lt;br /&gt;
[[Файл:okapp_212_16.jpg|center|800px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Функционал смены пароля доступен только при установке соответствующей привилегии в роли пользователя.&lt;br /&gt;
&lt;br /&gt;
[[Файл:okapp_212_17.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Установка =&lt;br /&gt;
&lt;br /&gt;
Чтобы использовать '''Okapp''', предварительно''' настройте Web-сервер Oktell'''. Воспользуйтесь статьей: [[Настройка_Web-сервера_Oktell | Настройка Web-сервера Oktell]]. &lt;br /&gt;
&lt;br /&gt;
Для входа наберите в браузере '''ip-адрес''' сервера '''Oktell'''.&lt;br /&gt;
&lt;br /&gt;
Например, &lt;br /&gt;
&lt;br /&gt;
 http://192.168.0.82&lt;br /&gt;
 http://192.168.0.82:4055&lt;br /&gt;
 http://192.168.0.82:50500&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; ВНИМАНИЕ: Если у вас закрыт '''порт 80''', то для подключения необходимо дополнительно указать доступный порт, как показано в примере. &lt;br /&gt;
&lt;br /&gt;
Возможны два варианта подключения: &lt;br /&gt;
&lt;br /&gt;
* '''с привязкой к IP-телефону''' — для совершения звонков используется IP-телефон&lt;br /&gt;
* '''с использованием гарнитуры''' — используется технология WebRTC. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; ВНИМАНИЕ: Если '''Oktell''' находится за '''NAT-устройством''' пробросьте следующие порты: &amp;lt;/span&amp;gt;&lt;br /&gt;
* Для работы в браузере необходимы порты, которые указаны в настройках '''Web-сервера'''. По умолчанию, '''80, 443, 4055, 4066 (tcp)'''.&lt;br /&gt;
* Для работы по технологии '''WebRTC''' дополнительно необходимы порты '''5060 (tcp), 5070 (tcp), 9000-19000 (udp)'''. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; ВНИМАНИЕ: &amp;lt;/span&amp;gt; Для избежания проблем с регистрацией голосового канала зайдите в '''Администрирование''' - '''Параметры аппаратуры''' - '''Сервер ip-телефонии по протоколу SIP/2.0'''. В поле '''Список дополнительных доменов для регистрации''' укажите через пробел сетевое имя компьютера (например, '''OKTELLSERVER''') или домен сервера (например, '''Oktell.ru'''). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:ДоменДляРегистрации.png | 700 px | center]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Работа с привязкой к ip-телефону ==&lt;br /&gt;
&lt;br /&gt;
Чтобы сотрудник смог совершать и принимать звонки с IP-телефона, в карте сети необходимо закрепить этот телефон за сотрудником. &lt;br /&gt;
&lt;br /&gt;
Зайдите в '''Администрирование''' -&amp;gt; '''Карта сети''' -&amp;gt; '''Настройки телефона'''. Выберите сотрудника в поле '''Пользователь WebCRM'''. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Файл:Oktelljs-004.png | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Работа с использованием гарнитуры ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Использовать гарнитуру можно в браузере '''Google Chrome''' до [https://yadi.sk/d/YNO3uxsv8h8mwA 70 версии] включительно(старые версии доступны, например, [https://www.slimjet.com/chrome/google-chrome-old-version.php здесь]), а также в '''Opera''' и '''Яндекс.Браузер'''. &lt;br /&gt;
&lt;br /&gt;
Чтобы использовать гарнитуру необходимо, чтобы '''Oktell''' выделил динамическую линию. В серверном конфигурационном файле ('''\oktell\server\oktell.ServerService.exe.config'''), определите параметр '''EnableAutoMap'''. Если у вас нет такого ключа, добавьте его. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;add key=&amp;quot;EnableAutoMap&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если '''EnableAutoMap = 1''', то в клиентское приложение можно заходить с любого компьютера, не определенного в карте сети и к нему автоматически будет прикрепляться '''динамическая''' внутренняя линия (гарнитура). Если '''EnableAutoMap = 0''', то зайти в клиентское приложение можно только с тех компьютеров, которые определены в карте сети. &lt;br /&gt;
&lt;br /&gt;
Перезагрузите службу сервера '''OktellServer'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Oktelljs-006.png | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
При входе в Okapp после нажатия кнопки &amp;quot;'''Войти'''&amp;quot; для получения доступа к гарнитуре нажмите &amp;quot;'''Разрешить'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; [[Файл:Okapp_212_2.jpg| 500px]][[Файл:Okapp_212_3.jpg| 500px]] &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Возможности приложения =&lt;br /&gt;
&lt;br /&gt;
==Модуль &amp;quot;Телефон&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
Удобная панель, с помощью которой вы сможете совершать и принимать звонки, осуществлять переключения абонентов на других сотрудников и быстро создавать конференции для совещаний. &lt;br /&gt;
&lt;br /&gt;
В веб-панели вы можете настроить отображение номерного плана с помощью следующих опций:&lt;br /&gt;
* группировать по разделам или показывать единым списком&lt;br /&gt;
* показывать всех пользователей или только доступных &lt;br /&gt;
&lt;br /&gt;
Для совершения звонка, выберите в модуле нужного пользователя и нажмите на значок зеленой трубки либо наберите необходимый номер в поле (с подсказкой &amp;quot;введите имя или номер&amp;quot;) и нажмите '''Enter'''. Если сотрудник занят - то его имя подсвечивается красным цветом. &lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_8.jpg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
Для номеров которые находятся в свободном состоянии в меню действий доступны возможности: &lt;br /&gt;
*позвонить - вызов данного номера&lt;br /&gt;
*конференция - добавление данного номера в конференцию при активном разговоре, либо создание конференции со своим пользователем если в данный момент активного разговора нет&lt;br /&gt;
*интерком - вызов данного номера в режиме интерком (необходима поддержка со стороны вызываемого устройства)&lt;br /&gt;
&lt;br /&gt;
Для номеров которые находятся в разговоре в меню действий доступны возможности:&lt;br /&gt;
*позвонить - вызов данного номера, если установлена очередь ожидания, то постановка в очередь.&lt;br /&gt;
*конференция - подключение к активному разговору в режиме конференции, при наличии прав контроля.&lt;br /&gt;
*интерком - вызов данного номера в режиме интерком (необходима поддержка со стороны вызываемого устройства), если установлена очередь ожидания, то постановка в очередь.&lt;br /&gt;
*прослушка - подключение к звонку в режиме прослушивания ([//wiki.oktell.ru/Прослушивание_и_помощь#.D0.9F.D1.80.D0.BE.D1.81.D0.BB.D1.83.D1.88.D0.B8.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5 Прослушивание])&lt;br /&gt;
*помощь -  подключение к звонку в режиме помощи ([//wiki.oktell.ru/Прослушивание_и_помощь#.D0.9F.D0.BE.D0.BC.D0.BE.D1.89.D1.8C Помощь])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Во время разговора доступны:&lt;br /&gt;
*меню действий (1) в котором есть возможность: &lt;br /&gt;
**завершить разговор&lt;br /&gt;
**поставить абонента на удержание&lt;br /&gt;
**преобразовать данный разговор в конференцию&lt;br /&gt;
**активировать панель донабора&lt;br /&gt;
*панель донабора (2)&lt;br /&gt;
*меню действий (3) в котором есть возможность:&lt;br /&gt;
**позвонить - дозвон до данного номера, при этом текущий звонок будет переключен в режим удержания&lt;br /&gt;
**перевести - безусловный перевод на данный номер&lt;br /&gt;
**конференция - дозвон до данного номера и добавление его к текущему разговору&lt;br /&gt;
**интерком - дозвон до данного номера в режиме интерком (необходима поддержка со стороны вызываемого устройства), при этом текущий звонок будет переключен в режим удержания&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_6.jpg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В нижней части приложения доступна панель статусов. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; [[Файл:Okapp_212_9.jpg|800px]] &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*При выборе статуса группы &amp;quot;Call-центр&amp;quot; (Автоматический режим, Ручной режим, Перерыв) произойдет автоматический вход пользователя в Call-центр. &lt;br /&gt;
&lt;br /&gt;
*Аналогично для обратной ситуации, пользователь будет выведен из Call-центра при выборе статуса из группы &amp;quot;Офисная телефония&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
*Варианты типов предустановленных перерывов можно задать в общих настройках системы [[//wiki.oktell.ru/Настройки_Call-центра#.D0.A1.D0.BF.D0.B8.D1.81.D0.BE.D0.BA_.D0.BF.D1.80.D0.B5.D0.B4.D1.83.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BB.D0.B5.D0.BD.D0.BD.D1.8B.D1.85_.D0.BF.D0.B5.D1.80.D0.B5.D1.80.D1.8B.D0.B2.D0.BE.D0.B2 Типы предустановленных перерывов]]. &lt;br /&gt;
&lt;br /&gt;
*В поле для ввода у статуса &amp;quot;Переадресация&amp;quot; можно ввести номер на который будет автоматически переведен звонок при установке данного состояния пользователем.&lt;br /&gt;
&lt;br /&gt;
*Сняв галочку с режима &amp;quot;Веб-телефон&amp;quot; пользователь перейдет в состояние &amp;quot;Без телефона&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*Режим &amp;quot;Автоответ&amp;quot; позволяет автоматически снимать трубку при поступлении вызова. Запрет изменения параметра, а так же значение по умолчанию можно установить в ролях пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_10.jpg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; ВНИМАНИЕ: Если вы просто закроете вкладку в браузере, то приложение выполнит выход в течение 1 минуты. &lt;br /&gt;
&lt;br /&gt;
Чтобы выйти из приложения нажмите &amp;quot;'''Выйти'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Модуль &amp;quot;Кабинет оператора&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
Рабочее место оператора call-центра с личной информацией&lt;br /&gt;
&lt;br /&gt;
При наличии лицензий Call-центра для работы операторов и приема звонков по задачам, установите модули '''Карточка оператора''' и '''Кабинет оператора'''. С помощью этих модулей вы сможете использовать диалоговые карточки и веб-формы также, как и в стандартном клиентском приложении. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: При работе с web-страницами вы не сможете считывать введенные значения. Такой функционал доступен только при работе в стандартном клиентском приложении&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В процессе работы оператор видит следующие статистические показатели своей работы: Время, проведенное в работе и время до конца рабочего дня; Время, проведенное в перерыве; Время, проведенное в разговоре и занятость оператора в процентах; Количество всех и успешных звонков.&lt;br /&gt;
&lt;br /&gt;
В правой части модуля отображается список всех задач. Во время разговора с внешним абонентом, оператор может прикрепить звонок к определенной задаче. В этом случае откроется диалоговая форма, в которой будет доступны поля для ввода информации, а также звонок будет учитываться в статистике Call-центра.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_27.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
==Модуль &amp;quot;Сообщения&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
Модуль для мгновенного обмена сообщениями между сотрудниками. При создании вы можете выбрать тип диалога &amp;quot;Личное сообщение&amp;quot; (1) или &amp;quot;Конференция&amp;quot; (2).&lt;br /&gt;
&lt;br /&gt;
Создатель конференции является управляющим и может добавлять или удалять пользователей из беседы, остальные участники могут только добавить нового пользователя или удалить себя из списка участников.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_12.jpg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Слева от названия модуля отображается индикатор в виде красной точки при наличии непрочитанных сообщений, в списке диалогов красным выделены чаты в которых имеются непрочитанные сообщения.&lt;br /&gt;
&lt;br /&gt;
При получении нового сообщения отображается всплывающее уведомление с текстом и именем отправителя (в случае конференции отобразится название конференции).&lt;br /&gt;
Для того чтобы сообщение отметилось как прочитанное достаточно навести на него курсор мыши.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_13.jpg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если установлен &amp;quot;Модуль Телефон&amp;quot; и существуют доступные абонентские устройства для данного пользователя, вы можете совершать звонок из окна диалога используя соответствующее меню действий или нажав на кнопку позвонить.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_14.jpg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
К сообщению можно так же прикрепить файл, для этого вы можете нажать на соответствующую кнопку в окне набора сообщения и выбрать необходимый документ на компьютере. Данный файл будет отображаться всем пользователям которые участвуют в диалоге и используют web-приложение. В окне чата в клиентском приложении Oktell файл отображаться НЕ будет (если было написано сообщение и к нему прикреплен файл, то отобразится только текст).&lt;br /&gt;
&lt;br /&gt;
==Модуль &amp;quot;Журнал&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модуль для просмотра информации по звонкам, голосовой почте и уведомлениям пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модуль состоит из нескольких вкладок. В окне (1) можно выбрать дату отображения звонков, при этом будут отображены звонки за данный день и ранее.&lt;br /&gt;
&lt;br /&gt;
'''1)'''Мои звонки - Каждый сотрудник может просмотреть историю своих звонков (2). Отображаются входящие, исходящие, пропущенные звонки и конференции. При выборе разговора (3) его можно прослушать и добавить заметку или тег.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_18.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Рядом с названием вкладки отображается количество непросмотренных пропущенных звонков, при нажатии на значок будут отображены данные звонки.&lt;br /&gt;
&lt;br /&gt;
При выборе успешного звонка в окне (3) вы можете:&lt;br /&gt;
*Прослушать звонок - при наличии привилегии &amp;quot;Возможность прослушивать записи&amp;quot; у данного пользователя, иначе при попытке прослушать запись будет отображена фраза - запись не найдена.&lt;br /&gt;
*Оставить заметку - при наличии привилегии &amp;quot;Возможность оставлять комментарии&amp;quot; у данного пользователя, иначе будут отображены существующие комментарии без возможности редактирования.&lt;br /&gt;
*Добавить тег - выбрать из существующего списка тегов, либо ввести название нового, он будет создан автоматически.&lt;br /&gt;
*Скачать запись - при наличии привилегии &amp;quot;Возможность выгружать записи&amp;quot; у данного пользователя.&lt;br /&gt;
*Удалить запись - при наличии привилегии &amp;quot;Возможность Удалять записи разговоров&amp;quot; и &amp;quot;Возможность удалять записи любых конференций&amp;quot; в зависимости от типа звонка у данного пользователя&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Файл:Okapp_212_19.jpg|500px]][[Файл:Okapp_212_21.jpg|578px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Справа от кнопки воспроизведения отображается карта разговора, а так же для каждого участника рассчитывается процент владения разговором. Для отображения данных необходимо активировать параметры в разделе &amp;quot;Администрирование&amp;quot; - &amp;quot;Общие настройки&amp;quot; - &amp;quot;Управление базами данных&amp;quot; - &amp;quot;Рассчитать время владения разговором участниками&amp;quot; и &amp;quot;Рассчитывать детальную карту владения разговором участниками&amp;quot; &lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_25.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2)'''Голосовая почта - Вкладка предназначена для прослушивания голосового ящика и просмотра заказов на встречный звонок. Для каждого сообщения, сотрудник может оставить комментарий. Рядом с названием вкладки (окно 1) отображается количество непросмотренных обратных звонков и сообщений голосовой почты, при нажатии на значок будут отображены данные сообщения (окно 2).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_22.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3)'''Уведомления - На вкладке показываются уведомления от бизнес-процессов компании, настроенных в сценариях. При удалении сообщения будет запрошено подтверждение операции.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_23.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4)'''Звонки коллег - Сотрудник может просмотреть и прослушать звонки всех подчиненных ему коллег. Доступные действия и доступ к ним аналогичны описанным во вкладке &amp;quot;Мои звонки&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_24.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
==Модуль &amp;quot;Сценарии&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Графический редактор настройки сценариев.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_20.jpg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В области 1 расположены все проекты созданные ранее, а так же можно создать новый проект. После выбора проекта в области 2 доступны для выбора сценарии данного проекта либо можно создать новый. Сценарии группируются по проектам, доступ к которым выдается в соответствии с правами на проект. Сценарии «Вне проекта» доступны всем пользователям, у которых есть доступ к модулю.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сценарии создаются в графическом редакторе, который содержит 60 компонентов для взаимодействия с абонентом, работы с данными и контакт-сервисами. У каждого элемента есть свойства. Чтобы назначить переход между компонентами, зажмите клавишу CTRL и левой кнопкой мыши протяните линию от начального до конечного элементов. По завершению настройки назначьте права на доступ к сценариям и сохраните его.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_26.jpg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Более подробно о сценариях можно прочитать по ссылке [//wiki.oktell.ru/Сценарии Сценарии]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Модуль &amp;quot;Управление&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модуль позволяет создавать и настраивать пользователей, отделы и роли. Доступ к этому модулю рекомендуется выдавать только администраторам системы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Сотрудники и отделы'''&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_28.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пользователи''' — учетные записи сотрудников, имеющих доступ к системе. В модуле администратор настраивает персональные данные пользователей, их роли и права контроля. Для пользователя возможны действия: сохранить, уволить, удалить. Окно настройки пользователя состоит из следующих вкладок:&lt;br /&gt;
&lt;br /&gt;
*Анкета. Персональные данные сотрудника: имя, отдел, учетная запись для авторизации, возможность назначения на задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_29.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Роли. Настройка ролей и персональных привилегий. Привилегии определяют право совершения действий и доступ к модулям.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_30.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Контроль. Список руководителей и подчиненных. Руководители могут просматривать статистику звонков, прослушивать записи разговоров и подключаться к разговорам подчиненных.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_31.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Доступ. Список объектов системы, доступные выбранному пользователю.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_32.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Управление ролями'''&lt;br /&gt;
&lt;br /&gt;
'''Роль''' — набор привилегий и прав. Роли упрощают настройку прав для однотипных сотрудников. В системе предустановлено 5 базовых ролей. Каждую роль можно сохранить, переименовать, клонировать или удалить. Окно настройки роли состоит из следующих вкладок:&lt;br /&gt;
&lt;br /&gt;
*Привилегии. Набор привилегий, доступных роли. Родительская роль позволяет создавать модификации ролей с наследованием привилегии одной роли от другой. Например, роль «Oktell_user» наследует привилегии от роли «Пользователь (системная)», но отличается по нескольким из них.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_33.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Состав. Список пользователей, которые имеют данную роль.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_34.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Доступ. Список объектов системы, доступные выбранной роли.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_35.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
== Управление приложениями ==&lt;br /&gt;
&lt;br /&gt;
'''Okapp''' имеет модульную структуру, которая может быть настроена индивидуально для каждой компании. Каждый модуль — это самостоятельная программа, которая может устанавливаться и обновляться независимо с помощью системного приложения &amp;quot;'''Магазин'''&amp;quot;. Установленные приложения отображаются в боковом меню Okapp. Магазин постоянно пополняется сообществом Oktell. Вы тоже можете принять участие в создании новых модулей, прочитав статью [[Создание модуля для Okapp]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_36.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
На момент написания статьи в '''Магазине''' доступны 6 модулей:&lt;br /&gt;
*'''Веб-клиент''' — предоставляет возможность для обновления системы&lt;br /&gt;
*'''Карточка оператора''' —  модуль, показывающий при звонке диалоговую форму для оператора Call-центра;&lt;br /&gt;
*'''Журнал''' — позволяет просматривать историю звонков, голосовую почту и заказы на встречные звонки, системные уведомления и прослушивать разговоры всех подчиненных ему коллег;&lt;br /&gt;
*'''Сообщения''' — модуль позволяет вести переписку с другими сотрудниками, передавать файлы и создавать конференции для обсуждения важных вопросов;&lt;br /&gt;
*'''Кабинет оператора''' — предназначен для отображения всех статистических показателей работы сотрудника, например времени, проведенного в работе и времени до конца рабочего дня;&lt;br /&gt;
*'''Магазин''' — изначально установленный в системе,позволяет устанавливать и обновлять другие приложения; &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для установки модуля выполните следующие пункты:&lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Перейдите в модуль &amp;quot;'''Магазин'''&amp;quot;. Выберите интересующее вас приложение и нажмите &amp;quot;'''Установить'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Для выполнения этого действия необходимо наличие у пользователя права доступа &amp;quot;'''Установка приложений'''&amp;quot;.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_37.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' После установки нового модуля администраторы системы автоматически получают права на использование приложения. Остальным пользователям необходимо отдельно выделить права на установленные расширения в клиентском приложении ('''Администрирование'''\'''Пользователи'''\'''Доступ''').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Okapp_212_38.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Просмотреть установленные приложения вы можете в модуле &amp;quot;'''Магазин'''&amp;quot; нажав на кнопку &amp;quot;'''Мои'''&amp;quot;. Чтобы вернуться к списку всех доступных приложений, нажмите кнопку &amp;quot;'''Все'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Обновление и удаление модулей также выполняется в &amp;quot;'''Магазине'''&amp;quot;. Обратите внимание, на наличие соответствующих прав у пользователя.&lt;br /&gt;
&lt;br /&gt;
=Возможные проблемы =&lt;br /&gt;
&lt;br /&gt;
'''1.''' Okapp не подключается и выдает сообщение '''Ошибка соединения сервером''' &lt;br /&gt;
&lt;br /&gt;
*Проверьте наличие ключа '''EnableAutoMap = 1''' в серверном конфигурационном файле '''oktell.ServerService.exe.config'''. Если этого ключа нет, добавьте следующую строку:&lt;br /&gt;
 &amp;lt;add key=&amp;quot;EnableAutoMap&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Проверьте, не занят ли порт 80 или 4055 сторонним приложением с помощью команды &amp;lt;code&amp;gt;netstat -anopb tcp&amp;lt;/code&amp;gt; в командной строке. Порты должны быть заняты процессом oktell.ServerService.exe. Попробуйте зайти в okapp с помощью порта 50500, предварительно укажите его в настройках [[Настройка Web-сервера Oktell]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2.''' Okapp не регистрирует веб-телефон через wss-соединение. &lt;br /&gt;
*Нет слушателя на порту 5070. В серверном конфигурационном файле '''oktell.ServerService.exe.config''' добавьте порт sips:*:5070 (TLS) для защищенных соединений. Пример:&lt;br /&gt;
&amp;lt;pre&amp;gt; &amp;lt;add key=&amp;quot;START_SERVER_04&amp;quot; value=&amp;quot;SIP Server;oktell.HALSipSrv.dll;SIP;sip:*:5060,sips:*:5070&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Не указан домен в списке дополнительных доменов для регистрации в Параметрах аппаратуры&lt;br /&gt;
*Нет права на использование модуля &amp;quot;Телефон&amp;quot;. Чтобы внутренняя линия зарегистрировалась, установите привилегию на модуль &amp;quot;Телефон&amp;quot; в настройках пользователя. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3.''' Периодически пропадает соединение с Okapp, отключается внутренняя линия. &lt;br /&gt;
*Проверьте параметр &amp;quot;Способ соединения с сервером CRM&amp;quot; в модуле '''Администрирование/Общие настройки/Web-интеграция с CRM'''. Если у вас выбран способ &amp;quot;Oktell к CRM&amp;quot;, то в поле &amp;quot;URL CRM-сервера&amp;quot; '''не должно быть''' строки &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://:80&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Возможно, вы случайно указали этот параметр, поэтому либо измените его на действительный адрес CRM-сервера, либо переключите &amp;quot;Способ соединения с сервером CRM&amp;quot; на &amp;quot;''Не использовать''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Метод диагностики неполадок ===&lt;br /&gt;
&lt;br /&gt;
В браузере Google Chrome нажмите F12. Затем войдите в Okapp с параметром debug: &lt;br /&gt;
&lt;br /&gt;
 http://192.168.0.82:50500?debug&lt;br /&gt;
&lt;br /&gt;
Затем введите ваши учетные данные, попробуйте совершить звонок. Все ошибки, которые возникают в приложении будут выводиться на вкладке '''Сonsole'''. Это может дать вам информацию о проблемах в веб-приложении. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Проблемы с okapp 001.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Отправляемые и получаемые сообщения от сервера Oktell вы можете на вкладке '''Network/WebSockets'''. Далее выберите нужный WebSocket и откройте вкладку Frames, на которой вы увидите всю необходимую трассировку (команды oktell.js; SIP-сообщения)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Проблемы с okapp 002.png|center|800px]]&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%A1%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0</id>
		<title>Статистика</title>
		<link rel="alternate" type="text/html" href="%D0%A1%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0"/>
				<updated>2023-05-25T09:31:05Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Диаграммы и настройка */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;code&amp;gt;[[Техническая документация]] / [[Call-центр]] / [[Статистика]] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модуль статистики call-центра доступен супервизорам, администраторам и другим пользователям, обладающим соответствующим правом. Для пользования модулем необходимо зарегистрироваться в call-центре системы. Служит для построения хронологических отчетов различной формы и содержания. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Журнал звонков===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Самым основным отчетом является журнал звонков. Полученная с помощью фильтра, накладываемого на выборку, информация дает возможность прослушать любую из перечисленных в таблице коммутаций. Дважды щелкните на записи для отображения проигрывателя. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Данные, отображаемые пользователю, помимо установленного им фильтра будут отфильтрованы согласно правам на проекты. Информация по задаче в журнале видна только ее супервизорам и имеющим доступ к ее проекту.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;ВНИМАНИЕ! При запросе больших объемов данных необходимо учитывать, что это создает дополнительную нагрузку на процессорное время сервера БД и сетевой трафик. В некоторых случаях это может отразиться на качестве разговоров, осуществляющихся через VoIP шлюз сервера&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Полученные результаты доступны для экспорта в текстовые файлы, в файлы MS Excel и HTML. Также доступна выгрузка записей всех разговоров, попадающих под условие фильтра. Необходимо иметь в виду, что выгрузка записей осуществляется в их текущем состоянии. Используйте предварительное микширование, чтобы гарантировать объединение разговоров в один файл.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Диаграммы и настройка===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Содержание и количество прочих отчетов не ограничено. По умолчанию модуль содержит ряд предустановленных отчетов, оценивающих основные показатели работы call-центра на основе полной статистики, собираемой системой в отдельную БД. Статистическая БД Oktell хранит данные в виде пространственной модели (OLAP-кубов), данные в которую попадают в процессе работы. Перечень существующих в ней кубов продолжает расширяться. Это и куб коммутаций, попыток звонков по задачам, куб состояний операторов, куб состояний очереди ожидания. Подробнее в разделе [[Структура пространственной БД]].&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Пользователи системы могут редактировать существующие отчеты и создавать новые. Также доступны функции экспорта и импорта отчетов, позволяющими вести динамический обмен со сторонними пользователями и разработчиками.&lt;br /&gt;
&lt;br /&gt;
Отчеты подчиняются политике прав доступа. Параметры доступа к ним определяются на соответствующей вкладке «Доступ». Доступные привилегии: чтение, изменение. Также применяется общая ролевая привилегия ''«Возможность редактирования запросов SQL»''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Технология OLAP в простом виде позволяет получить из пространственных таблиц любые срезы. Несмотря на простоту использования звездной схемы пространственной БД, большинство сложных отчетов строятся не путем среза данных OLAP-куба, а на основе отдельных различной степени сложности алгоритмов. При создании отчетов администратор баз данных может  подключить в качестве источника данных любой запрос как из всех баз данных Oktell, так и из любых других баз данных. Таким же образом можно производить анализ полученных данных в каждом конкретном проекте, строя отчеты под конкретные задачи, в частности на основе таблиц абонентов.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Этот механизм полной произвольности отчетов предоставляет широкие возможности как для администраторов БД, так и для супервизоров.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
В основе любого отчета лежит выборка данных, в которой есть одно или несколько полей с показателями, а также поля категорий, по которым эти показатели строятся. В зависимости от типа отображения отчета, категории объединяются в одну или несколько осей.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Среди вариантов отображения:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|График&lt;br /&gt;
|Одна ось, каждый элемент оси может иметь несколько показателей. На одном изображении разным цветом строятся графики соответствующих показателей. Масштаб отображения показателей может быть общим или раздельным на усмотрение создателя отчета.&lt;br /&gt;
Поддерживает выгрузку в файл изображения. Поддерживает большие объемы данных, отображая графически-зависимую полосу прокрутки.&lt;br /&gt;
|[[Файл:cl_cc_stat_i7.png]] &lt;br /&gt;
|-&lt;br /&gt;
|Точки&lt;br /&gt;
|Одна ось, каждый элемент оси имеет может иметь несколько показателей. На одном изображении разным цветом отображаются точки, соответствующие значениям своих показателей. Масштаб отображения показателей может быть общим или раздельным на усмотрение создателя отчета.&lt;br /&gt;
Поддерживает выгрузку в файл изображения. Поддерживает большие объемы данных, отображая графически-зависимую полосу прокрутки.&lt;br /&gt;
|[[Файл:cl_cc_stat_i8.png]]  &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;div id=&amp;quot;VertHysto&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;Вертикальная гистограмма&lt;br /&gt;
|Аналогична графику, но ориентирована вертикально.&lt;br /&gt;
|[[Файл:cl_cc_stat_i10.png]]  &lt;br /&gt;
|- &lt;br /&gt;
|Соотношение&lt;br /&gt;
|Одна ось, каждый элемент оси может иметь несколько показателей, каждый из которых отображается отдельной полосой. &lt;br /&gt;
Вид отчета аналогичен виду модуля «Индикаторы».&lt;br /&gt;
|[[Файл:cl_cc_stat_i9.png]] &lt;br /&gt;
|-&lt;br /&gt;
|Диаграмма&lt;br /&gt;
|Одна ось, для каждого элемента из которых выводится только один показатель (первый из показателей в запросе). Суммарная величина показателей всех элементов образует 100%. На круговой диаграмме строятся сектора, соответствующие процентным соотношениям.&lt;br /&gt;
Поддерживает выгрузку в файл изображения.&lt;br /&gt;
|[[Файл:cl_cc_stat_i4.png]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;div id=&amp;quot;Plane&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;Плоскость&lt;br /&gt;
|Две оси. Отображается только один показатель (первый из показателей в запросе). На пересечении осей (горизонтальной и вертикальной) выводится значение показателя с подсветкой, интенсивность которой соответствует величине соответствующего показателя.&lt;br /&gt;
Поддерживает выгрузку в MSExcel в виде транспонированной таблицы&lt;br /&gt;
|[[Файл:cl_cc_stat_i5.png]]  &lt;br /&gt;
|-&lt;br /&gt;
|Таблица&lt;br /&gt;
|Оси отсутствуют, каждая категория данных рассматривается отдельно. Произвольное число показателей. Наиболее общий способ вывода информации. Поддерживает выгрузку в MSExcel виде таблицы данных, соответствующей полученной выборке.&lt;br /&gt;
|[[Файл:cl_cc_stat_i6.png]] &lt;br /&gt;
|-&lt;br /&gt;
|Динамическая таблица&lt;br /&gt;
|Аналогична таблице. Оперирует произвольным числом столбцов. Отсутствует раздел назначения типов выходных данных. Все, что возвращает запрос, автоматически выводится на экран, однако за исключением столбцов, имена которых начинаются с символа подчеркивания «_».&lt;br /&gt;
|[[Файл:cl_cc_stat_i6.png]] &lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Каждый отчет может содержать произвольный фильтр. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Выбрав в списке интересующий отчет, супервизору необходимо задать значения для установленного в отчете фильтра (даты, время, операторы, задачи и произвольный набор других параметров, использованных создателем отчета при его формировании). После нажатия кнопки «Отобразить» отчет примет вид в соответствии с его настройкой на основе данных, полученных из БД. Нажав кнопку «Экспортировать» супервизор может выгрузить отчет в MS Excel в том виде, в котором он представлен в его клиентском модуле Oktell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Создание отчетов должно вестись людьми, имеющими представление о структуре данных. &lt;br /&gt;
* Описание. Краткое или полное описание отчета. Доступно супервизору на вкладке диаграммы по щелчку на пиктограмме с вопросительным знаком. В случае, когда супервизору по соображениям безопасности запрещен доступ к вкладке настроек, это единственный способ доступа к описанию. &lt;br /&gt;
* Группа. Перечень групп, к которым относится редактируемый отчет. На этапе редактирования прямым заданием текста могут быть созданы новые группы. Используются для фильтрации на вкладке настроек. &lt;br /&gt;
* Тип диаграммы. Один из приведенных выше вариантов отображения результатов отчета. &lt;br /&gt;
* Тип формирования. Пользовательский режим создания отчетов дает возможность формирования простых агрегирующих срезов OLAP. Доступны также обобщенные механизмы формирования отчетов на основе текста запросов SQL и на основе хранимых процедур. &lt;br /&gt;
Для создания отчета на базе текста запроса SQL в режиме редактирования на вкладке «Свойства» выберите тип формирования «Запрос SQL». Перейдите на вкладку «Данные» и заполните поле запроса в соответствии со своей задачей. Запрос может быть практически любой сложности с единственным ограничением: весь запрос будет передан на обработку одним пакетом. При необходимости задайте входные параметры, подставляемые из фильтра.&lt;br /&gt;
Для создания отчета на базе хранимой процедуры в режиме редактирования на вкладке «Свойства» выберите вариант «Хранимая процедура». После перехода на вкладку данных в выпадающем дереве необходимо выбрать базу и хранимую процедуру (также можно ввести полное имя процедуры в ручном режиме). Автоматически будут загружены все ее параметры, для которых необходимо назначить типы. Параметры попадут в фильтр при построении отчета. Отчеты на основе хранимых процедур позволяют удобно отлаживать сложные запросы, а также использовать весь функционал, доступный для них.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Автообновление отчетов. В некоторых случаях необходимы отчеты, которые постоянно выводят на экран свежие данные. Для этого в свойствах отчета необходимо установить период автообновления. При запуске расчета будет запущен процесс обновления информации (перерасчета) через установленные промежутки времени.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Сохраните запрос, и он сразу же станет доступным для использования.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Для экспорта отчета в файл выделите необходимые отчеты и нажмите кнопку «Экспорт» слева внизу (или выберите соответствующий пункт в контекстном меню), а в предложенном окне укажите путь. &lt;br /&gt;
&lt;br /&gt;
Для импорта отчетов нажмите «Импорт» (или выберите соответствующий пункт в контекстном меню) и в окне выбора файлов выделите один или несколько файлов отчетов. При неуспешном импорте во всплывающем окне будет подведен итог количества успешно и неуспешно импортированных отчетов. Импорт может быть осуществлен с заменой идентификаторов отчетов. В обычном режиме при обнаружении в системе отчета с совпадающим кодом он будет перезаписан. При импорте с заменой идентификатора при обнаружении совпадения код импортируемого отчета заменяется на уникальный новый.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Если в системе установлено очень много отчетов, и они мешают восприятию, часть редко используемых специфических отчетов можно экспортировать и хранить отдельно, удалив из системы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:cl_cc_stat1.png|center|800px]]  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В запросе могут быть использованы параметры, которые необходимо будет ввести пользователю перед формированием отчета (перед отправкой запроса на выполнение). Все параметры в запросе (как это принято в MS SQL) обозначаются через одинарный символ «@», например @paramname. Используйте их в тексте запроса по своему усмотрению. Помимо переданных извне параметров в запросе могут присутствовать и внутренние переменные, обозначающиеся таким же способом. Отличие переменной от параметра в том, что переменная в тексте запроса однократно объявляется перед использованием с помощью директивы «Declare», например «DECLARE @var1 INT, @var2 nvarchar(200)». Если в запросе отрезок текста начинается с однократного @, и не является переменной, он автоматически считается параметром. Все параметры должны быть объявлены. Для этого используется верхнее поле в интерфейсе настройки отчета. Задайте необходимое число параметров: укажите их идентификаторы, типы и заголовки (для удобного восприятия пользователем при формировании фильтра). Если все корректно, то после нажатия кнопки «Выполнить» запрос считается компилируемым и поля затеняются. Любое изменение в любом из двух полей (поля фильтра и SQL-запрос) автоматически снимет флаг компилируемости.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Следите за тем, чтобы не использовались одинаково именованные параметры. Это не приведет ни к чему адекватному. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Стоит отметить, что каждый тип параметра в фильтре представляет собой переменную определенного типа. Среди них int, nvarchar, bit, datetime. Однако существуют в перечне и более сложные параметры: временнЫе интервалы и врЕменные таблицы (наборы). &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Временной интервал представляет для пользователя поле с выпадающим вниз инструментом Oktell «Календарь». Выбрав период, пользователь указывает на две даты – начало и конец интервала. В параметрах фильтра они задаются двумя разными идущими подряд строчками, а отображаются в фильтре единым полем.&lt;br /&gt;
Категория «Набор» для пользователя, заполняющего фильтр, представляет собой совокупность галочек соответствующего множества элементов (операторы, состояния, задачи, проекты, результаты задач). Для администратора БД, создающего отчет в виде SQL-запроса подобный идентификатор является не параметром-переменной, а параметром-таблицей с единственным полем «Id» внутри. Именно в ней будут сохранены строки, соответствующие элементам, включенным в набор. В отчетах на базе текста SQL обращение к этим таблицам осуществляется с префиксом «@», в отчетах на базе хранимых процедур - с префиксом «#».&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Перечень всевозможных типов параметров с указанием соответствующих им типов в SQL, которые можно использовать в фильтре:&lt;br /&gt;
* Целое число (int) &lt;br /&gt;
* Вещественное число (float) &lt;br /&gt;
* Строка (nvarchar) &lt;br /&gt;
* Галочка (bit) &lt;br /&gt;
* Галочка с 3 состояниями (int) &lt;br /&gt;
* Дата (datetime) &lt;br /&gt;
* Интервал дат (начало) (используется в паре с «интервал дат-конец») (datetime, datetime) &lt;br /&gt;
* Интервал дат (конец) (используется в паре с «интервал дат-начало») (datetime, datetime) &lt;br /&gt;
* Время (datetime)         &lt;br /&gt;
* Временной интервал (начало) (используется в паре с «временной интервал-конец»)  (datetime, datetime) &lt;br /&gt;
* Временной интервал (конец) (используется в паре с «временной интервал-начало»)  (datetime, datetime) &lt;br /&gt;
* Оператор (uniqueidentifier) &lt;br /&gt;
* Набор операторов ( table ( Id uniqueidentifier ) ) &lt;br /&gt;
* Задача (uniqueidentifier) &lt;br /&gt;
* Набор задач ( table ( Id uniqueidentifier ) )         &lt;br /&gt;
* Проект (uniqueidentifier) &lt;br /&gt;
* Набор проектов ( table ( Id uniqueidentifier ) ) &lt;br /&gt;
* Статус оператора (int) &lt;br /&gt;
* Набор статусов операторов ( table ( Id int ) ) &lt;br /&gt;
* Результат задачи (int) &lt;br /&gt;
* Набор результатов задачи  ( table ( Id int ) )                 &lt;br /&gt;
* Пользовательский список ( тип, соответствующий запросу пользователя на определение списка, или sql_variant ) &lt;br /&gt;
* Пользовательский набор ( table ( Id sql_variant ) ) &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Пользовательские типы фильтров (список и набор) требуют задания SQL-запроса для формирования списка доступных значений. Для задания или изменения текущего запроса какого-либо элемента фильтра с пользовательским типом необходимо щелкнуть в правой части таблицы параметров (в последнем столбце, содержащем «...»), в строке интересующего элемента. В открывшемся окне скорректировать запрос, после чего закрыть окно. Запрос должен представлять собой один пакет (batch) и может иметь любую сложноcть. Однако следует учитывать, что постоянное его выполнение в ходе создания фильтра может привести к длительным задержкам, в случае, если время выполнения созданного запроса достаточно велико. В качестве результатов берется первый возвращаемый набор данных. Первый столбец считается идентификатором, значение (или таблица значений) которого будет передано в основной запрос отчета на этапе его построения. Второй столбец - описания, подставляемые в визуальные компоненты для отображения. А качестве идентификаторов могут выступать любые типы, за исключением TEXT, NTEXT, TIMESTAMP.&lt;br /&gt;
&lt;br /&gt;
Для привязки запросов к конкретным пользователям, осуществляющим построение отчетов, можно использовать предопределенную переменную ''@authorizeduserid'' (в отчетах из хранимых процедур - таблицу ''#authorizeduserid'').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;Примеры запросов на формирование пользовательского фильтра&amp;lt;/span&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Select [Id], [Caption] From dbo.[ClientTypes]&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Declare @dttoday DateTime&lt;br /&gt;
&lt;br /&gt;
Set @dttoday = Cast ( Floor ( Cast ( GetDate() as float ) ) as DateTime )&lt;br /&gt;
&lt;br /&gt;
Select [Id], [Name] &lt;br /&gt;
&lt;br /&gt;
From dbo.[Clients] cl&lt;br /&gt;
&lt;br /&gt;
       Inner join dbo.[ClientCalls] cc on cl.[Id] = cc.[IdClient]&lt;br /&gt;
&lt;br /&gt;
Where [LastCall] &amp;gt; @dttoday&lt;br /&gt;
&lt;br /&gt;
Group By [Id], [Name]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
После формирования запроса и успешной его проверки выставляется флаг компилируемости. Из получающейся в результате выполнения запроса выборки выделяются столбцы и помещаются в нижнюю часть интерфейса в таблицу «Назначение». Здесь в зависимости от типа выбранного визуального представления запроса необходимо проставить нужным столбцам соответствующие типы и задать описания (для удобного восприятия отчета пользователем)&lt;br /&gt;
&lt;br /&gt;
Среди типов уже рассмотренные выше «Ось» и «Значение». Тип «Не отображается» указывает построителю отчета на отсутствие необходимости использовать поле. Для отчета типа «Плоскость» среди типов вместо «Ось» появляются два «Горизонтальная ось» и «Вертикальная ось». Для табличных отчетов все поля типа «Ось» будут подсвечены в результирующем поле. Не отображаемые поля будут пропущены при выводе данных и при экспорте.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;ВНИМАНИЕ! При использовании временных таблиц # в отчетах на основе текстового запроса, необходимо в начале тела запроса помещать команду SET FMTONLY OFF, иначе использование # не будет возможным. В других случаях не рекомендуется использовать указанную команду. При обнаружении некорректных ситуаций при использовании # или других команд рекомендуется преобразовать отчет в хранимую процедуру.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;ВНИМАНИЕ! В некоторых отчетах могут понадобиться данные из прикрепленной таблицы абонентов. Операция обращения к ней тривиальна в случае работы с внешней таблицей, и может быть проблематична при работе с локальной таблицей в силу специфики ее хранения (если для нее выбрана автоматическая генерация имени). Это необходимо учитывать при формировании проекта. Для удобства работы с отчетами внутри системы рекомендуются к использованию внешние таблицы, а также локальные таблицы с явным указанием имени и типов полей. Ниже приведен пример кода для формирования временной таблицы с полями Id и Name с данными из произвольной (в том числе и локальной) прикрепленной таблицы абонентов.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Формирование временной таблицы @tmpic ( Id, Name ) с данными  &lt;br /&gt;
&lt;br /&gt;
--    из прикрепленной к задаче с кодом @idtask таблицы абонентов.&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;SET FMTONLY OFF&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Declare @emptyname nvarchar ( 30 )&lt;br /&gt;
&lt;br /&gt;
Set @emptyname = ''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Declare @hasnames bit &lt;br /&gt;
&lt;br /&gt;
Set @hasnames = 0&lt;br /&gt;
&lt;br /&gt;
Declare @idlist uniqueidentifier&lt;br /&gt;
&lt;br /&gt;
Select @idlist = ListId From A_TaskManager_Tasks t where Id = @idtask&lt;br /&gt;
&lt;br /&gt;
if ( @idlist is null )&lt;br /&gt;
&lt;br /&gt;
       Set @emptyname = '&amp;lt;список удален&amp;gt;'&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Declare @abons table ( Id int, Name nvarchar ( 200 ) )&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Declare @type int&lt;br /&gt;
&lt;br /&gt;
Declare @query nvarchar ( 4000 )&lt;br /&gt;
&lt;br /&gt;
Declare @jtable nvarchar ( 1000 )&lt;br /&gt;
&lt;br /&gt;
Declare @colname nvarchar ( 50 )&lt;br /&gt;
&lt;br /&gt;
Declare @colid nvarchar ( 50 )&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Select @type = Type, @query = Query, @jtable = JoinedTable, @colid = ColumnId, @colname = ColumnName &lt;br /&gt;
&lt;br /&gt;
From A_TaskManager_Lists &lt;br /&gt;
&lt;br /&gt;
Where Id = @idlist&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Declare @tmpic table ( Id int, Name nvarchar ( 1000 ) )&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
if ( Len ( @colid ) &amp;gt; 0 ) and ( Len ( @colname ) &amp;gt; 0 ) and ( not @type is null )&lt;br /&gt;
&lt;br /&gt;
  begin&lt;br /&gt;
&lt;br /&gt;
       Declare @extquery nvarchar ( 4000 )&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
       if exists ( Select * From tempdb..sysobjects Where Id = object_id ( 'tempdb..#tmpic' ) )&lt;br /&gt;
&lt;br /&gt;
               Drop Table #tmpic&lt;br /&gt;
&lt;br /&gt;
       Create table #tmpic ( id int, name nvarchar ( 1000 ) )&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
       if ( Len ( @jtable ) &amp;gt; 0 ) and ( @type in ( 1, 2 ) )&lt;br /&gt;
&lt;br /&gt;
          begin&lt;br /&gt;
&lt;br /&gt;
               Set @extquery = 'Select ' + @colid + ' as Id, Cast ( IsNull ( ' + &lt;br /&gt;
&lt;br /&gt;
                       @colname + ', ''' + @emptyname + &lt;br /&gt;
&lt;br /&gt;
                       ''' ) as nvarchar ( 1000 ) ) as Name From ' + @jtable&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
               Insert into #tmpic&lt;br /&gt;
&lt;br /&gt;
                       Exec sp_sqlexec @extquery&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
               Set @hasnames = 1&lt;br /&gt;
&lt;br /&gt;
          end&lt;br /&gt;
&lt;br /&gt;
       else if ( Len ( @query ) &amp;gt; 0 ) and ( @type = 3 )&lt;br /&gt;
&lt;br /&gt;
          begin&lt;br /&gt;
&lt;br /&gt;
               Set @extquery = 'Select ' + @colid + ' as Id, Cast ( IsNull ( ' + &lt;br /&gt;
&lt;br /&gt;
                       @colname + ', ''' + @emptyname + &lt;br /&gt;
&lt;br /&gt;
                       ''' ) as nvarchar ( 1000 ) ) as Name From (' + @query + ')a'&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
               Insert into #tmpic&lt;br /&gt;
&lt;br /&gt;
                       Exec sp_sqlexec @extquery&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
               Set @hasnames = 1&lt;br /&gt;
&lt;br /&gt;
          end&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
       Insert into @tmpic&lt;br /&gt;
&lt;br /&gt;
               Select * From #tmpic&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
       Set @emptyname = '&amp;lt;не найден&amp;gt;'&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
       Update @tmpic &lt;br /&gt;
&lt;br /&gt;
       Set Name = @emptyname&lt;br /&gt;
&lt;br /&gt;
       Where Name = ''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
       Drop Table #tmpic&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
       Set @emptyname = '&amp;lt;не задано&amp;gt;'&lt;br /&gt;
&lt;br /&gt;
  end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Далее можно пользоваться таблицей @tmpic с полями Id и Name&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%A1%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0</id>
		<title>Статистика</title>
		<link rel="alternate" type="text/html" href="%D0%A1%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0"/>
				<updated>2023-05-25T09:30:46Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Диаграммы и настройка */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;code&amp;gt;[[Техническая документация]] / [[Call-центр]] / [[Статистика]] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модуль статистики call-центра доступен супервизорам, администраторам и другим пользователям, обладающим соответствующим правом. Для пользования модулем необходимо зарегистрироваться в call-центре системы. Служит для построения хронологических отчетов различной формы и содержания. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Журнал звонков===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Самым основным отчетом является журнал звонков. Полученная с помощью фильтра, накладываемого на выборку, информация дает возможность прослушать любую из перечисленных в таблице коммутаций. Дважды щелкните на записи для отображения проигрывателя. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Данные, отображаемые пользователю, помимо установленного им фильтра будут отфильтрованы согласно правам на проекты. Информация по задаче в журнале видна только ее супервизорам и имеющим доступ к ее проекту.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;ВНИМАНИЕ! При запросе больших объемов данных необходимо учитывать, что это создает дополнительную нагрузку на процессорное время сервера БД и сетевой трафик. В некоторых случаях это может отразиться на качестве разговоров, осуществляющихся через VoIP шлюз сервера&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Полученные результаты доступны для экспорта в текстовые файлы, в файлы MS Excel и HTML. Также доступна выгрузка записей всех разговоров, попадающих под условие фильтра. Необходимо иметь в виду, что выгрузка записей осуществляется в их текущем состоянии. Используйте предварительное микширование, чтобы гарантировать объединение разговоров в один файл.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Диаграммы и настройка===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Содержание и количество прочих отчетов не ограничено. По умолчанию модуль содержит ряд предустановленных отчетов, оценивающих основные показатели работы call-центра на основе полной статистики, собираемой системой в отдельную БД. Статистичская БД Oktell хранит данные в виде пространственной модели (OLAP-кубов), данные в которую попадают в процессе работы. Перечень существующих в ней кубов продолжает расширяться. Это и куб коммутаций, попыток звонков по задачам, куб состояний операторов, куб состояний очереди ожидания. Подробнее в разделе [[Структура пространственной БД]].&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Пользователи системы могут редактировать существующие отчеты и создавать новые. Также доступны функции экспорта и импорта отчетов, позволяющими вести динамический обмен со сторонними пользователями и разработчиками.&lt;br /&gt;
&lt;br /&gt;
Отчеты подчиняются политике прав доступа. Параметры доступа к ним определяются на соответствующей вкладке «Доступ». Доступные привилегии: чтение, изменение. Также применяется общая ролевая привилегия ''«Возможность редактирования запросов SQL»''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Технология OLAP в простом виде позволяет получить из пространственных таблиц любые срезы. Несмотря на простоту использования звездной схемы пространственной БД, большинство сложных отчетов строятся не путем среза данных OLAP-куба, а на основе отдельных различной степени сложности алгоритмов. При создании отчетов администратор баз данных может  подключить в качестве источника данных любой запрос как из всех баз данных Oktell, так и из любых других баз данных. Таким же образом можно производить анализ полученных данных в каждом конкретном проекте, строя отчеты под конкретные задачи, в частности на основе таблиц абонентов.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Этот механизм полной произвольности отчетов предоставляет широкие возможности как для администраторов БД, так и для супервизоров.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
В основе любого отчета лежит выборка данных, в которой есть одно или несколько полей с показателями, а также поля категорий, по которым эти показатели строятся. В зависимости от типа отображения отчета, категории объединяются в одну или несколько осей.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Среди вариантов отображения:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|График&lt;br /&gt;
|Одна ось, каждый элемент оси может иметь несколько показателей. На одном изображении разным цветом строятся графики соответствующих показателей. Масштаб отображения показателей может быть общим или раздельным на усмотрение создателя отчета.&lt;br /&gt;
Поддерживает выгрузку в файл изображения. Поддерживает большие объемы данных, отображая графически-зависимую полосу прокрутки.&lt;br /&gt;
|[[Файл:cl_cc_stat_i7.png]] &lt;br /&gt;
|-&lt;br /&gt;
|Точки&lt;br /&gt;
|Одна ось, каждый элемент оси имеет может иметь несколько показателей. На одном изображении разным цветом отображаются точки, соответствующие значениям своих показателей. Масштаб отображения показателей может быть общим или раздельным на усмотрение создателя отчета.&lt;br /&gt;
Поддерживает выгрузку в файл изображения. Поддерживает большие объемы данных, отображая графически-зависимую полосу прокрутки.&lt;br /&gt;
|[[Файл:cl_cc_stat_i8.png]]  &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;div id=&amp;quot;VertHysto&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;Вертикальная гистограмма&lt;br /&gt;
|Аналогична графику, но ориентирована вертикально.&lt;br /&gt;
|[[Файл:cl_cc_stat_i10.png]]  &lt;br /&gt;
|- &lt;br /&gt;
|Соотношение&lt;br /&gt;
|Одна ось, каждый элемент оси может иметь несколько показателей, каждый из которых отображается отдельной полосой. &lt;br /&gt;
Вид отчета аналогичен виду модуля «Индикаторы».&lt;br /&gt;
|[[Файл:cl_cc_stat_i9.png]] &lt;br /&gt;
|-&lt;br /&gt;
|Диаграмма&lt;br /&gt;
|Одна ось, для каждого элемента из которых выводится только один показатель (первый из показателей в запросе). Суммарная величина показателей всех элементов образует 100%. На круговой диаграмме строятся сектора, соответствующие процентным соотношениям.&lt;br /&gt;
Поддерживает выгрузку в файл изображения.&lt;br /&gt;
|[[Файл:cl_cc_stat_i4.png]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;div id=&amp;quot;Plane&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;Плоскость&lt;br /&gt;
|Две оси. Отображается только один показатель (первый из показателей в запросе). На пересечении осей (горизонтальной и вертикальной) выводится значение показателя с подсветкой, интенсивность которой соответствует величине соответствующего показателя.&lt;br /&gt;
Поддерживает выгрузку в MSExcel в виде транспонированной таблицы&lt;br /&gt;
|[[Файл:cl_cc_stat_i5.png]]  &lt;br /&gt;
|-&lt;br /&gt;
|Таблица&lt;br /&gt;
|Оси отсутствуют, каждая категория данных рассматривается отдельно. Произвольное число показателей. Наиболее общий способ вывода информации. Поддерживает выгрузку в MSExcel виде таблицы данных, соответствующей полученной выборке.&lt;br /&gt;
|[[Файл:cl_cc_stat_i6.png]] &lt;br /&gt;
|-&lt;br /&gt;
|Динамическая таблица&lt;br /&gt;
|Аналогична таблице. Оперирует произвольным числом столбцов. Отсутствует раздел назначения типов выходных данных. Все, что возвращает запрос, автоматически выводится на экран, однако за исключением столбцов, имена которых начинаются с символа подчеркивания «_».&lt;br /&gt;
|[[Файл:cl_cc_stat_i6.png]] &lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Каждый отчет может содержать произвольный фильтр. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Выбрав в списке интересующий отчет, супервизору необходимо задать значения для установленного в отчете фильтра (даты, время, операторы, задачи и произвольный набор других параметров, использованных создателем отчета при его формировании). После нажатия кнопки «Отобразить» отчет примет вид в соответствии с его настройкой на основе данных, полученных из БД. Нажав кнопку «Экспортировать» супервизор может выгрузить отчет в MS Excel в том виде, в котором он представлен в его клиентском модуле Oktell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Создание отчетов должно вестись людьми, имеющими представление о структуре данных. &lt;br /&gt;
* Описание. Краткое или полное описание отчета. Доступно супервизору на вкладке диаграммы по щелчку на пиктограмме с вопросительным знаком. В случае, когда супервизору по соображениям безопасности запрещен доступ к вкладке настроек, это единственный способ доступа к описанию. &lt;br /&gt;
* Группа. Перечень групп, к которым относится редактируемый отчет. На этапе редактирования прямым заданием текста могут быть созданы новые группы. Используются для фильтрации на вкладке настроек. &lt;br /&gt;
* Тип диаграммы. Один из приведенных выше вариантов отображения результатов отчета. &lt;br /&gt;
* Тип формирования. Пользовательский режим создания отчетов дает возможность формирования простых агрегирующих срезов OLAP. Доступны также обобщенные механизмы формирования отчетов на основе текста запросов SQL и на основе хранимых процедур. &lt;br /&gt;
Для создания отчета на базе текста запроса SQL в режиме редактирования на вкладке «Свойства» выберите тип формирования «Запрос SQL». Перейдите на вкладку «Данные» и заполните поле запроса в соответствии со своей задачей. Запрос может быть практически любой сложности с единственным ограничением: весь запрос будет передан на обработку одним пакетом. При необходимости задайте входные параметры, подставляемые из фильтра.&lt;br /&gt;
Для создания отчета на базе хранимой процедуры в режиме редактирования на вкладке «Свойства» выберите вариант «Хранимая процедура». После перехода на вкладку данных в выпадающем дереве необходимо выбрать базу и хранимую процедуру (также можно ввести полное имя процедуры в ручном режиме). Автоматически будут загружены все ее параметры, для которых необходимо назначить типы. Параметры попадут в фильтр при построении отчета. Отчеты на основе хранимых процедур позволяют удобно отлаживать сложные запросы, а также использовать весь функционал, доступный для них.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Автообновление отчетов. В некоторых случаях необходимы отчеты, которые постоянно выводят на экран свежие данные. Для этого в свойствах отчета необходимо установить период автообновления. При запуске расчета будет запущен процесс обновления информации (перерасчета) через установленные промежутки времени.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Сохраните запрос, и он сразу же станет доступным для использования.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Для экспорта отчета в файл выделите необходимые отчеты и нажмите кнопку «Экспорт» слева внизу (или выберите соответствующий пункт в контекстном меню), а в предложенном окне укажите путь. &lt;br /&gt;
&lt;br /&gt;
Для импорта отчетов нажмите «Импорт» (или выберите соответствующий пункт в контекстном меню) и в окне выбора файлов выделите один или несколько файлов отчетов. При неуспешном импорте во всплывающем окне будет подведен итог количества успешно и неуспешно импортированных отчетов. Импорт может быть осуществлен с заменой идентификаторов отчетов. В обычном режиме при обнаружении в системе отчета с совпадающим кодом он будет перезаписан. При импорте с заменой идентификатора при обнаружении совпадения код импортируемого отчета заменяется на уникальный новый.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Если в системе установлено очень много отчетов, и они мешают восприятию, часть редко используемых специфических отчетов можно экспортировать и хранить отдельно, удалив из системы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:cl_cc_stat1.png|center|800px]]  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В запросе могут быть использованы параметры, которые необходимо будет ввести пользователю перед формированием отчета (перед отправкой запроса на выполнение). Все параметры в запросе (как это принято в MS SQL) обозначаются через одинарный символ «@», например @paramname. Используйте их в тексте запроса по своему усмотрению. Помимо переданных извне параметров в запросе могут присутствовать и внутренние переменные, обозначающиеся таким же способом. Отличие переменной от параметра в том, что переменная в тексте запроса однократно объявляется перед использованием с помощью директивы «Declare», например «DECLARE @var1 INT, @var2 nvarchar(200)». Если в запросе отрезок текста начинается с однократного @, и не является переменной, он автоматически считается параметром. Все параметры должны быть объявлены. Для этого используется верхнее поле в интерфейсе настройки отчета. Задайте необходимое число параметров: укажите их идентификаторы, типы и заголовки (для удобного восприятия пользователем при формировании фильтра). Если все корректно, то после нажатия кнопки «Выполнить» запрос считается компилируемым и поля затеняются. Любое изменение в любом из двух полей (поля фильтра и SQL-запрос) автоматически снимет флаг компилируемости.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Следите за тем, чтобы не использовались одинаково именованные параметры. Это не приведет ни к чему адекватному. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Стоит отметить, что каждый тип параметра в фильтре представляет собой переменную определенного типа. Среди них int, nvarchar, bit, datetime. Однако существуют в перечне и более сложные параметры: временнЫе интервалы и врЕменные таблицы (наборы). &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Временной интервал представляет для пользователя поле с выпадающим вниз инструментом Oktell «Календарь». Выбрав период, пользователь указывает на две даты – начало и конец интервала. В параметрах фильтра они задаются двумя разными идущими подряд строчками, а отображаются в фильтре единым полем.&lt;br /&gt;
Категория «Набор» для пользователя, заполняющего фильтр, представляет собой совокупность галочек соответствующего множества элементов (операторы, состояния, задачи, проекты, результаты задач). Для администратора БД, создающего отчет в виде SQL-запроса подобный идентификатор является не параметром-переменной, а параметром-таблицей с единственным полем «Id» внутри. Именно в ней будут сохранены строки, соответствующие элементам, включенным в набор. В отчетах на базе текста SQL обращение к этим таблицам осуществляется с префиксом «@», в отчетах на базе хранимых процедур - с префиксом «#».&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Перечень всевозможных типов параметров с указанием соответствующих им типов в SQL, которые можно использовать в фильтре:&lt;br /&gt;
* Целое число (int) &lt;br /&gt;
* Вещественное число (float) &lt;br /&gt;
* Строка (nvarchar) &lt;br /&gt;
* Галочка (bit) &lt;br /&gt;
* Галочка с 3 состояниями (int) &lt;br /&gt;
* Дата (datetime) &lt;br /&gt;
* Интервал дат (начало) (используется в паре с «интервал дат-конец») (datetime, datetime) &lt;br /&gt;
* Интервал дат (конец) (используется в паре с «интервал дат-начало») (datetime, datetime) &lt;br /&gt;
* Время (datetime)         &lt;br /&gt;
* Временной интервал (начало) (используется в паре с «временной интервал-конец»)  (datetime, datetime) &lt;br /&gt;
* Временной интервал (конец) (используется в паре с «временной интервал-начало»)  (datetime, datetime) &lt;br /&gt;
* Оператор (uniqueidentifier) &lt;br /&gt;
* Набор операторов ( table ( Id uniqueidentifier ) ) &lt;br /&gt;
* Задача (uniqueidentifier) &lt;br /&gt;
* Набор задач ( table ( Id uniqueidentifier ) )         &lt;br /&gt;
* Проект (uniqueidentifier) &lt;br /&gt;
* Набор проектов ( table ( Id uniqueidentifier ) ) &lt;br /&gt;
* Статус оператора (int) &lt;br /&gt;
* Набор статусов операторов ( table ( Id int ) ) &lt;br /&gt;
* Результат задачи (int) &lt;br /&gt;
* Набор результатов задачи  ( table ( Id int ) )                 &lt;br /&gt;
* Пользовательский список ( тип, соответствующий запросу пользователя на определение списка, или sql_variant ) &lt;br /&gt;
* Пользовательский набор ( table ( Id sql_variant ) ) &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Пользовательские типы фильтров (список и набор) требуют задания SQL-запроса для формирования списка доступных значений. Для задания или изменения текущего запроса какого-либо элемента фильтра с пользовательским типом необходимо щелкнуть в правой части таблицы параметров (в последнем столбце, содержащем «...»), в строке интересующего элемента. В открывшемся окне скорректировать запрос, после чего закрыть окно. Запрос должен представлять собой один пакет (batch) и может иметь любую сложноcть. Однако следует учитывать, что постоянное его выполнение в ходе создания фильтра может привести к длительным задержкам, в случае, если время выполнения созданного запроса достаточно велико. В качестве результатов берется первый возвращаемый набор данных. Первый столбец считается идентификатором, значение (или таблица значений) которого будет передано в основной запрос отчета на этапе его построения. Второй столбец - описания, подставляемые в визуальные компоненты для отображения. А качестве идентификаторов могут выступать любые типы, за исключением TEXT, NTEXT, TIMESTAMP.&lt;br /&gt;
&lt;br /&gt;
Для привязки запросов к конкретным пользователям, осуществляющим построение отчетов, можно использовать предопределенную переменную ''@authorizeduserid'' (в отчетах из хранимых процедур - таблицу ''#authorizeduserid'').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;Примеры запросов на формирование пользовательского фильтра&amp;lt;/span&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Select [Id], [Caption] From dbo.[ClientTypes]&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Declare @dttoday DateTime&lt;br /&gt;
&lt;br /&gt;
Set @dttoday = Cast ( Floor ( Cast ( GetDate() as float ) ) as DateTime )&lt;br /&gt;
&lt;br /&gt;
Select [Id], [Name] &lt;br /&gt;
&lt;br /&gt;
From dbo.[Clients] cl&lt;br /&gt;
&lt;br /&gt;
       Inner join dbo.[ClientCalls] cc on cl.[Id] = cc.[IdClient]&lt;br /&gt;
&lt;br /&gt;
Where [LastCall] &amp;gt; @dttoday&lt;br /&gt;
&lt;br /&gt;
Group By [Id], [Name]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
После формирования запроса и успешной его проверки выставляется флаг компилируемости. Из получающейся в результате выполнения запроса выборки выделяются столбцы и помещаются в нижнюю часть интерфейса в таблицу «Назначение». Здесь в зависимости от типа выбранного визуального представления запроса необходимо проставить нужным столбцам соответствующие типы и задать описания (для удобного восприятия отчета пользователем)&lt;br /&gt;
&lt;br /&gt;
Среди типов уже рассмотренные выше «Ось» и «Значение». Тип «Не отображается» указывает построителю отчета на отсутствие необходимости использовать поле. Для отчета типа «Плоскость» среди типов вместо «Ось» появляются два «Горизонтальная ось» и «Вертикальная ось». Для табличных отчетов все поля типа «Ось» будут подсвечены в результирующем поле. Не отображаемые поля будут пропущены при выводе данных и при экспорте.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;ВНИМАНИЕ! При использовании временных таблиц # в отчетах на основе текстового запроса, необходимо в начале тела запроса помещать команду SET FMTONLY OFF, иначе использование # не будет возможным. В других случаях не рекомендуется использовать указанную команду. При обнаружении некорректных ситуаций при использовании # или других команд рекомендуется преобразовать отчет в хранимую процедуру.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;ВНИМАНИЕ! В некоторых отчетах могут понадобиться данные из прикрепленной таблицы абонентов. Операция обращения к ней тривиальна в случае работы с внешней таблицей, и может быть проблематична при работе с локальной таблицей в силу специфики ее хранения (если для нее выбрана автоматическая генерация имени). Это необходимо учитывать при формировании проекта. Для удобства работы с отчетами внутри системы рекомендуются к использованию внешние таблицы, а также локальные таблицы с явным указанием имени и типов полей. Ниже приведен пример кода для формирования временной таблицы с полями Id и Name с данными из произвольной (в том числе и локальной) прикрепленной таблицы абонентов.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Формирование временной таблицы @tmpic ( Id, Name ) с данными  &lt;br /&gt;
&lt;br /&gt;
--    из прикрепленной к задаче с кодом @idtask таблицы абонентов.&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;SET FMTONLY OFF&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Declare @emptyname nvarchar ( 30 )&lt;br /&gt;
&lt;br /&gt;
Set @emptyname = ''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Declare @hasnames bit &lt;br /&gt;
&lt;br /&gt;
Set @hasnames = 0&lt;br /&gt;
&lt;br /&gt;
Declare @idlist uniqueidentifier&lt;br /&gt;
&lt;br /&gt;
Select @idlist = ListId From A_TaskManager_Tasks t where Id = @idtask&lt;br /&gt;
&lt;br /&gt;
if ( @idlist is null )&lt;br /&gt;
&lt;br /&gt;
       Set @emptyname = '&amp;lt;список удален&amp;gt;'&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Declare @abons table ( Id int, Name nvarchar ( 200 ) )&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Declare @type int&lt;br /&gt;
&lt;br /&gt;
Declare @query nvarchar ( 4000 )&lt;br /&gt;
&lt;br /&gt;
Declare @jtable nvarchar ( 1000 )&lt;br /&gt;
&lt;br /&gt;
Declare @colname nvarchar ( 50 )&lt;br /&gt;
&lt;br /&gt;
Declare @colid nvarchar ( 50 )&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Select @type = Type, @query = Query, @jtable = JoinedTable, @colid = ColumnId, @colname = ColumnName &lt;br /&gt;
&lt;br /&gt;
From A_TaskManager_Lists &lt;br /&gt;
&lt;br /&gt;
Where Id = @idlist&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Declare @tmpic table ( Id int, Name nvarchar ( 1000 ) )&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
if ( Len ( @colid ) &amp;gt; 0 ) and ( Len ( @colname ) &amp;gt; 0 ) and ( not @type is null )&lt;br /&gt;
&lt;br /&gt;
  begin&lt;br /&gt;
&lt;br /&gt;
       Declare @extquery nvarchar ( 4000 )&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
       if exists ( Select * From tempdb..sysobjects Where Id = object_id ( 'tempdb..#tmpic' ) )&lt;br /&gt;
&lt;br /&gt;
               Drop Table #tmpic&lt;br /&gt;
&lt;br /&gt;
       Create table #tmpic ( id int, name nvarchar ( 1000 ) )&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
       if ( Len ( @jtable ) &amp;gt; 0 ) and ( @type in ( 1, 2 ) )&lt;br /&gt;
&lt;br /&gt;
          begin&lt;br /&gt;
&lt;br /&gt;
               Set @extquery = 'Select ' + @colid + ' as Id, Cast ( IsNull ( ' + &lt;br /&gt;
&lt;br /&gt;
                       @colname + ', ''' + @emptyname + &lt;br /&gt;
&lt;br /&gt;
                       ''' ) as nvarchar ( 1000 ) ) as Name From ' + @jtable&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
               Insert into #tmpic&lt;br /&gt;
&lt;br /&gt;
                       Exec sp_sqlexec @extquery&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
               Set @hasnames = 1&lt;br /&gt;
&lt;br /&gt;
          end&lt;br /&gt;
&lt;br /&gt;
       else if ( Len ( @query ) &amp;gt; 0 ) and ( @type = 3 )&lt;br /&gt;
&lt;br /&gt;
          begin&lt;br /&gt;
&lt;br /&gt;
               Set @extquery = 'Select ' + @colid + ' as Id, Cast ( IsNull ( ' + &lt;br /&gt;
&lt;br /&gt;
                       @colname + ', ''' + @emptyname + &lt;br /&gt;
&lt;br /&gt;
                       ''' ) as nvarchar ( 1000 ) ) as Name From (' + @query + ')a'&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
               Insert into #tmpic&lt;br /&gt;
&lt;br /&gt;
                       Exec sp_sqlexec @extquery&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
               Set @hasnames = 1&lt;br /&gt;
&lt;br /&gt;
          end&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
       Insert into @tmpic&lt;br /&gt;
&lt;br /&gt;
               Select * From #tmpic&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
       Set @emptyname = '&amp;lt;не найден&amp;gt;'&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
       Update @tmpic &lt;br /&gt;
&lt;br /&gt;
       Set Name = @emptyname&lt;br /&gt;
&lt;br /&gt;
       Where Name = ''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
       Drop Table #tmpic&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
       Set @emptyname = '&amp;lt;не задано&amp;gt;'&lt;br /&gt;
&lt;br /&gt;
  end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Далее можно пользоваться таблицей @tmpic с полями Id и Name&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8_%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B1%D0%B0%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85</id>
		<title>Резервное копирование и восстановление баз данных</title>
		<link rel="alternate" type="text/html" href="%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8_%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B1%D0%B0%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85"/>
				<updated>2023-05-16T07:32:29Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Восстановление баз данных */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Необходимость сохранить базы данных настроенной системы возникает, как правило, перед переустановкой ОС на серверной машине, либо для переноса работающей серверной конфигурации на другую машину.&lt;br /&gt;
&lt;br /&gt;
==Копирование баз данных==&lt;br /&gt;
&lt;br /&gt;
Используемые базы данных делятся на две категории: 3 системные БД (oktell, oktell_cc_temp и oktell_settings) и БД для модулей веб-клиента Okapp. Для запуска Oktell после восстановления нужны только системные базы. Остальные БД нужны только, если вы хотите сохранить ваши настройки веб-модуля. &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Например, база WO_Module_journal используется модулем '''Журнал''' хранит в себе теги записей разговоров. База WO_Module_dashboards нужна для работы модуля Дашборды Okboard и содержит настройки используемых индикаторов. &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
В любом случае, мы рекомендуем делать резервные копии всех баз данных, которые используются системой.&lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Копии системных таблиц создаются автоматически каждый день, по умолчанию в 02:00 по серверному времени, если не отключен параметр [[Параметры файлов конфигурации#Параметры файла конфигурации серверного приложения|DBAutoDailyBackup]]. Создание копий происходит особым образом, оставляя копии&lt;br /&gt;
* последние две недели - каждый день &lt;br /&gt;
* далее три месяца - раз в неделю &lt;br /&gt;
* далее два года - каждый месяц&lt;br /&gt;
* далее раз в год&lt;br /&gt;
Все копии находятся в папке \oktell\server\Backup, если не переопределено в параметре [[Параметры файлов конфигурации#Параметры файла конфигурации серверного приложения|DBBackupDir]]. &lt;br /&gt;
&lt;br /&gt;
В свою очередь, вы можете сделать резервные копии в любой момент. Для этого перейдите в ''Администрирование/Обшие настройки/Управление базами данных''. Нажмите кнопку '''Произвести резервное копирование БД'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:бэк1.PNG |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После окончания резервного копирования созданные бэкапы будут доступны в корне папки ''oktell\server\backup''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Файл:бэк2.PNG]][[Файл:бэк3.PNG]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' Для созданий копий остальных баз данных откройте SQL Server Management Studio. Кликните правой кнопкой на нужной БД и в контекстном меню  выберите Задачи, затем '''Создать резервную копию'''. В открывшемся окне вы можете поменять путь для создания бэкапа, для начала копирования нажмите ОК. Копии по умолчанию создается в папке ''C:\Program Files\Microsoft SQL Server\MSSQL11.OKTELL\MSSQL\Backup\''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Резервное копирование и восстановление баз данных 020.png|center|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Восстановление баз данных==&lt;br /&gt;
&lt;br /&gt;
Восстановить базы данных можно только на такую же версию SQL-сервера или выше. Если базы были созданы на версии SQL Server 2008 R2, их нельзя восстановить на SQL Server 2008.&lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Остановите службу oktellserver. Запустите командную строку с правами администратора и введите туда следующую строчку:&lt;br /&gt;
&lt;br /&gt;
 net stop oktellserver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:бэк4.PNG|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' Запустите SQL Server Management Studio с учетной записью sa:&lt;br /&gt;
* Login: sa&lt;br /&gt;
* Password: 123Oktell321&lt;br /&gt;
&lt;br /&gt;
'''Шаг 3.''' Если у вас есть ранее установленные базы данных Oktell, то их нужно удалить. Это касается системных БД и БД, используемых веб-модулями.&lt;br /&gt;
&lt;br /&gt;
'''Шаг 4.''' Приступаем к процедуре восстановления. Нажмите правой кнопкой на System Database (Системные базы данных) и нажмите '''Restore Database''' (Восстановить резервную копию).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Файл:бэк6.PNG]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Выберите файл с копией баз данных. Для этого выберите пункт Device (Устройство), в открывшемся окне Add (Добавить) и выберите ваш файл с резервной копией, например '''db_ok_130628.bak''' (в данном случае, это БД oktell). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:бэк8.PNG|center|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наберите имя базы данных в верхней части окна, которую вы восстанавливаете. Название базы данных вы можете видеть в нижней части окна. Не забудьте поставить галочку '''Restore''' (Восстановить). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:бэк9.PNG|center|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Повторите тоже самое с остальными базами данных.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 5.''' После восстановления баз данных для полноценной работы необходимо создать пользователей базы данных. Для этого выполните скачайте и выполните следующий запрос. &lt;br /&gt;
&lt;br /&gt;
[[Media:Восстановление базы данных.zip|Скачать файл '''Восстановление базы данных.zip''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 6.''' Если вы перенесли базу данных на сторонний сервер, то проверьте настройки в серверном конфигурационном файле ''\oktell\server\oktell.ServerService.exe.config''. Убедитесь что в строке с ключом DBConnectionString ссылка на базу данных, логин и пароль указаны верно. По умолчанию, строка подключения выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
 server=(local)\OKTELL;database=oktell;uid=AutelService;pwd=[pwd];pooling=true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Новое название сервера нужно указать вместо значения ''(local)\OKTELL''. Например, SQL-сервер перенесен на сервер WORK с IP-адресом 192.168.0.3. Следовательно, в параметре вам нужно указать ''WORK\OKTELL''. Если сервер не запускается с этой настройкой, попробуйте указать только название сервера без инстанса — ''WORK''. Вместо названия сервера можно указать IP-адрес — ''192.168.0.3/OKTELL'' или только ''192.168.0.3''. &lt;br /&gt;
&lt;br /&gt;
Если вы поменяли основную учетную запись AutelService, то необходимо указать новые логин и пароль в полях '''uid''' и '''pwd''' соответственно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Серверная служба не запускается -003.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Узнать название вашего сервера (инстанс) вы всегда можете с помощью команды &lt;br /&gt;
 sqlcmd.exe -L &lt;br /&gt;
в командной строке Windows. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Серверная служба не запускается -004.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 7.'''  Запустите службу '''oktellserver'''. Для этого в командной строке выполните &lt;br /&gt;
 net start oktellserver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:бэкв.PNG|center]]&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%9F%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA_%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B_%D0%B2_%D1%80%D1%83%D1%87%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%D0%B5</id>
		<title>Порядок обновления программы в ручном режиме</title>
		<link rel="alternate" type="text/html" href="%D0%9F%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA_%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B_%D0%B2_%D1%80%D1%83%D1%87%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%D0%B5"/>
				<updated>2023-04-05T07:37:41Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Дополнительно|Наверх]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Порядок действия при обновлении Oktell до старшей версии.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Внимание, файлы обновления будут установлены, только в том случае, если ваша лицензия имеет действительный АГО (абонемент годового обновления).  Крайне не рекомендуется обновляться в ручном режиме, в случае отсутствия действующего АГО. Наличие АГО вы можете проверить в меню Администрирование — Общие настройки — Информация — Ограничения по версиям&lt;br /&gt;
Обновление проходит в несколько этапов. При необходимости обновления комплекса инструкция будет дополнительно предоставлена технической поддержкой. Ниже приведены общие этапы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. В полуавтоматическом режиме:'''&lt;br /&gt;
&lt;br /&gt;
* скачать файл обновления.&lt;br /&gt;
&lt;br /&gt;
* указать файл обновления в меню &amp;quot;Администрирование &amp;gt; Общие настройки &amp;gt; Управление сервером&amp;quot; кнопка &amp;quot;Провести обновление из файла&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* После этого сервер перезапустится и обновит всех клиентов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. В ручном режиме:''' &lt;br /&gt;
&lt;br /&gt;
* скачать файл обновления с и распаковать на жесткий диск сервера.&lt;br /&gt;
&lt;br /&gt;
* остановить сервер oktell (службу oktellserver);&lt;br /&gt;
&lt;br /&gt;
* содержимое папок srv, both скопировать в папку C:\Program Files\Oktell\Server\&lt;br /&gt;
&lt;br /&gt;
* содержимое папок cli, both скопировать в папку C:\Program Files\Oktell\Server\LiveUpdate\&lt;br /&gt;
&lt;br /&gt;
* запустить сервер oktell (службу oktellserver).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Примечания'''&lt;br /&gt;
&lt;br /&gt;
# Настоятельно рекомендуется сохранить сборки работающего комплекса и произвести резервное копирование баз данных. &lt;br /&gt;
# Для последующего обновления всех клиентских рабочих мест файлы дублируются в каталог серверного приложения «LiveUpdate». &lt;br /&gt;
# Файлы обновления БД перед первым запуском находятся в каталоге сервера «DBAutoUpdate» (SQL скрипты).&lt;br /&gt;
# Контроль корректности обновления БД (каталог «DBAutoUpdate» должен быть пуст после корректного обновления).&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%9F%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA_%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B_%D0%B2_%D1%80%D1%83%D1%87%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%D0%B5</id>
		<title>Порядок обновления программы в ручном режиме</title>
		<link rel="alternate" type="text/html" href="%D0%9F%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA_%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B_%D0%B2_%D1%80%D1%83%D1%87%D0%BD%D0%BE%D0%BC_%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%D0%B5"/>
				<updated>2023-04-05T07:37:08Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Дополнительно|Наверх]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Порядок действия при обновлении Oktell до старшей версии.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Внимание, файлы обновления будут установлены, только в том случае, если ваша лицензия имеет действительный АГО (абонемент годового обновления).  Крайне не рекомендуется обновляться в ручном режиме, в случае отсутствия действующего АГО. Наличие АГО вы можете проверить в меню Администрирование — Общие настройки — Информация — Ограничения по версиям&lt;br /&gt;
Обновление проходит в несколько этапов. При необходимости обновления комплекса инструкция будет дополнительно предоставлена технической поддержкой. Ниже приведены общие этапы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. В полуавтоматическом режиме:'''&lt;br /&gt;
&lt;br /&gt;
* скачать файл обновления.&lt;br /&gt;
&lt;br /&gt;
* указать файл обновления в меню &amp;quot;Администрирование &amp;gt; Общие настройки &amp;gt; Управление сервером&amp;quot; кнопка &amp;quot;Провести обновление из файла&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* После этого сервер перезапустится и обновит всех клиентов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. В ручном режиме:''' &lt;br /&gt;
&lt;br /&gt;
* скачать файл обновления с и распаковать на жесткий диск сервера.&lt;br /&gt;
&lt;br /&gt;
* остановить сервер oktell (службу oktellserver);&lt;br /&gt;
&lt;br /&gt;
* содержимое папок srv, both скопировать в папку C:\Program Files\Oktell\Server\&lt;br /&gt;
&lt;br /&gt;
* содержимое папок cli, both скопировать в папку C:\Program Files\Oktell\Server\LiveUpdate\&lt;br /&gt;
&lt;br /&gt;
* запустить сервер oktell (службу oktellserver).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Примечания'''&lt;br /&gt;
&lt;br /&gt;
# Настоятельно рекомендуется сохранить сборки работающего комплекса и произвести резервное копирование баз данных. &lt;br /&gt;
# Для последующего обновления всех клиентских рабочих мест файлы дублируются в каталог серверного приложения «LiveUpdate». &lt;br /&gt;
# Файлы обновления БД перед первым запуском находятся в каталоге сервера «DBAutoUpdate». (SQL скрипты)&lt;br /&gt;
# Контроль корректности обновления БД (каталог «DBAutoUpdate» должен быть пуст после корректного обновления).&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B8_%D0%B1%D0%B5%D0%B7_%D0%BF%D0%BE%D0%B4%D1%80%D0%BE%D0%B1%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F</id>
		<title>Сценарии без подробного описания</title>
		<link rel="alternate" type="text/html" href="%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B8_%D0%B1%D0%B5%D0%B7_%D0%BF%D0%BE%D0%B4%D1%80%D0%BE%D0%B1%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F"/>
				<updated>2023-03-31T12:50:13Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
В этой статье будут добавляться все сценарии, которые подлежат описанию, либо те, для которых подробное описание не требуется.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:*'''Call-центр. Служебный сценарий набора номера абонента [[Media:Svc_%D0%BD%D0%B0%D0%B1%D0%BE%D1%80_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80%D0%B0_cc.oscr|Сценарий последовательного перебора линий]]''' - При совершении звонка исходящей задачей последовательно проходит по всем внешним линиям, в случае не удачных попыток система попытается совершить набор следующим образом: НОМЕР1 по линии 13001, НОМЕР1 по линии 13002,..., НОМЕР1 по линии 13ххх, НОМЕР1 по линии 13001,... (циклически по всем доступным линиям).&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>Oktell_Fast_Call</id>
		<title>Oktell Fast Call</title>
		<link rel="alternate" type="text/html" href="Oktell_Fast_Call"/>
				<updated>2023-03-31T12:49:20Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Утилиты|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Oktell Fast Call''' - удобное приложение, которое позволяет звонить на выделенный в данный момент номер. Чтобы совершить вызов вам нужно всего лишь выделить номер и нажать горячую клавишу на клавиатуре.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Oktell Fast Call 11.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Возможности программы'''&lt;br /&gt;
&lt;br /&gt;
*Звонок из любого приложения/места, где можно выделить текст/номер телефона;&lt;br /&gt;
*Назначение горячей клавиши из одной или двух кнопок;&lt;br /&gt;
*Повторный звонок на тот же номер по горячей клавише, не выделяя текст заново. Буфер обмена при этом заменяется набранным номером телефона;&lt;br /&gt;
*Обработка ссылок ''callto:'' и ''tel:''. При этом другие приложения использующие данный функционал должны быть выключены или в них должен быть отключен подобный функционал на уровне настроек;&lt;br /&gt;
*Использование клиентского приложения Oktell для звонков;&lt;br /&gt;
*Использование серверной части, если у вас не установлено клиентское приложение;&lt;br /&gt;
*Возможность использования одного телефона на двоих или большее число людей. Для этого просто укажите внутренний номер этого телефона;&lt;br /&gt;
*Расположение в трее.&lt;br /&gt;
&lt;br /&gt;
Скачать программу: [[Media:Oktell_Fast_Call_v1.1.zip|Oktell Fast Call v1.1.exe]]&lt;br /&gt;
&lt;br /&gt;
Материалы статьи взяты из блога [http://pacifizd.blogspot.ru/2014/08/oktell-fast-call.html http://pacifizd.blogspot.ru]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Работа с клиентским приложением Oktell==&lt;br /&gt;
&lt;br /&gt;
'''1.''' Скачайте и запустите приложение '''Oktell Fast Call'''&lt;br /&gt;
&lt;br /&gt;
'''2.''' Откройте '''Настройки''' двойным щелчком левой клавишей мыши по иконке в трее или правой клавишей мыши и выберите пункт &amp;quot;'''Настройки'''&amp;quot; из контекстного меню. &lt;br /&gt;
&lt;br /&gt;
'''3.''' Для работы с клиентским приложением задайте следующие настройки:&lt;br /&gt;
* '''Горячая клавиша''' - Нажатие на заданную клавишу или комбинацию клавиш активирует звонок по выделенному номеру. По умолчанию, F9. &lt;br /&gt;
* '''Порт''' - локальный порт клиентского приложения для приема http-запросов. По умолчанию, 4059.  О том как поменять порт, читайте в статье [[Параметры_файлов_конфигурации#ClientWebServerPort|Параметры файлов конфигурации]] (настройка ''ClientWebServerPort'')&lt;br /&gt;
* '''Использовать клиентское место Oktell''' - установите галочку для работы с клиентским приложением.&lt;br /&gt;
По окончанию настроек, нажмите '''Ок'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Oktell Fast Call 2.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Работа в отсутствие клиентского приложения Oktell==&lt;br /&gt;
&lt;br /&gt;
'''1.''' Скачайте и запустите приложение '''Oktell Fast Call'''&lt;br /&gt;
&lt;br /&gt;
'''2.''' Откройте '''Настройки''' двойным щелчком левой клавишей мыши по иконке в трее или правой клавишей мыши и выберите пункт &amp;quot;'''Настройки'''&amp;quot; из контекстного меню. &lt;br /&gt;
&lt;br /&gt;
'''3.''' Для работы в отсутствие клиентского приложения Oktell используется серверный HTTP интерфейс. Для этого требуется указать следующие настройки:&lt;br /&gt;
* '''Горячая клавиша''' - по умолчанию, F9. Нажатие на заданную клавишу или комбинацию клавиш активирует звонок по выделенному номеру. &lt;br /&gt;
* '''Логин / Пароль''' - учетная запись пользователя, от имени которого будет совершаться HTTP-запрос на сервер. В примере используется учетная запись '''admin'''. &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: в настройках доступа пользователя (Администрирование/Пользователи/''{данный пользователь}''/Доступ) должно быть установлена привилегия &amp;quot;''Возможность исполнять методы Web-API''&amp;quot;.&lt;br /&gt;
* '''Внутренний номер''' - номер сотрудника, который совершает вызов по выделенному номеру. Если не указан, то в служебном сценарии для OktellFastCall внутренний номер пользователя можно определить по его учетной записи (логину). В примере указан номер пользователя admin - '''400'''.&lt;br /&gt;
* '''Сценарий''' - служебный сценарий для коммутации сотрудника с внешним абонентом. В примере используется сценарий OktellFastCall; разбор сценария представлен ниже. На вход сценария передаются следующие параметры: 1 - выделенный номер, 2 - логин пользователя, 3 - внутренний номер.&lt;br /&gt;
* '''Сервер''' - IP адрес сервера Oktell. В примере ''192.168.0.82''.&lt;br /&gt;
* '''Порт''' - доступный порт web-сервера Oktell. В примере используется 4055. Настройка web-сервера Oktell рассматривается в статье [[Настройка Web-сервера Oktell]]&lt;br /&gt;
* '''Использовать клиент Oktell''' - для режима работы с сервером Oktell снимите галочку. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Файл:Oktell Fast Call 10.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Описание сценария OktellFastCall=== &lt;br /&gt;
&lt;br /&gt;
Служебный сценарий OktellFastCall выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Oktell Fast Call 4.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Входные параметры'''&amp;quot;. Сохраняет входные параметры в переменные:&lt;br /&gt;
* переменной '''внешний номер''' присваивается значение функции &amp;quot;'''Входной параметр 1'''&amp;quot;&lt;br /&gt;
* переменной '''Пользователь''' присваивается значение функции &amp;quot;'''Входной параметр 2'''&amp;quot;&lt;br /&gt;
* переменной '''номер пользователя''' присваивается значение функции &amp;quot;'''Входной параметр 3'''&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Oktell Fast Call 6.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Номер не указан?'''&amp;quot;. Определяет указан ли внутренний номер в приложении Oktell Fast Call, сравнивает переменную '''Номер пользователя''' с пустой строкой. &lt;br /&gt;
* Аргумент 1 - переменная '''номер пользователя'''&lt;br /&gt;
* Аргумент 2 - пустая строка&lt;br /&gt;
* Тип сравнения - '''='''&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Внутренний номер'''&amp;quot;. Если внутренний номер не указан, то сценарий попробует определить внутренний номер по логину пользователя (переменная '''Пользователь''') с помощью компонента &amp;quot;''Статус объекта''&amp;quot;.&lt;br /&gt;
* Действие - Определить&lt;br /&gt;
* Тип объекта - Пользователь&lt;br /&gt;
* Ключ пользователя - переменная '''Пользователь''' &lt;br /&gt;
* Функция - Внутренний номер&lt;br /&gt;
* Значение в переменную - '''номер пользователя''' &lt;br /&gt;
Если у пользователя нет внутреннего номера, Oktell запишет в переменную &amp;quot;'''номер пользователя'''&amp;quot; специальную строку, обозначающую идентификатор пользователя, по которой впоследствии сможет дозвониться до пользователя. &lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Дозвон'''&amp;quot;. Производит вызов на пользователя, а затем запускает IVR сценарий маршрутизации исходящих с передачей на вход номера внешнего абонента. &lt;br /&gt;
* Номер/команда - переменная &amp;quot;'''Номер пользователя'''&amp;quot;&lt;br /&gt;
* Среда - Внутренний номерной план&lt;br /&gt;
* Обслуживание - IVR&lt;br /&gt;
* Тип вызова - Обычный&lt;br /&gt;
* Сценарий IVR - выбран сценарий &amp;quot;'''Маршрутизация исходящих'''&amp;quot;&lt;br /&gt;
* Параметр запуска IVR - переменная &amp;quot;'''внешний номер'''&amp;quot;&lt;br /&gt;
* CallerId - строка ''OktellFastCall''&lt;br /&gt;
Вместо компонента &amp;quot;'''Дозвон'''&amp;quot; вы можете использовать компонент &amp;quot;'''Коммутатор'''&amp;quot;, однако при сложном распределении линий по операторам в зависимости от внешнего номера этот вариант реализовывается сложнее. Также вы можете указать любой другой IVR сценарий для набора номера, указав в параметре запуска внешний номер. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Oktell Fast Call 7.png|center|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В стандартном IVR сценарии &amp;quot;'''Маршрутизации исходящих'''&amp;quot; необходимо выполнить следующую модификацию:&lt;br /&gt;
&lt;br /&gt;
1) Указать в компоненте &amp;quot;'''Старт'''&amp;quot; параметр запуска переменную '''Номер'''&lt;br /&gt;
&lt;br /&gt;
2) Добавить сравнение переменной '''Номер''' с пустой строкой.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Oktell Fast Call 5.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Удачной работы!'''&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>Oktell_AMI_Adapter</id>
		<title>Oktell AMI Adapter</title>
		<link rel="alternate" type="text/html" href="Oktell_AMI_Adapter"/>
				<updated>2023-03-31T12:48:25Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Утилиты|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
'''Oktell AMI Adapter''' - это служба для интеграции '''внешних программ''' и '''Oktell''' по протоколу AMI. &lt;br /&gt;
&lt;br /&gt;
В настоящее время существует большое количество программ, работающих по протоколу AMI с сервером Asterisk. Протокол AMI часто используют для интеграции с бизнес-процессами и программным обеспечением CRM. Он также может применяться для разнообразных приложений, таких как программы автоматического набора номера и системы click-to-call. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Благодаря AMI, внешние программы могут осуществлять соединения посредством TCP протокола, инициировать выполнение команд, считывать результат их выполнения, а так же получать уведомления о происходящих событиях в реальном времени. Этими механизмами можно пользоваться, например, в следующих случаях:&lt;br /&gt;
* Необходимо узнать текущее состояние системы&lt;br /&gt;
* Определить количество активных абонентов, состояние очередей&lt;br /&gt;
* Запуск внешнего процесса, дозвона или задачи&lt;br /&gt;
* Отправка статистики соединений на электронную почту&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Oktell AMI Adapter''' позволяет легко перейти с '''Asterisk''' на программный комплекс '''Oktell''' без потери функционала. По сути, продукт эмулирует работу программы '''Asterisk''', принимая сообщения интерфейса AMI и передавая их на сервер '''Oktell''' по постоянному установившемуся TCP-каналу. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Работа адаптера заключается в приеме запросов, поступающих на определенный TCP-порт и передача их на порты Web-сервера '''Oktell'''. При поступлении запроса в '''Oktell''' запускается определенный служебный сценарий, который анализирует сообщение и генерирует ответ обратно в адаптер. Для удобства разбора сообщения, '''Oktell AMI Adapter''' может преобразовывать запрос в XML-формат. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ:&amp;lt;/span&amp;gt; Для работы требуется предустановленный '''.NET Framework v4.5''' ([http://go.microsoft.com/fwlink/?LinkId=321331 Скачать]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:AmiAdapter-010.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Скачать дистрибутив Oktell AMI Adapter вы можете по ссылке [https://download.oktell.ru/data/Oktell_AMI_Adapter.zip https://download.oktell.ru/data/Oktell_AMI_Adapter.zip]&lt;br /&gt;
&lt;br /&gt;
== Подготовка Oktell==&lt;br /&gt;
&lt;br /&gt;
Настройте способ соединения '''Oktell''' и '''Oktell AMI Adapter''':&lt;br /&gt;
* Перейдите в '''Администрирование''' - '''Общие настройки''' - '''Web-интеграция с CRM'''. &lt;br /&gt;
* Выберите следующие настройки &lt;br /&gt;
:*'''Способ соединения с сервером CRM''' - '''CRM к Oktell (WebSocket)'''&lt;br /&gt;
:*'''Порт WebSocket Oktell для CRM''' - выберите порт для WebSocket-соединения. В примере, '''4067''' &lt;br /&gt;
:*'''Авторизация''' - '''Без авторизации'''&lt;br /&gt;
*Нажмите &amp;quot;'''Сохранить'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:AmiAdapter-002.png |center|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Установка Oktell AMI Adapter== &lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Скачайте и распакуйте архив в любое место. В примере, архив распаковывается на диск '''C:\'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' '''Регистрация службы Oktell.AMI.Adapter.''' Для этого необходимо воспользоваться программой '''InstallUtil''' по адресу '''C:\Windows\Microsoft.NET\Framework\v4.0.30319''' (на ОС Windows 7). &lt;br /&gt;
&lt;br /&gt;
В командной строке заходим в папку с программой и выполняем команду (в примере '''Oktell.AMI.Adapter.Svc.exe''' находится в папке '''C:\AMI_Adapter''').&lt;br /&gt;
&lt;br /&gt;
 C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe C:\AMI_Adapter\Oktell.AMI.Adapter.Svc.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:AmiAdapter-001.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 3.''' '''Редактирование конфигурационного файла Oktell AMI Adapter'''. Откройте файл '''Oktell.AMI.Adapter.Svc.exe.config'''.&lt;br /&gt;
&lt;br /&gt;
Для работы '''Oktell AMI Adapter''': &lt;br /&gt;
* Введите адрес для подключения к web-серверу Oktell:&lt;br /&gt;
 &amp;lt;add key=&amp;quot;OktellWebSocketUrl&amp;quot; value=&amp;quot;ws://192.168.0.82:4067&amp;quot; /&amp;gt;&lt;br /&gt;
* Введите интерфейс и порт слушателя: &lt;br /&gt;
 &amp;lt;add key=&amp;quot;TcpListenerEndPoint&amp;quot; value=&amp;quot;192.168.0.82:8888&amp;quot; /&amp;gt;&lt;br /&gt;
* Введите название сценария обработки запросов:&lt;br /&gt;
 &amp;lt;add key=&amp;quot;OktellScriptName&amp;quot; value=&amp;quot;AMI_ADAPTER_Script&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 4.''' '''Запуск службы Oktell.AMI.Adapter'''. &lt;br /&gt;
* Откройте &amp;quot;'''Управление службами'''&amp;quot; ('''Мой компьютер''' &amp;quot;правой кнопкой&amp;quot; -&amp;gt;''' Управление''' -&amp;gt; '''Службы и приложения''' -&amp;gt; '''Службы'''). &lt;br /&gt;
* Запустите службу '''Oktell.AMI.Adapter'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:AmiAdapter-003.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка сценария обработки запросов ==&lt;br /&gt;
&lt;br /&gt;
Все запросы, поступающие в '''Oktell AMI Adapter''', пересылаются в '''Oktell'''. При этом запускается сценарий (параметр конфигурационного файла '''OktellScriptName'''), на вход которого передается текст сообщения в XML-формате. Преобразование сообщение в XML-формат задается в конфигурационном файле в параметре '''ConvertAmiToXml'''. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;'''Действия сценария при получении запроса:'''&amp;lt;/u&amp;gt;&lt;br /&gt;
#Разбор и анализ поступившего сообщения&lt;br /&gt;
#Выполнение действий и формирование ответа&lt;br /&gt;
#Отправка сообщения в '''Oktell AMI Adapter'''&lt;br /&gt;
&lt;br /&gt;
'''Скачать пример:''' [[Media:AMI_ADAPTER_Script.zip|AMI_ADAPTER_Script.zip]]&lt;br /&gt;
&lt;br /&gt;
Создайте сценарий с названием, которое прописано в конфигурационном файле. В примере, '''AMI_ADAPTER_Script'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:AmiAdapter-004.png |center | 600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Простейший сценарий выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:AmiAdapter-005.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сценарий разбирает запросы '''Login''', '''Logoff''' и '''Originate''', формирует и отправляет ответы. При запросе '''Originate''' коммутирует абонентов указанных в полях Exten и Channel. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Компонент '''&amp;quot;Старт 1&amp;quot;'''&amp;lt;/u&amp;gt;. В качестве параметра запуска переменная xml (строковая) содержит текст запроса в XML-виде. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Компонент '''&amp;quot;Анализ action&amp;quot;'''&amp;lt;/u&amp;gt;. Разбирает '''xml''' структуру, определяет параметр '''Action''' и записывает в соответствующую переменную '''Action'''(строковая). Переход осуществляется к следующему элементу как по основной ветке, так и по ветке &amp;quot;'''Ошибка'''&amp;quot; (тогда в переменной '''Action''' будет пустая строка).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:AmiAdapter-006.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Компонент '''&amp;quot;Текст action&amp;quot;'''&amp;lt;/u&amp;gt;. Отладочное уведомление, выводит текст переменной '''Action'''. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Компонент '''&amp;quot;action?&amp;quot;'''&amp;lt;/u&amp;gt;. Меню, в зависимости от параметра '''Action''' формирует ответ и совершает необходимые действия. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Компонент '''&amp;quot;Success&amp;quot;'''&amp;lt;/u&amp;gt;. Формирует ответ на запрос. В переменную answer записывается строка (с переносом строки)&lt;br /&gt;
&lt;br /&gt;
 Response: Success&lt;br /&gt;
 Message: Authentication accepted&lt;br /&gt;
&lt;br /&gt;
Аналогично настраивается компонент &amp;quot;'''Goodbye'''&amp;quot;. Формат ответа:&lt;br /&gt;
&lt;br /&gt;
 Response: Goodbye&lt;br /&gt;
 Message: Thanks for all the fish.&lt;br /&gt;
&lt;br /&gt;
Формат ответа на &amp;quot;'''Originate'''&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 Response: Success&lt;br /&gt;
 Message: Originate successfully queued&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Компоненты '''&amp;quot;Callerid&amp;quot;''' и '''&amp;quot;Exten&amp;quot;''' &amp;lt;/u&amp;gt;. Разбирают структуру запроса и выделяют поля '''Callerid''' и '''Exten'''. Далее с помощью компонента &amp;quot;'''Коммутация 1'''&amp;quot; данные абоненты коммутируются. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Компонент &amp;quot;'''Отправка ответа'''&amp;quot;&amp;lt;/u&amp;gt;. Отправляет ответ в '''Oktell AMI Adapter''' с помощью компонента &amp;quot;'''Действие/карточка в Plugin или WebCRM'''&amp;quot;. &lt;br /&gt;
*&amp;quot;'''Модуль, действие'''&amp;quot; - WebCRM - SendAMIMessage.&lt;br /&gt;
*&amp;quot;'''Свойства'''&amp;quot; - для выходной переменной модуля message выберите переменную сценария '''answer'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:AmiAdapter-008.png|center|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Скачать пример сценария:''' [[Media:AMI_ADAPTER_Script.zip|AMI ADAPTER Script.zip]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Проверка работы ==&lt;br /&gt;
&lt;br /&gt;
Для проверки работы вы можете использовать компонент Windows &amp;quot;'''клиент telnet'''&amp;quot;. Подключение осуществляется в командной строке:&lt;br /&gt;
&lt;br /&gt;
 telnet 192.168.0.82 8888&lt;br /&gt;
&lt;br /&gt;
После входа, введите запрос и нажмите два раза клавишу ввода.&lt;br /&gt;
&lt;br /&gt;
 Action: Login&lt;br /&gt;
&lt;br /&gt;
Вам должен прийти ответ от '''Oktell AMI Adapter'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:AmiAdapter-009.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Конфигурационный файл==&lt;br /&gt;
&lt;br /&gt;
Откройте папку с '''Oktell AMI Adapter'''. Конфигурационный файл '''Oktell.AMI.Adapter.Svc.exe.config''' находится в корне папки, открывается с помощью блокнота (рекомендуется использовать notepad++).&lt;br /&gt;
&lt;br /&gt;
Конфигурационный файл имеет следующие параметры: &lt;br /&gt;
*'''OktellWebSocketUrl''' - адрес для web-socket подключения к серверу Oktell. По умолчанию, «'''ws://192.168.0.82:4067'''».&lt;br /&gt;
*'''OktellWebSocketUrl_2''' - адрес для web-socket подключения к другому серверу Oktell. Используется для обеспечения отказоустойчивости системы.&lt;br /&gt;
*'''OktellWebSocketUrl_3''' - адрес для web-socket подключения к третьему серверу Oktell. Используется для обеспечения отказоустойчивости системы.&lt;br /&gt;
*'''TcpListenerEndPoint''' - интерфейс и порт слушателя tcp-подключений. По умолчанию, «'''127.0.0.1:8888'''».&lt;br /&gt;
*'''OktellScriptName''' - название сценария обработки запросов. По умолчанию, «'''some_script'''».&lt;br /&gt;
*'''EnableAdapterLog''' - логирование работы адаптера. «0» - не активно, «1» - активно. По умолчанию, «'''1'''».&lt;br /&gt;
*'''EnableAMIConnectionLog''' - логирование подключений. «0» - не активно, «1» - активно. По умолчанию, «'''1'''».&lt;br /&gt;
*'''EnableOktellConnectionLog''' - логирование соединений с сервером Oktell. «0» - не активно, «1» - активно. По умолчанию, «'''1'''».&lt;br /&gt;
*'''ConvertAmiToXml''' - преобразование сообщения на языке AMI протокола в XML для удобства парсинга. «0» - не активно, «1» - активно. По умолчанию, «'''1'''».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Возможные проблемы==&lt;br /&gt;
&lt;br /&gt;
'''1.''' Если не получается зарегистрировать службу Oktell.AMI.Adapter (ошибка HRESULT: 0x80131515), то откройте свойства файла &lt;br /&gt;
Oktell.AMI.Adapter.Svc.exe и разблокируйте содержимое. Затем нажмите ОК.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:AmiAdapter-011.png|center]]&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>Oktell_Antirobot</id>
		<title>Oktell Antirobot</title>
		<link rel="alternate" type="text/html" href="Oktell_Antirobot"/>
				<updated>2023-03-31T12:46:50Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Утилиты | Наверх]]&lt;br /&gt;
&lt;br /&gt;
'''Oktell Antirobot (Call Progress Analysis), (CPA)''' — анализатор голосовых ответов мобильных операторов. &lt;br /&gt;
&lt;br /&gt;
===Введение===&lt;br /&gt;
&lt;br /&gt;
Если абонент недоступен, занят, или не отвечает, в трубке при звонке можно услышать такие фразы как&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Телефон абонента выключен или находится вне зоны действия сети&amp;quot;&lt;br /&gt;
* &amp;quot;В настоящее время абонент не может ответить на ваш звонок. Оставьте сообщение после сигнала&amp;quot;&lt;br /&gt;
* &amp;quot;Абонент временно недоступен. Попробуйте позвонить позднее&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Эти фразы относительно системы '''Antirobot''' называются '''Эталонами'''. &lt;br /&gt;
&lt;br /&gt;
'''Oktell Antirobot''' предназначен для того, чтобы правильно распознавать такие ответы и заранее разрывать соединение, не допуская попадания оператора на голосовую почту. Особенно это актуально для компаний, которые используют исходящие задачи. &lt;br /&gt;
&lt;br /&gt;
'''Antirobot''' регистрируется между установленной в офисе системой телефонии и провайдером связи и работает за счёт реализованного метода сравнения голосовых данных с эталонными файлами операторских ответов. В момент, когда звонок call-центра попадает на автоответчик, программа разрывает соединение и направляет в call-центр ответ о занятости или недоступности абонента.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-000.png | center ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Анализ голосовых сообщений от провайдера и сравнение их с эталонами - '''ресурсозатратная задача'''. Затраты сильно зависят от количества совершаемых звонков.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; ВНИМАНИЕ: Рекомендуется устанавливать Antirobot и Oktell на разные компьютеры. &lt;br /&gt;
&lt;br /&gt;
'''Требования к серверу Antirobot''': &lt;br /&gt;
Следующие технические требования предназначены для нагрузки 500 одновременных коммутаций с интенсивностью обзвона до 50 коммутаций в секунду (сессий на распознаваний): &lt;br /&gt;
* Процессор Intel Core i7. &lt;br /&gt;
* Оперативная память не менее 4 Гб. Рекомендуется 8 Гб и больше.&lt;br /&gt;
Сервер Oktell Antirobot с большей мощностью может проксировать/обрабатывать большее количество звонков.&lt;br /&gt;
&lt;br /&gt;
'''Требования к операционной системе''':&lt;br /&gt;
* не ниже Windows 7 SP1&lt;br /&gt;
* Для работы требуется Framework 4.0. &lt;br /&gt;
&amp;lt;!--old links&lt;br /&gt;
&amp;lt;u&amp;gt;Скачать '''Oktell Antirobot'''&amp;lt;/u&amp;gt;: [http://wiki.oktell.ru/images/5/5a/Oktell_Antirobot.zip Oktell Antirobot.zip]&lt;br /&gt;
&amp;lt;u&amp;gt;Скачать '''Обновление Oktell Antirobot 1.4.1.0'''&amp;lt;/u&amp;gt;: [http://wiki.oktell.ru/images/f/f6/Antirobot_1.4.1.0_%2807.04.15%29.zip Файл:Antirobot 1.4.1.0 (07.04.15).zip]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:AntirobotSetup ru.zip|Скачать '''Oktell Antirobot''']]&lt;br /&gt;
&lt;br /&gt;
[[Media:Antirobot 1.4.2.0 (08.07.15).zip|Скачать '''Обновление Oktell Antirobot 1.4.2.0''']]&lt;br /&gt;
&lt;br /&gt;
Ниже рассказывается об установке и настройке '''Oktell Antirobot'''. &lt;br /&gt;
&lt;br /&gt;
В данной статье &amp;quot;'''Oktell'''&amp;quot; установлен на сервере с ip-адресом &amp;quot;192.168.0.81&amp;quot; , &amp;quot;'''Oktell Antirobot'''&amp;quot; установлен на сервере с ip-адресом &amp;quot;192.168.0.82&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; ВНИМАНИЕ: Если вы хотите разместить Oktell Antirobot на той же рабочей станции, где установлен Oktell, то вам следует поменять порты в конфигурационном файле.&lt;br /&gt;
&lt;br /&gt;
=== Установка Oktell Antirobot === &lt;br /&gt;
&lt;br /&gt;
'''1.''' Установка системы на сервере '''Antirobot'''. Запустите '''AntirobotSetup_ru.msi'''. Следуйте инструкции. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; 1. [[Файл:Антиробот-002.PNG | 300px ]] 2. [[Файл:Антиробот-003.PNG | 300px ]] 3. [[Файл:Антиробот-004.PNG | 300px ]] &amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; 4. [[Файл:Антиробот-005.PNG | 300px ]] 5. [[Файл:Антиробот-006.PNG | 300px ]] &amp;lt;/center&amp;gt; &lt;br /&gt;
&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; ВНИМАНИЕ: По умолчанию, Oktell Antirobot использует порт 5060 (udp). Убедитесь, что этот порт не занимается другим процессом. Вы всегда можете сменить этот порт в конфигурационном файле. &lt;br /&gt;
&lt;br /&gt;
Наберите в командной строке: &lt;br /&gt;
&lt;br /&gt;
 netstat -anop udp&lt;br /&gt;
&lt;br /&gt;
По '''PID''' процесса в диспетчере задач найдите '''наименование процесса'''. Если порт занимается другим процессом, завершите его и перезагрузите службу '''Oktell Antirobot'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Обновление Oktell Antirobot === &lt;br /&gt;
&lt;br /&gt;
Чтобы обновить Oktell Antirobot:&lt;br /&gt;
&lt;br /&gt;
'''1)''' Остановите службу '''Oktell Antirobot'''. &lt;br /&gt;
&lt;br /&gt;
'''2)''' Скачайте и распакуйте файлы обновления в корень папки Oktell Antirobot с заменой. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Скачать '''Обновление Oktell Antirobot 1.4.2.0'''&amp;lt;/u&amp;gt;: [[Media:Antirobot_1.4.2.0_%2808.07.15%29.zip|Antirobot 1.4.2.0 (08.07.15).zip]]&lt;br /&gt;
&lt;br /&gt;
'''3)''' Запустите службу '''Oktell Antirobot'''.&lt;br /&gt;
&lt;br /&gt;
=== Схемы настройки Oktell, Антиробота и провайдера ===&lt;br /&gt;
&lt;br /&gt;
Существует два варианта настройки системы в зависимости от взаимодействия с поставщиком связи - с регистрацией и без регистрации на стороне провайдера.&lt;br /&gt;
&lt;br /&gt;
'''Вариант 1:''' Подключение с регистрацией на провайдере (до и после)&lt;br /&gt;
&lt;br /&gt;
*В настройках подключения АТС указываете в Outbound proxy адрес компьютера с Антироботом.&lt;br /&gt;
*В Антироботе в настройках нового шлюза в качестве SIP-домена дублируется адрес провайдера (по этому адресу Антиробот будет сопоставлять звонки, если будет использовано несколько аккаунтов). В Outbound proxy укажите адрес взятый из прежних настроек подключения вашей АТС. Если он идентичен домену, то поле можно оставить пустым.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-040.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; ВНИМАНИЕ: В связке '''Oktell''' с '''Antirobot''' рекомендуется использовать тип &amp;quot;'''С регистрацией'''&amp;quot; для облегчения маршрутизации SIP-сообщений. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Вариант 2:''' Подключение без регистрации (до и после)&lt;br /&gt;
&lt;br /&gt;
*Настройка режима без регистрации аналогична предыдущему.&lt;br /&gt;
*Ранее провайдер ссылался на адрес вашей АТС. Для использования Антиробота провайдер должен ссылаться на его адрес вместо АТС. Таким образом входящие звонки от провайдера будут попадать на Антиробот.&lt;br /&gt;
*Антиробот же в настройках шлюза должен ссылаться на адрес вашей АТС. Таким образом входящие звонки от провайдера, пришедшие на Антиробот, будут им перенаправляться на вашу АТС.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-041.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; ВНИМАНИЕ: После подключения без регистрации для начала работы обязательно совершите хотя бы один исходящий звонок из АТС. До тех пор, пока вы это не сделаете, система будет отклонять все входящие звонки с кодом ответа 403. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка системы с регистрацией === &lt;br /&gt;
&lt;br /&gt;
В качестве примера, рассмотрим подключение Oktell Antirobot с регистрацией на провайдере.&lt;br /&gt;
&lt;br /&gt;
'''1.''' Зайдите в '''панель управления Antirobot''', для этого кликните на ярлык &amp;quot;'''AntiRobot Admin'''&amp;quot; на вашем рабочем столе. Или наберите в браузере &amp;quot;'''http://localhost:8888/'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Наберите пароль &amp;quot;'''123'''&amp;quot;. Нажмите '''Войти'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-010.PNG | center |300px  ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2.''' Введите регистрационные данные. ('''Если у вас их нет, обратитесь к менеджерам Oktell'''). Нажмите &amp;quot;'''Активировать'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-011.PNG | center | 800px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3.''' Нажмите &amp;quot;'''Добавить шлюз'''&amp;quot;. Введите следующие данные:&lt;br /&gt;
&lt;br /&gt;
* '''Название''': любое, будет отображаться в списке Шлюзы. В примере, '''Сипнет'''&lt;br /&gt;
* '''Тип регистрации''': выберите нужный тип регистрации. В примере, '''С регистрацией'''&lt;br /&gt;
* '''Домен''': домен провайдера. В примере, '''sipnet.ru'''&lt;br /&gt;
* '''Outbound proxy''': по умолчанию, совпадает с доменом. В примере, '''sipnet.ru'''&lt;br /&gt;
&lt;br /&gt;
Нажмите &amp;quot;'''Сохранить'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-012.PNG | center | 800px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4.''' Так как вы не настроили '''Oktell''', вы увидите следующую схему. На ней показано, что Antirobot не связан с Oktell (регистрация не завершена).   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-013.PNG | center | 800px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5.''' Перейдите на сервер '''Oktell'''. Необходимо настроить '''Oktell''' для работы с '''Antirobot'''. Зайдите в '''Oktell''' -&amp;gt; раздел &amp;quot;'''Администрирование'''&amp;quot; -&amp;gt; модуль &amp;quot;'''Карта сети'''&amp;quot;. Зайдите в '''настройки шлюза''', через линии которого работает исходящая задача. Поменяйте &amp;quot;'''IP адрес SIP-Proxy сервера'''&amp;quot; на ip-адрес сервера '''Antirobot'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-015.PNG | center ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''6.''' Нажмите '''ОК'''. Перейдите на вкладку &amp;quot;'''Сохранение'''&amp;quot;. Нажмите &amp;quot;'''Проверить'''&amp;quot; -&amp;gt; &amp;quot;'''Сохранить карту'''&amp;quot; -&amp;gt; &amp;quot;'''Перезагрузить'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''7.''' После перезагрузки в панели управления '''Antirobot''' будет показано, что регистрация успешно завершена .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-014.PNG | center | 800px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Сохранение эталонов средствами Antirobot===&lt;br /&gt;
&lt;br /&gt;
'''Эталон''' - голосовое сообщение получаемое от провайдера. В процессе своей работы '''Oktell Antirobot''' записывает сообщение от провайдера и сравнивает его с эталоном. Если сходство файлов высоко, то '''Oktell Antirobot''' распознает это как соответствующий сигнал (&amp;quot;'''Занято'''&amp;quot; или &amp;quot;'''Недоступен'''&amp;quot;), отсылает сигнал серверу '''Oktell''' и разрывает связь. &lt;br /&gt;
&lt;br /&gt;
Для записи голосового сообщения выполните следующие шаги:&lt;br /&gt;
&lt;br /&gt;
'''1.''' Откройте конфигурационный файл &amp;quot;'''antirobot.json.cfg'''&amp;quot;, который по умолчанию, располагается по пути ''C:\Program Files (x86)\oktell\Antirobot'' с помощью блокнота. &lt;br /&gt;
&lt;br /&gt;
'''2.''' Установите ключ ''save_temp_files'' значение &amp;quot;'''1'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;save_temp_files&amp;quot;: 1&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-042.png | center]]&lt;br /&gt;
&lt;br /&gt;
'''3.''' Перезагрузите службу Oktell Antirobot.&lt;br /&gt;
&lt;br /&gt;
После выполнения данных шагов в папке '''\Antirobot\temp''' будут храниться записи ответов от провайдера. Длительность записи зависит от настройки ''response_time_milliseconds'' (см. [[Oktell_Antirobot#.D0.9A.D0.BE.D0.BD.D1.84.D0.B8.D0.B3.D1.83.D1.80.D0.B0.D1.86.D0.B8.D0.BE.D0.BD.D0.BD.D1.8B.D0.B9_.D1.84.D0.B0.D0.B9.D0.BB | конфигурационный файл]]). Записи можно использовать в качестве эталонов. &lt;br /&gt;
&lt;br /&gt;
Данный метод сохраняет только ограниченную часть голосового ответа от провайдера. Если голосовой трафик поступает в систему с переменными задержками, то система может не распознать ваше сообщение. В этом случае, обратитесь ко второму способу сохранения полной записи с помощью сниффера Wireshark.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Сохранение эталонов с помощью Wireshark===&lt;br /&gt;
&lt;br /&gt;
'''1.''' Чтобы записать голосовое сообщение от провайдера воспользуйтесь программой-сниффером [https://www.wireshark.org/ Wireshark]. Запустите программу и откройте '''окно выбора интерфейса'''.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-016.PNG | center | 800px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2.''' Выберите '''необходимый сетевой интерфейс'''. Распознать сетевой интерфейс поможет столбец '''Packets'''. Если количество захваченных пакетов будет увеличиваться, значит через этот интерфейс идет сетевой трафик. Нажмите '''Options'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-017.PNG | center | 800px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3.''' В окне '''фильтра захвата''' (Capture Filter) наберите: '''udp'''. Далее нажмите &amp;quot;'''Start'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-018.PNG | center | 600px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4.''' Позвоните через Oktell на любой телефон. Для того, чтобы записать голосовое сообщение от провайдера, смоделируйте такую ситуацию, например, '''отключите ваш телефон и позвоните на него'''. Подождите '''пару циклов голосового сообщения'''. Нажмите &amp;quot;'''Стоп'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-019.PNG | center | 800px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5.''' Найдите запись разговора. Выберите в меню '''Telephony''' -&amp;gt; '''RTP''' -&amp;gt; '''Show All Streams'''. Выберите необходимую запись разговора. Отбирать следует только те записи у которых столбец &amp;quot;'''Src addr'''&amp;quot; совпадает с ip-адресом сервера '''Antirobot''', а &amp;quot;'''Dst addr'''&amp;quot; совпадает с ip-адресом сервера '''Oktell'''. Нажмите '''Analyze'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-020.png | center | 800px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-021.png | center | 600px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''6.''' В открывшемся окне, вы можете прослушать запись разговора нажав на '''Player''' -&amp;gt; '''Decode''' -&amp;gt; '''установить галочку на потоке''' -&amp;gt; нажать '''Play'''. Если эта запись не содержит голосового сообщения от провайдера,  вернитесь на 5 пункт. &lt;br /&gt;
&lt;br /&gt;
Сохраните запись, нажав на &amp;quot;'''Save payload...'''&amp;quot;. Укажите следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* '''Name''': имя файла. В примере, &amp;quot;'''raw-format'''&amp;quot;.&lt;br /&gt;
* '''Save in folder''': выберите место, куда сохранить файл. В примере, '''Desktop'''. &lt;br /&gt;
* '''Format''': '''.raw'''&lt;br /&gt;
* '''Channels''': '''forward'''.&lt;br /&gt;
&lt;br /&gt;
Нажмите '''ОК'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-022.png | center | 600px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-023.png | center | 600px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''7.''' Сохраните ваш '''raw'''-файл в '''wav'''-формат. Воспользуйтесь программой [https://www.audacityteam.org/ Audacity]. Запустите программу нажмите &amp;quot;'''Импортировать'''&amp;quot;-&amp;gt; &amp;quot;'''Звуковой файл без заголовка Raw'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-024.png | center | 600px ]]&lt;br /&gt;
&lt;br /&gt;
Выберите следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* '''Кодирование''': кодек, в котором была произведена запись в wireshark (поле Payload) в пункте 5. В примере,''' A-Law'''.&lt;br /&gt;
&lt;br /&gt;
* '''Каналов''': '''1 канал (моно)'''.&lt;br /&gt;
&lt;br /&gt;
* '''Частота сэмплирования''': '''8000 Гц'''. &lt;br /&gt;
&lt;br /&gt;
Нажмите &amp;quot;'''Импортировать'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-025.png | center ]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Выберите нужный файл. В примере, созданный ранее &amp;quot;'''raw-format'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-026.png | center ]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''8.''' Прослушайте запись разговора. '''Выберите корректное устройство воспроизведения.''' Если воспроизведение некорректно перейдите в пункт 7. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-027.png | center |800px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''9.''' Экспортируйте файл в нужном формате. '''Oktell Antirobot''' принимает файлы в формате '''WAV (8000 кГц, 16 бит, Моно)'''. Нажмите '''Файл'''-&amp;gt;'''Экспортировать'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-028.png | center |800px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Выберите место, куда вы хотите '''сохранить файл'''. Напишите имя файла, выберите тип файла: '''WAV (Microsoft) signed 16 bit PCM'''. Нажмите &amp;quot;'''Сохранить'''&amp;quot;. В следующем окне нажмите '''ОК'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; [[Файл:Антиробот-029.png  ]] [[Файл:Антиробот-029a.png ]] &amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример''' записанного файла: [[Файл:Ростелеком_недоступен.zip]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Добавление эталонов в систему===&lt;br /&gt;
&lt;br /&gt;
Зайдите в панель администрирования '''Oktell'''. Перейдите на вкладку &amp;quot;'''Эталоны'''&amp;quot;. Нажмите &amp;quot;'''Добавить эталон'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Выберите следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;'''Название'''&amp;quot;: в примере, &amp;quot;Ростелеком - недоступен&amp;quot;.&lt;br /&gt;
* &amp;quot;'''Тип ответа'''&amp;quot;: ответ, '''соответствующий данному голосовому сообщению'''. В примере, &amp;quot;'''Недоступен (вне действия сети, голосовая почта)'''&amp;quot;&lt;br /&gt;
** Тип ответа: '''Недоступен''' - код sip-ответа '''480'''.&lt;br /&gt;
** Тип ответа: '''Занято''' - код sip-ответа '''486'''. &lt;br /&gt;
* &amp;quot;'''Расположение файла'''&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-030.png | center |800px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-031.png | center |800px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для большей вероятности распознавания добавьте несколько однотипных голосовых сообщений. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; ВНИМАНИЕ! Количество эталонов влияет на нагрузку системы. &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-032.PNG | center |500px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Мониторинг и Статистика===&lt;br /&gt;
&lt;br /&gt;
В разделе '''Мониторинг''' в режиме реального времени показываются все текущие разговоры и звонки, которые анализируются. &lt;br /&gt;
&lt;br /&gt;
В правой части раздела показывается статистика по звонкам. '''Статистика''' доступна за конкретный день (при наведении мышкой) и за последний месяц. Доступны следующие данные:&lt;br /&gt;
* '''Всего звонков''' - общее количество звонков &lt;br /&gt;
* '''Занято''' - количество звонков, которые были распознаны, как &amp;quot;'''Занято'''&amp;quot;. &lt;br /&gt;
* '''Недоступны''' - количество звонков, которые были распознаны, как &amp;quot;'''Недоступен'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Неудачные ответы от провайдера в статистике не учитываются&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-035.PNG.png|center|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Конфигурационный файл === &lt;br /&gt;
&lt;br /&gt;
Каталог с''' Oktell Antirobot''', по умолчанию, располагается по пути &amp;quot;'''C:\Program Files (x86)\oktell\Antirobot'''&amp;quot;. Конфигурационный файл &amp;quot;'''antirobot.json.cfg'''&amp;quot; находится в корне папки, открывается с помощью блокнота (рекомендуется использовать '''notepad++'''). &lt;br /&gt;
&lt;br /&gt;
'''Параметры конфигурационного файла:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt; Раздел &amp;quot;'''log'''&amp;quot; - настройки логирования  &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''max_storing_days'''&amp;quot; - длительность хранения лог-журналов, по умолчанию, '''4'''&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''common_enabled'''&amp;quot; - общее логирование системы, по умолчанию, '''1'''&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''media_enabled'''&amp;quot; - логирование медиа-трафика, по умолчанию,''' 0'''&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''web_enabled'''&amp;quot; - логирование web-интерфейса, по умолчанию, '''0'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt; Раздел &amp;quot;'''sip'''&amp;quot; - настройки sip-протокола. &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''local_port'''&amp;quot; - локальный sip-порт. Есть возможность добавить несколько портов, для этого скопируйте строку и укажите другой sip-порт. Также может использоваться для обеспечения работы antirobot и oktell на одном сервере. По умолчанию, '''5060'''&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''call_session_lifetime_seconds'''&amp;quot; - максимальная продолжительность любого разговора в секундах, по умолчанию, '''7200'''&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''keep_alive_interval_seconds'''&amp;quot; - интервал отправки сообщений keep-alive в секундах, по умолчанию, '''30'''&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''min_udp_port'''&amp;quot; и &amp;quot;'''max_udp_port'''&amp;quot; - интервал udp портов для передачи звуковых rtp пакетов. Если antirobot и oktell находятся на одном сервере, то порты не должны пересекаться с портами, определенными в oktell server. , по умолчанию '''2000''' и '''12000''' соответственно&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''busy_response_code'''&amp;quot; - ответ antirobot при распознанном эталоне &amp;quot;Занято&amp;quot;. По умолчанию 486.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''unavailable_response_code'''&amp;quot; - ответ antirobot при распознанном эталоне &amp;quot;Недоступен&amp;quot;. По умолчанию 480.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt; Раздел &amp;quot;'''web'''&amp;quot; - настройки web-интерфейса  &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''listener_port'''&amp;quot; - порт web-сервера. По умолчанию, '''8888'''&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''session_expire_seconds'''&amp;quot; - максимальное время продолжительности сессии в секундах. По умолчанию, '''3600'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt; Раздел &amp;quot;'''analysis'''&amp;quot; - настройка анализа голосовых сообщений  &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''disabled'''&amp;quot; - деактивирует режим анализа голосовых сообщение, по умолчанию, '''0'''&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''response_time_milliseconds'''&amp;quot; - интервал времени для принятия решения, в миллисекундах. По умолчанию, '''5000'''&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''frame_length_milliseconds'''&amp;quot; - длина временного окна, в миллисекундах. По умолчанию, '''20'''. &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; ВНИМАНИЕ: данную настройку менять не рекомендуется.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''bands_count'''&amp;quot; - количество полос частотного спектра окна. По умолчанию, '''20'''. &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; ВНИМАНИЕ: данную настройку менять не рекомендуется.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''criterion'''&amp;quot; - порог принятия решения (диапазон: 0 - 100). По умолчанию, '''50'''. &lt;br /&gt;
&lt;br /&gt;
* При уменьшении коэффициента, вероятность срабатывания системы возрастает (увеличится количество распознанных сообщений). Также увеличивается вероятность ошибки (увеличится количество неправильно распознанных сообщений).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;'''save_temp_files'''&amp;quot; - сохранение временных файлов, по умолчанию, '''0'''. &lt;br /&gt;
&lt;br /&gt;
* Если выставить ключу '''save_temp_files''' значение &amp;quot;'''1'''&amp;quot;, то в папке '''\Antirobot\temp''' будут храниться записи ответов от провайдера. Длительность записи зависит от настройки &amp;quot;'''response_time_milliseconds'''&amp;quot;. Записи можно использовать в качестве эталонов.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Подключение к базе данных SQLite ===&lt;br /&gt;
&lt;br /&gt;
В процессе своей работы '''Oktell Antirobot''' использует СУБД '''SQLite'''. Файл базы данных '''antirobot.sqlite.db''' располагается в корневом каталоге '''Oktell Antirobot'''. &lt;br /&gt;
&lt;br /&gt;
Для того, чтобы посмотреть содержимое базы данных рекомендуется использовать, например, '''SQLiteBrowser'''.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SQLiteBrowser.zip]]&lt;br /&gt;
&lt;br /&gt;
'''Перечень таблиц:'''&lt;br /&gt;
* '''stats''' : статистика работы &lt;br /&gt;
* '''settings''': настройки &lt;br /&gt;
* '''gateways''': шлюзы&lt;br /&gt;
* '''etalons''': список эталонов&lt;br /&gt;
* '''rejected''': список отклоненных (распознанных) вызовов&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антироботч2-001.png | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прилинковать '''SQLite''' к '''MSSQL''' поможет [http://community.spiceworks.com/how_to/show/2271-create-ms-sql-linked-server-to-the-spiceworks-sqlite-server следующая инструкция].&lt;br /&gt;
&lt;br /&gt;
При составлении запросов используйте функцию '''OpenQuery''', например &lt;br /&gt;
&lt;br /&gt;
 select * from openquery(NameOfLinkedServer, 'select * from rejected')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Обновление лицензии===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Чтобы '''обновить''' лицензию, зайдите в папку '''\oktell\Antirobot''' и удалите скрытый файл '''product.lic'''. ''Чтобы отобразить все скрытые файлы нажмите Alt-сервис-параметры папок-вид-показывать скрытые файлы, папки и диски.'' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Узнать свой регистрационный номер вы всегда можете, открыв файл '''product.inf''' с помощью блокнота.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-033.PNG | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Перезапустите службу '''Oktell Antirobot'''. ('''Панель управления''' - '''Администрирование''' - '''Службы''')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Антиробот-034.png | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Войдите в '''панель управления Antirobot''' и введите ваши новые '''регистрационные данные''', как описано в пункте [[Oktell Antirobot#Настройка системы | Настройка системы]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Успешной работы с Oktell Antirobot!'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Скачать '''Oktell Antirobot'''&amp;lt;/u&amp;gt;: [[Media:Oktell_Antirobot.zip|Oktell Antirobot.zip]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Возможные проблемы ===&lt;br /&gt;
&lt;br /&gt;
'''1.''' Невозможно активировать продукт, при активации пишет &amp;quot;Сервер активации недоступен&amp;quot;. &lt;br /&gt;
*Возможно, у вас неправильный пароль. Перевыпишите у менеджеров регистрационную карту и введите новые данные. &lt;br /&gt;
*Перейдите на сайт http://activate.oktell.ru/ и вручную выпишите файл активации. Поместите файл в корень папки Antirobot и переименуйте его в product.lic. Затем перезагрузите службу Oktell Antirobot.&lt;br /&gt;
&lt;br /&gt;
'''2.''' Входящий звонок отклоняется.&lt;br /&gt;
*Совершите хотя бы один исходящий звонок.&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>Okboard</id>
		<title>Okboard</title>
		<link rel="alternate" type="text/html" href="Okboard"/>
				<updated>2023-03-31T12:42:20Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Утилиты| Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Введение==&lt;br /&gt;
&lt;br /&gt;
Дашборды Okboard — система отображения динамических и хронологических показателей. Этот модуль в Okapp позволяет создавать графики для наблюдения за работой компании, выявлять слабые места и планировать соответствующие изменения. Такой способ отображения информации наглядно и компактно показывает всю аналитику call-центра и других бизнес-процессов компании.&lt;br /&gt;
&lt;br /&gt;
Преимущества такой системы очевидны:&lt;br /&gt;
# Доступ с любого устройства через удобный web-интерфейс Okapp&lt;br /&gt;
# Широкий спектр инструментов для мониторинга и построения отчетов &lt;br /&gt;
# Быстрое внедрение, настройка и модификация системы KPI&lt;br /&gt;
# Собственные настраиваемые алгоритмы обработки данных&lt;br /&gt;
# Настройка прав для разных групп пользователей&lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-040.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
Данные для отображения собираются из баз данных. Так, для сall-центра используются предустановленные показатели из собственной базы, а для других подразделений — из внешних систем. Взаимодействие с внешними источниками возможно посредством интеграции между базами данных, использования Web API и служебных сценариев. Собранная информация хранится в базе данных Oktell, тем самым обеспечивается сохранность данных в случае недоступности внешних ресурсов.&lt;br /&gt;
&lt;br /&gt;
Дашборды Okboard помогают принимать решения руководителям, аналитикам, маркетологам, специалистам по стратегическому развитию кампании. Также можно вывести показатели на большой экран, чтобы их мог видеть каждый сотрудник вашей компании.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
Посмотреть '''демонстрационный дашборд''' можно по этой [https://t.oktell.ru/modules/dashboards/app/#/7be4556e-8549-4764-9273-49d67c4572d7 ссылке]. &lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Установка==&lt;br /&gt;
&lt;br /&gt;
Okboard работает с SQL Server не ниже 2005 версии.&lt;br /&gt;
&lt;br /&gt;
1. Для работы сначала необходимо настроить Okapp. Подробнее о настройке читайте в статье [[Okapp]]&lt;br /&gt;
&lt;br /&gt;
2. В Okapp перейдите в модуль '''Магазин'''. Выберите модуль &amp;quot;Дашборды&amp;quot; и нажмите кнопку &amp;quot;'''Установить'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Доступ к модулю &amp;quot;'''Магазин'''&amp;quot; имеют только те пользователи, у которых есть соответствующие права доступа. Права доступа выставляются в клиентском приложении в модуле '''Администрирование'''/'''Пользователи'''. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Во избежание ошибок, обновите ваш Okapp до последней версии. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-030.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Для получения пробного 30-дневного периода перейдите на вкладку &amp;quot;'''Цена и покупка'''&amp;quot; и нажмите &amp;quot;'''Обновить список лицензий'''&amp;quot;. Пробная лицензия будет добавлена в список лицензий вашего сервера Oktell. Во время пробного периода в Okboard вам доступно 20 индикаторов. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: В лицензии считается суммарное число индикаторов. Таким образом, если у вас 5 дашбордов по 6 индикаторов, то это 30 индикаторов, а значит в тестовой версии случайные 10 будут отключены по лицензии.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-031.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для приобретения лицензии вы можете заполнить форму на вкладке &amp;quot;'''Цена и покупка'''&amp;quot; и отправить заявку. На указанный адрес электронной почты мы отправим договор и счет. После поступления оплаты вам нужно будет &amp;quot;'''Обновить список лицензий'''&amp;quot; также как и в пункте 3. &lt;br /&gt;
&lt;br /&gt;
4. После установки модуля, администраторы Oktell автоматически получают доступ для работы в Okboard. Для работы с дашбордами остальным пользователям необходимо выставить соответствующие права доступа. Перейдите в клиентское приложение Oktell в модуль Администрирование/Пользователи. Права доступа вы можете выставить как роли, так и конкретному пользователю системы. Имеются следующие права доступа:&lt;br /&gt;
*'''Dashboards''' - доступ к модулю &amp;quot;Okboard&amp;quot; в приложении Okapp&lt;br /&gt;
*'''Создание дашбордов''' - возможность создавать свои дашборды&lt;br /&gt;
*'''Создание и изменение SQL-запроса виджета''' - возможность создавать/изменять свои SQL-запросы для индикатора&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-041.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
==Работа с дашбордами==&lt;br /&gt;
&lt;br /&gt;
=== Cоздание дашборда ===&lt;br /&gt;
&lt;br /&gt;
Отображение данных в Okboard начинается с создания дашбордов. Каждый дашборд состоит из индикаторов — графиков, построенных на настраиваемых выборках данных. Каждый сотрудник компании может, если у него есть соответствующие права, просмотреть созданные отчеты и даже настроить свои собственные.&lt;br /&gt;
Отчеты настраиваются таким образом, чтобы по ним было удобно оценивать тенденции и закономерности процессов, протекающих в компании. Дашборды имеют свойство автообновления, однако следует учитывать, что при большой частоте запросов вы можете сильно нагрузить базу данных системы. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборды-001.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для создания дашборда выполните следующие шаги:&lt;br /&gt;
*Перейдите в раздел '''Дашборды'''.&lt;br /&gt;
*Выберите интересующий проект и нажмите кнопку &amp;quot;'''Новый'''&amp;quot; &lt;br /&gt;
*Чтобы создать дашборд, не привязанный к определенному проекту выберите в списке &amp;quot;'''Общие для проектов'''&amp;quot;. В этом случае, права на просмотр или изменение будут полностью определятся правами дашборда.&lt;br /&gt;
*Введите название дашборда.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-001.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После создания дашборда на экране показывается лист с 4 пустыми индикаторами. Чтобы создать отчет, нажмите на любой из них. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Источники данных ===&lt;br /&gt;
&lt;br /&gt;
Каждому индикатору требуется указать значения, которые он будет выводить на экране. В качестве значений могут быть строки (nvarchar), числа (int, float) и данные типа дата/время (datetime). Для построения графиков строки преобразовываются в числа. Исключением являются строки вида &amp;quot;чч:мм:сс&amp;quot;, которые преобразовываются в секунды.  Мы не рекомендуем использовать в одном наборе разные типы данных, это приведет к их неправильному отображению.  &lt;br /&gt;
&lt;br /&gt;
Часть виджетов - графиков требует также указания оси абсцисс, по которой они будут строиться. В таких отчетах ось, фактически, является легендой и отображается на оси абсцисс в том виде, в котором содержится в таблице. Точки ставятся на равном расстоянии друг от друга (например, числа 1, 10 и 100 будут на равном расстоянии друг от друга). Данные оси могут быть строковыми величинами. &lt;br /&gt;
&lt;br /&gt;
Для каждого типа (кроме виджета &amp;quot;Картинка&amp;quot;) доступно &lt;br /&gt;
*Указание названия графика - название графика отображается в верхней части отчета&lt;br /&gt;
*Период автообновления данных - укажите с какой периодичностью в секундах индикатор будет выполнять запрос в базу данных с целью получения актуальных сведений для отчета.&lt;br /&gt;
*Указание источника данных - выбор данных для построения отчета. Ниже рассматриваются три возможных варианта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Конструктор''' - выбор предустановленного значения с указанием функции и фильтра. &lt;br /&gt;
&lt;br /&gt;
Для настройки индикатора:&lt;br /&gt;
*Выберите рассчитываемое значение из списка. Для добавления параметров нажмите &amp;quot;'''+ Добавить еще одно значение'''&amp;quot; &lt;br /&gt;
*Выберите функцию, которую необходимо применить к данным. Вы можете выбрать - Среднее, Максимальное, Минимальное и Суммарное значения.&lt;br /&gt;
*Выберите ось для отображения данных. Возможен выбор оси по интервалам времени, по операторам, проектам и задачам.&lt;br /&gt;
*Выберите фильтр для отображаемых данных. Выбирать данные можно времени, задаче, проекту, оператору, типу звонков, дате и времени.&lt;br /&gt;
*Укажите дополнительные опции (отличаются для разных типов) и интервал автообновления данных. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-033.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Таблица БД''' - выбор определенных полей таблицы с указанием фильтра. &lt;br /&gt;
&lt;br /&gt;
Для настройки индикатора:&lt;br /&gt;
*Выберите таблицу в базе данных&lt;br /&gt;
*Отметьте галочками столбцы для отображения&lt;br /&gt;
*Для каждого выбранного столбца укажите назначение (Ось, Значение). Для корректной работы индикатора не рекомендуется указывать более одной оси. &lt;br /&gt;
*Выберите фильтр для отображаемых данных. Выбирать данные можно времени, задаче, проекту, оператору, типу звонков, дате и времени.&lt;br /&gt;
*Укажите дополнительные опции (отличаются для разных типов) и интервал автообновления данных. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-034.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. SQL-запрос''' - самостоятельное обращение в базу данных с целью выборки необходимых данных. В отличии от предыдущих двух вариантов, вы можете указать любую таблицу в БД Oktell или в связанных серверах, а также написать любую логику для выборки данных, пользуясь языком SQL. &lt;br /&gt;
&lt;br /&gt;
Для настройки индикатора:&lt;br /&gt;
*Введите текст запроса в поле &amp;quot;'''SQL-запрос'''&amp;quot;. Запрос использует региональные настройки сервера Oktell. Если у вас неправильно отображаются даты или запрос выдает ошибки попробуйте в начале запроса добавьте строку &amp;lt;code&amp;gt;set dateformat ymd&amp;lt;/code&amp;gt;&lt;br /&gt;
*Нажмите кнопку &amp;quot;'''Выполнить запрос'''&amp;quot;&lt;br /&gt;
*Для всех переменных запроса укажите назначение (Ось, Значение). Для корректной работы дашбордов не рекомендуется указывать более одной оси. &lt;br /&gt;
*Выберите фильтр для отображаемых данных. Выбирать данные можно времени, задаче, проекту, оператору, типу звонков, дате и времени.&lt;br /&gt;
*Укажите дополнительные опции (отличаются для разных типов) и интервал автообновления данных. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-035.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Виды индикаторов ===&lt;br /&gt;
&lt;br /&gt;
Для каждого индикатора вы можете выбрать один из следующих типов отображения:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|[[Файл:Дашборд-010.png|center|60px]]&lt;br /&gt;
|Представление информации в виде числа. Возможно отображение мини-графика с историей предыдущих значений.&lt;br /&gt;
&lt;br /&gt;
Входные данные - ячейка таблицы (строка/число, 1 значение). &lt;br /&gt;
 select 12345&lt;br /&gt;
Для мини-графика необходимо предоставить 1 столбец для оси, по одному столбцу для значений (число). Число выводится для первого значения&lt;br /&gt;
 select 1,50,20 union select 2,100,130 union select 3,150,50 &lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-021.png|center|900px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Дашборд-011.png|center|60px]]&lt;br /&gt;
|Представление информации в виде графика. Объединяет линией набор точек, соответствующих значениям по осям.&lt;br /&gt;
&lt;br /&gt;
Доступна опция &amp;quot;Закрашивать область под графиком&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Входные данные - 1 столбец для оси, по одному столбцу значений (число) для каждого графика. &lt;br /&gt;
 select 1,50,20 union select 2,100,130 union select 3,150,50 &lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-022.png|center|700px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Дашборд-012.png|center|60px]]&lt;br /&gt;
|Отображение данных в виде столбиковой диаграммы. Показывает один или несколько наборов данных, сравнивая их между собой. &lt;br /&gt;
&lt;br /&gt;
Доступна опция &amp;quot;Горизонтальное отображение данных&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Входные данные - 1 столбец для оси, по одному столбцу значений (число) для каждого графика. &lt;br /&gt;
 select 1,50,20 union select 2,100,130 union select 3,150,50 &lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-023.png|center|700px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Дашборд-013.png|center|60px]]&lt;br /&gt;
|Круговая диаграмма. Отображает процент, занимаемый каждым значением внутри набора данных, в виде разбитого на части круга. &lt;br /&gt;
&lt;br /&gt;
Возможно отображение в виде бублика&lt;br /&gt;
&lt;br /&gt;
Входные данные - 1 столбец для оси (легенды), 1 столбец значений (число) для значений. &lt;br /&gt;
 select 'первый',50 union select 'второй',100 union select 'третий',30 &lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-024.png|center|400px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Дашборд-014.png|center|70px]]&lt;br /&gt;
|Отображение данных в таблице. Показывает набор данных в виде заполненных его значениями ячеек, которые образуют собой строки и столбцы. Каждому столбцу и строке соответствует параметр, который определяет конкретную ячейку для значения. &lt;br /&gt;
&lt;br /&gt;
Возможно указание сортировки по полям, также показ первых n строк. &lt;br /&gt;
&lt;br /&gt;
Входные данные - 1 столбец для оси (необязательно, отображается слева), по одному столбцу значений (строка/число) для каждой колонки в таблице. Информация сортируется по оси, а в случае ее отсутствия - по первому столбцу.&lt;br /&gt;
 select 'первый',50,'Категория А' union select 'второй',100,'Категория Б' union select 'третий',30,'Категория В'  &lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-025.png|center|400px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Дашборд-015.png|center|60px]]&lt;br /&gt;
|Отображение данных в календаре. Частный случай таблицы, показывает данные по каждому дню. &lt;br /&gt;
&lt;br /&gt;
Возможно отображение всего года. &lt;br /&gt;
&lt;br /&gt;
Входные данные - 1 столбец для оси (обязательно строка в формате yyyy-mm-dd или дата), 1 столбец для значений (число).&lt;br /&gt;
&lt;br /&gt;
 select getdate(),10&lt;br /&gt;
или&lt;br /&gt;
 select '2014-01-01', 20 union select '2014-01-02', 30&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-026.png|center|900px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Дашборд-016.png|center|60px]]&lt;br /&gt;
|Отображение информации в разрезе времени.&lt;br /&gt;
&lt;br /&gt;
Доступные опции: формат времени (часы)&lt;br /&gt;
&lt;br /&gt;
Входные данные - 1 столбец для оси (число, обозначающее час или строка вида чч:мм:сс ), 1 столбец для значения (число). Значения суммируются, если относятся к одному часу дня. &lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
 select '18:20:44', 20 union select '13:23:33', 13 &lt;br /&gt;
или&lt;br /&gt;
 select '18', 20&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-029.png|center|400px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Дашборд-017.png|center|60px]]&lt;br /&gt;
|Вывод произвольной текстовой информации. &lt;br /&gt;
&lt;br /&gt;
Доступные опции: изменение размера текста.&lt;br /&gt;
&lt;br /&gt;
Входные данные - ячейка таблицы (строка/число, 1 значение). &lt;br /&gt;
 select 'Ячейка таблицы'&lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-027.png|center|400px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:Дашборд-018.png|center|60px]]&lt;br /&gt;
|Вывод произвольного изображения на экран, например, логотипа компании. &lt;br /&gt;
&lt;br /&gt;
Доступные опции: изменение режима отображения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-028.png|center|400px]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Как было замечено выше, вы можете указать любой тип отображения для одних и тех же данных. На одном индикаторе вы можете указать несколько величин для отображения. Для указания нескольких величин, не предусмотренных в источнике &amp;quot;'''Конструктор'''&amp;quot; используйте &amp;quot;'''SQL-запрос'''&amp;quot;. Вы можете указать несколько значений, изменяющихся со временем, и несколько констант в качестве порогов (или уровней). &lt;br /&gt;
&lt;br /&gt;
После настройки индикатора нажмите &amp;quot;'''Сохранить'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Управление индикаторами === &lt;br /&gt;
&lt;br /&gt;
У созданного индикатора вы можете менять размеры, перетягивая мышью за края окна. При изменении размеров индикатора появляются дополнительные поля. Таким образом вы можете разместить достаточно много графиков на одной странице. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-003.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для управления листами дашборда в верхней части окна выведен ряд опций: &lt;br /&gt;
* Для добавления листа нажмите на [[Файл:Дашборд-036.png]] в верхней части листа;&lt;br /&gt;
* Для удаления листа нажмите на [[Файл:Дашборд-037.png]];&lt;br /&gt;
* Чтобы изменить название листа нажмите на [[Файл:Дашборд-038.png]];&lt;br /&gt;
* Чтобы изменить название дашборда щелкните на его название;&lt;br /&gt;
* Перейти к списку дашбордов можно щелкнув на ссылке &amp;lt;u&amp;gt;Дашборды&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-032.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Настройка общего доступа==&lt;br /&gt;
&lt;br /&gt;
Созданный дашборд может просмотреть любой пользователь системы, у которого есть доступ к проекту, а также права на дашборд. Однако, если вы сделали дашборд в разделе &amp;quot;''Общие для проектов''&amp;quot;, то он по умолчанию доступен всем пользователям, если это не запрещено правами самого дашборда.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы пользователи могли редактировать созданный вами дашборд, нажмите на кнопку &amp;quot;'''Доступ'''&amp;quot;. В открывшемся окне вы можете указать права для остальных сотрудников. &lt;br /&gt;
&lt;br /&gt;
В списке доступны динамические группы, например &amp;quot;все операторы&amp;quot;, &amp;quot;операторы текущего проекта&amp;quot; и другие, а также конкретные пользователи. &lt;br /&gt;
&lt;br /&gt;
Для предоставления статистики заказчикам аутсорсинговых сall-центров предусмотрен внешний доступ без права редактирования. Для этого установите галочку в опции &amp;quot;Разрешить просмотр по ссылке и паролю&amp;quot;. В окне появится ссылка для доступа, а также поле для ввода пароля. Установка пароля не является обязательной.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Дашборд-006.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Советы для внедрения==&lt;br /&gt;
&lt;br /&gt;
'''1.''' Не используйте больших и сложных запросов в дашбордах, особенно с маленьким периодом автообновления. Это приведет к большой нагрузке на сервер при открытии одного и тоже виджета несколькими людьми. &lt;br /&gt;
&lt;br /&gt;
Рекомендуется использовать периодически запускаемый служебный сценарий, который будет рассчитывать данные и складировать их в отдельную таблицу. В свою очередь, дашборд будет обращаться к уже рассчитанным данным в эту таблицу и отображать их. Таким образом, нагрузка на сервер значительно снижается, а значит стабильность работы повышается. &lt;br /&gt;
&lt;br /&gt;
'''2.''' Чтобы экстренно удалить запрос из программы Okboard, замените поле '''Query''' в таблице '''[WO_Module_dashboards]..[WO_Dashboards_Widgets]''' для данного виджета. К примеру, можно присвоить запрос ''select 1'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update WO_Module_dashboards..WO_Dashboards_Widgets&lt;br /&gt;
set Query='select 1'&lt;br /&gt;
where id = 'DF8D697B-2E28-47D5-B20F-06EC9AAA6991'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* где полю id присвойте идентификатор вашего виджета &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Возможные проблемы==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;'''ВНИМАНИЕ: Если у вас есть настроенные дашборды, то для решения проблем не удаляйте модуль из магазина. Все связи идентификаторов из базы данных будут удалены и вы не сможете восстановить их. Удалять и восстанавливать базу данных дашбордов можно.'''&amp;lt;span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''1.''' Okboard выдает сообщения: &amp;quot;Ошибка загрузки проектов&amp;quot; и &amp;quot;Ошибка загрузки показателей&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Для решения вам нужно дать учетной записи AutelService роль sysadmin. Подробнее в статье: [[Установка_Microsoft_SQL_Server_2012#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B8.D0.BC.D0.B5.D0.BD.D0.B8_.D0.B2.D1.85.D0.BE.D0.B4.D0.B0_.D0.B2_.D0.91.D0.94_Oktell|Создание имени входа в БД Oktell]]&lt;br /&gt;
&lt;br /&gt;
Далее выполните следующие запросы в SQL Server Management Studio: &lt;br /&gt;
 USE oktell&lt;br /&gt;
 GO&lt;br /&gt;
 EXEC sys.sp_changedbowner 'AutelService'&lt;br /&gt;
 &lt;br /&gt;
 USE oktell_settings&lt;br /&gt;
 GO&lt;br /&gt;
 EXEC sys.sp_changedbowner 'AutelService'&lt;br /&gt;
&lt;br /&gt;
 ALTER DATABASE [oktell] SET TRUSTWORTHY ON;&lt;br /&gt;
 ALTER DATABASE [oktell_settings] SET TRUSTWORTHY ON;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Успешной работы с Okboard!'''&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%9F%D1%80%D0%B8%D0%BA%D1%80%D0%B5%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8_%D1%80%D0%B0%D0%B7%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B0_%D0%B2_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3_Bpium</id>
		<title>Прикрепление записи разговора в каталог Bpium</title>
		<link rel="alternate" type="text/html" href="%D0%9F%D1%80%D0%B8%D0%BA%D1%80%D0%B5%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8_%D1%80%D0%B0%D0%B7%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B0_%D0%B2_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3_Bpium"/>
				<updated>2023-03-31T12:41:17Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Файлы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Интеграции_с_CRM_системами | Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
В Бипиум есть возможность в каталогах использовать поля для прикрепления файлов к записи. Файлы могут иметь различный тип, но наибольший интерес при интеграции представляют звуковые файлы, который можно прослушать непосредственно из Бипиум.&lt;br /&gt;
&lt;br /&gt;
В статье рассматривается настройка интеграционной схемы с Oktell, которая реализует возможность прикреплять файлы записи разговора и прослушивать их из Бипиум.&lt;br /&gt;
&lt;br /&gt;
Настройку можно условно разделить на несколько частей:&lt;br /&gt;
* создание каталога в Бипиум для хранения записей&lt;br /&gt;
* создание служебного сценария добавления ссылки на запись разговора в каталог Бипиум&lt;br /&gt;
* создание служебного сценария, возвращающего звуковой файл&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
Создадим в Бипиум каталог '''Журнал звонков''' со следующей структурой:&lt;br /&gt;
* Дата звонка - поле типа Дата&lt;br /&gt;
* Номер звонящего - поле типа Текст&lt;br /&gt;
* Запись разговора - поле типа Файл&lt;br /&gt;
&lt;br /&gt;
[[Файл:Bpium_journal.png|center]]&lt;br /&gt;
&lt;br /&gt;
Ссылку на файл записи будем добавлять из служебного сценария обработки контента. Для доступа к файлу будем использовать метод серверного HTTP-интерфейса download\byscript. Для формирования полной ссылки потребуется название запускаемого сценария и передаваемый параметр, идентифицирующий запись разговора. В качестве такого параметра возьмем идентификатор последней коммутации из контента звонка. Также следует помнить, что вызов http-методов oktell требуют авторизации. Поэтому необходимо создать фиктивного пользователя с привилегией выполнения методов WebAPI.&lt;br /&gt;
&lt;br /&gt;
Пример ссылки: https://user:password@myoktell.ru/download/byscript?name=getfile&amp;amp;startparam1=00000000-0000-0000-0000-000000000000&amp;amp;attachment=1&lt;br /&gt;
&lt;br /&gt;
Сценарий обработки контента будет выглядеть следующим образом:&lt;br /&gt;
* получаем контент в компоненте '''Старт'''&lt;br /&gt;
* компонентами '''Парсер''' выделяем идентификатор последней коммутации и другие необходимые параметры&lt;br /&gt;
* готовим JSON-сoобщение на добавление новой записи в каталог '''Журнал звонков'''. Формат сообщения можно найти в описании API Бипиум по ссылке http://docs.bpium.apiary.io/#reference/record/records-collection/create-new-record&lt;br /&gt;
* компонентом '''Запрос в Bpium''' подключаемся к Бипиум и добавляем запись.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Bpium_content.png|center]]&lt;br /&gt;
&lt;br /&gt;
Теперь осталось настроить сценарий, который будет выдавать файл по запросу. Необходимо в сценарии сформировать полный путь к файлу. Один из примеров формирования пути к файлу описан в статье [[Получить путь к записи разговора по завершению коммутации]].&lt;br /&gt;
&lt;br /&gt;
Воспользуемся SQL-запросом указанным в статье:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
declare @aln nvarchar(10)&lt;br /&gt;
declare @bln nvarchar(10)&lt;br /&gt;
declare @idrecdir int&lt;br /&gt;
declare @ts nvarchar(50)&lt;br /&gt;
declare @path nvarchar(1000)&lt;br /&gt;
select top 1 @aln=case when alinenum&amp;lt;blinenum then alinenum else blinenum end,&lt;br /&gt;
@bln=case when blinenum&amp;gt;alinenum then blinenum else alinenum end,&lt;br /&gt;
@idrecdir=idrecdir, &lt;br /&gt;
@ts=replace(convert(nvarchar(10), TimeStart, 121),'-','_')+'__'+replace(convert(nvarchar(20), TimeStart, 114),':','_') from A_Stat_Connections_1x1&lt;br /&gt;
where Id=@id and isrecorded=1&lt;br /&gt;
set @path='C:\Program Files (x86)\Oktell\Server\RecordedFiles\'&lt;br /&gt;
&lt;br /&gt;
if (@idrecdir&amp;gt;0)&lt;br /&gt;
  select @path=path from A_Stat_RecordDirectories where id=@idrecdir&lt;br /&gt;
set @filename=@path+replace(substring(@ts, 1, 10),'_','')+'\'+substring(@ts, 13, 2)+substring(@ts, 16, 2)+'\mix_'+@aln+'_'+@bln+'__'+@ts+'.mp3'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT color=&amp;quot;red&amp;quot;&amp;gt;ВНИМАНИЕ!&amp;lt;/FONT&amp;gt; Предполагается, что запись разговоров ведется в формате mp3. В случае wav-файлов запрос необходимо скорректировать.&lt;br /&gt;
&lt;br /&gt;
Присваиваем полученной значение служебной переменной '''(сл) Возвращаемое значение 1'''.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Bpium_getfile.png|center]]&lt;br /&gt;
&lt;br /&gt;
Назначаем созданный сценарий '''Обработка контента''' в качестве Служебного сценария обработки контента в Oktell. &lt;br /&gt;
&lt;br /&gt;
После разговора с абонентом в каталоге '''Журнал звонков''' Бипиум появится новая запись с информацией о звонящем и возможностью прослушать запись разговора.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Bpium_recfile.png|center]]&lt;br /&gt;
&lt;br /&gt;
== Файлы ==&lt;br /&gt;
&lt;br /&gt;
*[[Media:Bpium_contentsvc.oscr|Сценарий обработки контента]]&lt;br /&gt;
*[[Media:Bpium_getfilesvc.oscr|Сценарий получения файла записи]]&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_REST_API_Bitrix24</id>
		<title>Использование REST API Bitrix24</title>
		<link rel="alternate" type="text/html" href="%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_REST_API_Bitrix24"/>
				<updated>2023-03-31T12:40:17Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Файлы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Интеграции_с_CRM_системами | Наверх]]&lt;br /&gt;
&lt;br /&gt;
==Общий порядок работы с OAuth при создании приложений для Битрикс24==&lt;br /&gt;
#Регистрируется своё приложение в Маркетплейсе Битрикс24&lt;br /&gt;
#Запрашиваются с удаленного сервера ключи&lt;br /&gt;
#Сервер перенаправляет браузер на зарегистрированный приложением URL&lt;br /&gt;
#Обрабатывается ответ&lt;br /&gt;
#Подписываются полученным ключом все запросы к Rest API.&lt;br /&gt;
&lt;br /&gt;
==Регистрация приложения в Маркетплейс Битрикс24==&lt;br /&gt;
C 25 мая 2015г. для того чтобы добавлять свои приложения на портал больше не требуется становиться технологическим партнером. &lt;br /&gt;
&lt;br /&gt;
Если у вас права администратора на вашем портале, зайдите в раздел Приложения — Добавить приложение. Выбрать для личного пользования (в этом случае, никто кроме вас и вашего портала не сможет использовать это приложение)&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_1.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
Откроется форма добавления приложения&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_2.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
В форме заполняем:&lt;br /&gt;
#Название приложения — произвольное.&lt;br /&gt;
#Приложение использует только API – обязательно&lt;br /&gt;
#Права доступа — указываем к каким разделам будет доступ у данного приложения&lt;br /&gt;
#Укажите ссылку — указываем произвольный ваш сайт (или любую произвольную страницу).&lt;br /&gt;
&lt;br /&gt;
После этого нажимаем «Сохранить»&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_3.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
После этого мы увидим «Список локальных приложений», в котором будет указан «Код приложения» и «Ключ приложения». Они будут необходимы в дальнейшем для авторизации и выполнении методов REST API.&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_4.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
==OAuth-авторизация для desktop-приложения==&lt;br /&gt;
Алгоритм:&lt;br /&gt;
#При помощи client_id получаем параметр code, требуемый для получения авторизационного токена.&lt;br /&gt;
#При помощи clent_id, client_secret и code приложение получает параметры access_code и refresh_token.&lt;br /&gt;
#При помощи access_code приложение совершает запросы к REST-сервису до его истечения.&lt;br /&gt;
#Через час access_code истекает, и приложение может использовать полученный refresh_token для получения нового.&lt;br /&gt;
#Если refresh_token еще не истек (с момента его получения не прошел месяц), то приложение получает свежий access_code и свежий refresh_token, после чего, можно перейти к шагу 3.&lt;br /&gt;
#Если refresh_token уже истек, то требуется повторная авторизация с участием пользователя.&lt;br /&gt;
&lt;br /&gt;
По сути, физическая авторизация пользователя требуется только на шаге 1. В итоге получаем, что если приложение используется постоянно (шаг 4 используется чаще раза в месяц), то приложение имеет возможность продлевать авторизацию не трогая пользователя сколь угодно долго.Рассмотрим данный алгоритм более подробно.&lt;br /&gt;
&lt;br /&gt;
Desktop приложение должно слушать какой-либо порт на localhost (Oktell как правило слушает порт 4055).&lt;br /&gt;
&lt;br /&gt;
1)Для авторизации необходимо открыть браузер и перейти на адрес вида:&lt;br /&gt;
 https://мой_портал.bitrix24.ru/oauth/authorize/?client_id=код_приложения&amp;amp;response_type=code&amp;amp;redirect_uri=http%3A%2F%2Foktell.ru&lt;br /&gt;
&lt;br /&gt;
, где&lt;br /&gt;
*мой_портал.bitrix24.ru — адрес портала, например oktell.bitrix24.ru&lt;br /&gt;
*client_id — код приложения, который был получен на после успешной регистрации приложения.&lt;br /&gt;
*response_type — тип ответа — код (константа)&lt;br /&gt;
*redirect_uri — адрес который был указан при создании приложения в Маркетплейс (необходимо указывать urlencode), например http%3A%2F%2Foktell.ru&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2)Далее произойдет редирект на адрес вида:&lt;br /&gt;
 http://redirect_uri/?code=код_получения_авторизации&amp;amp;domain=мой_портал.bitrix24.ru&lt;br /&gt;
&lt;br /&gt;
, где &lt;br /&gt;
*code – код получения авторизации, необходим для выполнения дальнейших шагов.&lt;br /&gt;
*domain – адрес портала Битрикс24 (например oktell.bitrix24.ru)&lt;br /&gt;
&lt;br /&gt;
После получения этих данных браузер больше не нужен. Данные которые были получены в результате создания приложения и полученный code необходимо внести в таблицу oktell.dbo.bitrix_oauth в соответствующие поля. Скрипт для создания таблицы приведен в конце статьи&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_5.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
3)Приложение (Oktell) должно сделать http-запрос к адресу вида:&lt;br /&gt;
 https://мой_портал.bitrix24.ru/oauth/token/?client_id=код_приложения&amp;amp;grant_type=authorization_code&amp;amp;client_secret=секретный_ключ_приложения&amp;amp;redirect_uri=http%3A%2F%2Flocalhost%3A70005&amp;amp;code=код_получения_авторизации&amp;amp;scope=требуемый_набор_разрешений &lt;br /&gt;
&lt;br /&gt;
, где &lt;br /&gt;
*мой_портал.bitrix24.ru — адрес портала, например oktell.bitrix24.ru&lt;br /&gt;
*client_id — код приложения, который был получен на после успешной регистрации приложения.&lt;br /&gt;
*client_secret – секретный ключ приложения, который был получен на после успешной регистрации приложения.&lt;br /&gt;
*redirect_uri — адрес на который должен произойти редирект, как правило запрос выполняется в браузере на сервере где установлен Oktell и поэтому указывается ссылка вида — http%3A%2F%2Flocalhost%3A4055 (urlencode от http://localhost:4055)&lt;br /&gt;
*code -  код получения авторизации&lt;br /&gt;
*scope – требуемый набор разрешений (например: scope=task,crm)&lt;br /&gt;
&lt;br /&gt;
В ответ сервер вернет json-структуру со всеми необходимыми для совершения запросов к серверу данными.&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;access_token&amp;quot;:&amp;quot;XXXXXXXXXXXXXXXX&amp;quot;,&amp;quot;expires_in&amp;quot;:3600,&amp;quot;scope&amp;quot;:&amp;quot;crm&amp;quot;,&amp;quot;user_id&amp;quot;:41,&amp;quot;refresh_token&amp;quot;:&amp;quot;XXXXXXXXXXXXXXXXXXXXXX&amp;quot;,&amp;quot;domain&amp;quot;:&amp;quot;oktell.bitrix24.ru&amp;quot;,&amp;quot;member_id&amp;quot;:&amp;quot;XXXXXXXXXXXXXXXXXXXXXXXXXXX&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
, где&lt;br /&gt;
*access_token – ключ для отправки запросов к REST-сервису&lt;br /&gt;
*expires_in – период действия данного at (access_token)&lt;br /&gt;
*scope – объекты к которым предоставлен доступ&lt;br /&gt;
*user_id – id пользователя от имени которого произошла авторизация&lt;br /&gt;
*refresh_token - маркер обновления, для получения нового access_token&lt;br /&gt;
*domain – домен к которому был получен доступ&lt;br /&gt;
*member_id - уникальный идентификатор портала&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Все, приложение может совершать запросы к REST-сервису.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
4)При достижении периода жизни at необходимо отправить запрос на получение нового at на следующего вида:&lt;br /&gt;
&lt;br /&gt;
 https:// мой_портал.bitrix24.ru /oauth/token/?client_id=xxxxx&amp;amp;grant_type=refresh_token&amp;amp;client_secret=xxxxx&amp;amp;redirect_uri= http%3A%2F%2Flocalhost%3A4055 &amp;amp;refresh_token=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz&lt;br /&gt;
&lt;br /&gt;
, где&lt;br /&gt;
*мой_портал.bitrix24.ru — адрес портала, например oktell.bitrix24.ru&lt;br /&gt;
*client_id — код приложения, который был получен на после успешной регистрации приложения.&lt;br /&gt;
*grant_type – константа – refresh_token&lt;br /&gt;
*client_secret – секретный ключ приложения, который был получен на после успешной регистрации приложения.&lt;br /&gt;
*redirect_uri — адрес на который должен произойти редирект, как правило запрос выполняется в браузере на сервере где установлен Oktell и поэтому указывается ссылка вида — http%3A%2F%2Flocalhost%3A4055 (urlencode от http://localhost:4055)&lt;br /&gt;
*refresh_token - маркер обновления, для получения нового access_token&lt;br /&gt;
&lt;br /&gt;
В результате выполнения данного запроса будет возвращена json-структура вида:&lt;br /&gt;
 {&amp;quot;access_token&amp;quot;:&amp;quot;XXXXXXXXX&amp;quot;,&amp;quot;expires_in&amp;quot;:3600,&amp;quot;scope&amp;quot;:&amp;quot;task,crm&amp;quot;,&amp;quot;user_id&amp;quot;:41,&amp;quot;refresh_token&amp;quot;:&amp;quot;XXXXXXXXXXXXXXXX&amp;quot;,&amp;quot;domain&amp;quot;:&amp;quot;oktell.bitrix24.ru&amp;quot;,&amp;quot;member_id&amp;quot;:&amp;quot;XXXXXXXX&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
access_token, который хранится в БД обновляется каждый час, для того чтобы была возможность непрерывно выполнять любые запросы к Bitrix24.&lt;br /&gt;
&lt;br /&gt;
Пример сценария, который отправляет запрос на получение access_token, после получения code и обновляет access_token по существующему refresh_token:&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_6.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
==Пример использования REST API==&lt;br /&gt;
Рассмотрим пример получения списка всех лидов. Для этого нам понадобятся 2 метода:&lt;br /&gt;
*crm.lead.list - Возвращает список лидов по фильтру, при этом фильтры использоваться не будут это означает, что будет получаться весь список лидов (в дальнейшем имеет смысл рассмотреть применение фильтра и получать только тех, кто был изменен после последней синхронизации).&lt;br /&gt;
*crm.lead.get - Возвращает лид по идентификатору, с помощью данного метода мы получим контактные данные по лиду – телефон, e-mail, web-сайт.&lt;br /&gt;
&lt;br /&gt;
===Сценарий «bitrix_crm_lead_list»===&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Файл:bitrix24_7.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
0)Выводим уведомление о Запуске сценария и Получаем текущую дату и время для того чтобы отобразить время выполнения сценария. Дату и время получаем из функции «Текущие дата и время».&amp;lt;br/&amp;gt;&lt;br /&gt;
1)В данном сценарии как и в любом другом удобно использовать существующий, автоматически обновляемый access_token, который мы получили в предыдущей главе. Получаем данные из таблицы oktell.dbo.bitrix_oauth для выполнения REST запроса.&lt;br /&gt;
Текст выполняемого запроса -  &lt;br /&gt;
 select @access_token=access_token,&lt;br /&gt;
        @domain=domain&lt;br /&gt;
 from oktell.dbo.bitrix_oauth&lt;br /&gt;
 where client_id='client_id'&lt;br /&gt;
&lt;br /&gt;
2)Устанавливаем счетчик для получения списка лидов = 0 и счетчик последней итерации = 0 и счетчик итераций получения лидов=0&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_8.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
3)Получаем первые N лидов, во второй итерации след N лидов, количество N получаем после выполнения 1-го запроса и в каждом последующем, так же после первого запроса получим сколько всего лидов. &lt;br /&gt;
В примере: 'https://'+[domain]+'/rest/crm.lead.list?start='+[counter_lead_start]+'&amp;amp;auth='+[access_token]&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_9.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
4)Получаем сколько всего лидов. Используется компонент Парсер с алгоритмом «Парсер JSON». В примере: поисковый запрос - ''total''&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_10.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Важно! Все компоненты парсер в данном сценарии используют алгоритм «Парсер JSON».&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5)Записываем в счетчик получения лидов начальный номер для следующей итерации. В примере: поисковый запрос - ''next''&lt;br /&gt;
:5.1)Если парсер JSON выполнился с ошибкой, это означает что счетчик для следующей итерации отсутствует, что свидетельствует о последней итерации, тогда дополнительно определяем счетчик последней итерации и устанавливаем для последней итерации счетчик получения лидов = сколько всего лидов (total)&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_11.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
6)Устанавливаем счетчик для получения N-го лида парсером (как правило счетчик будет бегать от 0 до 49).&lt;br /&gt;
&lt;br /&gt;
7)Получаем N-ый лид для дальнейшего парсинга (Парсер JSON). В примере: поисковый запрос- выражение - '&amp;quot;result&amp;quot;/'+[counter_lead_parse]&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_12.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
:7.1)Далее идет серия JSON парсеров по тегам которые необходимы для сохранения (количество тегов можно менять в зависимости от условий, главное всегда получать как минимум тег “ID”, который соответствует № лида). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Важно! У компонентов парсер всегда должны быть назначены переходы по ветке «Ошибка», т.к. в случае если данных в этом поле не будет парсер отработает именно по этому переходу и если он не указан, то сценарий завершится.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8)Обновляем лид в таблице - [oktell].[dbo].[bitrix_leads] если он там есть и добавляем если нет, определение происходит по sql_ID (по № лида).&lt;br /&gt;
Текст выполняемого запроса - &lt;br /&gt;
 if exists (select * from oktell.dbo.bitrix_leads where sql_ID=replace(@sql_ID,'&amp;quot;',''))&lt;br /&gt;
 UPDATE [oktell].[dbo].[bitrix_leads]&lt;br /&gt;
   SET [sql_ADDRESS] = replace(@sql_ADDRESS,'&amp;quot;','')&lt;br /&gt;
      ,[sql_ADDRESS_2] = replace(@sql_ADDRESS_2,'&amp;quot;','')&lt;br /&gt;
      ,[sql_ADDRESS_CITY] = replace(@sql_ADDRESS_CITY,'&amp;quot;','')&lt;br /&gt;
      ,[sql_ADDRESS_COUNTRY] = replace(@sql_ADDRESS_COUNTRY,'&amp;quot;','')&lt;br /&gt;
      ,[sql_ADDRESS_COUNTRY_CODE] = replace(@sql_ADDRESS_COUNTRY_CODE,'&amp;quot;','')&lt;br /&gt;
      ,[sql_ADDRESS_POSTAL_CODE] = replace(@sql_ADDRESS_POSTAL_CODE,'&amp;quot;','')&lt;br /&gt;
      ,[sql_ADDRESS_PROVINCE] = replace(@sql_ADDRESS_PROVINCE,'&amp;quot;','')&lt;br /&gt;
      ,[sql_ADDRESS_REGION] = replace(@sql_ADDRESS_REGION,'&amp;quot;','')&lt;br /&gt;
      ,[sql_ASSIGNED_BY_ID] = replace(@sql_ASSIGNED_BY_ID,'&amp;quot;','')&lt;br /&gt;
      ,[sql_BIRTHDATE] = cast(replace(@sql_BIRTHDATE,'&amp;quot;','') as datetime2(0))&lt;br /&gt;
      ,[sql_COMMENTS] = replace(@sql_COMMENTS,'&amp;quot;','')&lt;br /&gt;
      ,[sql_COMPANY_ID] = replace(@sql_COMPANY_ID,'&amp;quot;','')&lt;br /&gt;
      ,[sql_COMPANY_TITLE] = replace(@sql_COMPANY_TITLE,'&amp;quot;','')&lt;br /&gt;
      ,[sql_CONTACT_ID] = replace(@sql_CONTACT_ID,'&amp;quot;','')&lt;br /&gt;
      ,[sql_CREATED_BY_ID] = replace(@sql_CREATED_BY_ID,'&amp;quot;','')&lt;br /&gt;
      ,[sql_CURRENCY_ID] = replace(@sql_CURRENCY_ID,'&amp;quot;','')&lt;br /&gt;
      ,[sql_DATE_CLOSED] = cast(replace(@sql_DATE_CLOSED,'&amp;quot;','') as datetime2(0))&lt;br /&gt;
      ,[sql_DATE_CREATE] = cast(replace(@sql_DATE_CREATE,'&amp;quot;','') as datetime2(0))&lt;br /&gt;
      ,[sql_DATE_MODIFY] = cast(replace(@sql_DATE_MODIFY,'&amp;quot;','') as datetime2(0))&lt;br /&gt;
      ,[sql_LAST_NAME] = replace(@sql_LAST_NAME,'&amp;quot;','')&lt;br /&gt;
      ,[sql_MODIFY_BY_ID] = replace(@sql_MODIFY_BY_ID,'&amp;quot;','')&lt;br /&gt;
      ,[sql_NAME] = replace(@sql_NAME,'&amp;quot;','')&lt;br /&gt;
      ,[sql_OPENED] = replace(@sql_OPENED,'&amp;quot;','')&lt;br /&gt;
      ,[sql_OPPORTUNITY] = replace(@sql_OPPORTUNITY,'&amp;quot;','')&lt;br /&gt;
      ,[sql_ORIGIN_ID] = replace(@sql_ORIGIN_ID,'&amp;quot;','')&lt;br /&gt;
      ,[sql_ORIGINATOR_ID] = replace(@sql_ORIGINATOR_ID,'&amp;quot;','')&lt;br /&gt;
      ,[sql_POST] = replace(@sql_POST,'&amp;quot;','')&lt;br /&gt;
      ,[sql_SECOND_NAME] = replace(@sql_SECOND_NAME,'&amp;quot;','')&lt;br /&gt;
      ,[sql_SOURCE_DESCRIPTION] = replace(@sql_SOURCE_DESCRIPTION,'&amp;quot;','')&lt;br /&gt;
      ,[sql_SOURCE_ID] = replace(@sql_SOURCE_ID,'&amp;quot;','')&lt;br /&gt;
      ,[sql_STATUS_DESCRIPTION] = replace(@sql_STATUS_DESCRIPTION,'&amp;quot;','')&lt;br /&gt;
      ,[sql_STATUS_ID] = replace(@sql_STATUS_ID,'&amp;quot;','')&lt;br /&gt;
      ,[sql_TITLE] = replace(replace(@sql_TITLE,'&amp;quot;',''),'\','')&lt;br /&gt;
 WHERE sql_ID=replace(@sql_ID,'&amp;quot;','')&lt;br /&gt;
 else&lt;br /&gt;
 INSERT INTO [oktell].[dbo].[bitrix_leads]&lt;br /&gt;
           ([sql_ADDRESS]&lt;br /&gt;
           ,[sql_ADDRESS_2]&lt;br /&gt;
           ,[sql_ADDRESS_CITY]&lt;br /&gt;
           ,[sql_ADDRESS_COUNTRY]&lt;br /&gt;
           ,[sql_ADDRESS_COUNTRY_CODE]&lt;br /&gt;
           ,[sql_ADDRESS_POSTAL_CODE]&lt;br /&gt;
           ,[sql_ADDRESS_PROVINCE]&lt;br /&gt;
           ,[sql_ADDRESS_REGION]&lt;br /&gt;
           ,[sql_ASSIGNED_BY_ID]&lt;br /&gt;
           ,[sql_BIRTHDATE]&lt;br /&gt;
           ,[sql_COMMENTS]&lt;br /&gt;
           ,[sql_COMPANY_ID]&lt;br /&gt;
           ,[sql_COMPANY_TITLE]&lt;br /&gt;
           ,[sql_CONTACT_ID]&lt;br /&gt;
           ,[sql_CREATED_BY_ID]&lt;br /&gt;
           ,[sql_CURRENCY_ID]&lt;br /&gt;
           ,[sql_DATE_CLOSED]&lt;br /&gt;
           ,[sql_DATE_CREATE]&lt;br /&gt;
           ,[sql_DATE_MODIFY]&lt;br /&gt;
           ,[sql_ID]&lt;br /&gt;
           ,[sql_LAST_NAME]&lt;br /&gt;
           ,[sql_MODIFY_BY_ID]&lt;br /&gt;
           ,[sql_NAME]&lt;br /&gt;
           ,[sql_OPENED]&lt;br /&gt;
           ,[sql_OPPORTUNITY]&lt;br /&gt;
           ,[sql_ORIGIN_ID]&lt;br /&gt;
           ,[sql_ORIGINATOR_ID]&lt;br /&gt;
           ,[sql_POST]&lt;br /&gt;
           ,[sql_SECOND_NAME]&lt;br /&gt;
           ,[sql_SOURCE_DESCRIPTION]&lt;br /&gt;
           ,[sql_SOURCE_ID]&lt;br /&gt;
           ,[sql_STATUS_DESCRIPTION]&lt;br /&gt;
           ,[sql_STATUS_ID]&lt;br /&gt;
           ,[sql_TITLE])&lt;br /&gt;
     VALUES&lt;br /&gt;
           (replace(@sql_ADDRESS,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_ADDRESS_2,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_ADDRESS_CITY,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_ADDRESS_COUNTRY,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_ADDRESS_COUNTRY_CODE,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_ADDRESS_POSTAL_CODE,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_ADDRESS_PROVINCE,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_ADDRESS_REGION,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_ASSIGNED_BY_ID,'&amp;quot;','')&lt;br /&gt;
           ,cast(replace(@sql_BIRTHDATE,'&amp;quot;','') as datetime2(0))&lt;br /&gt;
           ,replace(@sql_COMMENTS,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_COMPANY_ID,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_COMPANY_TITLE,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_CONTACT_ID,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_CREATED_BY_ID,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_CURRENCY_ID,'&amp;quot;','')&lt;br /&gt;
           ,cast(replace(@sql_DATE_CLOSED,'&amp;quot;','') as datetime2(0))&lt;br /&gt;
           ,cast(replace(@sql_DATE_CREATE,'&amp;quot;','') as datetime2(0))&lt;br /&gt;
           ,cast(replace(@sql_DATE_MODIFY,'&amp;quot;','') as datetime2(0))&lt;br /&gt;
           ,replace(@sql_ID,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_LAST_NAME,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_MODIFY_BY_ID,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_NAME,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_OPENED,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_OPPORTUNITY,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_ORIGIN_ID,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_ORIGINATOR_ID,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_POST,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_SECOND_NAME,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_SOURCE_DESCRIPTION,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_SOURCE_ID,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_STATUS_DESCRIPTION,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_STATUS_ID,'&amp;quot;','')&lt;br /&gt;
           ,replace(replace(@sql_TITLE,'&amp;quot;',''),'\',''))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:8.1)Если sql запрос по добавлению\обновлению лида выполнился с ошибкой, то Записываем информацию об ошибке в таблицу [oktell].[dbo].[bitrix_import_lead_error]&lt;br /&gt;
Текст выполняемого запроса - &lt;br /&gt;
 insert into oktell.dbo.bitrix_import_lead_error&lt;br /&gt;
 ([sql_ID]&lt;br /&gt;
 ,[sql_error]&lt;br /&gt;
 ,[sql_full_lead_info]&lt;br /&gt;
 ,[sql_date_error])&lt;br /&gt;
 values&lt;br /&gt;
 (@sql_id,&lt;br /&gt;
  @sql_error,&lt;br /&gt;
  @sql_dull_lead_info,&lt;br /&gt;
  getdate())&lt;br /&gt;
&lt;br /&gt;
9) Увеличиваем счетчик для получения N-го лида на 1 (+1)&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_13.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
10) После этого происходит проверка Счетчик получения N-го лида меньше чем Счетчик количества полученных лидов в веб-запросе? Текст выражения - [Счетчик итераций получения списка лидов]*50+num([counter_lead_parse])&lt;br /&gt;
В выражении используем коэффициент в виде счетчика итераций получения списка лидов, для того чтобы корректно проходить по всем лидам которые получили в результате web-запроса. Например при первой итерации пройдем по 0*50+[0..49] лидам, при второй по 1*50+[0..49], т.е. с 50  по 99 лид и т.д.&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_14.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
:10.1)Если да, то переходим на шаг 7)&lt;br /&gt;
:10.2)Если нет, то переходим на шаг 11)&lt;br /&gt;
&lt;br /&gt;
11) Увеличиваем Счетчик итерации получения списка лидов +1&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_15.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
12)Проверяем Счетчик последней итерации=1?&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_16.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
:12.1)Если да, то переходим на шаг 13)&lt;br /&gt;
:12.2)Если нет, то переходим на шаг 3)&lt;br /&gt;
&lt;br /&gt;
13)Отображаем уведомление о Завершении сценария со временем выполнения.&lt;br /&gt;
Текст уведомления — выражение - &lt;br /&gt;
 'Сценарий импорта лидов завершен!&lt;br /&gt;
 Последний стартовый ID: '+[counter_lead_start]+endline+&lt;br /&gt;
 'Всего лидов: '+[counter_total]+endline+&lt;br /&gt;
 'Время выполнения: ' + DateDiff( s,[Дата запуска сценария], NOW )+' секунд' &lt;br /&gt;
&lt;br /&gt;
14) Обновляем данные по завершению сценария в таблице oktell.dbo.bitrix_lead_runtime&lt;br /&gt;
Текст выполняемого запроса - &lt;br /&gt;
 if exists (select lead_list_dt from oktell.dbo.bitrix_lead_runtime where id=1)&lt;br /&gt;
    update oktell.dbo.bitrix_lead_runtime&lt;br /&gt;
    set lead_list_dt=getdate()&lt;br /&gt;
    where id=1 &lt;br /&gt;
 else &lt;br /&gt;
    insert into oktell.dbo.bitrix_lead_runtime&lt;br /&gt;
    (lead_list_dt)&lt;br /&gt;
    values&lt;br /&gt;
    (getdate())&lt;br /&gt;
&lt;br /&gt;
15) Производим Запуск сценария bitrix_crm_lead_get_by_id, в котором мы обновим контакты лидов, при первом запуске будут получены все контакты, при дальнейших запусках только контакты у лидов которые были обновлены после выполнения данного сценария.&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_17.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
===Сценарий «bitrix_crm_lead_get_by_id»===&lt;br /&gt;
В данном сценарии будет последовательно обрабатываться каждый № лида, т.к. это могло бы занять достаточно много времени, проверять будем только те лиды, которые были изменены после предыдущего запуска данного сценария (если он запускается в первый раз, то получим данные по всем лидам). Дату запуска получаем из таблицы [oktell]. [dbo].[bitrix_lead_runtime]&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_18.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
0) Выводим уведомление о Запуске сценария и Получаем текущую дату и время для того чтобы отобразить время выполнения сценария.  Дату и время получаем из функции «Текущие дата и время».&lt;br /&gt;
&lt;br /&gt;
1) Получаем данные из таблицы oktell.dbo.bitrix_oauth для выполнения REST запроса&lt;br /&gt;
Текст запроса - &lt;br /&gt;
 select @access_token=access_token,&lt;br /&gt;
        @domain=domain&lt;br /&gt;
 from oktell.dbo.bitrix_oauth&lt;br /&gt;
 where client_id='client_id'&lt;br /&gt;
&lt;br /&gt;
, где&lt;br /&gt;
*client_id - id приложения, который был получен ранее, в данном запросе указывается в виде строки.&lt;br /&gt;
&lt;br /&gt;
2) Присваиваем счетчику для перебора лидов отрицательное значение, это необходимо для получение первого лида.&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_19.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
3) SQL-запрос. Получение N-го лида. Получаем № лида (ID)&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_20.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
Текст запроса - &lt;br /&gt;
 declare @dt datetime&lt;br /&gt;
 if exists(select coalesce(lead_get_by_id_dt,'') from oktell.dbo.bitrix_lead_runtime where id=1)&lt;br /&gt;
    select @dt=coalesce(lead_get_by_id_dt,'') from oktell.dbo.bitrix_lead_runtime where id=1&lt;br /&gt;
 else select @dt=''&lt;br /&gt;
    select top 1 @sql_ID=sql_ID&lt;br /&gt;
    from [oktell].[dbo].[bitrix_leads]&lt;br /&gt;
    where sql_ID&amp;gt;@counter_id&lt;br /&gt;
          and sql_date_modify&amp;gt;=@dt&lt;br /&gt;
 set @res=@@rowcount&lt;br /&gt;
&lt;br /&gt;
4)sql_result&amp;gt;0? – в результате выполнения запроса нашелся хотя бы один лид?&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_21.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
:4.1)Если да, то идем на шаг 5)&lt;br /&gt;
:4.2)Если нет, то Обновляем данные о времени выполнения в таблице [oktell].[dbo].[bitrix_lead_runtime] и выводим уведомление с временем завершения сценария.&lt;br /&gt;
&lt;br /&gt;
Текст запроса - &lt;br /&gt;
 if exists (select * from oktell.dbo.bitrix_lead_runtime where id=1)&lt;br /&gt;
 update oktell.dbo.bitrix_lead_runtime&lt;br /&gt;
    set lead_get_by_id_dt=getdate()&lt;br /&gt;
    where id=1 &lt;br /&gt;
 else &lt;br /&gt;
    insert into oktell.dbo.bitrix_lead_runtime&lt;br /&gt;
    (lead_get_by_id_dt)&lt;br /&gt;
    values&lt;br /&gt;
    (getdate())&lt;br /&gt;
&lt;br /&gt;
5)Выполняем web-запрос и получаем информацию по N-му лиду передавая его ID&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_22.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
Текст запроса — выражение вида -  'https://'+[domain]+'/rest/crm.lead.get?id='+[sql_ID]+'&amp;amp;auth='+[access_token]&lt;br /&gt;
&lt;br /&gt;
6)Получаем «Выбранное решение» лидом (опционально, можно убрать данный компонент)&lt;br /&gt;
&lt;br /&gt;
Текст запроса — выражение вида - '&amp;quot;result&amp;quot;/&amp;quot;UF_CRM_1387525788&amp;quot;/'+str([i])&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_23.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
7)Добавляем выбранное клиентом решение в таблицу - oktell.dbo.bitrix_lead_solution (опционально, можно убрать данный компонент)&lt;br /&gt;
Текст запроса - &lt;br /&gt;
 if exists (select * from oktell.dbo.bitrix_lead_solution where sql_LEAD_ID=replace(@sql_ID,'&amp;quot;',''))&lt;br /&gt;
    update oktell.dbo.bitrix_lead_solution&lt;br /&gt;
    set sql_solution=replace(@solution,'&amp;quot;','')&lt;br /&gt;
    where sql_LEAD_ID=replace(@sql_ID,'&amp;quot;','')&lt;br /&gt;
 else &lt;br /&gt;
    insert into oktell.dbo.bitrix_lead_solution&lt;br /&gt;
    (sql_LEAD_ID, sql_solution)&lt;br /&gt;
    values&lt;br /&gt;
    (replace(@sql_ID,'&amp;quot;',''), replace(@solution,'&amp;quot;',''))&lt;br /&gt;
&lt;br /&gt;
8)Устанавливаем Счетчик i =0, он необходим для того, чтобы из JSON структуры мы могли получить произвольное количество e-mail на следующей цепочке шагов.&lt;br /&gt;
&lt;br /&gt;
9)Подсчитываем количество e-mail у лида. Компонент Парсер.&lt;br /&gt;
Текст запроса — выражение вида - &amp;quot;result&amp;quot;/&amp;quot;EMAIL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_24.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
10)Получаем i-ый e-mail и выполняем серию компонентов Парсер JSON, для получения каждого из них.&lt;br /&gt;
Получаем структуру вида: &lt;br /&gt;
 {&amp;quot;ID&amp;quot;=&amp;quot;1111&amp;quot;, &amp;quot;TYPE_ID&amp;quot;=&amp;quot;EMAIL&amp;quot;, &amp;quot;VALUE&amp;quot;=&amp;quot;name@domen.ru&amp;quot;, &amp;quot;VALUE_TYPE&amp;quot;=&amp;quot;WORK&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
11)Каждый из них добавляем в таблицу oktell.dbo.bitrix_lead_contacts&lt;br /&gt;
Текст запроса - &lt;br /&gt;
 if exists (select * from oktell.dbo.bitrix_lead_contacts where sql_LEAD_ID=replace(@sql_ID,'&amp;quot;','') and sql_CONTACT_ID=replace(@sql_CONTACT_ID,'&amp;quot;',''))&lt;br /&gt;
 begin /*begin if 1*/&lt;br /&gt;
  if (coalesce(replace(@sql_CONTACT_ID,'&amp;quot;',''),'')+coalesce(replace(@sql_VALUE_TYPE,'&amp;quot;',''),'')+coalesce(replace(@sql_VALUE,'&amp;quot;',''),'')+coalesce(replace(@sql_TYPE_ID,'&amp;quot;',''),''))&amp;lt;&amp;gt;''&lt;br /&gt;
   update oktell.dbo.bitrix_lead_contacts&lt;br /&gt;
   set [sql_VALUE_TYPE]=replace(@sql_VALUE_TYPE,'&amp;quot;','')&lt;br /&gt;
       ,[sql_VALUE]=replace(@sql_VALUE,'&amp;quot;','')&lt;br /&gt;
       ,[sql_TYPE_ID]=replace(@sql_TYPE_ID,'&amp;quot;','')&lt;br /&gt;
   where sql_LEAD_ID=replace(@sql_ID,'&amp;quot;','')&lt;br /&gt;
         and sql_CONTACT_ID=replace(@sql_CONTACT_ID,'&amp;quot;','')&lt;br /&gt;
 end /*end if 1 */&lt;br /&gt;
 else &lt;br /&gt;
 begin /*begin if 2*/&lt;br /&gt;
  if (coalesce(replace(@sql_CONTACT_ID,'&amp;quot;',''),'')+coalesce(replace(@sql_VALUE_TYPE,'&amp;quot;',''),'')+coalesce(replace(@sql_VALUE,'&amp;quot;',''),'')+coalesce(replace(@sql_TYPE_ID,'&amp;quot;',''),''))&amp;lt;&amp;gt;''&lt;br /&gt;
    insert into oktell.dbo.bitrix_lead_contacts&lt;br /&gt;
        ([sql_LEAD_ID]&lt;br /&gt;
        ,[sql_CONTACT_ID]&lt;br /&gt;
        ,[sql_VALUE_TYPE]&lt;br /&gt;
        ,[sql_VALUE]&lt;br /&gt;
        ,[sql_TYPE_ID])&lt;br /&gt;
        values&lt;br /&gt;
        (replace(@sql_ID,'&amp;quot;','')&lt;br /&gt;
        ,replace(@sql_CONTACT_ID,'&amp;quot;','')&lt;br /&gt;
        ,replace(@sql_VALUE_TYPE,'&amp;quot;','')&lt;br /&gt;
        ,replace(@sql_VALUE,'&amp;quot;','')&lt;br /&gt;
        ,replace(@sql_TYPE_ID,'&amp;quot;',''))&lt;br /&gt;
 end /*end if 2 */&lt;br /&gt;
&lt;br /&gt;
12)Увеличиваем счетчик i=i+1&lt;br /&gt;
&lt;br /&gt;
13)Проверяем i&amp;lt;cnt_EMAIL? Т.е. еще остались e-mail которые необходимо добавить в БД?&lt;br /&gt;
:13.1)Если да, то идем на шаг 10)&lt;br /&gt;
:13.2)Если нет, то идем на шаг 14)&lt;br /&gt;
&lt;br /&gt;
14)Устанавливаем Счетчик i=0 (для получения телефонов) и повторяем точно такой же цикл как и для e-mail, т.к. JSON структура ответа у них совпадает.&lt;br /&gt;
&lt;br /&gt;
15)Подсчитываем количество телефонов у лида&lt;br /&gt;
Текст запроса — выражение вида - &amp;quot;result&amp;quot;/&amp;quot;PHONE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
16)Получаем i-ый телефон и выполняем серию компонентов Парсер JSON, для получения каждого из них. &lt;br /&gt;
Получаем структуру вида: &lt;br /&gt;
 {&amp;quot;ID&amp;quot;=&amp;quot;1111&amp;quot;, &amp;quot;TYPE_ID&amp;quot;=&amp;quot;PHONE&amp;quot;, &amp;quot;VALUE&amp;quot;=&amp;quot;+7 (123) 345-67-89 (доб. 123)&amp;quot;, &amp;quot;VALUE_TYPE&amp;quot;=&amp;quot;WORK&amp;quot;, &amp;quot;POST&amp;quot;=&amp;quot;Начальник отдела IT&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
17)Каждый из них добавляем в таблицу oktell.dbo.bitrix_lead_contacts&lt;br /&gt;
Текст запроса - &lt;br /&gt;
 if exists (select * from oktell.dbo.bitrix_lead_contacts where sql_LEAD_ID=replace(@sql_ID,'&amp;quot;','') and sql_CONTACT_ID=replace(@sql_CONTACT_ID,'&amp;quot;',''))&lt;br /&gt;
 begin /*begin if 1*/&lt;br /&gt;
    if (coalesce(replace(@sql_CONTACT_ID,'&amp;quot;',''),'')+coalesce(replace(@sql_VALUE_TYPE,'&amp;quot;',''),'')+coalesce(replace(@sql_VALUE,'&amp;quot;',''),'')+coalesce(replace(@sql_TYPE_ID,'&amp;quot;',''),''))&amp;lt;&amp;gt;''&lt;br /&gt;
       update oktell.dbo.bitrix_lead_contacts&lt;br /&gt;
       set [sql_VALUE_TYPE]=replace(@sql_VALUE_TYPE,'&amp;quot;','')&lt;br /&gt;
          ,[sql_VALUE]=replace(@sql_VALUE,'&amp;quot;','')&lt;br /&gt;
          ,[sql_TYPE_ID]=replace(@sql_TYPE_ID,'&amp;quot;','')&lt;br /&gt;
       where sql_LEAD_ID=replace(@sql_ID ,'&amp;quot;','')&lt;br /&gt;
             and sql_CONTACT_ID=replace(@sql_CONTACT_ID,'&amp;quot;','')&lt;br /&gt;
 end /*end if 1*/&lt;br /&gt;
 else &lt;br /&gt;
 begin /*begin if 2*/&lt;br /&gt;
    if (coalesce(@sql_CONTACT_ID,'')+coalesce(@sql_VALUE_TYPE,'')+coalesce(@sql_VALUE,'')+coalesce(@sql_TYPE_ID,''))&amp;lt;&amp;gt;''&lt;br /&gt;
       insert into oktell.dbo.bitrix_lead_contacts&lt;br /&gt;
           ([sql_LEAD_ID]&lt;br /&gt;
           ,[sql_CONTACT_ID]&lt;br /&gt;
           ,[sql_VALUE_TYPE]&lt;br /&gt;
           ,[sql_VALUE]&lt;br /&gt;
           ,[sql_TYPE_ID])&lt;br /&gt;
          values&lt;br /&gt;
           (replace(@sql_ID,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_CONTACT_ID,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_VALUE_TYPE,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_VALUE,'&amp;quot;','')&lt;br /&gt;
           ,replace(@sql_TYPE_ID,'&amp;quot;',''))&lt;br /&gt;
 end /*end if 2*/&lt;br /&gt;
&lt;br /&gt;
18)Увеличиваем счетчик i=i+1&lt;br /&gt;
&lt;br /&gt;
19)Проверяем i&amp;lt;cnt_PHONE? Т.е. еще остались телефоны которые необходимо добавить в БД?&lt;br /&gt;
:19.1)Если да, то идем на шаг 16)&lt;br /&gt;
:19.2)Если нет, то идем на шаг 20)&lt;br /&gt;
&lt;br /&gt;
20)Присваиваем счетчик перебора лидов = текущему ID лида, для поиска построчно и переходим на шаг 3) и так до тех пор пока не отработает условие 4.2)&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_25.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
===Создание служебных задач===&lt;br /&gt;
После того, как все сценарии были настроены можно создать служебные задачи для автоматизации процесса получения новых refresh_token, access_token, и информации из Bitrix24.&lt;br /&gt;
Исходя из описания REST API следует что access_token необходимо получать каждые 3600с, в то время как refresh_token активен в течении 1 месяца. В данном примере была создана служебная задача с периодом запуска — раз в 50 минут. Что позволяет всегда хранить действующий access_token, следует учитывать что после выполнения запроса refresh_token так же обновляется.&lt;br /&gt;
&lt;br /&gt;
Таким образом были созданы 2 служебные задачи:&lt;br /&gt;
&lt;br /&gt;
[[Файл:bitrix24_26.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
==Заключение==&lt;br /&gt;
В результате мы можем совершать запросы используя REST API  и получать и записывать практически любую информацию из облачной версии Bitrix24. В данной статье был рассмотрен пример получения всех лидов и сохранения информации в БД. &lt;br /&gt;
&lt;br /&gt;
Эти данные мы можем использовать:&lt;br /&gt;
&lt;br /&gt;
1)Для определения номера при входящем звонке и отображении web-формы в Call-центре сразу со страницей лида.&lt;br /&gt;
&lt;br /&gt;
2)Для отображение названии компании в различных отчетах, например пропущенные вызовы, что упростит поиск и скорость принятия решения на отработку вызова.&lt;br /&gt;
&lt;br /&gt;
3)Для использования данной базы в различных исходящих обзвонах, отправки почты на e-mail.&lt;br /&gt;
&lt;br /&gt;
Приведены только несколько примеров. Применение может быть различным.&lt;br /&gt;
&lt;br /&gt;
==Файлы==&lt;br /&gt;
&lt;br /&gt;
#[[Media:Bitrix_crm_lead_get_by_id.oscr|Служебный сценарий &amp;quot;Bitrix_crm_lead_get_by_id&amp;quot;]]&lt;br /&gt;
#[[Media:Bitrix_crm_lead_list.oscr|Служебный сценарий &amp;quot;Bitrix_crm_lead_list&amp;quot;]]&lt;br /&gt;
#[[Media:Bitrix_refresh_get_new_access_token.oscr|Служебный сценарий &amp;quot;Bitrix_refresh_get_new_access_token&amp;quot;]]&lt;br /&gt;
#[[Media:Sql_create_table_Bitrix.zip|Архив со скриптами для создания таблиц в БД Oktell]]&lt;br /&gt;
&lt;br /&gt;
==Исходный код==&lt;br /&gt;
Скрипт создания таблиц в БД OKTELL&lt;br /&gt;
&lt;br /&gt;
/*[bitrix_oauth] – Таблица с данными по Bitrix OAuth*/&lt;br /&gt;
&lt;br /&gt;
 USE [oktell]&lt;br /&gt;
 GO&lt;br /&gt;
 /****** Object:  Table [dbo].[bitrix_oauth]    Script Date: 05/24/2015 00:50:09 ******/&lt;br /&gt;
 SET ANSI_NULLS ON&lt;br /&gt;
 GO&lt;br /&gt;
 SET QUOTED_IDENTIFIER ON&lt;br /&gt;
 GO&lt;br /&gt;
 CREATE TABLE [dbo].[bitrix_oauth](&lt;br /&gt;
         [Id] [int] IDENTITY(1,1) NOT NULL,&lt;br /&gt;
         [access_token] [nvarchar](2000) NULL,&lt;br /&gt;
         [expires_in] [nvarchar](2000) NULL,&lt;br /&gt;
         [scope] [nvarchar](2000) NULL,&lt;br /&gt;
         [user_id] [nvarchar](2000) NULL,&lt;br /&gt;
         [refresh_token] [nvarchar](2000) NULL,&lt;br /&gt;
         [domain] [nvarchar](2000) NULL,&lt;br /&gt;
         [member_id] [nvarchar](2000) NULL,&lt;br /&gt;
         [redirect_uri] [nvarchar](2000) NULL,&lt;br /&gt;
         [client_id] [nvarchar](2000) NULL,&lt;br /&gt;
         [client_secret] [nvarchar](2000) NULL,&lt;br /&gt;
         [dateexec] [datetime] NULL,&lt;br /&gt;
         [code] [nvarchar](2000) NULL,&lt;br /&gt;
 PRIMARY KEY CLUSTERED &lt;br /&gt;
 (&lt;br /&gt;
         [Id] ASC&lt;br /&gt;
 )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]&lt;br /&gt;
 ) ON [PRIMARY]&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
/*[bitrix_leads] – Таблица которая содержит всю информацию по лидам*/&lt;br /&gt;
&lt;br /&gt;
 USE [oktell]&lt;br /&gt;
 GO&lt;br /&gt;
 /****** Object:  Table [dbo].[bitrix_leads]    Script Date: 05/24/2015 00:49:34 ******/&lt;br /&gt;
 SET ANSI_NULLS ON&lt;br /&gt;
 GO&lt;br /&gt;
 SET QUOTED_IDENTIFIER ON&lt;br /&gt;
 GO&lt;br /&gt;
 CREATE TABLE [dbo].[bitrix_leads](&lt;br /&gt;
         [Id] [int] IDENTITY(1,1) NOT NULL,&lt;br /&gt;
         [sql_ADDRESS] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_ADDRESS_2] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_ADDRESS_CITY] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_ADDRESS_COUNTRY] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_ADDRESS_COUNTRY_CODE] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_ADDRESS_POSTAL_CODE] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_ADDRESS_PROVINCE] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_ADDRESS_REGION] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_ASSIGNED_BY_ID] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_BIRTHDATE] [datetime] NULL,&lt;br /&gt;
         [sql_COMMENTS] [ntext] NULL,&lt;br /&gt;
         [sql_COMPANY_ID] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_COMPANY_TITLE] [nvarchar](4000) NULL,&lt;br /&gt;
         [sql_CONTACT_ID] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_CREATED_BY_ID] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_CURRENCY_ID] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_DATE_CLOSED] [datetime] NULL,&lt;br /&gt;
         [sql_DATE_CREATE] [datetime] NULL,&lt;br /&gt;
         [sql_DATE_MODIFY] [datetime] NULL,&lt;br /&gt;
         [sql_ID] [int] NOT NULL,&lt;br /&gt;
         [sql_LAST_NAME] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_MODIFY_BY_ID] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_NAME] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_OPENED] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_OPPORTUNITY] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_ORIGIN_ID] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_ORIGINATOR_ID] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_POST] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_SECOND_NAME] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_SOURCE_DESCRIPTION] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_SOURCE_ID] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_STATUS_DESCRIPTION] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_STATUS_ID] [nvarchar](3000) NULL,&lt;br /&gt;
         [sql_TITLE] [nvarchar](4000) NULL,&lt;br /&gt;
 CONSTRAINT [PK__bitrix_l__3214EC075C4299A5] PRIMARY KEY CLUSTERED &lt;br /&gt;
 (&lt;br /&gt;
         [Id] ASC&lt;br /&gt;
 )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]&lt;br /&gt;
 ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
/* [bitrix_lead_contacts] – Список контактов лидов*/&lt;br /&gt;
&lt;br /&gt;
 USE [oktell]&lt;br /&gt;
 GO&lt;br /&gt;
 /****** Object:  Table [dbo].[bitrix_lead_contacts]    Script Date: 05/24/2015 00:47:54 ******/&lt;br /&gt;
 SET ANSI_NULLS ON&lt;br /&gt;
 GO&lt;br /&gt;
 SET QUOTED_IDENTIFIER ON&lt;br /&gt;
 GO&lt;br /&gt;
 CREATE TABLE [dbo].[bitrix_lead_contacts](&lt;br /&gt;
         [Id] [int] IDENTITY(1,1) NOT NULL,&lt;br /&gt;
         [sql_LEAD_ID] [int] NULL,&lt;br /&gt;
         [sql_CONTACT_ID] [nvarchar](2000) NULL,&lt;br /&gt;
         [sql_VALUE_TYPE] [nvarchar](2000) NULL,&lt;br /&gt;
         [sql_VALUE] [nvarchar](2000) NULL,&lt;br /&gt;
         [sql_TYPE_ID] [nvarchar](2000) NULL,&lt;br /&gt;
 CONSTRAINT [PK__bitrix_l__3214EC07699C94C3] PRIMARY KEY CLUSTERED &lt;br /&gt;
 (&lt;br /&gt;
         [Id] ASC&lt;br /&gt;
 )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]&lt;br /&gt;
 ) ON [PRIMARY]&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
/*[bitrix_import_lead_error] – таблица ошибок при выполнении sql запроса на добавление\обновление лида*/&lt;br /&gt;
&lt;br /&gt;
 USE [oktell]&lt;br /&gt;
 GO&lt;br /&gt;
 Object  Table [dbo].[bitrix_import_lead_error]    Script Date 05242015 004716 &lt;br /&gt;
 SET ANSI_NULLS ON&lt;br /&gt;
 GO&lt;br /&gt;
 SET QUOTED_IDENTIFIER ON&lt;br /&gt;
 GO&lt;br /&gt;
 CREATE TABLE [dbo].[bitrix_import_lead_error](&lt;br /&gt;
         [Id] [int] IDENTITY(1,1) NOT NULL,&lt;br /&gt;
         [sql_ID] [nvarchar](2000) NULL,&lt;br /&gt;
         [sql_error] [nvarchar](2000) NULL,&lt;br /&gt;
         [sql_full_lead_info] [ntext] NULL,&lt;br /&gt;
         [sql_date_error] [datetime] NULL,&lt;br /&gt;
 PRIMARY KEY CLUSTERED &lt;br /&gt;
 (&lt;br /&gt;
         [Id] ASC&lt;br /&gt;
 )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]&lt;br /&gt;
 ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
/*----------------------------------------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*[bitrix_lead_runtime] – Таблица с данными по дате запуска сценариев импорта лидов и импорта контактов лидов*/&lt;br /&gt;
&lt;br /&gt;
 USE [oktell]&lt;br /&gt;
 GO&lt;br /&gt;
 /****** Object:  Table [dbo].[bitrix_lead_runtime]    Script Date: 05/24/2015 00:48:20 ******/&lt;br /&gt;
 SET ANSI_NULLS ON&lt;br /&gt;
  GO&lt;br /&gt;
 SET QUOTED_IDENTIFIER ON&lt;br /&gt;
 GO&lt;br /&gt;
 CREATE TABLE [dbo].[bitrix_lead_runtime](&lt;br /&gt;
         [Id] [int] IDENTITY(1,1) NOT NULL,&lt;br /&gt;
         [lead_get_by_id_dt] [datetime] NULL,&lt;br /&gt;
         [lead_list_dt] [datetime] NULL,&lt;br /&gt;
 PRIMARY KEY CLUSTERED &lt;br /&gt;
 (&lt;br /&gt;
         [Id] ASC&lt;br /&gt;
 )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]&lt;br /&gt;
 ) ON [PRIMARY]&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*[bitrix_lead_solution] – Таблица содержащая решение клиентов по проектам (распологается в самом низу карточки лида)*/&lt;br /&gt;
&lt;br /&gt;
 USE [oktell]&lt;br /&gt;
 GO&lt;br /&gt;
 /****** Object:  Table [dbo].[bitrix_lead_solution]    Script Date: 05/24/2015 00:49:04 ******/&lt;br /&gt;
 SET ANSI_NULLS ON&lt;br /&gt;
 GO&lt;br /&gt;
 SET QUOTED_IDENTIFIER ON&lt;br /&gt;
 GO&lt;br /&gt;
 CREATE TABLE [dbo].[bitrix_lead_solution](&lt;br /&gt;
         [Id] [int] IDENTITY(1,1) NOT NULL,&lt;br /&gt;
         [sql_LEAD_ID] [int] NULL,&lt;br /&gt;
         [sql_solution] [nvarchar](2000) NULL,&lt;br /&gt;
 CONSTRAINT [PK__bitrix_l__3214EC0765CC03DF] PRIMARY KEY CLUSTERED &lt;br /&gt;
 (&lt;br /&gt;
         [Id] ASC&lt;br /&gt;
 )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]&lt;br /&gt;
 ) ON [PRIMARY]&lt;br /&gt;
 GO&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>Oktell_%D0%B8_ReCRM</id>
		<title>Oktell и ReCRM</title>
		<link rel="alternate" type="text/html" href="Oktell_%D0%B8_ReCRM"/>
				<updated>2023-03-31T12:38:29Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Интеграции с CRM системами|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''ReCRM''' (Real Estate CRM)— интернет-сервис для специалистов по недвижимости России и СНГ. Для увеличения продаж сервис предоставляет: &lt;br /&gt;
*авто-выгрузку на популярные порталы&lt;br /&gt;
*готовый веб-сайта агентства, оптимизированный для поисковых систем&lt;br /&gt;
*SMS-уведомления&lt;br /&gt;
*рассылку ваших презентаций клиентам&lt;br /&gt;
*встроенный менеджер задач для всей вашей команды&lt;br /&gt;
*поддержку всех мобильных устройств&lt;br /&gt;
&lt;br /&gt;
'''Сайт компании:''' http://www.recrm.ru/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Интеграция возможна, начиная с версии Oktell не ниже 2.11.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Подготовка к интеграции== &lt;br /&gt;
&lt;br /&gt;
===Настройка Web-сервера Oktell===&lt;br /&gt;
&lt;br /&gt;
Чтобы ReCRM связалась с Oktell, необходимо настроить web-сервер.&lt;br /&gt;
&lt;br /&gt;
Для настройки web-сервера воспользуйтесь статьей: [[Настройка Web-сервера Oktell]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Подключение оператора с привязкой к телефону===&lt;br /&gt;
&lt;br /&gt;
Чтобы сотрудник мог совершать и принимать звонки в карте сети необходимо закрепить телефон за сотрудником. &lt;br /&gt;
&lt;br /&gt;
Зайдите в '''Администрирование''' -&amp;gt; '''Карта сети''' -&amp;gt; '''Настройки телефона'''. Выберите сотрудника в поле '''Пользователь WebCRM'''. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Файл:Amocrm-011.png | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Интеграция не позволяет использовать гарнитуру в работе. Вы можете использовать софтфоны в качестве IP-телефона. Настройка идентична вышеописанной. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка ReCRM ==&lt;br /&gt;
&lt;br /&gt;
Откройте '''Настройки''' и перейдите на вкладку '''IP-телефония'''. В окне напротив своего пользователя установите галочку &amp;quot;Включить IP телефонию&amp;quot; и заполните следующие поля: &lt;br /&gt;
*Имя пользователя Oktell&lt;br /&gt;
*Пароль пользователя Oktell&lt;br /&gt;
*Хост (IP адрес) сервера АТС. Если вы работаете в одной сети с сервером, то используйте локальный IP-адрес. В противном случае, введите внешний IP-адрес. &lt;br /&gt;
После ввода данных нажмите кнопку «'''Сохранить'''».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Если вы используете SSL-сертификат для web-сервера Oktell,то вводить IP-адрес нужно с '''wss://'''. Например, '''wss://12.34.56.78:4055'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ:&amp;lt;/span&amp;gt; При использовании Google Chrome 36+ версии, вам необходимо установить SSL сертификат на сервере Oktell или разрешить нешифрованные соединения. Связано это с тем, что ReCRM работает на https и Google Chrome не разрешает использовать нешифрованные соединения при таком подключении. Обратитесь к статье: [[Нужен SSL-сертификат для интеграции с https-системами в Google Chrome]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:ReCRM-001.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Для каждого пользователя на вкладке &amp;quot;'''Доступ'''&amp;quot; необходимо разрешить &amp;quot;'''Возможность исполнять методы Web-API'''&amp;quot;. &amp;lt;/span&amp;gt;&lt;br /&gt;
* Перейдите в '''Администрирование''' - '''Пользователи'''. &lt;br /&gt;
* Выберите конкретного пользователя и перейдите на вкладку '''Доступ'''. &lt;br /&gt;
* Поставьте галочку напротив &amp;quot;'''Возможность исполнять методы Web-API'''&amp;quot;. &lt;br /&gt;
* Нажмите '''Сохранить'''. &lt;br /&gt;
* Затем нажмите '''Применить'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Amocrm-003.png  |600px| center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Прием звонка ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы при входящем звонке звонок переадресовался на ответственного менеджера и у него открылась карточка клиента необходимо проделать следующие шаги. &lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Импортируйте сценарий для работы с ReCRM.&lt;br /&gt;
&lt;br /&gt;
Для этого перейдите в Администрирование/Сценарии. В контекстном меню выберите &amp;quot;Импортировать сценарий&amp;quot; и откройте сценарий &amp;quot;'''Маршрутизация ReCRM'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Скачать сценарий:''' [[Media:%D0%9C%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B4%D0%BB%D1%8F_ReCRM.oscr|Маршрутизация ReCRM.oscr]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:ReCRM-002.png|center|900px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' Настройте параметры подключения к ReCRM.&lt;br /&gt;
&lt;br /&gt;
Откройте импортированный сценарий &amp;quot;Маршрутизация ReCRM&amp;quot;. Введите в компонент &amp;quot;'''API KEY'''&amp;quot; ваш код. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Чтобы узнать ваш ключ обратитесь в техническую поддержку компании ReCRM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:ReCRM-003.png|center|900px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 3.''' Модифицируйте главный сценарий входящей маршрутизации.&lt;br /&gt;
&lt;br /&gt;
Добавьте сессионную переменную в главный сценарий:&lt;br /&gt;
* agent_phone (строковая) - номер ответственного менеджера&lt;br /&gt;
&lt;br /&gt;
Возможен вывод другой информации по абоненту (ID контакта, название компании, ID компании, ответственный менеджер)&lt;br /&gt;
Добавьте следующие элементы:&lt;br /&gt;
:1. Компонент &amp;quot;'''ReCRM'''&amp;quot;. Запускает сценарий &amp;quot;Маршрутизация ReCRM&amp;quot;. В сценарии в созданную сессионную переменную '''agent_phone''' будет присвоен номер ответственного менеджера.&lt;br /&gt;
:2. Компонент &amp;quot;'''if (agent_phone == ‘’)'''&amp;quot;. Проверяет на наличие номера в переменной '''agent_phone'''. &lt;br /&gt;
:3. Компонент &amp;quot;'''Number from CRM by default'''&amp;quot;. Если номер в переменной отсутствует, то введите номер сотрудника по умолчанию.&lt;br /&gt;
По желанию, вы можете добавить CallerId и CallerName в компоненты переключения на сотрудников.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:ReCRM-004.png|center|900px]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:ReCRM-005.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 4.''' При входящем звонке в ReCRM отправляется запрос на получение ответственного менеджера по этому контакту. ReCRM возвращает имя пользователя, на которого происходит переключение. Параллельно открывается карточка у данного ответственного менеджера.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:ReCRM-006.png|center|900px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Скачать сценарий:''' [[Media:%D0%9C%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B4%D0%BB%D1%8F_ReCRM.oscr|Маршрутизация ReCRM.oscr]]&lt;br /&gt;
&lt;br /&gt;
'''Скачать пример главного сценария:''' [[Media:%28%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%29_%D0%9C%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B2%D1%85%D0%BE%D0%B4%D1%8F%D1%89%D0%B8%D1%85_%28Backup%29.oscr|(Служебный) Маршрутизация входящих (Backup).oscr]] (для версий от 2.11)&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_API_amoCRM</id>
		<title>Использование API amoCRM</title>
		<link rel="alternate" type="text/html" href="%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_API_amoCRM"/>
				<updated>2023-03-31T12:37:05Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Интеграции_с_CRM_системами | Наверх]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''amoCRM''' — это простая и понятная система учета потенциальных клиентов и сделок, которая поможет контролировать и увеличивать Ваши продажи. Она не требует установки или настройки — достаточно зарегистрироваться на этом сайте и ваша персональная CRM система готова к работе. &lt;br /&gt;
&lt;br /&gt;
'''Сайт компании:''' [https://www.amocrm.ru/ https://www.amocrm.ru/]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''amoCRM''' имеет удобный API-интерфейс, позволяющий с помощью специальных запросов обмениваться данными со сторонними системами, в том числе и с  '''Oktell'''. С помощью этого интерфейса вы сможете с помощью запросов создавать задачи, добавлять сотрудников, получать список клиентов. Например, при входящем звонке в '''Oktell''' возможно параллельное создание контакта в '''amoCRM''' с заполненным номером телефона. Если же использовать диалоговые карточки Call-центра, возможна упрощенная схема создания заявок с назначением ответственных менеджеров. &lt;br /&gt;
&lt;br /&gt;
'''Справка по API amoCRM:''' https://www.amocrm.ru/add-ons/api.php или https://developers.amocrm.ru/rest_api/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В этой статье описывается пример подключения и использования API-интерфейса средствами '''Oktell'''. &lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу получения списка всех клиентов и выделения имени первого клиента с помощью команды API: '''/private/api/v2/json/contacts/list'''&lt;br /&gt;
&lt;br /&gt;
Сценарий выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:API amoCRM -001.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Для начала работы введите ваши авторизационные данные в компоненте &amp;quot;'''Учетная запись'''&amp;quot;. &lt;br /&gt;
* Переменной '''URL''' присвойте точный адрес вашего аккаунта - например, https://test.amocrm.ru&lt;br /&gt;
* Переменной '''User_Login''' присвойте логин пользователя&lt;br /&gt;
* Переменной '''User_Hash''' присвойте ключ для авторизации в API. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:API amoCRM -002.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''User Hash''' (ключ для авторизации в API) можно узнать в amoCRM в настройках пользователя (страница &amp;quot;'''Пользователи аккаунта'''&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:API amoCRM -003.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' Введите необходимый запрос в компоненте &amp;quot;'''Запрос'''&amp;quot;. В примере: '''/private/api/v2/json/contacts/list'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:API amoCRM -004.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 3.''' Для отладки сценария во всех компонентах типа '''Уведомление''' определите '''Адресата'''. &lt;br /&gt;
&lt;br /&gt;
'''Шаг 4.''' Результат запроса от amoCRM приходит в формате JSON. Для определения параметров из выборки используйте парсер JSON. В примере показано как получить имя первого клиента из списка. &lt;br /&gt;
&lt;br /&gt;
* '''Документ''' - переменная ans, в которой содержится JSON-структура со списком клиентов.&lt;br /&gt;
* '''Алгоритм''' - Парсер JSON&lt;br /&gt;
* '''Поисковый запрос''' - строка ''&amp;quot;response&amp;quot;/&amp;quot;contacts&amp;quot;/0/&amp;quot;name&amp;quot;''&lt;br /&gt;
* '''Функция''' - Содержимое &lt;br /&gt;
* '''Результат в переменную''' - переменная '''ans1''' (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:API amoCRM -005.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 5.''' Запустите сценарий. Вы должны получить имя первого клиента, определенного в вашей '''amoCRM'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:API amoCRM -006.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Аналогичным образом вы сможете производить любые действия: подсчитывать количество клиентов в вашей компании, записывать в базу данных и т.д. Для выделения необходимой информации используйте JSON-парсер. Подробнее можно прочитать в статье [[Компонент Парсер|компонент Парсер]].&lt;br /&gt;
&lt;br /&gt;
Вы можете не только получать информацию из системы, но и совершать служебные действия - создавать сделку, добавлять клиента. Для этого используйте необходимый запрос в компоненте &amp;quot;'''Запрос'''&amp;quot;. Посмотреть список всех запросов можно в справке по API amoCRM: https://www.amocrm.ru/add-ons/api.php или https://developers.amocrm.ru/rest_api/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Скачать сценарий:''' [[Media:API_amoCRM.oscr|API_amoCRM.oscr]] (для версий старше 2.9 131007)&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>Oktell_%D0%B8_amoCRM</id>
		<title>Oktell и amoCRM</title>
		<link rel="alternate" type="text/html" href="Oktell_%D0%B8_amoCRM"/>
				<updated>2023-03-31T12:35:59Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Прием звонка */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Интеграции_с_CRM_системами | Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''amoCRM''' — это простая и понятная система учета потенциальных клиентов и сделок, которая поможет контролировать и увеличивать Ваши продажи. Она не требует установки или настройки — достаточно зарегистрироваться на этом сайте и ваша персональная CRM система готова к работе. &lt;br /&gt;
&lt;br /&gt;
'''Сайт компании:''' [https://www.amocrm.ru/ https://www.amocrm.ru/]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; ВНИМАНИЕ: Интеграция возможна, начиная с версии '''Oktell''' не ниже 2.9 131002 (от 2 октября 2013 года).&lt;br /&gt;
&lt;br /&gt;
== Подготовка к интеграции ==&lt;br /&gt;
&lt;br /&gt;
=== Настройка Web-сервера Oktell ===&lt;br /&gt;
&lt;br /&gt;
'''1.''' Чтобы '''amoCRM''' связалась с '''Oktell''', необходимо настроить '''web-сервер'''.  &lt;br /&gt;
&lt;br /&gt;
Для настройки '''web-сервера''' воспользуйтесь статьей: [[Настройка_Web-сервера_Oktell | Настройка Web-сервера Oktell]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2.''' Чтобы работала выгрузка записей из Oktell в настройках web-сервера также нужно указать &amp;quot;'''Домен для формирования ссылок на скачивание'''&amp;quot;. Укажите ваш внешний IP-адрес, например ''http://123.45.67.89:4055''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Подключение оператора с привязкой к телефону ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Чтобы сотрудник мог совершать и принимать звонки в карте сети необходимо закрепить телефон за сотрудником. &lt;br /&gt;
&lt;br /&gt;
Зайдите в '''Администрирование''' -&amp;gt; '''Карта сети''' -&amp;gt; '''Настройки телефона'''. Выберите сотрудника в поле '''Пользователь WebCRM'''. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Файл:Amocrm-011.png | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Интеграция не позволяет использовать гарнитуру в работе. Вы можете использовать софтфоны в качестве IP-телефона. Настройка идентична вышеописанной. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка amoCRM ==&lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Откройте '''Настройки''' и перейдите на вкладку '''Виджеты'''. В виджете '''Oktell''' нажмите кнопку &amp;quot;'''Установить'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Amocrm-002.png  |800 px| center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' В настройках вам надо внести параметры телефонии: '''адрес сервера Oktell''' с указанием порта web-сервера, а также данные для авторизации - логины и пароли пользователей '''Oktell'''.  Нажмите &amp;quot;'''Сохранить'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Если вы используете SSL-сертификат для web-сервера Oktell,то вводить IP-адрес нужно с '''wss://'''. Например,  '''wss://12.34.56.78:4055'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ:&amp;lt;/span&amp;gt; При использовании Google Chrome 36+ версии, вам необходимо установить SSL сертификат на сервере Oktell или разрешить нешифрованные соединения. Связано это с тем, что amoCRM работает на https и Google Chrome не разрешает использовать нешифрованные соединения при таком подключении. Обратитесь к статье: [[Нужен SSL-сертификат для интеграции с https-системами в Google Chrome]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Amocrm-001.png | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Для каждого пользователя на вкладке &amp;quot;'''Доступ'''&amp;quot; необходимо разрешить &amp;quot;'''Возможность исполнять методы Web-API'''&amp;quot;. &amp;lt;/span&amp;gt;&lt;br /&gt;
* Перейдите в '''Администрирование''' - '''Пользователи'''. &lt;br /&gt;
* Выберите конкретного пользователя и перейдите на вкладку '''Доступ'''. &lt;br /&gt;
* Поставьте галочку напротив &amp;quot;'''Возможность исполнять методы Web-API'''&amp;quot;. &lt;br /&gt;
* Нажмите '''Сохранить'''. &lt;br /&gt;
* Затем нажмите '''Применить'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Amocrm-003.png  |600px| center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Прием и совершение звонка ==&lt;br /&gt;
&lt;br /&gt;
=== Совершение звонка ===&lt;br /&gt;
&lt;br /&gt;
Для совершения звонка используйте кнопку [[Файл:Amocrm-004.png]]. Запустится сервис автодозвона, отменить не получится. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Amocrm-005.png  |800px| center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В сервисе автодозвона, по умолчанию, количество попыток на автодозвон до внешнего номера равно '''50'''. Рекомендуется установить количество попыток равное '''1'''. &lt;br /&gt;
* Для этого перейдите в '''Общие настройки''' - '''Автодозвон'''&lt;br /&gt;
* Установите &amp;quot;'''Количество попыток на автодозвон до внешнего номера'''&amp;quot; равное 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Amocrm-013.png  | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Прием звонка ===&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы система направила входящий звонок на ответственного менеджера и автоматически открыла карточку клиента в браузере необходимо проделать следующие шаги:&lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Импортируйте сценарий для работы с amoCRM. &lt;br /&gt;
* Для этого перейдите в '''Администрирование''' - '''Сценарии'''. В контекстном меню выберите &amp;quot;'''Импортировать сценарий'''&amp;quot; и выберите сценарий &amp;quot;'''Работа с AMO CRM'''&amp;quot;. &lt;br /&gt;
'''Скачать сценарий:''' [[Media:%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D1%81_AMO_CRM.oscr|Работа с amoCRM.oscr]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Amocrm-006.png | 600px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' Настройте параметры подключения к amoCRM. &lt;br /&gt;
&lt;br /&gt;
Откройте импортированный сценарий &amp;quot;'''Работа с AMO CRM'''&amp;quot;. Введите в компоненты &amp;quot;'''Ваш аккаунт AMO'''&amp;quot; и &amp;quot;'''Пользователь'''&amp;quot; значения из настроек виджета &amp;quot;'''Oktell'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Когда вы будете вставлять выражение в компонент &amp;quot;'''Пользователь'''&amp;quot;, уберите перенос строки. Значение должно быть введено в одну строку.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Amocrm-007.png |800px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 3.''' Модифицируйте главный сценарий входящей маршрутизации. &lt;br /&gt;
&lt;br /&gt;
* Добавьте 2 переменные в главный сценарий:&lt;br /&gt;
:#'''CRM_Number''' (строковая) - номер ответственного менеджера&lt;br /&gt;
:#'''CRM_INFO''' (строковая) - имя контакта&lt;br /&gt;
:Возможен вывод другой информации по абоненту (ID контакта, название компании, ID компании, ответственный менеджер)&lt;br /&gt;
&lt;br /&gt;
* Добавьте следующие элементы:&lt;br /&gt;
&lt;br /&gt;
:# Компонент &amp;quot;'''AMO CRM'''&amp;quot; - запуск сценария &amp;quot;'''Работа с AMO CRM'''&amp;quot;. &lt;br /&gt;
:# Компонент &amp;quot;'''Есть номер?'''&amp;quot; - проверяет на наличие номера оператора&lt;br /&gt;
:# Компонент &amp;quot;'''Номер из CRM'''&amp;quot; - присваивает номер сотрудника в переменную сценария. &lt;br /&gt;
&lt;br /&gt;
* По желанию, вы можете добавить '''CallerId''' и '''CallerName''' в компоненты переключения на сотрудников.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Amocrm-010.png |600px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Amocrm-009.png |1000px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 4.''' При входящем звонке в '''amoCRM''' отправляется запрос на получение ответственного менеджера по этому контакту. '''amoCRM''' возвращает имя пользователя, на которого происходит переключение. Параллельно открывается карточка у данного ответственного менеджера.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Amocrm-012.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Скачать сценарий:''' [[Media:%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D1%81_AMO_CRM.oscr|Работа с amoCRM.oscr]]  &lt;br /&gt;
&lt;br /&gt;
'''Скачать пример главного сценария:''' [[Media:%D0%9C%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B2%D1%85%D0%BE%D0%B4%D1%8F%D1%89%D0%B8%D1%85_%28amocrm%29.zip|Маршрутизация_входящих_(amocrm).zip]]  (для версий от 2.10.140313)&lt;br /&gt;
&lt;br /&gt;
== Возможные проблемы ==&lt;br /&gt;
&lt;br /&gt;
'''1.''' Если у вас не всплывает уведомление при входящем звонке, проверьте как в Oktell определяется CallerID.&amp;lt;/span&amp;gt; Используйте компонент уведомление в главном сценарии. Проверить определение '''CallerId''' в '''amoCRM''' можно с помощью web-запроса: &lt;br /&gt;
&lt;br /&gt;
 {Ваш аккаунт AMO}?{Ваш пользователь}&amp;amp;caller_number=89041112233&amp;amp;transliterate=Y&lt;br /&gt;
&lt;br /&gt;
где '''Ваш аккаунт AMO''' и '''Ваш пользователь''' берутся из настроек виджета '''Oktell''', а номер можно определить с помощью уведомления в главном сценарии.&lt;br /&gt;
&lt;br /&gt;
Например, '''https://test.amocrm.ru/private/acceptors/oktell/index.php?admin@oktell.ru&amp;amp;caller_number=89041112233&amp;amp;transliterate=Y'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Если у вас некорректно определяется '''CallerId''' в '''Oktell''' выполните следующее:&lt;br /&gt;
* Перейдите в '''Администрирование''' - '''Параметры аппаратуры''' - {Выберите шлюз}.&lt;br /&gt;
* В поле &amp;quot;'''Источник определения CallerID'''&amp;quot; выберите, например, '''From: DisplayName'''&lt;br /&gt;
* Нажмите &amp;quot;'''Сохранить'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Amocrm-014.png |600px |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2.''' Ошибка 1200 (cant connect to server):&lt;br /&gt;
*Если используется незащищенное соединение (ws) и в настройках виджета указан ws://&amp;lt;ip&amp;gt;. IP пишется без указания протокола ws.&lt;br /&gt;
*Если используется незащищенное соединение (ws) - в адресной строке нажать на &amp;quot;щит&amp;quot;, затем на &amp;quot;разрешить выполнение небезопасного скрипта&amp;quot;.&lt;br /&gt;
*Неправильные настройки firewall, маршрутизаторов и т.д., использование прокси могут так же являться причиной ошибки подключения. Иногда бывает, что на сервере на 80 порт установлен сторонний веб-сервис – в данном случае нужно поменять порт либо этого веб-сервиса, либо в настройках веб-сервера Oktell заменить 80 на любой другой открытый порт, (например, 8080).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3.''' Ошибка 1202 &lt;br /&gt;
&lt;br /&gt;
Если введены неправильные настройки login/password/ip в виджете – исправить их.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4.''' Ошибка 1204 (using oktell desktop client)&lt;br /&gt;
&lt;br /&gt;
Нельзя одновременно использовать клиент Oktell и интеграцию. В данном случае работать будет только desktop Oktell.&lt;br /&gt;
&lt;br /&gt;
'''5.''' Ошибка (phone not connected)&lt;br /&gt;
&lt;br /&gt;
Попытка позвонить без подключенного softphone или ip-phone по SIP.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''6.''' Не выгружаются записи разговоров&lt;br /&gt;
&lt;br /&gt;
Чаще всего бывает из-за того, что в настройках веб-сервера Oktell указан 127.0.0.1 в качестве домена для генерирования ссылок на скачивание записи - нужно указать внешний адрес.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''7.''' Не работает переадресация звонка на менеджера&lt;br /&gt;
&lt;br /&gt;
Вызвано тем, что сценарий настроен неправильно. Про правильную настройку можно прочитать выше.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Метод диагностики неполадок===&lt;br /&gt;
&lt;br /&gt;
'''1.''' В браузере Google Chrome нажмите F12. Откроется консоль браузера.&lt;br /&gt;
&lt;br /&gt;
'''2.''' Обновите страницу. &lt;br /&gt;
&lt;br /&gt;
'''3.''' Перейдите в карточку клиента и дождитесь вывода ошибки. &lt;br /&gt;
&lt;br /&gt;
'''4.''' Посмотрите информацию на вкладке '''Network/WebSockets'''. На вкладке выберите нужный WebSocket и откройте окно Frames, на котором вы увидите всю необходимую трассировку (команды oktell.js). Там вы сможете подробнее узнать о проблеме подключения.&lt;br /&gt;
&lt;br /&gt;
'''5.''' Некоторая информация также доступна на вкладке '''Console'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Подробнее в статье''' [[Okapp#.D0.9C.D0.B5.D1.82.D0.BE.D0.B4_.D0.B4.D0.B8.D0.B0.D0.B3.D0.BD.D0.BE.D1.81.D1.82.D0.B8.D0.BA.D0.B8_.D0.BD.D0.B5.D0.BF.D0.BE.D0.BB.D0.B0.D0.B4.D0.BE.D0.BA|Okapp: Метод диагностики неполадок]]&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_API_%D0%9C%D0%B5%D0%B3%D0%B0%D0%BF%D0%BB%D0%B0%D0%BD%D0%B0</id>
		<title>Использование API Мегаплана</title>
		<link rel="alternate" type="text/html" href="%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_API_%D0%9C%D0%B5%D0%B3%D0%B0%D0%BF%D0%BB%D0%B0%D0%BD%D0%B0"/>
				<updated>2023-03-31T12:34:15Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Интеграции с CRM системами|Наверх]]&lt;br /&gt;
&lt;br /&gt;
'''Мегаплан''' — один из лидеров среди SaaS-провайдеров на российском рынке, бизнес-приложение '''Мегаплан''' интегрирует '''Oktell''' в качестве модуля для совершения голосовых вызовов. Это простая и мощная облачная система для повышения эффективности бизнеса. Лучше всего подходит малому и среднему бизнесу из сферы услуг, проектных команд, агентств, консультационного бизнеса, ИТ-бизнеса, компаний из B2B-сектора. '''Мегаплан''' увеличивает выручку и прибыль компании: повышает скорость и качество обслуживания, позволяет управлять задачами и поручениями, следить за их выполнением, вести базу данных сотрудников компании, историю клиентов и многое другое.&lt;br /&gt;
&lt;br /&gt;
'''Сайт компании:''' [http://www.megaplan.ru/ http://www.megaplan.ru/]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Мегаплан''' имеет API-интерфейс, позволяющий с помощью специальных запросов обмениваться данными со сторонними системами, в том числе и с  '''Oktell'''. С помощью этого интерфейса вы сможете с помощью запросов создавать задачи, добавлять сотрудников, получать список клиентов. Например, при входящем звонке в '''Oktell''' возможно параллельное создание контакта в '''Мегаплане''' с заполненным номером телефона. Если же использовать диалоговые карточки Call-центра, возможна упрощенная схема создания заявок с назначением ответственных менеджеров. &lt;br /&gt;
&lt;br /&gt;
'''Справка по API Мегаплана:''' [http://help.megaplan.ru/API http://help.megaplan.ru/API]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В этой статье описывается пример подключения и использования API-интерфейса средствами '''Oktell'''. &lt;br /&gt;
&lt;br /&gt;
'''Скачать сценарий:''' [[Media:API_%D0%9C%D0%B5%D0%B3%D0%B0%D0%BF%D0%BB%D0%B0%D0%BD%D0%B0.oscr|API Мегаплана.oscr]] (собрано на версии 2.11.2.141217)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу получения списка всех клиентов с помощью команды API: '''/BumsCrmApiV01/Contractor/list.xml'''&lt;br /&gt;
&lt;br /&gt;
Сценарий выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:API мегаплана-001.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Для начала работы введите ваши авторизационные данные в компоненте &amp;quot;'''Начальные параметры'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' Введите необходимый запрос в компоненте &amp;quot;'''Запрос'''&amp;quot;. В примере: '''/BumsCrmApiV01/Contractor/list.xml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:API мегаплана-002.png|center|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 3.''' Во всех компонентах типа '''Уведомление''' определите '''Адресата'''. &lt;br /&gt;
&lt;br /&gt;
'''Шаг 4.''' Если используется версия ниже, чем 2.11 вместо компонента &amp;quot;'''Тело письма'''&amp;quot; установите компонент &amp;quot;'''Тело письма для Oktell 2.10'''&amp;quot;. Это связано с тем, что из компонента Web-запрос для метода GET был убран заголовок '''Content-Type'''. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: В компоненте &amp;quot;Получаем дату в виде RFC 2822&amp;quot; используется GMT +0300. Если у вас другой часовой пояс поменяйте его. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 5.''' Запустите сценарий. Вы должны получить список всех клиентов, определенных в вашем '''Мегаплане''' в формате XML.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:API мегаплана-004.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
С полученным списком вы сможете производить любые действия: подсчитывать количество клиентов в вашей компании, записывать в базу данных и т.д. Для выделения необходимой информации используйте [[Компонент Парсер|компонент '''Парсер''']].&lt;br /&gt;
&lt;br /&gt;
Вы можете не только получать информацию из системы, но и совершать служебные действия - создавать сделку, добавлять клиента. Для этого используйте необходимый запрос в компоненте &amp;quot;'''Запрос'''&amp;quot;. Посмотреть список всех запросов можно в справке по API Мегаплана: [http://help.megaplan.ru/API http://help.megaplan.ru/API]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Скачать сценарий:''' [[Media:API_%D0%9C%D0%B5%D0%B3%D0%B0%D0%BF%D0%BB%D0%B0%D0%BD%D0%B0.oscr|API Мегаплана.oscr]] (собрано на версии 2.11.2.141217)&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_API_%D0%9C%D0%B5%D0%B3%D0%B0%D0%BF%D0%BB%D0%B0%D0%BD%D0%B0</id>
		<title>Использование API Мегаплана</title>
		<link rel="alternate" type="text/html" href="%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_API_%D0%9C%D0%B5%D0%B3%D0%B0%D0%BF%D0%BB%D0%B0%D0%BD%D0%B0"/>
				<updated>2023-03-31T12:33:27Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Интеграции с CRM системами|Наверх]]&lt;br /&gt;
&lt;br /&gt;
'''Мегаплан''' — один из лидеров среди SaaS-провайдеров на российском рынке, бизнес-приложение '''Мегаплан''' интегрирует '''Oktell''' в качестве модуля для совершения голосовых вызовов. Это простая и мощная облачная система для повышения эффективности бизнеса. Лучше всего подходит малому и среднему бизнесу из сферы услуг, проектных команд, агентств, консультационного бизнеса, ИТ-бизнеса, компаний из B2B-сектора. '''Мегаплан''' увеличивает выручку и прибыль компании: повышает скорость и качество обслуживания, позволяет управлять задачами и поручениями, следить за их выполнением, вести базу данных сотрудников компании, историю клиентов и многое другое.&lt;br /&gt;
&lt;br /&gt;
'''Сайт компании:''' [http://www.megaplan.ru/ http://www.megaplan.ru/]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Мегаплан''' имеет API-интерфейс, позволяющий с помощью специальных запросов обмениваться данными со сторонними системами, в том числе и с  '''Oktell'''. С помощью этого интерфейса вы сможете с помощью запросов создавать задачи, добавлять сотрудников, получать список клиентов. Например, при входящем звонке в '''Oktell''' возможно параллельное создание контакта в '''Мегаплане''' с заполненным номером телефона. Если же использовать диалоговые карточки Call-центра, возможна упрощенная схема создания заявок с назначением ответственных менеджеров. &lt;br /&gt;
&lt;br /&gt;
'''Справка по API Мегаплана:''' [http://help.megaplan.ru/API http://help.megaplan.ru/API]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В этой статье описывается пример подключения и использования API-интерфейса средствами '''Oktell'''. &lt;br /&gt;
&lt;br /&gt;
'''Скачать сценарий:''' [[Media:API_%D0%9C%D0%B5%D0%B3%D0%B0%D0%BF%D0%BB%D0%B0%D0%BD%D0%B0.oscr|API Мегаплана.oscr]] (собрано на версии 2.11.2.141217)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу получения списка всех клиентов с помощью команды API: '''/BumsCrmApiV01/Contractor/list.xml'''&lt;br /&gt;
&lt;br /&gt;
Сценарий выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:API мегаплана-001.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Для начала работы введите ваши авторизационные данные в компоненте &amp;quot;'''Начальные параметры'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' Введите необходимый запрос в компоненте &amp;quot;'''Запрос'''&amp;quot;. В примере: '''/BumsCrmApiV01/Contractor/list.xml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:API мегаплана-002.png|center|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 3.''' Во всех компонентах типа '''Уведомление''' определите '''Адресата'''. &lt;br /&gt;
&lt;br /&gt;
'''Шаг 4.''' Если используется версия ниже, чем 2.11 вместо компонента &amp;quot;'''Тело письма'''&amp;quot; установите компонент &amp;quot;'''Тело письма для Oktell 2.10'''&amp;quot;. Это связано с тем, что из компонента Web-запрос для метода GET был убран заголовок '''Content-Type'''. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: В компоненте &amp;quot;Получаем дату в виде RFC 2822&amp;quot; используется GMT +0300. Если у вас другой часовой пояс поменяйте его. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 5.''' Запустите сценарий. Вы должны получить список всех клиентов, определенных в вашем '''Мегаплане''' в формате XML.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:API мегаплана-004.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
С полученным списком вы сможете производить любые действия: подсчитывать количество клиентов в вашей компании, записывать в базу данных и т.д. Для выделения необходимой информации используйте [[Компонент Парсер|компонент '''Парсер''']].&lt;br /&gt;
&lt;br /&gt;
Вы можете не только получать информацию из системы, но и совершать служебные действия - создавать сделку, добавлять клиента. Для этого используйте необходимый запрос в компоненте &amp;quot;'''Запрос'''&amp;quot;. Посмотреть список всех запросов можно в справке по API Мегаплана: [http://help.megaplan.ru/API http://help.megaplan.ru/API]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Скачать сценарий:''' [[Media:API_%D0%9C%D0%B5%D0%B3%D0%B0%D0%BF%D0%BB%D0%B0%D0%BD%D0%B0.osc| API Мегаплана.oscr]] (собрано на версии 2.11.2.141217)&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>Oktell_%D0%B8_%D0%9C%D0%B5%D0%B3%D0%B0%D0%BF%D0%BB%D0%B0%D0%BD</id>
		<title>Oktell и Мегаплан</title>
		<link rel="alternate" type="text/html" href="Oktell_%D0%B8_%D0%9C%D0%B5%D0%B3%D0%B0%D0%BF%D0%BB%D0%B0%D0%BD"/>
				<updated>2023-03-31T12:31:14Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Проблемы и решения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Интеграции_с_CRM_системами | Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Мегаплан''' — один из лидеров среди SaaS-провайдеров на российском рынке, бизнес-приложение '''Мегаплан''' интегрирует '''Oktell''' в качестве модуля для совершения голосовых вызовов. Это простая и мощная облачная система для повышения эффективности бизнеса. Лучше всего подходит малому и среднему бизнесу из сферы услуг, проектных команд, агентств, консультационного бизнеса, ИТбизнеса, компаний из B2Bсектора. '''Мегаплан''' увеличивает выручку и прибыль компании: повышает скорость и качество обслуживания, позволяет управлять задачами и поручениями, следить за их выполнением, вести базу данных сотрудников компании, историю клиентов и многое другое.&lt;br /&gt;
&lt;br /&gt;
'''Сайт компании:''' [http://www.megaplan.ru/ http://www.megaplan.ru/]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; ВНИМАНИЕ: Интеграция возможна, начиная с версии '''Oktell''' не ниже 2.9 131002 (от 2 октября 2013 года).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ:&amp;lt;/span&amp;gt; При использовании Google Chrome 36+ версии, вам необходимо установить SSL сертификат на сервере Oktell или разрешить нешифрованные соединения. Связано это с тем, что amoCRM работает на https и Google Chrome не разрешает использовать нешифрованные соединения при таком подключении. Обратитесь к статье: [[Нужен SSL-сертификат для интеграции с https-системами в Google Chrome]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;video type=&amp;quot;youtube&amp;quot; id=&amp;quot;P5xKYHX4ffk&amp;quot; width=&amp;quot;1280&amp;quot; desc=&amp;quot;Интеграция Мегаплан с Октелл&amp;quot; frame=&amp;quot;false&amp;quot; position=&amp;quot;center&amp;quot; size=&amp;quot;full&amp;quot; allowfullscreen=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Подготовка к интеграции ==&lt;br /&gt;
&lt;br /&gt;
=== Настройка Web-сервера Oktell ===&lt;br /&gt;
&lt;br /&gt;
Чтобы '''Мегаплан''' связался с '''Oktell''', необходимо настроить '''web-сервер'''.  &lt;br /&gt;
&lt;br /&gt;
Для настройки '''web-сервера''' воспользуйтесь статьей: [[Настройка_Web-сервера_Oktell | Настройка Web-сервера Oktell]]. &lt;br /&gt;
&lt;br /&gt;
=== Подключение оператора с привязкой к телефону ===&lt;br /&gt;
&lt;br /&gt;
В системе '''Oktell''' сотрудник может использовать '''ip-телефон''' или '''гарнитуру'''. В данной части рассматривается '''подключение сотрудника с привязкой к телефону.''' &lt;br /&gt;
&lt;br /&gt;
Чтобы сотрудник мог совершать и принимать звонки в карте сети необходимо закрепить телефон за сотрудником. &lt;br /&gt;
&lt;br /&gt;
Зайдите в '''Администрирование''' -&amp;gt; '''Карта сети''' -&amp;gt; '''Настройки телефона'''. Выберите сотрудника в поле '''Пользователь WebCRM'''. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Файл:Oktelljs-004.png | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Подключение оператора с гарнитурой  ===&lt;br /&gt;
&lt;br /&gt;
В этой части статьи рассматривается подключение сотрудника с выделением ему гарнитуры (динамической линии). Чтобы '''Oktell''' выделил динамическую линию необходимо в серверном конфигурационном файле ('''\oktell\server\oktell.ServerService.exe.config''') определить параметр '''automap'''. Если у вас нет такого ключа добавьте его. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;add key=&amp;quot;EnableAutoMap&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Если '''EnableAutoMap = 1''', то в клиентское приложение можно заходить с любого компьютера, не определенного в карте сети и к нему автоматически будет прикрепляться '''динамическая''' внутренняя линия (гарнитура). Если '''EnableAutoMap = 0''', то зайти в клиентское приложение можно только с тех компьютеров, которые определены в карте сети.'' &lt;br /&gt;
&lt;br /&gt;
Перезагрузите сервер '''Oktell'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Oktelljs-006.png | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Настройка Мегаплана ==&lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Откройте '''Настройки''' и перейдите на вкладку '''Интеграция'''. Здесь вам надо оставить заявку на подключение. Менеджеры Мегаплана внесут изменения в настройки лицензии и вы сможете подключиться к '''Oktell'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Мегаплан-000.png | 800 px | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' После подключения телефонии, вам надо внести параметры телефонии: '''IP-адрес сервера Oktell''', а также дополнительную информацию- коды телефона, максимальную длину внутреннего номера. В примере, указан только IP-адрес сервера Oktell.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Мегаплан-001.png | 800 px | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 3.''' Теперь введите учетные данные от вашего пользователя '''Oktell''' - логин и пароль. Если пользователь будет использовать гарнитуру, то установите галочку &amp;quot;'''Звонить прямо из Мегаплана'''&amp;quot;, пользователю будет выделена динамическая линия. &lt;br /&gt;
&lt;br /&gt;
Если за пользователем закреплен IP-телефон, но вы захотите использовать также и гарнитуру, то оба устройства будут работать по технологии '''SIP-Forking''' (множественная регистрация линий под одной учетной записью). Вызов приходит одновременно на все устройства, но разговаривать  можно будет только по одному.&lt;br /&gt;
&lt;br /&gt;
Нажмите '''Сохранить'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; ВНИМАНИЕ: Использовать гарнитуру можно только в браузере '''Google Chrome'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Мегаплан-002.png | 800 px | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 4.''' На остальных рабочих местах сотрудников в CRM &amp;quot;'''Мегаплан'''&amp;quot; нужно будет также ввести логин и пароль их учетной записи в '''Oktell'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Мегаплан-003.png | 800 px | center]]&lt;br /&gt;
&lt;br /&gt;
== Прием  и совершение звонка ==&lt;br /&gt;
&lt;br /&gt;
=== Прием звонка ===&lt;br /&gt;
&lt;br /&gt;
При входящем звонке в CRM-системе всплывает уведомление о звонке, в котором пользователь нажимает '''Ответить'''.  Во время разговора пользователь может &lt;br /&gt;
* создать карточку клиента или компании. Телефон автоматически подставляется в соответствующее поле. &lt;br /&gt;
* добавить комментарий к звонку&lt;br /&gt;
* перевести или завершить звонок&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Файл:Мегаплан-004.png | 500 px ]][[Файл:Мегаплан-005.png | 500 px ]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После разговора, выберите связанного клиента и результат. Нажмите '''Завершить коммуникацию'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Мегаплан-006.png | 600 px |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После успешного завершения коммуникации в '''карточке клиента''' вам будут доступны записи разговоров. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; ВНИМАНИЕ: Записи разговоров доступны только если вы нажали '''Завершить коммуникацию''' и выбрали связанного клиента.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Мегаплан-009.png | 600 px |center]]&lt;br /&gt;
&lt;br /&gt;
=== Совершение звонка ===&lt;br /&gt;
&lt;br /&gt;
Для совершения звонка выберите контакт и нажмите на кнопку [[Файл:Мегаплан-007.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Мегаплан-008.png | 700 px | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Проблемы и решения== &lt;br /&gt;
&lt;br /&gt;
'''1. Проблема:''' Не появляется значок &amp;quot;Позвонить&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Решение:''' &lt;br /&gt;
&lt;br /&gt;
Необходимо 1)нажать на иконку серого телефона в правом нижнем углу&lt;br /&gt;
&lt;br /&gt;
2)В конце адресной строки браузера появится изображение &amp;quot;щита&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Файл:MEGAPLAN PHONE ICON1.jpg | 600 px |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После нажатия на него появится окно с предложением &amp;quot;Загрузить небезопасный скрипт&amp;quot; &lt;br /&gt;
&lt;br /&gt;
[[Файл:MEGAPLAN PHONE ICON2.jpg | 600 px |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Нажимаем на него, страница обновится, появится значок позвонить&lt;br /&gt;
&lt;br /&gt;
[[Файл:MEGAPLAN PHONE ICON4.jpg | 600 px |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT color=&amp;quot;red&amp;quot;&amp;gt;ВНИМАНИЕ!&amp;lt;/FONT&amp;gt; После того как Вы закроете браузер и откроете его вновь необходимо будет повторить операцию. &lt;br /&gt;
Чтобы не выполнять эту процедуру каждый раз решения два&lt;br /&gt;
&lt;br /&gt;
1)Шифрованное соединение с Октелл&lt;br /&gt;
&lt;br /&gt;
2)Разрешить в браузере все не шифрованные соединения через флаг --allow-running-insecure-content (&amp;lt;FONT color=&amp;quot;blue&amp;quot;&amp;gt;[https://support.google.com/chrome/answer/1342714?hl=ru На этой странице есть небезопасное содержание]&amp;lt;/FONT&amp;gt;)&lt;br /&gt;
или в браузере: chrome://flags/#allow-insecure-websocket-from-https-origin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT color=&amp;quot;red&amp;quot;&amp;gt;Второй вариант снижает безопасность, будьте осторожны!&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В случае если после этого значок позвонить не появился и телефон в правом нижнем угла остался серым, необходимо проверить доступен ли сервер Октелл. Если он не доступен в консоли Google Chrome можно увидеть следующую ошибку&lt;br /&gt;
&lt;br /&gt;
[[Файл:MEGAPLAN PHONE ICON3.jpg | 600 px |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Проблема:''' Не появляется запись разговора.&lt;br /&gt;
&lt;br /&gt;
'''Решение:''' &lt;br /&gt;
&lt;br /&gt;
Необходимо проверить настройки микширования в Октелл, Администрирование - Общие настройки - Управление записями разговоров - должен быть установлен Используемый кодек mp3.&lt;br /&gt;
&lt;br /&gt;
При необходимости можно активировать параметр - Упаковывать сразу после завершения коммутации [[%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8F%D0%BC%D0%B8_%D1%80%D0%B0%D0%B7%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D0%B2|Управление записями разговоров]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:MEGAPLAN PHONE ICON5.jpg | 600 px |center]]&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_webhooks_Bpium_%D0%B2_Oktell</id>
		<title>Обработка webhooks Bpium в Oktell</title>
		<link rel="alternate" type="text/html" href="%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_webhooks_Bpium_%D0%B2_Oktell"/>
				<updated>2023-03-31T12:29:46Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Файлы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Интеграции_с_CRM_системами | Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
В Бипиум существует возможность отправки уведомлений сторонним системам при изменении данных пользователями. Для отправки уведомлений сторонние системы должны быть подписаны на события - вебхуки(webhooks). Подробнее с настройкой вебхуков в Бипиум можно ознакомиться по ссылке: [https://docs.bpium.ru/manual/structure/systemcatalogs/webhooks Вебхуки].&lt;br /&gt;
&lt;br /&gt;
В данной статье рассматривается способ приема таких уведомлений в Oktell.&lt;br /&gt;
&lt;br /&gt;
Бипиум отправляет события на указанный при создании webhook адрес при помощи POST-запроса с передачей сообщения о событии в теле запроса в формате JSON.&lt;br /&gt;
&lt;br /&gt;
Принять и обработать POST-запрос с произвольным содержимым в Oktell можно при помощи служебного сценария генерации 404 ошибки. Он запускается когда на web-сервер Oktell приходит запрос на неизвестный ресурс. В качестве входных параметров в сценарий передаются: адрес ресурса, HTTP-заголовки запроса, содержимое запроса.&lt;br /&gt;
&lt;br /&gt;
Таким образом получаем следующий алгоритм обработки вебхуков:&lt;br /&gt;
* создаем вебхук и указываем адрес для запросов в Oktell&lt;br /&gt;
* настраиваем служебный сценарий генерации 404 ошибки, в котором анализируем адрес, на который пришел запрос&lt;br /&gt;
* обрабатываем содержимое запроса и выполняем необходимые действия в Oktell&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
Рассмотрим простой пример: &lt;br /&gt;
&lt;br /&gt;
1) В Бипиум настроен каталог '''Задачи'''. При добавлении новой задачи и назначении ответственного, ему необходимо отправить уведомление на электронную почту.&lt;br /&gt;
&lt;br /&gt;
2) Каталог '''Задачи''' содержит 3 поля: Название задачи, Описание и Ответственный.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Bpium_tasks_structure.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
3) Настроим вебхук, укажем адрес web-сервера Oktell, на который будут отправляться уведомления - https://user:password@myoktell.ru/Bpium/NewTask.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Bpium_webhook.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
4) Создадим служебный сценарий '''HTTP404'''. Сохраняем в переменные адрес ресурса и содержимое значение функций '''Входной параметр 1''' и '''Входной параметр 4''', которые содержат соответственно адрес ресурса и содержимое запроса.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Bpium_404.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Анализируем адрес ресурса: если переменная содержит строку “/Bpium/NewTask”, то продолжаем обработку запроса, в противном случае завершаем сценарий.&lt;br /&gt;
&lt;br /&gt;
6) Обработку содержимого будем производить в отдельном служебном сценарии '''BpiumNewTask''', который запустим асинхронно. Основной сценарий завершаем установкой кода ответа HTTP 200 в служебную переменную '''(сл) Возвращаемое значение 2'''.&lt;br /&gt;
&lt;br /&gt;
7) В сценарии обработки содержимого запроса '''BpiumNewTask''' с помощью компонента '''Парсер''' разбираем полученное JSON-сообщение. Подробнее о работе с компонентом '''Парсер''' можно прочитать в статье [[Компонент Парсер|компонент Парсер]].&lt;br /&gt;
&lt;br /&gt;
8) Выделяем из полученного сообщения Название задачи, Описание задачи и идентификатор ответственного. Далее при помощи компонента '''Bpium''' получаем адрес электронной почты ответственного.&lt;br /&gt;
Формируем текст письма и отправляем ответственному сотруднику.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Bpium_newtask.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
9) Указываем в настройках web-сервера Oktell созданный сценарий. &lt;br /&gt;
&lt;br /&gt;
[[Файл:Bpium_oktellwebserver.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
10) Проверяем, что при добавлении новой записи в каталог '''Задачи''', получаем уведомление на электронную почту.&lt;br /&gt;
&lt;br /&gt;
==Файлы==&lt;br /&gt;
&lt;br /&gt;
*[[Media:Bpium_webhook_scr.zip|Архив со сценариями]]&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B8_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D1%8F%D1%89%D0%B5%D0%B9_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8</id>
		<title>Сценарии исходящей маршрутизации</title>
		<link rel="alternate" type="text/html" href="%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B8_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D1%8F%D1%89%D0%B5%D0%B9_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8"/>
				<updated>2023-03-31T12:22:31Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При настройке исходящей маршрутизации через сценарий, вы можете предусмотреть различные алгоритмы анализа набираемого номера и выбора линий для совершения звонка. Любое исходящее соединение, инициируемое абонентом с внутренней линии будет определяться логикой сценария. Составление такого сценария требует понимания некоторых особенностей работы системы.&lt;br /&gt;
&lt;br /&gt;
Для начала, следует иметь в виду, что для различных типов абонентских устройств вход в сценарий происходит с небольшими отличиями:&lt;br /&gt;
&lt;br /&gt;
Аналоговый телефон - сценарий запускается сразу после снятия трубки. USB телефон или встроеный в клиентское приложение soft-фон - сценарий запускается сразу после нажатия кнопки &amp;quot;снять трубку&amp;quot;. Очевидно, что в общем случае, для корректной работы этих устройств, сценарий маршрутизации должен предусматривать сбор номера, его анализ (внешний или внутренний), выбор внешней линии или направления в зависимости от того, какой номер набран (городской/мобильный/междугородный). &lt;br /&gt;
&lt;br /&gt;
IP телефоны и Софтфоны - сценарий запускается после набора номера и нажатия кнопки SND (начало вызова). Набранный номер передается в сценарий через функцию called-ID. Таким образом для IP телефонов нет необходимости использовать блок, предполагающий сбор номера, а можно сразу переходить к анализу полученного через called-id значения. &lt;br /&gt;
&lt;br /&gt;
Важно понимать, что переключение абонентов также определяется сценарием исходящей маршрутизации. При необходимости совершить переключение, сотрудник нажимает flash (transfer), и оставляя абонента во flash-буфере, производит набор номера, на который необходимо произвести переключение.  При этом, если переключающий, после набора номера и начала вызывных гудков (КПВ) не дождется ответа и положит трубку, то ожидающий во flash-буфере абонент попадет в сценарий исходящей маршрутизации.  &lt;br /&gt;
&lt;br /&gt;
Таким образом в сценарии исходящей маршрутизации должны быть предусмотрены следующие логические блоки:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Блок-схема сценария исходящей маршрутизации.jpg|800px]]&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%9A%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D1%8B_%D1%81%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D1%85_%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B5%D0%B2</id>
		<title>Компоненты служебных сценариев</title>
		<link rel="alternate" type="text/html" href="%D0%9A%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D1%8B_%D1%81%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D1%85_%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B5%D0%B2"/>
				<updated>2023-03-31T12:20:03Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Коммутатор */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;code&amp;gt;[[Техническая документация]] / [[Call-центр]] или [[Администрирование]] / [[Сценарии]] / [[Служебные сценарии]] / [[Компоненты служебных сценариев]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В данном разделе в справочном порядке приведены лишь узкоспециализированные компоненты, доступные только служебным сценариям. Остальные компоненты являются общими для всех типов сценариев и описаны выше в разделе [[Общие компоненты сценариев]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ContentSave&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:cl_cc_scr_i91.png|left]]&lt;br /&gt;
===Сохранение контента===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент служит для сохранения переданного ему на старт контента в файл. Сбор таких файлов может быть необходим для последующих задач обработки и тарификации. Файлы могут быть сохранены в текстовом и xml виде. Их дальнейшую обработку может взять на себя или отдельный процесс, или служебный сценарий с таймерной активацией.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Свойства''':&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|Контент&lt;br /&gt;
|Переменная, содержащая переданный в сценарий контент. Заполняется в компоненте «Старт».&lt;br /&gt;
|-&lt;br /&gt;
|Тип файла&lt;br /&gt;
|Текст / XML.&lt;br /&gt;
|-&lt;br /&gt;
|Файл&lt;br /&gt;
|Аргумент, определяющий путь к файлу. Доступна генерация случайных имен (включающих время).&lt;br /&gt;
|- &lt;br /&gt;
|Добавлять в конец&lt;br /&gt;
|Да/нет. Определяет способ формирования файла. Включение режима дописывает в конец к выбранному файлу информацию. Работает только при сохранении в текстовые файлы. Актуально только при настройке записи в один и тот же файл с целью избежания затирания предыдущей информации.&lt;br /&gt;
Поле доступно только при выборе значения «Текст» в свойстве «Тип файла».&lt;br /&gt;
|- &lt;br /&gt;
|Имя файла в переменную&lt;br /&gt;
|В указанную переменную будет занесено название файла (или путь), в который было произведено сохранение. &lt;br /&gt;
|-&lt;br /&gt;
|Возвращать полный путь&lt;br /&gt;
|Да/нет. При выборе пункта «Да» в переменную будет сохранен полный путь, иначе только имя файла.&lt;br /&gt;
|-&lt;br /&gt;
|Переход&lt;br /&gt;
|Компонент, на который передается управление.&lt;br /&gt;
|-&lt;br /&gt;
|Имя&lt;br /&gt;
|Название компонента для отображения в визуальной среде и выбора в списке.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ContentParse&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:cl_cc_scr_i92.png|left]] &lt;br /&gt;
===Парсинг контента===&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; С версии 100120 ликвидирован. Контент преобразован к XML-виду, парсинг его необходимо осуществлять компонентом [[Общие компоненты сценариев#Парсер текста|Разбор текста]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент служит для принятия решения в сценарии на основе содержащейся в контенте информации. Производит выделение из контента интересующего значения, такого как номер линии, время звонка и др.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Свойства''':&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|Контент&lt;br /&gt;
|Переменная, содержащая переданный в сценарий контент. Заполняется в компоненте «Старт».&lt;br /&gt;
|-&lt;br /&gt;
|Параметр&lt;br /&gt;
|Одна из множества содержащихся в контенте величин:&lt;br /&gt;
* Направление звонка; &lt;br /&gt;
* Время начала; &lt;br /&gt;
* Время окончания; &lt;br /&gt;
* Идентификатор линии; &lt;br /&gt;
* Номер линии; &lt;br /&gt;
* Идентификатор цепочки коммутаций; &lt;br /&gt;
* Номер абонента (CallerId); &lt;br /&gt;
* Внешний номер; &lt;br /&gt;
* Количество коммутаций; &lt;br /&gt;
* Количество коммутаций с оператором; &lt;br /&gt;
* Количество коммутаций с IVR; &lt;br /&gt;
* Общее время в секундах; &lt;br /&gt;
* Обработка в задаче; &lt;br /&gt;
* Идентификатор проекта; &lt;br /&gt;
* Идентификатор задачи; &lt;br /&gt;
* Имя задачи; &lt;br /&gt;
* Код задачи; &lt;br /&gt;
* Время в задаче в секундах; &lt;br /&gt;
* Время начала задачи; &lt;br /&gt;
* Код абонента в списке задачи; &lt;br /&gt;
Тип возвращаемого значения строковый или числовой.&lt;br /&gt;
|- &lt;br /&gt;
|Переменная&lt;br /&gt;
|Переменная, в которую производится выгрузка значения.&lt;br /&gt;
|-&lt;br /&gt;
|Переход&lt;br /&gt;
|Компонент, на который передается управление.&lt;br /&gt;
|-&lt;br /&gt;
|Имя&lt;br /&gt;
|Название компонента для отображения в визуальной среде и выбора в списке.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Call&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Script IVR call.png|left]] &lt;br /&gt;
===Дозвон===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Служебный сценарий не связан ни с какой линией, однако он может инициировать звонок на внешнее направление. Компонент позволяет осуществить вызов абонента и в зависимости от свойств либо дождаться ответа абонента и передать управление линией в сценарий IVR, либо запустить набор во внешнюю сеть и сразу же передать инициативу во внешний управляющий модуль (например менеджер задач) с моментальным переходом к следующему компоненту сценария, либо запустить набор и дождаться ответа, после чего передать инициативу во внешний управляющий модуль (например конференцию при вызове внутренних). &lt;br /&gt;
&lt;br /&gt;
В ходе дозвона во внешнюю сеть производится поиск свободной внешней линии в соответствии с установленным списком, резервирование, набор номера. Далее в случае передачи управления внешней линией в сценарий IVR осуществляется ожидание ответа в течение установленного интервала времени (по умолчанию 40 секунд) и дальнейший запуск указанного обслуживающего сценария. В случае передачи управления в вышестоящий менеджер, ожидание ответа абонента осуществляется уже в нем, а сценарий после отправки номера на набор сразу сразу переходит к следующему компоненту. &lt;br /&gt;
&lt;br /&gt;
Использование в режиме вышестоящего управляющего модуля происходит при активации режима набора номеров через сценарий в сервисе автодозвона, в голосовых задачах, в конференции. Например, может стоять задача жесткой маршрутизации звонков. В задаче указывается  перечень равноправных линий, однако мобильные номера необходимо набирать через GSM-шлюз, внутригородские через городскую АТС, междугородние через SIP-соединения или через городскую АТС с использованием городской IP-телефонии. Для решения этой задачи может быть организован служебный сценарий, который в соответствии с переданным на его старт номером осуществляет маршрутизацию, выбор [[Линии#Направления|направлений]], преобразование номера в [[Линии#Направления|команду]], резервирование и отправку строки-команды на набор. Сценарий устанавливается как способ набора номеров в задачах (могут быть установлены различные сценарии в разных задачах) или при автодозвоне. После отправки команды-номера на набор управляющий модуль берет на себя задачу ожидания ответа линии, а сценарий либо завершается, либо производит дальнейшие необходимые действия, связанные с контекстом своего исполнения. Естественно, сценарий для определения способа маршрутизации и преобразования может использовать всю доступную информацию: время, номер, задача/пользователь, информация во внешних источниках (web, БД) и т.д. &lt;br /&gt;
В компоненте устанавливается список внешних линий и направлений, отсортированных в соответствии с приоритетом выделения. Может быть задействован дополнительный фильтр по правам внешнего объекта (задачи или пользователя), то есть могут быть исключены те линии, которые не присутствуют в ресурсах инициирующей дозвон задачи или в правах инициирующего автодозвон пользователя. &lt;br /&gt;
Преобразование номера в команду может быть произведено направлением, в котором зарезервирована свободная линия. Также преобразование может быть выполнено предварительно в текущем сценарии, а на набор передано без изменений.&lt;br /&gt;
&lt;br /&gt;
Использование в режиме вышестоящего управляющего модуля с ожиданием в сценарии требуется при реализации приглашений внутренних номеров в конференцию через служебный сценарий (задается в общих настройках), а также при активации режима набора внутренних номеров в автодозвоне через служебный сценарий (задается в общих настройках). При этом в самом служебном сценарии может происходить набор как внешних, так и внутренних номеров - важно только, чтобы в качестве значения свойства «Обслуживание» был выбран режим «управляющий модуль с ожиданием в сценарии».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В одном обработчике сценария может быть успешно выполнено сколько угодно компонентов «Дозвон» с режимом обслуживания в IVR, но только один с режимом обслуживания в вышестоящем управляющем модуле. Остальные будут фильтроваться. &lt;br /&gt;
&lt;br /&gt;
В случае ожидания в сценарии и обслуживания в вышестоящем управляющем модуле - может быть использовано множество компонентов с последовательно неудачными ответами и только один удачный, после чего будет включена фильтрация.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''Свойства''':&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|Номер/команда&lt;br /&gt;
|Аргумент, определяющий номер, по которому производить дозвон. &lt;br /&gt;
В качестве номера может быть принята команда (строка, содержащая DTMF символы и командные спец. символы w, q, z, {, }). Подробнее о командах в разделе [[Линии#Направления|Администрирование. Направления]].&lt;br /&gt;
&lt;br /&gt;
При звонке через [[Свойства_компонентов#IP_шлюз|sip-шлюз без регистрации]] возможно указывать в качестве номера URI (sip:username@domain). В этом случае несмотря на настройки звонок будет отправлен на указанный в URI адрес. То же самое в обязательном порядке касается шлюзов межсерверного взаимодействия.&lt;br /&gt;
|-&lt;br /&gt;
|Среда&lt;br /&gt;
|Внешняя сеть / Внутренний номерной план.&lt;br /&gt;
Определяет в каком направлении осуществлять вызов. При вызове внутреннего абонента осуществляется  его соединение с указанным IVR сценарием. При вызове внешнего абонента существуют разновидности (свойство «Обслуживание»).&lt;br /&gt;
|-&lt;br /&gt;
|Обслуживание&lt;br /&gt;
|IVR / Управляющий модуль / Управляющий модуль с ожиданием в сценарии. &lt;br /&gt;
Вариант использования компонента в режиме набора номера. Различие в режимах описано выше.&lt;br /&gt;
|-&lt;br /&gt;
|Тип команды&lt;br /&gt;
|Доступно только в режиме набора номера во внешнюю сеть.&lt;br /&gt;
Определяет способ преобразования номера в команду, отсылаемую на набор. По умолчанию без преобразования.&lt;br /&gt;
* Без преобразования. Отправляет номер как есть в зарезервированную линию. &lt;br /&gt;
* Использовать команду [[Линии#Направления|направления]]. Если зарезервированная линия взята из направления, и в нем  настроено преобразование номера, то перед отправкой на набор номер будет преобразован в строку-команду по указанной в направлении схеме.[[Линии#Направления|Подробно здесь]].  &lt;br /&gt;
В некоторых случаях преобразование номера в команду может быть произведено предварительно в самом сценарии, или вовсе команда как итог может быть указана в таблице абонентов (номер в чистом виде - частный случай команды). В этом случае дополнительно преобразовывать команду не следует, и стоит оставить режим &amp;quot;без преобразования&amp;quot;. Конечный режим реализации зависит от задач и целей.&lt;br /&gt;
|-&lt;br /&gt;
|Тип вызова&lt;br /&gt;
|Доступно только в режиме набора номера во внешнюю сеть.&lt;br /&gt;
Обычный / экстренный / интерком.&lt;br /&gt;
Набор в экстренном режиме при отсутствии свободных линий среди назначенных будет производить разрыв активных коммутаций с целью освобождения внешней линии для совершения этого звонка.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;ВНИМАНИЕ! Значение «экстренный» следует выставлять в [[Экстренные номера|сценарии набора экстренных номеров]]. В других случаях рекомендуется оставлять тип со значением по умолчанию «обычный». Возможны вариации, но их следует  тщательно продумывать во избежание незапланированных разрывов.&lt;br /&gt;
&lt;br /&gt;
Подробно об экстренных номерах в разделах [[Внутренние номера#Экстренные номера|Администрирование. Внутренние номера. Экстренные]] и [[Экстренные номера|Администрирование. Общие настройки. Экстренные номера]].&lt;br /&gt;
&lt;br /&gt;
Интерком-вызов имеет отличие от обычного, если функция поддерживается конечным устройством. В противном случае вызов будет происходить в обычном режиме. При интерком-вызове телефонное устройство снимает трубку автоматически сразу же после поступления звонка.&lt;br /&gt;
|- &lt;br /&gt;
|Линии, направления&lt;br /&gt;
|Осуществляет выбор линий и направлений для осуществления звонка во внешнюю сеть&lt;br /&gt;
&lt;br /&gt;
На вкладке «Список объектов» предоставляется возможность указать явно последовательность существующих в системе линий и [[Линии#Направления|направлений]] для осуществления звонка. Можно отключить использование некоторых элементов, а для выбранных установить последовательность поиска свободной линии. &lt;br /&gt;
Поиск свободной будет осуществляться в соответствии с установленной последовательностью. По каждому направлению анализируются все линии, входящие в его состав. Если линия присутствует в нескольких направлениях, то при обнаружении ее свободной и установленном в компоненте режиме преобразования номера в соответствии с командой направления, будет применена команда того направления, которое в перечислении находится выше по приоритету.&lt;br /&gt;
На вкладке «Аргумент» возможно динамическое указание линии через ее код или Guid-идентификатор в строковом представлении. Также здесь может быть указан идентификатор или код направления, потока или шлюза. В этом случае будут последовательно перебираться все линии указанного объекта до обнаружения свободной и готовой к совершению вызова. Режим введен для использования совместно со [[Свойства компонентов#IP шлюз|шлюзами с динамической регистрацией потоков]] и компонентом сценариев [[Общие компоненты сценариев#Регистрация|Регистрация потока]].&lt;br /&gt;
|-&lt;br /&gt;
|Идентификатор выбранной линии в переменную&lt;br /&gt;
|Устанавливает строковую переменную, в которую происходит сохранение GUID-идентификатора выбранной для звонка линии. Если звонок не произведен, в переменную заносится пустота.&lt;br /&gt;
|-&lt;br /&gt;
|Фильтровать по правам&lt;br /&gt;
|Доступно только при наборе номера во внешнюю сеть в режиме обслуживания в управляющем модуле.&lt;br /&gt;
Да/нет. При задействовании режима в случае, если осуществляется обработка канала пользователя системы, может быть осуществлена дополнительная фильтрация перечисленных в компоненте линий в соответствии с настройками [[Права#Исходящие|прав выхода на внешние линии]] для пользователя. По умолчанию «Да» - фильтровать.&lt;br /&gt;
|-&lt;br /&gt;
|CallerId&lt;br /&gt;
|Подставляемый для звонка номер. При отсутствии или некорректном значении будет взят номер по умолчанию для канала.&lt;br /&gt;
|-&lt;br /&gt;
|CallerName&lt;br /&gt;
|Подставляемый для звонка имя.&lt;br /&gt;
|- &lt;br /&gt;
|Сценарий IVR&lt;br /&gt;
|Доступно только в режиме обслуживания в IVR (внешние и внутренние вызовы).&lt;br /&gt;
Название сценария, который будет запущен после снятия трубки абонентом.&lt;br /&gt;
|-&lt;br /&gt;
|Очередь ожидания&lt;br /&gt;
|Активировать ли очередь ожидания для внутреннего переключения в случае, если номер занят.&lt;br /&gt;
Поле доступно только при выборе значения «Внутренний номерной план» в свойстве «Среда».&lt;br /&gt;
|-&lt;br /&gt;
|Параметр запуска IVR&lt;br /&gt;
|Доступно только в режиме обслуживания в IVR (внешние и внутренние вызовы).&lt;br /&gt;
Параметр, который будет передан на старт сценария IVR.&lt;br /&gt;
|-&lt;br /&gt;
|Время ожидания, сек&lt;br /&gt;
|Аргумент определяет, сколько секунд необходимо ожидать соединения перед отбоем.&lt;br /&gt;
|-&lt;br /&gt;
|Код отказа SIP в переменную&lt;br /&gt;
|Доступно только в режиме обслуживания в IVR или ожидания ответа в сценарии.&lt;br /&gt;
Переменная сценария, куда сохраняется числовой код отказа SIP (например 486 или 500).&lt;br /&gt;
|- &lt;br /&gt;
|Переход&lt;br /&gt;
|Компонент, на который передается управление в случае успешного выполнения поставленной задачи (в соответствии с режимом - либо ответ абонента и соединение со сценарием IVR, либо отправка команды на набор и передача линии на обслуживание в управляющий модуль). &lt;br /&gt;
|-&lt;br /&gt;
|Переход, занято&lt;br /&gt;
|Доступно только в режиме обслуживания в IVR (внешние и внутренние вызовы).&lt;br /&gt;
Компонент, на который передается управление, если номер занят.&lt;br /&gt;
Свойство доступно только если установлен режим обслуживания в сценарии IVR.&lt;br /&gt;
|-&lt;br /&gt;
|Переход, не отвечает&lt;br /&gt;
|Доступно только в режиме обслуживания в IVR (внешние и внутренние вызовы).&lt;br /&gt;
Компонент, на который передается управление, если время ожидания ответа истекло.&lt;br /&gt;
Свойство доступно только если установлен режим обслуживания в сценарии IVR.&lt;br /&gt;
|- &lt;br /&gt;
|Переход, линия не найдена&lt;br /&gt;
|Доступно только в режиме обслуживания в IVR (внешние вызовы).&lt;br /&gt;
Компонент, на который передается управление, если не обнаружена доступная для совершения вызова внешняя линия из списка направлений.&lt;br /&gt;
|-&lt;br /&gt;
|Переход, ошибка&lt;br /&gt;
|Доступно только в режиме обслуживания в IVR (внешние и внутренние вызовы).&lt;br /&gt;
Компонент, на который передается управление, если в ходе проверки корректности установки свойств, набора номера, ожидания событий или передачи управления возникли сбои.&lt;br /&gt;
|-&lt;br /&gt;
|Имя&lt;br /&gt;
|Название компонента для отображения в визуальной среде и выбора в списке.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Connector&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:cl_cc_scr_i94.png|left]] &lt;br /&gt;
===Коммутатор===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент осуществляет вызов двух абонентов и соединяет их между собой в коммутацию. Имеет возможность вызывать сразу группу, из которых в качестве абонента принимается первый ответивший. Поддерживает вызовы внутренних пользователей, внешних номеров, быстрых и экстренных номеров, внутренних номеров, IVR-сценариев. При вызове внешних номеров использует [[Сценарии АТС#SvcDialExt|сценарий набора внешних/быстрых номеров]], если тот установлен в разделе общих настроек.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Свойства''':&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|Детальная настройка&lt;br /&gt;
|Да/нет.&lt;br /&gt;
Позволяет включить режим детальной настройки параметров вызова с помощью XML.&lt;br /&gt;
По умолчанию «Нет».&lt;br /&gt;
|-&lt;br /&gt;
|Абоненты А&lt;br /&gt;
|Недоступно, если включена детальная настройка.&lt;br /&gt;
Аргумент, определяющий первого абонента предстоящей коммутации. В качестве абонента может выступать ключ пользователя (идентификатор, имя, логин), ключ линии (идентификатор, номер), внутренний стандартный номер, быстрый/экстренный номер, внешний номер, а также любая их комбинация через запятую. В случае указания группы или нескольких абонентов в предстоящей коммутации будет участвовать первый ответивший абонент среди перечисленных.&lt;br /&gt;
|-&lt;br /&gt;
|Абоненты Б&lt;br /&gt;
|Недоступно, если включена детальная настройка.&lt;br /&gt;
Аргумент, определяющий второго абонента предстоящей коммутации. Указание аналогично абоненту А.&lt;br /&gt;
|- &lt;br /&gt;
|Последовательность&lt;br /&gt;
|Недоступно, если включена детальная настройка.&lt;br /&gt;
* Сначала А, потом Б. Система вызывает абонентов А, дожидается ответа первого из них, обрывает дозвон до остальных, после чего запускает дозвон до абонентов Б.&lt;br /&gt;
* Сначала Б, потом А. Наоборот.&lt;br /&gt;
* Одновременно А и Б. Система вызывает одновременно всех абонентов, при этом гарантирует соединение одного из группы А с одним из группы Б.&lt;br /&gt;
На время ожидания запускается [[Музыкальное_сопровождение#Alternative|альтернативная мелодия]].&lt;br /&gt;
|- &lt;br /&gt;
|CallerId для А&lt;br /&gt;
|Недоступно, если включена детальная настройка.&lt;br /&gt;
Аргумент, определяющий CallerId, с указанием которого осуществляется вызов абонентов группы А&lt;br /&gt;
|- &lt;br /&gt;
|CallerId для Б&lt;br /&gt;
|Недоступно, если включена детальная настройка.&lt;br /&gt;
Аргумент, определяющий CallerId, с указанием которого осуществляется вызов абонентов группы Б&lt;br /&gt;
|-&lt;br /&gt;
|Запись&lt;br /&gt;
|Недоступно, если включена детальная настройка.&lt;br /&gt;
Параметр, определяющий необходимость записи. По умолчанию выбран вариант «Согласно настройкам», при котором используется стандартная процедура поиска правил записи для звонка. Также доступны варианты «Записывать» и «Не записывать», производящие соответствующие безусловные действия.&lt;br /&gt;
|-&lt;br /&gt;
|Параметры&lt;br /&gt;
|Доступно, если включена детальная настройка.&lt;br /&gt;
Аргумент (по умолчанию выражение), определяющий все параметры осуществления коммутации. При начальной настройке выражение содержит полный перечень возможных тегов, часть из которых может быть удалена безболезненно. Обязательны к указанию только группы абонентов (agroup и bgroup) и режим (mode). Установке/изменению доступны: &lt;br /&gt;
* taskid - идентификатор задачи.&lt;br /&gt;
* taskcode - код задачи.&lt;br /&gt;
* sessionid - идентификатор цепочки коммутаций.&lt;br /&gt;
* projectid - идентификатор проекта.&lt;br /&gt;
* mode - последовательность вызова (0 - А, затем Б; 1 - Б, затем А; 2 - одновременно).&lt;br /&gt;
* svcownertext - владелец для служебных сценариев дозвона.&lt;br /&gt;
* agroup - перечень абонентов группы А. Каждый в отдельном теге.&lt;br /&gt;
* a - отдельный абонент из группы А.&lt;br /&gt;
* bgroup - перечень абонентов группы Б. Каждый в отдельном теге.&lt;br /&gt;
* b - отдельный абонент из группы Б.&lt;br /&gt;
* a_callerid - CallerId используемый при дозвоне до абонентов группы А.&lt;br /&gt;
* a_callername - CallerName используемый при дозвоне до абонентов группы А. По умолчанию пусто.&lt;br /&gt;
* a_music - мелодия ожидания для абонентов группы А. По умолчанию [[Музыкальное_сопровождение#Alternative|альтернативная мелодия]].&lt;br /&gt;
* a_queuepriority - приоритет очереди при вызове внутренних абонентов группы А. По умолчанию [[Менеджер_очередей#DefaultPriorityInt|стандартный приоритет внутренних вызовов]].&lt;br /&gt;
* a_usequeue - разрешение/запрет использования очереди при вызове внутренних абонентов группы А. По умолчанию разрешено.&lt;br /&gt;
* a_timeoutsec - максимально допустимое время ожидания ответа абонента группы А (в соответствии с настройкой [[Менеджер_очередей#QueueLimitIvr|активации ограничения при переключении из IVR вовнутрь]]).&lt;br /&gt;
* b_callerid - аналогично a_callerid&lt;br /&gt;
* b_callername - аналогично a_callername&lt;br /&gt;
* b_music - аналогично a_music&lt;br /&gt;
* b_queuepriority - аналогично a_queuepriority&lt;br /&gt;
* b_usequeue - аналогично a_usequeue&lt;br /&gt;
* b_timeoutsec - аналогично a_timeoutsec&lt;br /&gt;
* recordmode - режим записи (0 - согласно настройкам; 1 - да; 2 - нет)&lt;br /&gt;
|-&lt;br /&gt;
|Переход&lt;br /&gt;
|Компонент, на который передается управление после успешного завершения работы компонента.&lt;br /&gt;
|-&lt;br /&gt;
|Ожидать отчета&lt;br /&gt;
|&lt;br /&gt;
* Да, полный отчет. Компонент ожидает коммутации или неудачи, после чего сохраняет отчет в переменную.&lt;br /&gt;
* Да, только результат. Компонент ожидает коммутации или неудачи, после чего сохраняет результат в переменную.&lt;br /&gt;
* Нет. Компонент осуществляет корректность настройки и запускает вызов абонентов, после чего возвращает управление по успешной ветке. Ошибка возможна лишь в случае некорректного задания настроек или недоступности всех абонентов хотя бы одной из групп.&lt;br /&gt;
|-&lt;br /&gt;
|Отчет в переменную&lt;br /&gt;
|Доступно, если активировано ожидание отчета или результата.&lt;br /&gt;
Переменная, в которую сохраняется результат в зависимости от выбранного типа.&lt;br /&gt;
* только результат (1-коммутация/0-неудача)&lt;br /&gt;
* полный отчет в XML структуре (коммутация/неудача, описание абонента А, описание абонента Б, осуществляется ли запись, в какой каталог, в какой файл, время начала, идентификатор цепочки).&lt;br /&gt;
|-&lt;br /&gt;
|Переход&lt;br /&gt;
|Компонент, на который передается управление после успешного завершения работы компонента.&lt;br /&gt;
|-&lt;br /&gt;
|Переход, ошибка&lt;br /&gt;
|Доступно, если не активировано ожидание отчета или результата.&lt;br /&gt;
Компонент, на который передается управление после неудачи запуска. Ограничивается только начальной проверкой, корректным заданием настроек.&lt;br /&gt;
|-&lt;br /&gt;
|Имя&lt;br /&gt;
|Название компонента для отображения в визуальной среде и выбора в списке.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;CliProcess&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:cli_svcs_exec.png|left]]&lt;br /&gt;
&lt;br /&gt;
===Запуск процесса на клиенте===&lt;br /&gt;
&lt;br /&gt;
Запускает процесс на клиенте. Может запускать исполняемое приложение с обменом данными через консоль, а также открывать указанный документ в сопоставленном ему операционной системой приложении. На рабочем месте пользователя могут быть запущены внешние программы-подсказки, анализаторы, web-сценарии, не требующие связи со сценарием после запуска и пр. При этом служебный сценарий может дожидаться завершения работы запущенного таким образом приложения перед продолжением работы.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''Свойства''':&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|Ключ пользователя&lt;br /&gt;
|Аргумент, определяющий пользователя, на рабочем месте которого будет запущен процесс. В качестве ключа может выступать идентификатор пользователя, его имя или логин.&lt;br /&gt;
|-&lt;br /&gt;
|Файл&lt;br /&gt;
|Строковый аргумент, определяющий имя или путь к файлу, который необходимо запустить.&lt;br /&gt;
|-&lt;br /&gt;
|Путь&lt;br /&gt;
|Относительный/абсолютный. Определяет, какой путь будет подставляться впереди к имени файла. Относительный – от папки запуска приложения Oktell.&lt;br /&gt;
|-&lt;br /&gt;
|Параметры командной строки&lt;br /&gt;
|Строковый аргумент, определяющий параметры запуска для командной строки, если необходимо.&lt;br /&gt;
|-&lt;br /&gt;
|Режим запуска&lt;br /&gt;
|Определяет способ исполнения указанного файла&lt;br /&gt;
* С помощью оболочки. В качестве файла можно указывать документы - их открытие будет осуществляться автоматически в зарегистрированных приложениях, однако становится недоступным использование консоли для ввода/вывода.&lt;br /&gt;
* Скрыть окно. Приложение не отображает свое консольное окно.&lt;br /&gt;
* Не скрывать окно. Приложение ведет себя стандартным образом.&lt;br /&gt;
|-&lt;br /&gt;
|Контроль запуска&lt;br /&gt;
|Да/нет. При выборе «да» производится асинхронный запуск указанного приложения и мгновенный возврат управления по ветке «успех». При выборе «нет» запуск производится в синхронном режиме. Управление в сценарий возвращается после непосредственного выполнения команды и получения кода возврата. В зависимости от успешности запуска возврат происходит по ветке «успех» или «неудача». &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;ВНИМАНИЕ! Некоторые программы могут запускаться достаточно долго, это неизбежно будет сказываться при выборе «да» на задержке выполнения других компонентов служебного сценария.&lt;br /&gt;
|- &lt;br /&gt;
|Ожидание завершения&lt;br /&gt;
|Да/нет. При выборе «да» запуск указанного приложения будет произведен в синхронном режиме вне зависимости от установки свойства «контроль запуска», управление в сценарий будет передано только после того, как запущенный процесс окончит работу и завершится. В этом случае выход происходит по ветке «успех». Если при запуске возникают ошибки, возврат происходит по ветке «неудача». Значение «да» может быть использовано при специфической интеграции компонентов сценария с различными внешними приложениями в случае, когда после выполнения приложений сценарий должен получить доступ к результатам.&lt;br /&gt;
|-&lt;br /&gt;
|Консольный ввод/вывод&lt;br /&gt;
|Доступно только при ожидании завершения процесса, запущенном в обычном режиме (не с помощью оболочки).&lt;br /&gt;
* Нет.&lt;br /&gt;
* Только ввод. Позволяет передать произвольные текстовые данные в консоль приложения сразу после старта.&lt;br /&gt;
* Только вывод. Позволяет считать произвольные текстовые данные из консоли приложения сразу после завершения.&lt;br /&gt;
* Ввод и вывод. Позволяет передать и считать данные.&lt;br /&gt;
|-&lt;br /&gt;
|Консольный ввод&lt;br /&gt;
|Доступно только при ожидании завершения процесса, запущенном в консольном режиме (не с помощью оболочки).&lt;br /&gt;
Строковый аргумент, значение которого передается в консоль сразу после запуска приложения.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;ВНИМАНИЕ! При передаче сложных данных для простоты реализации чтения из консоли рекомендуется компоновать данные общим размером в самом начале.&lt;br /&gt;
|-&lt;br /&gt;
|Консольный вывод в переменную&lt;br /&gt;
|Доступно только при ожидании завершения процесса, запущенном в консольном режиме (не с помощью оболочки).&lt;br /&gt;
Строковая переменная, в которую полностью сохраняется консольный вывод исполненного приложения.&lt;br /&gt;
|-&lt;br /&gt;
|Переход, успех&lt;br /&gt;
|Если приложение успешно стартовало.&lt;br /&gt;
|-&lt;br /&gt;
|Переход, неудача&lt;br /&gt;
|Если файл не найден, отсутствует доступ, или по другой причине не удалось запустить приложение. &lt;br /&gt;
|-&lt;br /&gt;
|Имя&lt;br /&gt;
|Название компонента для отображения в визуальной среде и выбора в списке.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%97%D0%B0%D1%85%D0%B2%D0%B0%D1%82_DTMF-%D1%81%D0%B8%D0%B3%D0%BD%D0%B0%D0%BB%D0%BE%D0%B2_%D0%B2%D0%BE_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F_%D1%80%D0%B0%D0%B7%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B0</id>
		<title>Захват DTMF-сигналов во время разговора</title>
		<link rel="alternate" type="text/html" href="%D0%97%D0%B0%D1%85%D0%B2%D0%B0%D1%82_DTMF-%D1%81%D0%B8%D0%B3%D0%BD%D0%B0%D0%BB%D0%BE%D0%B2_%D0%B2%D0%BE_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F_%D1%80%D0%B0%D0%B7%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B0"/>
				<updated>2023-03-31T12:08:35Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Установка готовых сценариев в систему */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Введение==&lt;br /&gt;
&lt;br /&gt;
'''Задача:''' Определять во время разговора введенные DTMF-символы на внешней и внутренней линии. В зависимости от линии и введенного на ней символа запускать различные процессы на сервере и клиентском приложении сотрудника. Например, при нажатии сотрудником на 1 — открыть в браузере сайт oktell.ru, при нажатии на 2 — привязать звонок к задаче Call-центра. &lt;br /&gt;
&lt;br /&gt;
На самом деле Oktell уже имеет похожие возможности в виде служебных номеров флеша и управления конференцией. Набрав во время разговора эти номера, система выполняет определенные действия. Например, нажав служебный номер флеш — система ставит абонента на удержание. Для управления конференцией существуют даже комбинации, которые добавляют или удаляют пользователя из конференции. К сожалению, на момент написания статьи в интерфейсе системы нельзя добавить свой служебный номер для выполнения особых действий.&lt;br /&gt;
&lt;br /&gt;
Однако, проблема решается с помощью самостоятельного перехвата DTMF-сигналов во время разговора. В системе есть возможность с помощью сценариев получить введенные символы как с внешней, так и с внутренней линии. В процессе настройки сценариев вы сами определяете какие действия должна выполнить система при нажатии того или иного символа (или их комбинации). Таким образом, в Oktell можно реализовать неограниченное количество &amp;quot;служебных комбинаций&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Функционал полезен в случаях, когда операторы часто проделывают одни и те же действия: добавляют текущий контакт в CRM-систему, открывают карточку клиента в браузере. С помощью определенных символов сотрудник может пометить клиента, чтобы система, к примеру, отправила ему SMS после разговора. Введенные символы на внешней стороне применяются для ввода скрытых данных, например, пароля во время разговора. Это может быть использовано для подтверждения операций в банковской сфере, не сообщая оператору личной информации.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Основная идея==&lt;br /&gt;
&lt;br /&gt;
Чтобы перехватывать DTMF-сигналы с любой линии, необходимо в IVR-сценарии после успешного переключения зациклить компонент '''Ввод значения'''. В таком случае на линии параллельно с разговором будет работать IVR сценарий, фиксирующий все введенные символы. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-001.png|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;out&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Дополнительно все введенные DTMF сохраняются в таблице &amp;lt;code&amp;gt;[oktell]..[a_stat_dtmf]&amp;lt;/code&amp;gt;. Для этого необходимо включить соответствующие настройки в разделе Администрирование/Общие настройки/Управление базами данных — ''Сохранять в БД все получаемые по внешним/внутренним линиям DTMF-символы''. Для считывания DTMF потребуется отдельный служебный сценарий, который будет циклично мониторить таблицу на предмет ввода новых символов. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-002.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Главный IVR сценарий==&lt;br /&gt;
&lt;br /&gt;
Поскольку в главный IVR сценарий попадает внешняя линия, установленный &amp;quot;Ввод значения&amp;quot; будет принимать DTMF только на этой внешней линии. В рамках задачи необходимо принимать DTMF и с внутренней линии, следовательно нужно дозвониться до нее и также запустить на ней IVR сценарий. Такая операция реализуется через дозвон и конференцию с моделью поведению &amp;quot;Преобразовать в коммутацию&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-003.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Начальные параметры'''&amp;quot;. Определяет параметры клиента и сохраняет в переменные:&lt;br /&gt;
* сессионной переменной &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;'''phone'''&amp;lt;/span&amp;gt; (строковая) присваивается внутренний номер, на который происходит переключение. В примере, строка &amp;quot;900&amp;quot;.&lt;br /&gt;
* сессионной переменной &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;'''key'''&amp;lt;/span&amp;gt; (строковая) присваивается значение выражения &amp;lt;code&amp;gt;RANDOM(999999)&amp;lt;/code&amp;gt;. Переменная используется в качестве ключа конференции. &lt;br /&gt;
* сессионной переменной &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;'''CallerId'''&amp;lt;/span&amp;gt; (строковая) присваивается значение функции Номер абонента (CallerId). Переменная хранит номер абонента.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-005.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''В конференцию'''&amp;quot;. Отправляет клиента в конференцию с моделью поведения &amp;quot;Преобразовать в коммутацию&amp;quot;. Как только в эту коммутацию присоединится второй участник она преобразуется в обычный разговор. Ключ конференции предварительно генерируется случайным образом. &lt;br /&gt;
*Ключ конференции — переменная '''key'''&lt;br /&gt;
*Создать, если отсутствует - да&lt;br /&gt;
*Расширенная настройка — да&lt;br /&gt;
*Модель поведения - Преобразовать в коммутацию&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''На дозвон'''&amp;quot;. Запускает сценарий дозвона до внутреннего номера с последующим добавлением в конференцию. Все сессионные переменные будут переданы в этот сценарий автоматически. &lt;br /&gt;
*Тип запуска — асинхронный служебный&lt;br /&gt;
*Сценарий - Перехват DTMF (служебный сценарий дозвона) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Перехват DTMF'''&amp;quot;. Запускает сценарий для считывания DTMF-сигналов с данной внешней линии. Параметр запуска '''0''' означает, что сценарий запускается для внешней линии (рассматривается ниже).&lt;br /&gt;
* Тип запуска - вложенный&lt;br /&gt;
* Сценарий - Перехват DTMF (IVR сценарий перехвата DTMF)&lt;br /&gt;
* Параметр запуска - строка &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-004.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Служебный сценарий дозвона== &lt;br /&gt;
&lt;br /&gt;
Сценарий дозванивается до внутреннего пользователя и запускает на его линии IVR сценарий добавления в конференцию. В сценарии не предусмотрен случай, когда внутренний абонент не берет трубку. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-006.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Дозвон'''&amp;quot;. Все используемые сессионные переменные должны строго иметь такие же наименования, как и в главном сценарии.&lt;br /&gt;
* Номер/команда - сессионная переменная &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;'''phone'''&amp;lt;/span&amp;gt; (строковая)&lt;br /&gt;
* Среда - внутренний номерной план&lt;br /&gt;
* Обслуживание - IVR&lt;br /&gt;
* Сценарий IVR - Перехват DTMF (IVR сценарий входа в конференцию)&lt;br /&gt;
* Параметр запуска - сессионная переменная &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;'''key'''&amp;lt;/span&amp;gt; (строковая)&lt;br /&gt;
* CallerId - сессионная переменная &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;'''CallerId'''&amp;lt;/span&amp;gt; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==IVR сценарий входа в конференцию==&lt;br /&gt;
&lt;br /&gt;
Сценарий запускается после ответа внутреннего сотрудника и добавляет его в конференцию, которая сразу же преобразовывается в коммутацию. После этого начинает считывать вводимые DTMF с данной внутренней линии. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват_DTMF-007.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Старт'''&amp;quot;. На вход сценария передается номер конференции, в которую следует добавить внутреннего сотрудника. Параметр запуска сохраняется в переменную '''key'''.&lt;br /&gt;
*Параметр запуска - переменная '''key''' (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''В конференцию'''&amp;quot;. Добавляет сотрудника в конференцию с указанным ключом. &lt;br /&gt;
*Ключ конференции — переменная '''key'''&lt;br /&gt;
*Создать, если отсутствует - да&lt;br /&gt;
*Расширенная настройка — да&lt;br /&gt;
*Модель поведения - Преобразовать в коммутацию&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Перехват DTMF'''&amp;quot;. Запускает сценарий для считывания DTMF-сигналов с текущей внутренней линии. Параметр запуска '''1''' означает, что сценарий запускается для внутренней линии (рассматривается ниже).&lt;br /&gt;
* Тип запуска - вложенный&lt;br /&gt;
* Сценарий - Перехват DTMF (IVR сценарий перехвата DTMF)&lt;br /&gt;
* Параметр запуска - строка &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-008.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==IVR сценарий перехвата DTMF==&lt;br /&gt;
&lt;br /&gt;
Основной сценарий для захвата DTMF и выполнения служебных действий. Главная идея — зациклить компонент &amp;quot;Ввод значения&amp;quot;, анализируя введенные значения. Напомним, что этот сценарий — единый для внешних и внутренних линий, поэтому на старт передавался флаг, поясняющий тип линии: 0 - внешняя линия, 1 - внутренняя. Такое разделение помогает реализовать различный функционал для сотрудников и клиентов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-009.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Старт'''&amp;quot;. На вход сценария передается тип линии. Компонент сохраняет параметр запуска в переменную '''startParam'''.&lt;br /&gt;
*Параметр запуска - переменная '''startParam''' (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Внутренняя линия?'''&amp;quot;. Определяет тип линии и направляет сценарий на соответствующую ветку.&lt;br /&gt;
*Аргумент 1 — переменная '''startParam'''&lt;br /&gt;
*Аргумент 2 — строка '''1'''&lt;br /&gt;
*Тип сравнения — &amp;quot;=&amp;quot;&lt;br /&gt;
*Переход, если правда — на компонент &amp;quot;Ввод с внутренней линии&amp;quot;&lt;br /&gt;
*Переход, если ложь — на компонент &amp;quot;Ввод с внешней линии&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ввод с внутренней линии'''&amp;quot;. Ожидает ввода одного символа с внутренней линии, затем сохраняет введенный символ в переменную '''DTMF'''. Переход к анализу происходит только если символ введен. &lt;br /&gt;
*Буфер для DTMF - переменная '''DTMF''' (строковая)&lt;br /&gt;
*Очистить буфер - Да&lt;br /&gt;
*Макс время, с - 20&lt;br /&gt;
*Количество символов - 1 &lt;br /&gt;
*Переход - на компонент &amp;quot;Ув2&amp;quot;&lt;br /&gt;
*Переход, таймаут - на компонент &amp;quot;-&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-010.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув2'''&amp;quot;. Отладочное уведомление для вывода захваченного символа&lt;br /&gt;
* Текст — выражение &amp;lt;code&amp;gt;ScriptFunc( 'Имя пользователя' )+' набрал символ '+[DTMF]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Способ оповещения — Всплывающее уведомление&lt;br /&gt;
* Ключ получателя — введите внутренний номер вашего пользователя&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Определение символа'''&amp;quot;. Анализирует введенный символ — по нажатию на 1 у сотрудника должна открыться веб-страница в браузере, а по нажатию на 2 звонок должен прикрепиться к задаче.&lt;br /&gt;
* Аргумент - переменная '''DTMF'''&lt;br /&gt;
* Значения - &lt;br /&gt;
: 1 - на компонент &amp;quot;Ув3&amp;quot;&lt;br /&gt;
: 2 - на компонент &amp;quot;Ув4&amp;quot;&lt;br /&gt;
* Переход, прочее — на компонент &amp;quot;-&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-011.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компоненты &amp;quot;'''Ув3 и Ув4'''&amp;quot;. Отладочные уведомления о выбранных действиях.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Действие 1'''&amp;quot;. Запускает сценарий для открытия страницы Oktell.ru в браузере. На вход сценария передается идентификатор оператора, для которого нужно это выполнить. &lt;br /&gt;
* Тип запуска - Асинхронный служебный&lt;br /&gt;
* Сценарий - Перехват DTMF (Служебный сценарий для открытия сайта)&lt;br /&gt;
* Параметр запуска - функция &amp;quot;Guid-идентификатор пользователя&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Действие 2'''&amp;quot;. Запускает сценарий для привязки звонка к задаче. На вход сценария передается идентификатор оператора, для которого нужно это выполнить. &lt;br /&gt;
* Тип запуска - Асинхронный служебный&lt;br /&gt;
* Сценарий - Перехват DTMF (Служебный сценарий для привязки звонка к задаче)&lt;br /&gt;
* Параметр запуска - функция &amp;quot;Guid-идентификатор пользователя&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-012.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''-&amp;gt;'''&amp;quot;. Не имеет функционального предназначения, используется для связки компонентов. &lt;br /&gt;
* Время задержки, мс - 0 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ввод с внешней линии'''&amp;quot;. Аналогичные действия выполняются для внешней линии. Компонент считывает DTMF, введенные на внешней линии. &lt;br /&gt;
*Буфер для DTMF - переменная '''DTMF''' (строковая)&lt;br /&gt;
*Очистить буфер - Да&lt;br /&gt;
*Макс время, с - 20&lt;br /&gt;
*Количество символов - 1 &lt;br /&gt;
*Переход - на компонент &amp;quot;Ув1&amp;quot;&lt;br /&gt;
*Переход, таймаут - на компонент &amp;quot;-&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув1'''&amp;quot;. Отладочное уведомление для вывода захваченного символа. После компонента вы можете аналогично реализовать функционал для внешних линий. &lt;br /&gt;
* Текст — выражение &amp;lt;code&amp;gt;'Линия '+ScriptFunc( 'Номер линии' )+' набрал символ '+[DTMF]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Способ оповещения — Всплывающее уведомление&lt;br /&gt;
* Ключ получателя — введите внутренний номер вашего пользователя&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-013.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Служебный сценарий для открытия сайта==&lt;br /&gt;
&lt;br /&gt;
Сценарий выполняется после нажатия на внутренней линии символа &amp;quot;1&amp;quot;. Открывает страницу &amp;lt;nowiki&amp;gt;https://oktell.ru&amp;lt;/nowiki&amp;gt; в браузере на компьютере сотрудника. Ключ сотрудника передается на вход сценария. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-014.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Старт'''&amp;quot;. На вход сценария передается идентификатор пользователя. Компонент сохраняет параметр запуска в переменную '''GUID пользователя'''.&lt;br /&gt;
*Параметр запуска - переменная '''GUID пользователя''' (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Открыть веб-страницу'''&amp;quot;. Открывает указанную веб-страницу в браузере по умолчанию на компьютере пользователя.&lt;br /&gt;
*Ключ пользователя - переменная '''GUID пользователя''' &lt;br /&gt;
*Файл - строка &amp;quot;''https://oktell.ru''&amp;quot;&lt;br /&gt;
*Путь - Абсолютный&lt;br /&gt;
*Режим запуска - С помощью оболочки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-016.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Служебный сценарий для привязки звонка к задаче==&lt;br /&gt;
&lt;br /&gt;
Сценарий выполняется после нажатия символа &amp;quot;2&amp;quot; на внутренней линии. Прикрепляет текущий звонок к задаче. Напомним, что прикрепление звонка к задаче работает только во время действующего разговора, при наличии данного оператора в режиме Call-центр и активной задаче. Если одно из этих условий не выполнено, то сценарий не сработает. Ключ сотрудника, для которого нужно прикрепить звонок, передается на вход сценария. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-015.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Старт'''&amp;quot;. На вход сценария передается идентификатор пользователя. Компонент сохраняет параметр запуска в переменную '''GUID пользователя'''.&lt;br /&gt;
*Параметр запуска - переменная '''GUID пользователя''' (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Привязать звонок к задаче'''&amp;quot;. Прикрепляет текущий звонок пользователя к указанной задаче. &lt;br /&gt;
*Действие - Установить&lt;br /&gt;
*Тип объекта - Задача&lt;br /&gt;
*Задача - выберите задачу Call-центра&lt;br /&gt;
*Свойство/действие - Привязать к звонку оператора&lt;br /&gt;
*Значение - переменная '''GUID пользователя'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-017.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==IVR сценарий исходящей маршрутизации==&lt;br /&gt;
&lt;br /&gt;
Ранее мы подробно рассмотрели перехват DTMF во время входящего звонка. В данном параграфе рассматривается перехват DTMF во время исходящего звонка. Для реализации функционала потребуется модифицировать сценарий исходящей маршрутизации. &lt;br /&gt;
&lt;br /&gt;
Поскольку этот сценарий запускается на внутренней линии, изначально мы сможем перехватывать только сигналы с внутренних линий. Как говорилось ранее, нам для перехвата DTMF нужно запустить IVR сценарий на требуемой линии. Вы можете воспользоваться указанным выше алгоритмом через создание конференции, однако мы рассмотрим альтернативный способ считывания сигналов непосредственно из БД. Для работы данного сценария необходимо [[Захват_DTMF-сигналов_во_время_разговора#out|установить]] флажок &amp;quot;''Сохранять в БД все получаемые по внешним/внутренним линиям DTMF-символы''&amp;quot; в модуле ''Администрирование/Общие настройки/Управление базами данных''.&lt;br /&gt;
&lt;br /&gt;
В сценарии исходящей маршрутизации после успешного соединения нужно установить запуск служебного сценария для получения DTMF из БД и IVR сценарий для захвата сигналов с данной линии. Также чтобы получать DTMF с нужной внешней линии, необходимо сохранить ее идентификатор в компоненте &amp;quot;'''ВНЕШНИЕ'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-018.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''ВНЕШНИЕ'''&amp;quot;. В компоненте необходимо сохранить идентификатор выбранной линии в сессионную переменную &amp;quot;&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;'''Line'''&amp;lt;/span&amp;gt;&amp;quot; (строковая)&lt;br /&gt;
*Идентификатор выбранной линии - сессионная переменная &amp;quot;&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;'''Line'''&amp;lt;/span&amp;gt;&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Получение DTMF из БД'''&amp;quot;. Запускает сценарий для мониторинга таблицы &amp;lt;code&amp;gt;a_stat_dtmf&amp;lt;/code&amp;gt; &lt;br /&gt;
* Тип запуска - Асинхронный служебный&lt;br /&gt;
* Сценарий - Перехват DTMF (Служебный сценарий для получения DTMF из БД)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Перехват DTMF'''&amp;quot;. Запускает сценарий для считывания DTMF-сигналов с текущей внутренней линии. Параметр запуска '''1''' означает, что сценарий запускается для внутренней линии. Сценарий рассмотрен выше. &lt;br /&gt;
* Тип запуска - вложенный&lt;br /&gt;
* Сценарий - Перехват DTMF (IVR сценарий перехвата DTMF)&lt;br /&gt;
* Параметр запуска - строка &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-019.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Служебный сценарий для получения DTMF из БД==&lt;br /&gt;
Основная идея сценария - циклично осуществлять запросы в таблицу &amp;lt;code&amp;gt;[oktell]..[a_stat_dtmf]&amp;lt;/code&amp;gt; и последовательно считывать все введенные символы с внешней линии. На каждой итерации символы анализируются и производятся заранее настроенные действия. Через сессионную переменную &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;'''Line'''&amp;lt;/span&amp;gt; сценарий получает идентификатор линии, по которой нужно захватывать DTMF.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-020.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Текущее время'''&amp;quot;. Сохраняет текущее время в переменную '''dt'''. Используется в качестве начального параметра для поиска DTMF в таблице. &lt;br /&gt;
* переменной '''dt''' (дата/время) присваивается значение функции &amp;quot;''Текущие дата и время''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''idchain'''&amp;quot;. Определяет текущий идентификатор цепочки коммутаций на внешней линии. Требуется для поиска DTMF в таблице, а также для проверки существования коммутации. &lt;br /&gt;
*Действие - Определить&lt;br /&gt;
*Тип объекта - Линия&lt;br /&gt;
*Ключ линии - сессионная переменная &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;'''Line'''&amp;lt;/span&amp;gt; (строковая)&lt;br /&gt;
*Значение в переменную - переменная '''idchain''' (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув1'''&amp;quot;. Отладочное уведомление для вывода значения переменной '''idchain'''. &lt;br /&gt;
*Отладочный режим - Да&lt;br /&gt;
*Текст - переменная '''idchain'''&lt;br /&gt;
*Ключ получателя - введите ваш внутренний номер&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-021.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Не в коммутации?'''&amp;quot;. Проверяет существование сессии (цепочки коммутаций) на линии. Если текущая цепочка коммутаций равна строке &amp;quot;''00000000-0000-0000-0000-000000000000''&amp;quot; заканчивает служебный сценарий. &lt;br /&gt;
*Аргумент 1 - переменная '''idchain'''&lt;br /&gt;
*Аргумент 2 - строка ''00000000-0000-0000-0000-000000000000''&lt;br /&gt;
*Тип сравнения - &amp;quot;=&amp;quot;&lt;br /&gt;
*Переход, если правда - на компонент &amp;quot;Ув2&amp;quot;.&lt;br /&gt;
*Переход, если ложь - на компонент &amp;quot;получить DTMF&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув2'''&amp;quot;. Уведомляет администратора о завершении сценарии. &lt;br /&gt;
*Текст - строка ''Сценарий получения DTMF завершен''&lt;br /&gt;
*Ключ получателя - введите ваш внутренний номер&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Получить DTMF'''&amp;quot;. Выполняет SQL-запрос в таблицу &amp;lt;code&amp;gt;[oktell]..[a_stat_dtmf]&amp;lt;/code&amp;gt; для получения последнего DTMF по текущей цепочки коммутаций на данной линии. Запрос построен таким образом, что последовательно считывает введенные символы, сохраняя каждый раз временную метку. Таким образом, вне зависимости от скорости ввода символов запрос гарантирует их последовательный перебор. &lt;br /&gt;
&lt;br /&gt;
 select top 1 @dt=dt, @symbol = symbol from a_stat_dtmf &lt;br /&gt;
 where idchain = @idchain&lt;br /&gt;
 and dt &amp;gt; @dt&lt;br /&gt;
 order by dt asc&lt;br /&gt;
где &lt;br /&gt;
*@dt - переменная '''dt''' &lt;br /&gt;
*@idchain - переменная '''idchain''' &lt;br /&gt;
*@symbol - переменная '''symbol''' (строковая) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-022.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''пусто'''&amp;quot;. Проверяет был ли введен символ. &lt;br /&gt;
*Аргумент 1 - переменная '''symbol'''&lt;br /&gt;
*Аргумент 2 - пустая строка&lt;br /&gt;
*Тип сравнения - &amp;quot;=&amp;quot;&lt;br /&gt;
*Переход, если правда - на компонент &amp;quot;1000ms&amp;quot;.&lt;br /&gt;
*Переход, если ложь - на компонент &amp;quot;Ув3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув3'''&amp;quot;. Выводит на экран принятый DTMF-символ. После компонента вы можете реализовать функционал для внешних линий, аналогично вышеописанному сценарию перехвата символов.&lt;br /&gt;
*Отладочный режим - Нет&lt;br /&gt;
*Текст - выражение &amp;lt;code&amp;gt;'Линия '+[NumLine]+' набрала символ '+[symbol]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Ключ получателя - введите ваш внутренний номер.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''1000ms'''&amp;quot;. Пауза перед следующей итерацией. Во избежание загрузки базы данных не рекомендуется ставить интервал менее 500 мс. &lt;br /&gt;
*Время задержки, мс - 1000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-023.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''-&amp;gt;'''&amp;quot;. Не имеет функционального предназначения, используется для связки компонентов. &lt;br /&gt;
* Время задержки, мс - 0 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Обнуляем'''&amp;quot;. Очищает переменную '''symbol''' перед новой итерацией.&lt;br /&gt;
* переменной '''symbol''' присваивается пустая строка.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват DTMF-024.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Установка готовых сценариев в систему==&lt;br /&gt;
* Скачайте и импортируйте сценарии из архива: [[Media:%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82_DTMF.zip|Перехват DTMF.zip]] (''собраны на версии 2.12.0.150423'')&lt;br /&gt;
* Установите сценарий ''Перехват DTMF (Главный IVR сценарий)'' в качестве главного IVR сценария. Присвойте переменной '''phone''' - внутренний номер для переключения.&lt;br /&gt;
* Установите ''Перехват DTMF (IVR сценарий исходящей маршрутизации)'' в качестве IVR сценария исходящей маршрутизации. &lt;br /&gt;
* Реализуйте нужный функционал с помощью служебных сценариев и назначьте их в сценарии ''Перехват DTMF (IVR сценарий перехвата DTMF)''&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%A3%D0%BB%D1%83%D1%87%D1%88%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D1%80%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_Yandex_SpeechKit_Cloud</id>
		<title>Улучшенный алгоритм распознавания с помощью Yandex SpeechKit Cloud</title>
		<link rel="alternate" type="text/html" href="%D0%A3%D0%BB%D1%83%D1%87%D1%88%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D1%80%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_Yandex_SpeechKit_Cloud"/>
				<updated>2023-03-31T12:04:49Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Реализация сценария */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Введение==&lt;br /&gt;
&lt;br /&gt;
В данной статье показывается пример улучшения анализа распознанной речи с помощью сервиса выделения смысла. &lt;br /&gt;
&lt;br /&gt;
На данный момент анализ текста проводится в компоненте &amp;quot;'''Распознавание речи'''&amp;quot; с помощью свойства &amp;quot;Предопределенные значения&amp;quot;. Это может быть неудобным для анализа длинных выражений, так как чтобы получить код группы должно быть полное совпадение распознанного выражения с одним из предопределенных. Например, чтобы соединиться с инженерами техподдержкой, клиент может сказать:&lt;br /&gt;
*''Соедините меня с отделом технической поддержки''&lt;br /&gt;
*''Переключите меня на инженеров''&lt;br /&gt;
*''Мне срочно нужны ваши программисты''&lt;br /&gt;
Очевидно, что одна и та же фраза может содержать существительные в разных падежах, иметь разную длину и предугадать все возможные комбинации почти невозможно. Отметим однако, что встроенные возможности компонента легко решают задачу распознавания одного слова.&lt;br /&gt;
&lt;br /&gt;
Идея улучшения анализа заключается в применении сервиса выделения смысла. Сервис разбивает фразу на отдельные слова (леммы), преобразовывая существительные в именительный падеж, а глаголы в инфинитив. После этого сценарий в цикле просматривает каждую лемму и ищет совпадение с ключевым словом. В каком бы падеже не стояло искомое слово, если оно есть во фразе, алгоритм найдет его. Как только совпадение сработает  происходит переключение на требуемый отдел. &lt;br /&gt;
&lt;br /&gt;
'''Скачать файл:''' [[Media:Yandex_SpeechKit_Cloud_%D1%83%D0%BB%D1%83%D1%87%D1%88%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC.oscr|Yandex_SpeechKit_Cloud_улучшенный_алгоритм.oscr]] (собрано на версии 2.11.2.141230)&lt;br /&gt;
&lt;br /&gt;
==Реализация сценария==&lt;br /&gt;
&lt;br /&gt;
Рассмотрим алгоритм на примере сценария входящей маршрутизации. Позвонив в компанию, система спрашивает абонента с кем он хочет соединиться. Ответ клиента распознается, а дальше анализируется согласно вышеописанному алгоритму.&lt;br /&gt;
&lt;br /&gt;
Сценарий выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Алгоритм распознавания - 001.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''API ключ'''&amp;quot;. Определяет ключ для использования сервиса выделения смысла в web-запросе. &lt;br /&gt;
* переменной '''key''' (строковая) присвойте строку с вашим API-ключом. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Приветствие'''&amp;quot;. Воспроизводит приветствие и задает вопрос абоненту, с кем его соединить. Используется синтез речи Yandex.&lt;br /&gt;
* Режим - Воспроизвести&lt;br /&gt;
* Текст - Здравствуйте. С кем вас соединить&lt;br /&gt;
* Голос - Zahar&lt;br /&gt;
* Эмоция - по умолчанию&lt;br /&gt;
* Кэш - использовать&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''ding'''&amp;quot;. Воспроизводит короткий сигнал для абонента, соответствующий началу записи.&lt;br /&gt;
* Режим - Файл полностью&lt;br /&gt;
* Файл - ding.wav&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Вместо компонентов &amp;quot;Приветствие&amp;quot; и &amp;quot;ding&amp;quot; вы можете использовать свой звуковой файл с записанной информацией. Синтез речи приведен в сценарии для примера.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Алгоритм распознавания - 002.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Распознавание речи'''&amp;quot;. Записывает и распознает речь абонента. После 1 секунды тишины воспроизводит ding.wav и переходит к следующему компоненту.&lt;br /&gt;
* Режим - Записать &lt;br /&gt;
* Символы прерывания - * &lt;br /&gt;
* Прервать при обнаружении тишины - Включить&lt;br /&gt;
* Интервал тишины, с - 1&lt;br /&gt;
* Настройки голосового детектора - по умолчанию&lt;br /&gt;
* Сигнал окончания записи - ding.wav&lt;br /&gt;
* Сохранение файла записи - Не сохранять&lt;br /&gt;
* Тема - queries&lt;br /&gt;
* Текст в переменную - переменная '''parse_bestText''' (строковая) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Запрос на выделение смысла'''&amp;quot;. Отправляет распознанный текст на сервис Yandex и получает размеченную JSON-структуру.&lt;br /&gt;
* URL - выражение &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;'https://vins-markup.voicetech.yandex.net/markup/0.x/?text='+[parse_bestText]+'&amp;amp;layers=Fio,Morph,GeoAddr&amp;amp;key='+[key]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Метод - GET&lt;br /&gt;
* Режим работы - Обрыв по таймауту &lt;br /&gt;
* Таймаут, сек - 30 &lt;br /&gt;
* Ответ в переменную - переменная '''response''' (строковая)  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Если по истечению таймаута сервис Yandex не ответит на запрос произойдет обрыв связи. Вам нужно самостоятельно обработать этот момент.&amp;lt;/span&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув1'''&amp;quot;. Отладочное уведомление с выводом полученной JSON структуры. &lt;br /&gt;
*Отладочный режим - Да&lt;br /&gt;
*Текст - выражение:&lt;br /&gt;
 'Текст '+[parse_bestText]+endline+'Смысл '+[response]&lt;br /&gt;
*Адресат - выберите вашего пользователя&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''id_morph=0'''&amp;quot;. Задает начальное значение для счетчика морфем.&lt;br /&gt;
* переменой id_morph (строковая) присваивается число 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Алгоритм распознавания - 003.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''count_morph'''&amp;quot;. Определяет число морфем в полученной JSON-структуре. &lt;br /&gt;
* Документ - переменная '''response'''&lt;br /&gt;
* Алгоритм - Парсер JSON&lt;br /&gt;
* Поисковый запрос - строка ''&amp;quot;Morph&amp;quot;''&lt;br /&gt;
* Функция - Количество элементов&lt;br /&gt;
* Результат в переменную - переменная '''count_morph''' (строковая) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''morph'''&amp;quot;. Определяет рассмотрены ли все морфемы и заканчивает основной цикл.&lt;br /&gt;
* Аргумент 1 - переменная '''id_morph'''&lt;br /&gt;
* Аргумент 2 - переменная '''count_morph'''&lt;br /&gt;
* Тип сравнения - &amp;gt;= &lt;br /&gt;
* Переход, если правда - компонент &amp;quot;'''Ув3'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - компонент &amp;quot;'''morph'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''count_lemmas'''&amp;quot;. Определяет число лемм для выбранной морфемы. Это связано с тем, что сервис может прислать несколько лемм для одной морфемы, часто такая ситуация встречается с глаголами. Существительные, как показывает практика, имеют одну лемму. Теоретически, цикл по леммам можно убрать и брать самую первую, но это решение мы оставляем за администратором вашей системы.  &lt;br /&gt;
* Документ - переменная '''response'''&lt;br /&gt;
* Алгоритм - Парсер JSON&lt;br /&gt;
* Поисковый запрос - выражение ''&amp;lt;nowiki&amp;gt;'&amp;quot;Morph&amp;quot;/'+[id_morph]+'/&amp;quot;Lemmas&amp;quot;'&amp;lt;/nowiki&amp;gt;''&lt;br /&gt;
* Функция - Количество элементов&lt;br /&gt;
* Результат в переменную - переменная '''count_lemmas''' (строковая) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Алгоритм распознавания - 004.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''id_lemmas=0'''&amp;quot;. Задает начальное значение для счетчика лемм.&lt;br /&gt;
* переменой id_lemmas (строковая) присваивается число 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''lemmas'''&amp;quot;. Проверяет пересмотрены ли все леммы и заканчивает второй цикл. &lt;br /&gt;
* Аргумент 1 - переменная '''id_lemmas'''&lt;br /&gt;
* Аргумент 2 - переменная '''count_lemmas'''&lt;br /&gt;
* Тип сравнения - &amp;gt;= &lt;br /&gt;
* Переход, если правда - компонент &amp;quot;'''-&amp;gt;'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - компонент &amp;quot;'''text'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''text'''&amp;quot;. Определяет и сохраняет лемму в переменную для дальнейшего анализа. &lt;br /&gt;
* Документ - переменная '''response'''&lt;br /&gt;
* Алгоритм - Парсер JSON&lt;br /&gt;
* Поисковый запрос - выражение ''&amp;lt;nowiki&amp;gt;'&amp;quot;Morph&amp;quot;/'+[id_morph]+'/&amp;quot;Lemmas&amp;quot;/'+[id_lemmas]+'/&amp;quot;Text&amp;quot;'&amp;lt;/nowiki&amp;gt;''&lt;br /&gt;
* Функция - Восстановленное содержимое&lt;br /&gt;
* Результат в переменную - переменная '''text''' (строковая) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Алгоритм распознавания - 005.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув2'''&amp;quot;. Отладочное уведомление администратору с выводом текущей леммы. &lt;br /&gt;
*Отладочный режим - Да&lt;br /&gt;
*Текст -  переменная '''text'''&lt;br /&gt;
*Адресат - выберите вашего пользователя&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Выбор варианта'''&amp;quot;. Проверяет является ли слово одним из ключевых. В случае совпадения выходит из цикла и направляет на нужную ветку. &lt;br /&gt;
* Аргумент - переменная '''text'''&lt;br /&gt;
* Значения - соотнесите ключевые слова с компонентами, на которые следует отправить сценарий. Например, по словам &amp;quot;секретарь&amp;quot;, &amp;quot;директор&amp;quot; происходит переход на компонент &amp;quot;Секретарь&amp;quot;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Ключевые слова пишите с маленькой буквы. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''id_lemmas++'''&amp;quot;. Если текущая лемма не является ключевым словом, то переходит к следующей лемме.&lt;br /&gt;
* переменной id_lemmas присваивается значение выражения ''num([id_lemmas])+1''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Секретарь'''&amp;quot;. Отладочное уведомление администратору с выводом выбранного направления. &lt;br /&gt;
*Отладочный режим - Да&lt;br /&gt;
*Текст -  строка '''Секретарь'''&lt;br /&gt;
*Адресат - выберите вашего пользователя&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Сообщение 1'''&amp;quot;. Воспроизводит абоненту, что соединяет его с секретарем. &lt;br /&gt;
* Режим - Воспроизвести&lt;br /&gt;
* Текст - Секретарь. Соединяю.&lt;br /&gt;
* Голос - Zahar&lt;br /&gt;
* Эмоция - по умолчанию&lt;br /&gt;
* Кэш - использовать&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''на секретаря'''&amp;quot;. Переключает на требуемого сотрудника. &lt;br /&gt;
* Назначение - Внутрь&lt;br /&gt;
* Номер - 601&lt;br /&gt;
* Тип вызова - Обычный&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Алгоритм распознавания - 006.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компоненты &amp;quot;'''Техподдержка'''&amp;quot;, &amp;quot;'''Сообщение 2'''&amp;quot;, &amp;quot;'''на техподдержку'''&amp;quot; настраиваются аналогично ветке &amp;quot;'''Секретарь'''&amp;quot; - &amp;quot;'''на секретаря'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''-&amp;gt;'''&amp;quot;. Визуальный элемент, служит для удобного восприятия сценария. &lt;br /&gt;
*Время задержки, мс - 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''id_morph++'''&amp;quot;. После того как текущая морфема проанализирована, переходит к следующей.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув3'''&amp;quot;. Отладочное уведомление администратору о том, что сервис не нашел ключевых слов во фразе. &lt;br /&gt;
*Отладочный режим - Да&lt;br /&gt;
*Текст -  строка ''Не определил''&lt;br /&gt;
*Адресат - выберите вашего пользователя&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Неизвестная фраза'''&amp;quot;. Воспроизводит абоненту сообщение, что не смог разобрать его фразу. &lt;br /&gt;
* Режим - Воспроизвести&lt;br /&gt;
* Текст - Я вас не понял, повторите еще раз пожалуйста&lt;br /&gt;
* Голос - Zahar&lt;br /&gt;
* Эмоция - по умолчанию&lt;br /&gt;
* Кэш - использовать&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Алгоритм распознавания - 007.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''ding2'''&amp;quot;. Воспроизводит короткий сигнал для абонента, соответствующий началу записи.&lt;br /&gt;
* Режим - Файл полностью&lt;br /&gt;
* Файл - ding.wav&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Чтобы не зацикливать распознавание и тратить время клиента, вместо компонентов &amp;quot;Неизвестная фраза&amp;quot; и &amp;quot;ding2&amp;quot; рекомендуется переключить на секретаря. Как вариант, установить счетчик и по истечению двух-трех неудачных попыток распознавания переключать на ответственного оператора.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Скачать файл:''' [[Media:Yandex_SpeechKit_Cloud_%D1%83%D0%BB%D1%83%D1%87%D1%88%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC.oscr|Yandex_SpeechKit_Cloud_улучшенный_алгоритм.oscr]] (собрано на версии 2.11.2.141230)&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%A3%D0%BB%D1%83%D1%87%D1%88%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D1%80%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_Yandex_SpeechKit_Cloud</id>
		<title>Улучшенный алгоритм распознавания с помощью Yandex SpeechKit Cloud</title>
		<link rel="alternate" type="text/html" href="%D0%A3%D0%BB%D1%83%D1%87%D1%88%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D1%80%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_Yandex_SpeechKit_Cloud"/>
				<updated>2023-03-31T12:04:06Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Введение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Введение==&lt;br /&gt;
&lt;br /&gt;
В данной статье показывается пример улучшения анализа распознанной речи с помощью сервиса выделения смысла. &lt;br /&gt;
&lt;br /&gt;
На данный момент анализ текста проводится в компоненте &amp;quot;'''Распознавание речи'''&amp;quot; с помощью свойства &amp;quot;Предопределенные значения&amp;quot;. Это может быть неудобным для анализа длинных выражений, так как чтобы получить код группы должно быть полное совпадение распознанного выражения с одним из предопределенных. Например, чтобы соединиться с инженерами техподдержкой, клиент может сказать:&lt;br /&gt;
*''Соедините меня с отделом технической поддержки''&lt;br /&gt;
*''Переключите меня на инженеров''&lt;br /&gt;
*''Мне срочно нужны ваши программисты''&lt;br /&gt;
Очевидно, что одна и та же фраза может содержать существительные в разных падежах, иметь разную длину и предугадать все возможные комбинации почти невозможно. Отметим однако, что встроенные возможности компонента легко решают задачу распознавания одного слова.&lt;br /&gt;
&lt;br /&gt;
Идея улучшения анализа заключается в применении сервиса выделения смысла. Сервис разбивает фразу на отдельные слова (леммы), преобразовывая существительные в именительный падеж, а глаголы в инфинитив. После этого сценарий в цикле просматривает каждую лемму и ищет совпадение с ключевым словом. В каком бы падеже не стояло искомое слово, если оно есть во фразе, алгоритм найдет его. Как только совпадение сработает  происходит переключение на требуемый отдел. &lt;br /&gt;
&lt;br /&gt;
'''Скачать файл:''' [[Media:Yandex_SpeechKit_Cloud_%D1%83%D0%BB%D1%83%D1%87%D1%88%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC.oscr|Yandex_SpeechKit_Cloud_улучшенный_алгоритм.oscr]] (собрано на версии 2.11.2.141230)&lt;br /&gt;
&lt;br /&gt;
==Реализация сценария==&lt;br /&gt;
&lt;br /&gt;
Рассмотрим алгоритм на примере сценария входящей маршрутизации. Позвонив в компанию, система спрашивает абонента с кем он хочет соединиться. Ответ клиента распознается, а дальше анализируется согласно вышеописанному алгоритму.&lt;br /&gt;
&lt;br /&gt;
Сценарий выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Алгоритм распознавания - 001.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''API ключ'''&amp;quot;. Определяет ключ для использования сервиса выделения смысла в web-запросе. &lt;br /&gt;
* переменной '''key''' (строковая) присвойте строку с вашим API-ключом. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Приветствие'''&amp;quot;. Воспроизводит приветствие и задает вопрос абоненту, с кем его соединить. Используется синтез речи Yandex.&lt;br /&gt;
* Режим - Воспроизвести&lt;br /&gt;
* Текст - Здравствуйте. С кем вас соединить&lt;br /&gt;
* Голос - Zahar&lt;br /&gt;
* Эмоция - по умолчанию&lt;br /&gt;
* Кэш - использовать&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''ding'''&amp;quot;. Воспроизводит короткий сигнал для абонента, соответствующий началу записи.&lt;br /&gt;
* Режим - Файл полностью&lt;br /&gt;
* Файл - ding.wav&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Вместо компонентов &amp;quot;Приветствие&amp;quot; и &amp;quot;ding&amp;quot; вы можете использовать свой звуковой файл с записанной информацией. Синтез речи приведен в сценарии для примера.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Алгоритм распознавания - 002.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Распознавание речи'''&amp;quot;. Записывает и распознает речь абонента. После 1 секунды тишины воспроизводит ding.wav и переходит к следующему компоненту.&lt;br /&gt;
* Режим - Записать &lt;br /&gt;
* Символы прерывания - * &lt;br /&gt;
* Прервать при обнаружении тишины - Включить&lt;br /&gt;
* Интервал тишины, с - 1&lt;br /&gt;
* Настройки голосового детектора - по умолчанию&lt;br /&gt;
* Сигнал окончания записи - ding.wav&lt;br /&gt;
* Сохранение файла записи - Не сохранять&lt;br /&gt;
* Тема - queries&lt;br /&gt;
* Текст в переменную - переменная '''parse_bestText''' (строковая) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Запрос на выделение смысла'''&amp;quot;. Отправляет распознанный текст на сервис Yandex и получает размеченную JSON-структуру.&lt;br /&gt;
* URL - выражение &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;'https://vins-markup.voicetech.yandex.net/markup/0.x/?text='+[parse_bestText]+'&amp;amp;layers=Fio,Morph,GeoAddr&amp;amp;key='+[key]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Метод - GET&lt;br /&gt;
* Режим работы - Обрыв по таймауту &lt;br /&gt;
* Таймаут, сек - 30 &lt;br /&gt;
* Ответ в переменную - переменная '''response''' (строковая)  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Если по истечению таймаута сервис Yandex не ответит на запрос произойдет обрыв связи. Вам нужно самостоятельно обработать этот момент.&amp;lt;/span&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув1'''&amp;quot;. Отладочное уведомление с выводом полученной JSON структуры. &lt;br /&gt;
*Отладочный режим - Да&lt;br /&gt;
*Текст - выражение:&lt;br /&gt;
 'Текст '+[parse_bestText]+endline+'Смысл '+[response]&lt;br /&gt;
*Адресат - выберите вашего пользователя&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''id_morph=0'''&amp;quot;. Задает начальное значение для счетчика морфем.&lt;br /&gt;
* переменой id_morph (строковая) присваивается число 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Алгоритм распознавания - 003.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''count_morph'''&amp;quot;. Определяет число морфем в полученной JSON-структуре. &lt;br /&gt;
* Документ - переменная '''response'''&lt;br /&gt;
* Алгоритм - Парсер JSON&lt;br /&gt;
* Поисковый запрос - строка ''&amp;quot;Morph&amp;quot;''&lt;br /&gt;
* Функция - Количество элементов&lt;br /&gt;
* Результат в переменную - переменная '''count_morph''' (строковая) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''morph'''&amp;quot;. Определяет рассмотрены ли все морфемы и заканчивает основной цикл.&lt;br /&gt;
* Аргумент 1 - переменная '''id_morph'''&lt;br /&gt;
* Аргумент 2 - переменная '''count_morph'''&lt;br /&gt;
* Тип сравнения - &amp;gt;= &lt;br /&gt;
* Переход, если правда - компонент &amp;quot;'''Ув3'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - компонент &amp;quot;'''morph'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''count_lemmas'''&amp;quot;. Определяет число лемм для выбранной морфемы. Это связано с тем, что сервис может прислать несколько лемм для одной морфемы, часто такая ситуация встречается с глаголами. Существительные, как показывает практика, имеют одну лемму. Теоретически, цикл по леммам можно убрать и брать самую первую, но это решение мы оставляем за администратором вашей системы.  &lt;br /&gt;
* Документ - переменная '''response'''&lt;br /&gt;
* Алгоритм - Парсер JSON&lt;br /&gt;
* Поисковый запрос - выражение ''&amp;lt;nowiki&amp;gt;'&amp;quot;Morph&amp;quot;/'+[id_morph]+'/&amp;quot;Lemmas&amp;quot;'&amp;lt;/nowiki&amp;gt;''&lt;br /&gt;
* Функция - Количество элементов&lt;br /&gt;
* Результат в переменную - переменная '''count_lemmas''' (строковая) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Алгоритм распознавания - 004.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''id_lemmas=0'''&amp;quot;. Задает начальное значение для счетчика лемм.&lt;br /&gt;
* переменой id_lemmas (строковая) присваивается число 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''lemmas'''&amp;quot;. Проверяет пересмотрены ли все леммы и заканчивает второй цикл. &lt;br /&gt;
* Аргумент 1 - переменная '''id_lemmas'''&lt;br /&gt;
* Аргумент 2 - переменная '''count_lemmas'''&lt;br /&gt;
* Тип сравнения - &amp;gt;= &lt;br /&gt;
* Переход, если правда - компонент &amp;quot;'''-&amp;gt;'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - компонент &amp;quot;'''text'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''text'''&amp;quot;. Определяет и сохраняет лемму в переменную для дальнейшего анализа. &lt;br /&gt;
* Документ - переменная '''response'''&lt;br /&gt;
* Алгоритм - Парсер JSON&lt;br /&gt;
* Поисковый запрос - выражение ''&amp;lt;nowiki&amp;gt;'&amp;quot;Morph&amp;quot;/'+[id_morph]+'/&amp;quot;Lemmas&amp;quot;/'+[id_lemmas]+'/&amp;quot;Text&amp;quot;'&amp;lt;/nowiki&amp;gt;''&lt;br /&gt;
* Функция - Восстановленное содержимое&lt;br /&gt;
* Результат в переменную - переменная '''text''' (строковая) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Алгоритм распознавания - 005.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув2'''&amp;quot;. Отладочное уведомление администратору с выводом текущей леммы. &lt;br /&gt;
*Отладочный режим - Да&lt;br /&gt;
*Текст -  переменная '''text'''&lt;br /&gt;
*Адресат - выберите вашего пользователя&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Выбор варианта'''&amp;quot;. Проверяет является ли слово одним из ключевых. В случае совпадения выходит из цикла и направляет на нужную ветку. &lt;br /&gt;
* Аргумент - переменная '''text'''&lt;br /&gt;
* Значения - соотнесите ключевые слова с компонентами, на которые следует отправить сценарий. Например, по словам &amp;quot;секретарь&amp;quot;, &amp;quot;директор&amp;quot; происходит переход на компонент &amp;quot;Секретарь&amp;quot;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Ключевые слова пишите с маленькой буквы. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''id_lemmas++'''&amp;quot;. Если текущая лемма не является ключевым словом, то переходит к следующей лемме.&lt;br /&gt;
* переменной id_lemmas присваивается значение выражения ''num([id_lemmas])+1''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Секретарь'''&amp;quot;. Отладочное уведомление администратору с выводом выбранного направления. &lt;br /&gt;
*Отладочный режим - Да&lt;br /&gt;
*Текст -  строка '''Секретарь'''&lt;br /&gt;
*Адресат - выберите вашего пользователя&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Сообщение 1'''&amp;quot;. Воспроизводит абоненту, что соединяет его с секретарем. &lt;br /&gt;
* Режим - Воспроизвести&lt;br /&gt;
* Текст - Секретарь. Соединяю.&lt;br /&gt;
* Голос - Zahar&lt;br /&gt;
* Эмоция - по умолчанию&lt;br /&gt;
* Кэш - использовать&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''на секретаря'''&amp;quot;. Переключает на требуемого сотрудника. &lt;br /&gt;
* Назначение - Внутрь&lt;br /&gt;
* Номер - 601&lt;br /&gt;
* Тип вызова - Обычный&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Алгоритм распознавания - 006.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компоненты &amp;quot;'''Техподдержка'''&amp;quot;, &amp;quot;'''Сообщение 2'''&amp;quot;, &amp;quot;'''на техподдержку'''&amp;quot; настраиваются аналогично ветке &amp;quot;'''Секретарь'''&amp;quot; - &amp;quot;'''на секретаря'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''-&amp;gt;'''&amp;quot;. Визуальный элемент, служит для удобного восприятия сценария. &lt;br /&gt;
*Время задержки, мс - 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''id_morph++'''&amp;quot;. После того как текущая морфема проанализирована, переходит к следующей.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув3'''&amp;quot;. Отладочное уведомление администратору о том, что сервис не нашел ключевых слов во фразе. &lt;br /&gt;
*Отладочный режим - Да&lt;br /&gt;
*Текст -  строка ''Не определил''&lt;br /&gt;
*Адресат - выберите вашего пользователя&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Неизвестная фраза'''&amp;quot;. Воспроизводит абоненту сообщение, что не смог разобрать его фразу. &lt;br /&gt;
* Режим - Воспроизвести&lt;br /&gt;
* Текст - Я вас не понял, повторите еще раз пожалуйста&lt;br /&gt;
* Голос - Zahar&lt;br /&gt;
* Эмоция - по умолчанию&lt;br /&gt;
* Кэш - использовать&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Алгоритм распознавания - 007.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''ding2'''&amp;quot;. Воспроизводит короткий сигнал для абонента, соответствующий началу записи.&lt;br /&gt;
* Режим - Файл полностью&lt;br /&gt;
* Файл - ding.wav&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Чтобы не зацикливать распознавание и тратить время клиента, вместо компонентов &amp;quot;Неизвестная фраза&amp;quot; и &amp;quot;ding2&amp;quot; рекомендуется переключить на секретаря. Как вариант, установить счетчик и по истечению двух-трех неудачных попыток распознавания переключать на ответственного оператора.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Скачать файл:''' [http://wiki.oktell.ru/images/2/2f/Yandex_SpeechKit_Cloud_%D1%83%D0%BB%D1%83%D1%87%D1%88%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC.oscr Yandex_SpeechKit_Cloud_улучшенный_алгоритм.oscr] (собрано на версии 2.11.2.141230)&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%A1%D0%B8%D0%BD%D1%82%D0%B5%D0%B7_%D1%80%D0%B5%D1%87%D0%B8_%D0%BD%D0%B0_%D0%B1%D0%B0%D0%B7%D0%B5_Yandex_SpeechKit_Cloud</id>
		<title>Синтез речи на базе Yandex SpeechKit Cloud</title>
		<link rel="alternate" type="text/html" href="%D0%A1%D0%B8%D0%BD%D1%82%D0%B5%D0%B7_%D1%80%D0%B5%D1%87%D0%B8_%D0%BD%D0%B0_%D0%B1%D0%B0%D0%B7%D0%B5_Yandex_SpeechKit_Cloud"/>
				<updated>2023-03-31T11:56:01Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Использование компонента */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]    &amp;lt;span style=&amp;quot;color:darkviolet&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;[Oktell 2.7+]&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Введение==&lt;br /&gt;
&lt;br /&gt;
[https://cloud.yandex.ru/services/speechkit '''Yandex SpeechKit '''] – сервис распознавания и синтеза речи платформы Яндекс.Облако, открывающий разработчикам доступ к речевым технологиям Яндекса. В этой статье мы поговорим про синтез речи. &lt;br /&gt;
&lt;br /&gt;
Технология синтеза речи позволяет переводить текст в речь (звуковой файл). Задача актуальна для озвучивания динамически обновляемой информации или быстро меняющихся данных, таких как остаток товаров на складе, репертуар кинотеатров и так далее. Технология синтеза речи Яндекса построена на базе скрытых марковских моделей (HMM). За счет применения статистического подхода в акустическом моделировании удается достичь естественных плавных интонаций. Технология позволяет достаточно быстро создавать новые голоса и синтезировать различные эмоции.&lt;br /&gt;
&lt;br /&gt;
Синтез речи Яндекса позволяет выбрать:&lt;br /&gt;
*мужской или женский голос для озвучивания;&lt;br /&gt;
*эмоции: добрый, злой, нейтральный голос.&lt;br /&gt;
&lt;br /&gt;
Документация по API распознавания и синтеза речи Yandex SpeechKit доступна на сайте https://cloud.yandex.ru/docs/speechkit/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Использование компонента==&lt;br /&gt;
&lt;br /&gt;
Начиная с версии Oktell 2.12, в служебных и IVR сценариях появился компонент &amp;quot;Синтез речи&amp;quot;. Компонент озвучивает заданную фразу (синтезирует речь) с помощью сервиса Yandex SpeechKit. Позволяет сразу воспроизвести файл в линию, либо сгенерировать файл для последующего использования. В компоненте можно включить кэш, тем самым сохраняя все сгенерированные файлы в папку \Oktell\Server\LocalStorage\SynthesisCache. Так как каждый запрос к сервису Яндекс платный, то включенный кэш позволяет сэкономить ваши средства.&lt;br /&gt;
&lt;br /&gt;
Техническая документация по компоненту: [[Компоненты_сценариев_IVR#.D0.A1.D0.B8.D0.BD.D1.82.D0.B5.D0.B7_.D1.80.D0.B5.D1.87.D0.B8|Синтез речи]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для использования системы синтеза речи Yandex SpeechKit выполните следующие действия:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Получить авторизационные данные на использование сервиса Yandex SpeechKit.&lt;br /&gt;
* Выполните шаги 1-5 [https://cloud.yandex.ru/docs/speechkit/concepts/auth инструкции] по авторизации в API для получения идентификатора каталога&lt;br /&gt;
* [https://passport.yandex.ru/auth Войдите] в ваш аккаунт на Яндексе или Яндекс.Коннекте&lt;br /&gt;
* Получите OAuth-токен в сервисе Яндекс.OAuth. Для этого перейдите по [https://oauth.yandex.ru/authorize?response_type=token&amp;amp;client_id=1a6990aa636648e9b2ef855fa7bec2fb ссылке], нажмите '''Разрешить''' и скопируйте полученный OAuth-токен.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' Перейдите в '''Администрирование''' / '''Общие настройки''' / '''Распознавание речи Yandex SpeechKit Cloud'''. Введите полученные значения '''OAuth-токен''' и '''Идентификатор каталога''' в соответствующие поля&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Yandex ASR Cloud 001.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Нажмите &amp;quot;'''Сохранить'''&amp;quot;. Теперь вы можете использовать синтез речи в сценариях. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 3'''. Рассмотрим пример использования синтеза речи в IVR сценарии. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Синтез речи 001.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Синтез речи'''&amp;quot;. Озвучивает приветствие абоненту и сохраняет выбор абонента в переменную. &lt;br /&gt;
*Режим — Воспроизвести. В этом режиме компонент сразу воспроизводит сгенерированный файл в текущую линию. &lt;br /&gt;
*Текст — строка &amp;quot;''Здравствуйте! Вас приветствует компания Телефонные Системы! Для соединения с менеджерами нажмите 1. Для соединения с сотрудниками технической поддержки нажмите 2.''&amp;quot;. Введенный текст будет передан на сервера Yandex для озвучивания. &lt;br /&gt;
*Голос — Zahar. Настройка отвечает за синтезируемый голос: Zahar - мужской голос, Jane -женский. Возможно указание другого значения, если оно поддерживается сервисом Yandex SpeechKit.&lt;br /&gt;
*Эмоция — По умолчанию. Настройка отвечает за используемую окраску голоса. Возможные варианты: good, neutral, evil, mixed. &lt;br /&gt;
*Кэш — Использовать. Если использовать кэш, то система попытается найти файл с озвученным текстом среди сгенерированных ранее (находятся в папке \Oktell\Server\LocalStorage\SynthesisCache). Рекомендуется всегда включать в целях экономии средств. &lt;br /&gt;
*Таймаут ожидания ответа, с — 5. Максимальное время ожидания ответа от серверов Яндекс. &lt;br /&gt;
*Символы прерывания — строка &amp;quot;''1, 2''&amp;quot;. Если абонент нажмет на указанные символы прерывания, компонент сохранит их в буфер и перейдет к следующему блоку. &lt;br /&gt;
*Буфер для DTMF — переменная '''ввод''' (строковая). Переменная, в которую сохранится введенный символ прерывания.&lt;br /&gt;
*Очистить буфер — Да. Указывает на то, что буфер предварительно будет очищен. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Меню'''&amp;quot;. Маршрутизирует абонента на выбранную группу операторов. &lt;br /&gt;
*Аргумент — переменная '''Ввод'''&lt;br /&gt;
*Значения —&lt;br /&gt;
: 1 — на компонент &amp;quot;Переключение 1&amp;quot;&lt;br /&gt;
: 2, прочее - на компонент &amp;quot;Переключение 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Настройка дальнейшей маршрутизации не рассматривается.&lt;br /&gt;
&lt;br /&gt;
Чтобы использовать синтез речи для преднабора необходимо вначале сгенерировать файл с помощью компонента &amp;quot;Синтез речи&amp;quot; и сохранить путь к этому файлу в переменную (в соответствующем свойстве). Далее указать этот файл в компоненте &amp;quot;Воспроизведение с преднабором&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%A1%D0%B8%D0%BD%D1%82%D0%B5%D0%B7_%D1%80%D0%B5%D1%87%D0%B8_%D0%BD%D0%B0_%D0%B1%D0%B0%D0%B7%D0%B5_Yandex_SpeechKit_Cloud</id>
		<title>Синтез речи на базе Yandex SpeechKit Cloud</title>
		<link rel="alternate" type="text/html" href="%D0%A1%D0%B8%D0%BD%D1%82%D0%B5%D0%B7_%D1%80%D0%B5%D1%87%D0%B8_%D0%BD%D0%B0_%D0%B1%D0%B0%D0%B7%D0%B5_Yandex_SpeechKit_Cloud"/>
				<updated>2023-03-31T11:55:34Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Использование компонента */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]    &amp;lt;span style=&amp;quot;color:darkviolet&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;[Oktell 2.7+]&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Введение==&lt;br /&gt;
&lt;br /&gt;
[https://cloud.yandex.ru/services/speechkit '''Yandex SpeechKit '''] – сервис распознавания и синтеза речи платформы Яндекс.Облако, открывающий разработчикам доступ к речевым технологиям Яндекса. В этой статье мы поговорим про синтез речи. &lt;br /&gt;
&lt;br /&gt;
Технология синтеза речи позволяет переводить текст в речь (звуковой файл). Задача актуальна для озвучивания динамически обновляемой информации или быстро меняющихся данных, таких как остаток товаров на складе, репертуар кинотеатров и так далее. Технология синтеза речи Яндекса построена на базе скрытых марковских моделей (HMM). За счет применения статистического подхода в акустическом моделировании удается достичь естественных плавных интонаций. Технология позволяет достаточно быстро создавать новые голоса и синтезировать различные эмоции.&lt;br /&gt;
&lt;br /&gt;
Синтез речи Яндекса позволяет выбрать:&lt;br /&gt;
*мужской или женский голос для озвучивания;&lt;br /&gt;
*эмоции: добрый, злой, нейтральный голос.&lt;br /&gt;
&lt;br /&gt;
Документация по API распознавания и синтеза речи Yandex SpeechKit доступна на сайте https://cloud.yandex.ru/docs/speechkit/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Использование компонента==&lt;br /&gt;
&lt;br /&gt;
Начиная с версии Oktell 2.12, в служебных и IVR сценариях появился компонент &amp;quot;Синтез речи&amp;quot;. Компонент озвучивает заданную фразу (синтезирует речь) с помощью сервиса Yandex SpeechKit. Позволяет сразу воспроизвести файл в линию, либо сгенерировать файл для последующего использования. В компоненте можно включить кэш, тем самым сохраняя все сгенерированные файлы в папку \Oktell\Server\LocalStorage\SynthesisCache. Так как каждый запрос к сервису Яндекс платный, то включенный кэш позволяет сэкономить ваши средства.&lt;br /&gt;
&lt;br /&gt;
Техническая документация по компоненту: [[Компоненты_сценариев_IVR#.D0.A1.D0.B8.D0.BD.D1.82.D0.B5.D0.B7_.D1.80.D0.B5.D1.87.D0.B8|Синтез_речи]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для использования системы синтеза речи Yandex SpeechKit выполните следующие действия:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Получить авторизационные данные на использование сервиса Yandex SpeechKit.&lt;br /&gt;
* Выполните шаги 1-5 [https://cloud.yandex.ru/docs/speechkit/concepts/auth инструкции] по авторизации в API для получения идентификатора каталога&lt;br /&gt;
* [https://passport.yandex.ru/auth Войдите] в ваш аккаунт на Яндексе или Яндекс.Коннекте&lt;br /&gt;
* Получите OAuth-токен в сервисе Яндекс.OAuth. Для этого перейдите по [https://oauth.yandex.ru/authorize?response_type=token&amp;amp;client_id=1a6990aa636648e9b2ef855fa7bec2fb ссылке], нажмите '''Разрешить''' и скопируйте полученный OAuth-токен.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' Перейдите в '''Администрирование''' / '''Общие настройки''' / '''Распознавание речи Yandex SpeechKit Cloud'''. Введите полученные значения '''OAuth-токен''' и '''Идентификатор каталога''' в соответствующие поля&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Yandex ASR Cloud 001.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Нажмите &amp;quot;'''Сохранить'''&amp;quot;. Теперь вы можете использовать синтез речи в сценариях. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 3'''. Рассмотрим пример использования синтеза речи в IVR сценарии. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Синтез речи 001.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Синтез речи'''&amp;quot;. Озвучивает приветствие абоненту и сохраняет выбор абонента в переменную. &lt;br /&gt;
*Режим — Воспроизвести. В этом режиме компонент сразу воспроизводит сгенерированный файл в текущую линию. &lt;br /&gt;
*Текст — строка &amp;quot;''Здравствуйте! Вас приветствует компания Телефонные Системы! Для соединения с менеджерами нажмите 1. Для соединения с сотрудниками технической поддержки нажмите 2.''&amp;quot;. Введенный текст будет передан на сервера Yandex для озвучивания. &lt;br /&gt;
*Голос — Zahar. Настройка отвечает за синтезируемый голос: Zahar - мужской голос, Jane -женский. Возможно указание другого значения, если оно поддерживается сервисом Yandex SpeechKit.&lt;br /&gt;
*Эмоция — По умолчанию. Настройка отвечает за используемую окраску голоса. Возможные варианты: good, neutral, evil, mixed. &lt;br /&gt;
*Кэш — Использовать. Если использовать кэш, то система попытается найти файл с озвученным текстом среди сгенерированных ранее (находятся в папке \Oktell\Server\LocalStorage\SynthesisCache). Рекомендуется всегда включать в целях экономии средств. &lt;br /&gt;
*Таймаут ожидания ответа, с — 5. Максимальное время ожидания ответа от серверов Яндекс. &lt;br /&gt;
*Символы прерывания — строка &amp;quot;''1, 2''&amp;quot;. Если абонент нажмет на указанные символы прерывания, компонент сохранит их в буфер и перейдет к следующему блоку. &lt;br /&gt;
*Буфер для DTMF — переменная '''ввод''' (строковая). Переменная, в которую сохранится введенный символ прерывания.&lt;br /&gt;
*Очистить буфер — Да. Указывает на то, что буфер предварительно будет очищен. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Меню'''&amp;quot;. Маршрутизирует абонента на выбранную группу операторов. &lt;br /&gt;
*Аргумент — переменная '''Ввод'''&lt;br /&gt;
*Значения —&lt;br /&gt;
: 1 — на компонент &amp;quot;Переключение 1&amp;quot;&lt;br /&gt;
: 2, прочее - на компонент &amp;quot;Переключение 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Настройка дальнейшей маршрутизации не рассматривается.&lt;br /&gt;
&lt;br /&gt;
Чтобы использовать синтез речи для преднабора необходимо вначале сгенерировать файл с помощью компонента &amp;quot;Синтез речи&amp;quot; и сохранить путь к этому файлу в переменную (в соответствующем свойстве). Далее указать этот файл в компоненте &amp;quot;Воспроизведение с преднабором&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%A1%D0%B8%D0%BD%D1%82%D0%B5%D0%B7_%D1%80%D0%B5%D1%87%D0%B8_%D0%BD%D0%B0_%D0%B1%D0%B0%D0%B7%D0%B5_Yandex_SpeechKit_Cloud</id>
		<title>Синтез речи на базе Yandex SpeechKit Cloud</title>
		<link rel="alternate" type="text/html" href="%D0%A1%D0%B8%D0%BD%D1%82%D0%B5%D0%B7_%D1%80%D0%B5%D1%87%D0%B8_%D0%BD%D0%B0_%D0%B1%D0%B0%D0%B7%D0%B5_Yandex_SpeechKit_Cloud"/>
				<updated>2023-03-31T11:52:05Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Использование компонента */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]    &amp;lt;span style=&amp;quot;color:darkviolet&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;[Oktell 2.7+]&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Введение==&lt;br /&gt;
&lt;br /&gt;
[https://cloud.yandex.ru/services/speechkit '''Yandex SpeechKit '''] – сервис распознавания и синтеза речи платформы Яндекс.Облако, открывающий разработчикам доступ к речевым технологиям Яндекса. В этой статье мы поговорим про синтез речи. &lt;br /&gt;
&lt;br /&gt;
Технология синтеза речи позволяет переводить текст в речь (звуковой файл). Задача актуальна для озвучивания динамически обновляемой информации или быстро меняющихся данных, таких как остаток товаров на складе, репертуар кинотеатров и так далее. Технология синтеза речи Яндекса построена на базе скрытых марковских моделей (HMM). За счет применения статистического подхода в акустическом моделировании удается достичь естественных плавных интонаций. Технология позволяет достаточно быстро создавать новые голоса и синтезировать различные эмоции.&lt;br /&gt;
&lt;br /&gt;
Синтез речи Яндекса позволяет выбрать:&lt;br /&gt;
*мужской или женский голос для озвучивания;&lt;br /&gt;
*эмоции: добрый, злой, нейтральный голос.&lt;br /&gt;
&lt;br /&gt;
Документация по API распознавания и синтеза речи Yandex SpeechKit доступна на сайте https://cloud.yandex.ru/docs/speechkit/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Использование компонента==&lt;br /&gt;
&lt;br /&gt;
Начиная с версии Oktell 2.12, в служебных и IVR сценариях появился компонент &amp;quot;Синтез речи&amp;quot;. Компонент озвучивает заданную фразу (синтезирует речь) с помощью сервиса Yandex SpeechKit. Позволяет сразу воспроизвести файл в линию, либо сгенерировать файл для последующего использования. В компоненте можно включить кэш, тем самым сохраняя все сгенерированные файлы в папку \Oktell\Server\LocalStorage\SynthesisCache. Так как каждый запрос к сервису Яндекс платный, то включенный кэш позволяет сэкономить ваши средства.&lt;br /&gt;
&lt;br /&gt;
Техническая документация по компоненту: [Компоненты_сценариев_IVR#.D0.A1.D0.B8.D0.BD.D1.82.D0.B5.D0.B7_.D1.80.D0.B5.D1.87.D0.B8 Синтез_речи]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для использования системы синтеза речи Yandex SpeechKit выполните следующие действия:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Получить авторизационные данные на использование сервиса Yandex SpeechKit.&lt;br /&gt;
* Выполните шаги 1-5 [https://cloud.yandex.ru/docs/speechkit/concepts/auth инструкции] по авторизации в API для получения идентификатора каталога&lt;br /&gt;
* [https://passport.yandex.ru/auth Войдите] в ваш аккаунт на Яндексе или Яндекс.Коннекте&lt;br /&gt;
* Получите OAuth-токен в сервисе Яндекс.OAuth. Для этого перейдите по [https://oauth.yandex.ru/authorize?response_type=token&amp;amp;client_id=1a6990aa636648e9b2ef855fa7bec2fb ссылке], нажмите '''Разрешить''' и скопируйте полученный OAuth-токен.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' Перейдите в '''Администрирование''' / '''Общие настройки''' / '''Распознавание речи Yandex SpeechKit Cloud'''. Введите полученные значения '''OAuth-токен''' и '''Идентификатор каталога''' в соответствующие поля&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Yandex ASR Cloud 001.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Нажмите &amp;quot;'''Сохранить'''&amp;quot;. Теперь вы можете использовать синтез речи в сценариях. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 3'''. Рассмотрим пример использования синтеза речи в IVR сценарии. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Синтез речи 001.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Синтез речи'''&amp;quot;. Озвучивает приветствие абоненту и сохраняет выбор абонента в переменную. &lt;br /&gt;
*Режим — Воспроизвести. В этом режиме компонент сразу воспроизводит сгенерированный файл в текущую линию. &lt;br /&gt;
*Текст — строка &amp;quot;''Здравствуйте! Вас приветствует компания Телефонные Системы! Для соединения с менеджерами нажмите 1. Для соединения с сотрудниками технической поддержки нажмите 2.''&amp;quot;. Введенный текст будет передан на сервера Yandex для озвучивания. &lt;br /&gt;
*Голос — Zahar. Настройка отвечает за синтезируемый голос: Zahar - мужской голос, Jane -женский. Возможно указание другого значения, если оно поддерживается сервисом Yandex SpeechKit.&lt;br /&gt;
*Эмоция — По умолчанию. Настройка отвечает за используемую окраску голоса. Возможные варианты: good, neutral, evil, mixed. &lt;br /&gt;
*Кэш — Использовать. Если использовать кэш, то система попытается найти файл с озвученным текстом среди сгенерированных ранее (находятся в папке \Oktell\Server\LocalStorage\SynthesisCache). Рекомендуется всегда включать в целях экономии средств. &lt;br /&gt;
*Таймаут ожидания ответа, с — 5. Максимальное время ожидания ответа от серверов Яндекс. &lt;br /&gt;
*Символы прерывания — строка &amp;quot;''1, 2''&amp;quot;. Если абонент нажмет на указанные символы прерывания, компонент сохранит их в буфер и перейдет к следующему блоку. &lt;br /&gt;
*Буфер для DTMF — переменная '''ввод''' (строковая). Переменная, в которую сохранится введенный символ прерывания.&lt;br /&gt;
*Очистить буфер — Да. Указывает на то, что буфер предварительно будет очищен. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Меню'''&amp;quot;. Маршрутизирует абонента на выбранную группу операторов. &lt;br /&gt;
*Аргумент — переменная '''Ввод'''&lt;br /&gt;
*Значения —&lt;br /&gt;
: 1 — на компонент &amp;quot;Переключение 1&amp;quot;&lt;br /&gt;
: 2, прочее - на компонент &amp;quot;Переключение 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Настройка дальнейшей маршрутизации не рассматривается.&lt;br /&gt;
&lt;br /&gt;
Чтобы использовать синтез речи для преднабора необходимо вначале сгенерировать файл с помощью компонента &amp;quot;Синтез речи&amp;quot; и сохранить путь к этому файлу в переменную (в соответствующем свойстве). Далее указать этот файл в компоненте &amp;quot;Воспроизведение с преднабором&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%BC%D0%B5%D0%BD%D1%82%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D1%81%D0%BE%D1%82%D1%80%D1%83%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0_%D0%B2%D0%BE_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B7%D0%B2%D0%BE%D0%BD%D0%BA%D0%B0</id>
		<title>Определение момента переключения на сотрудника во время перевода звонка</title>
		<link rel="alternate" type="text/html" href="%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%BC%D0%B5%D0%BD%D1%82%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D1%81%D0%BE%D1%82%D1%80%D1%83%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0_%D0%B2%D0%BE_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B7%D0%B2%D0%BE%D0%BD%D0%BA%D0%B0"/>
				<updated>2023-03-31T11:51:10Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Служебный сценарий определения момента переключения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Введение== &lt;br /&gt;
&lt;br /&gt;
Представим ситуацию, когда абонент А просит оператора Б переключить его на другого сотрудника В. Например, клиент, разговаривая с менеджером по продажам, хочет обсудить технический вопрос с инженерами технической поддержки. Менеджер по продажам может переключить абонента сразу напрямую (выполнить Transfer-переключение, неконсультативный перевод) или предварительно предупредить инженера о переводе (консультативный перевод). В каждом из этих случаев стоит задача воспроизвести в коммутацию сообщение &amp;quot;''Вы переключены на сотрудника''&amp;quot;, как только установилось успешное соединение. &lt;br /&gt;
&lt;br /&gt;
Такое звуковое сообщение помогает, во-первых, соориентировать клиента, что его звонок успешно переведен. Во-вторых, часто при переводе звонка принимающая сторона, в нашем случае инженер, не слышит как менеджер положил трубку, и не может понять переключили на него или еще нет. Звуковое сообщение в коммутацию облегчает сложившуюся ситуацию. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Установка готовых сценариев в систему==&lt;br /&gt;
&lt;br /&gt;
'''1.''' Скачайте и импортируйте сценарии: &lt;br /&gt;
* [[Media:%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%BC%D0%B5%D0%BD%D1%82%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F.oscr|Определение момента переключения.oscr]] ''(собрано на версии 2.11.2.141125)''&lt;br /&gt;
&lt;br /&gt;
*[[Media:%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%BC%D0%B5%D0%BD%D1%82%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%28%D1%81%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%29.oscr|Определение момента переключения (служебный).oscr]] ''(собрано на версии 2.11.2.141125)''&lt;br /&gt;
&lt;br /&gt;
'''2.''' Настройте внешние линии в сценарии переключения &amp;quot;'''Определение момента переключения'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Назначьте сценарии в качестве системных сценариев переключения. Смотрите пункт [[Определение момента переключения на сотрудника во время перевода звонка#Назначение сценария переключения | Назначение сценария переключения]]&lt;br /&gt;
&lt;br /&gt;
==Реализация сценария==&lt;br /&gt;
&lt;br /&gt;
Для определенности введем следующие понятия: А - переключаемый клиент, Б - переключающий оператор, В - пользователь, на которого переводят звонок. &lt;br /&gt;
&lt;br /&gt;
Основная идея алгоритма - запустить служебный сценарий, после того как сотрудник В возьмет трубку. Этот служебный сценарий в асинхронном режиме проверяет состояние переключения и после переключения клиента А на сотрудника В запускает воспроизведение файла в коммутацию. Все номера линий участвующие в переключении собираются в IVR сценарии переключения и передаются служебному сценарию на вход. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Модификация IVR сценария переключения===&lt;br /&gt;
&lt;br /&gt;
Модификация сценария заключается в сборе данных о линиях, участвующих в переводе звонка и запуске служебного сценария. Модифицированный сценарий выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-002.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Правка входного каскада.''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Старт 1'''&amp;quot;. Во время Sip-transfer переключения получает номер, на который выполнен перевод звонка. Во время обычного переключения на вход ничего не передается. &lt;br /&gt;
* Параметр запуска - переменная &amp;quot;'''Номер'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Режим Flash'''&amp;quot;. Присваивает служебной переменной &amp;quot;'''(сл) Режим Flash'''&amp;quot; - число '''1'''. Таким образом, если оператор Б положит трубку во время дозвона до сотрудника В, клиент А заменит его и самостоятельно будет ожидать соединения. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Параметр запуска пусто?'''&amp;quot;. Определяет передался ли номер на вход сценария во время SIP-transfer переключения. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''Номер'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - пустая строка&lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, правда - компонент &amp;quot;'''НОМЕР=CallerID'''&amp;quot;. &lt;br /&gt;
* Переход, ложь - компонент &amp;quot;'''Пауза 1'''&amp;quot;. Таким образом, номер отправляется сразу в набор.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-004.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компоненты &amp;quot;'''Номер=CallerID'''&amp;quot;, &amp;quot;'''Номер пусто?'''&amp;quot; и все компоненты блока сборки номера (выделен зеленым) не изменяются. &lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что ветка по таймауту компонента &amp;quot;'''+1 цифра'''&amp;quot; в сценарии переведена на компонент &amp;quot;'''Пауза 1'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2.''' Компонент &amp;quot;'''Определение линий'''&amp;quot;. Сохраняет номер линии абонента А (переключаемого, линия буфера) и линии пользователя Б (переключающего) в соответствующие переменные.&lt;br /&gt;
* Переменной &amp;quot;'''ЛинияБуфера'''&amp;quot; (строковая) присваивается значение функции &amp;quot;'''Номер линии, ожидающей во Flash-буфере'''&amp;quot;. &lt;br /&gt;
* Переменной &amp;quot;'''ЛинияПользователя'''&amp;quot; (строковая) присваивается значение функции &amp;quot;'''Номер линии'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-005.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Запуск служебного сценария'''. Блок определяет линию сотрудника В, записывает ее в переменную, а затем передает все три найденные линии (А, Б, В) на вход служебного сценария.&lt;br /&gt;
&lt;br /&gt;
В зависимости от типа набранного номера отрабатывают те или иные компоненты. Для внешнего номера: &lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''ВНЕШНИЕ'''&amp;quot;. Если переключают на внешний номер, то необходимо сохранить выбранную линию в переменную. &lt;br /&gt;
* Номер - переменная &amp;quot;'''Номер'''&amp;quot;.&lt;br /&gt;
* Тип вызова - Обычный&lt;br /&gt;
* Направления - выберите направления для вызова&lt;br /&gt;
* Идентификатор выбранной линии - переменная &amp;quot;ЛинияПереключения&amp;quot; (строковая)&lt;br /&gt;
* Коммутировать сразу - Нет, прослушивать медиа-поток&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия переключения'''&amp;quot;. Определяет номер линии по ее идентификатору и сохраняет его в ту же переменную. &lt;br /&gt;
* Действие - Определить&lt;br /&gt;
* Тип объекта - Линия&lt;br /&gt;
* Ключ линии - переменная &amp;quot;'''ЛинияПереключения'''&amp;quot;&lt;br /&gt;
* Функция - Номер линии&lt;br /&gt;
* Значение в переменную - переменная &amp;quot;'''ЛинияПереключения'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для внутреннего номера:&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''ВНУТРЕННИЕ'''&amp;quot;. Остается без изменения. &lt;br /&gt;
* Назначение - Внутрь&lt;br /&gt;
* Номер - переменная &amp;quot;'''Номер'''&amp;quot; &lt;br /&gt;
* Тип вызова - Обычный&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-006.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Пауза 200мс'''&amp;quot;. Необходим для корректной отработки переключения и записи всех значений в базу данных. &lt;br /&gt;
* Время задержки, мс - 200&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия переключения (2)'''&amp;quot;. По номеру активной линии, определяет номер скоммутированной линии. Активной линией будет линия пользователя Б, если он ожидал соединения сотрудника В и тот взял трубку. Если пользователь Б, бросил трубку, то активной линией будет линия клиента А.&lt;br /&gt;
* Действие - Определить&lt;br /&gt;
* Тип объекта - Линия&lt;br /&gt;
* Ключ линии - функция &amp;quot;'''Номер линии'''&amp;quot;&lt;br /&gt;
* Функция - Номер скоммутированной линии/конференции&lt;br /&gt;
* Значение в переменную - переменная '''ЛинияПереключения'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''XML'''&amp;quot;. Для передачи трех значений в служебный сценарий, компонент объединяет их в единую XML структуру. Такой прием часто используется для передачи нескольких значений в качестве одного параметра запуска. &lt;br /&gt;
* Переменной &amp;quot;'''XML'''&amp;quot; (строковая) присваивается выражение&lt;br /&gt;
&amp;lt;pre&amp;gt;'&amp;lt;bufferLine&amp;gt;'+[ЛинияБуфера]+'&amp;lt;/bufferLine&amp;gt;'+endline+&lt;br /&gt;
'&amp;lt;switchingLine&amp;gt;'+[ЛинияПереключения]+'&amp;lt;/switchingLine&amp;gt;'+endline+&lt;br /&gt;
'&amp;lt;userLine&amp;gt;'+[ЛинияПользователя]+'&amp;lt;/userLine&amp;gt;'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Можно и не использовать объединение переменных в XML, а передавать их как сессионные, однако удостоверьтесь, что у вас уже не используется одноименные переменные в других пересекающихся сценариях. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-007.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув1'''&amp;quot;. Отладочное уведомления для вывода XML структуры. &lt;br /&gt;
* Отладочный режим - Да&lt;br /&gt;
* Текст - переменная &amp;quot;'''XML'''&amp;quot;&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Запуск сценария'''&amp;quot;. Запускает асинхронный сценарий, который будет проверять соединение линии клиента А и сотрудника В. &lt;br /&gt;
* Тип запуска - Асинхронный служебный&lt;br /&gt;
* Режим выбора сценария - Из списка&lt;br /&gt;
* Сценарий - Определение момента переключения (служебный) &lt;br /&gt;
* Параметр запуска - переменная &amp;quot;'''XML'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-008.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Служебный сценарий определения момента переключения=== &lt;br /&gt;
&lt;br /&gt;
Служебный сценарий мониторит состояние линии А и определяет итог переключения. Сценарий выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-001.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Старт 1'''&amp;quot;. Получает переданную XML-структуру на вход сценария и записывает ее в переменную XML.&lt;br /&gt;
* Параметр запуска - переменная &amp;quot;'''XML'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув XML'''&amp;quot;. Отладочное уведомление для вывода полученной XML.&lt;br /&gt;
* Отладочный режим - Да&lt;br /&gt;
* Текст - переменная &amp;quot;'''XML'''&amp;quot;&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия буфера'''&amp;quot;. Выделяет линию буфера (клиента А) из XML-структуры.&lt;br /&gt;
* Документ - переменная &amp;quot;'''XML'''&amp;quot;&lt;br /&gt;
* Алгоритм - Язык OQuery для HTML&lt;br /&gt;
* Поисковый запрос - строка ''bufferLine''&lt;br /&gt;
* Функция - Содержимое&lt;br /&gt;
* Номер элемента - 0 &lt;br /&gt;
* Результат в переменную - переменная &amp;quot;'''ЛинияБуфера'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия переключения'''&amp;quot;. Выделяет линию сотрудника В, на которого переключают звонок, из XML-структуры.&lt;br /&gt;
* Документ - переменная &amp;quot;'''XML'''&amp;quot;&lt;br /&gt;
* Алгоритм - Язык OQuery для HTML&lt;br /&gt;
* Поисковый запрос - строка ''switchingLine''&lt;br /&gt;
* Функция - Содержимое&lt;br /&gt;
* Номер элемента - 0 &lt;br /&gt;
* Результат в переменную - переменная &amp;quot;'''ЛинияПереключения'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-009.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия пользователя'''&amp;quot;. Выделяет линию переключающего сотрудника Б из XML-структуры.&lt;br /&gt;
* Документ - переменная &amp;quot;'''XML'''&amp;quot;&lt;br /&gt;
* Алгоритм - Язык OQuery для HTML&lt;br /&gt;
* Поисковый запрос - строка ''userLine''&lt;br /&gt;
* Функция - Содержимое&lt;br /&gt;
* Номер элемента - 0 &lt;br /&gt;
* Результат в переменную - переменная &amp;quot;'''ЛинияПользователя'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Трансфер?'''&amp;quot;. Определяет произошло ли трансфер-переключение. Если это так, то линия буфера будет пустая, вследствие того, что она была активной и содержится в переменной &amp;quot;'''ЛинияПользователя'''&amp;quot;. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''ЛинияБуфера'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - пустая строка&lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, если правда - компонент &amp;quot;'''Трансфер'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - компонент &amp;quot;'''Скоммутированная с буфером'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
''Случай обычного переключения'' &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Скоммутированная с буфером'''&amp;quot;. Определяет номер скоммутированной линии с линией буфера (клиента А). В зависимости от того, какую линию вернет компонент, будет решаться соединилась ли линия буфера с пользователем В или вернулась обратно. &lt;br /&gt;
* Действие - Определить&lt;br /&gt;
* Тип объекта - Линия&lt;br /&gt;
* Ключ линии - переменная &amp;quot;'''ЛинияБуфера'''&amp;quot; &lt;br /&gt;
* Функция - Номер скоммутированной линии/конференции&lt;br /&gt;
* Значение в переменную - переменная &amp;quot;'''СкоммутированнаяСБуфером'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-010.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув1'''&amp;quot;. Отладочное уведомление для вывода номеров участвующих линий, а также линии, которая скоммутирована с буфером.&lt;br /&gt;
* Отладочный режим - Да&lt;br /&gt;
* Текст - выражение &lt;br /&gt;
&amp;lt;pre&amp;gt;'[ЛинияБуфера] '+[ЛинияБуфера]+endline+&lt;br /&gt;
'[ЛинияПереключения] '+[ЛинияПереключения]+endline+&lt;br /&gt;
'[ЛинияПользователя] '+[ЛинияПользователя]+endline+endline+&lt;br /&gt;
'[СкоммутированнаяСБуфером] '+[СкоммутированнаяСБуфером]&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Буфер не скоммутирован?'''&amp;quot;. Определяет скоммутирована ли линия буфера. Если переменная &amp;quot;'''СкоммутированнаяСБуфером'''&amp;quot; равна &amp;quot;'''-1'''&amp;quot;, значит линия пока не скоммутирована. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''СкоммутированнаяСБуфером'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - число &amp;quot;'''-1'''&amp;quot;&lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, если правда&amp;quot; - компонент &amp;quot;'''IdChain'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - &amp;quot;'''Буфер переключился?'''&amp;quot;. Переход отрабатывает, если линия буфера соединена с какой-либо другой линией. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''IdChain'''&amp;quot;. Если линия пока не скоммутирована, есть вероятность, что она разорвала связь. Такое бывает в условиях плохого соединения, например клиент зашел в метро, или клиент просто повесил трубку в следствие долгого ожидания. Чтобы определить это, нам потребуется знать идентификатор цепочки коммутаций. &lt;br /&gt;
* Действие - Определить&lt;br /&gt;
* Тип объекта - Линия&lt;br /&gt;
* Ключ линии - переменная &amp;quot;'''ЛинияБуфера'''&amp;quot;&lt;br /&gt;
* Функция - Идентификатор цепочки коммутаций&lt;br /&gt;
* Значение в переменную - переменная &amp;quot;'''idChainuser'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув2'''&amp;quot;. Отладочное уведомление для вывода Id цепочки коммутаций.&lt;br /&gt;
* Отладочный режим - Да&lt;br /&gt;
* Текст - переменная &amp;quot;'''idChainuser'''&amp;quot;&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Обрыв внешней линии'''&amp;quot;. Если Id цепочки коммутаций равен &amp;quot;''00000000-0000-0000-0000-000000000000''&amp;quot;, значит на данный момент активной коммутации на линии нет, то есть соединение с клиентом оборвалось. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''idChainuser'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - строка &amp;quot;''00000000-0000-0000-0000-000000000000''&amp;quot;&lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, если правда&amp;quot; - компонент &amp;quot;'''Линия повесила трубку'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - &amp;quot;'''Пока линия не скоммутирована'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-011.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия повесила трубку'''&amp;quot;. Отладочное уведомление, о том, что линия повесила трубку. &lt;br /&gt;
* Отладочный режим - Нет. После успешных тестов можно выставить Да.&lt;br /&gt;
* Текст - строка ''Внешняя линия повесила трубку''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Пока линия не скоммутирована'''&amp;quot;. Отладочное уведомление, о том, что линия пока ни с кем не скоммутирована. &lt;br /&gt;
* Отладочный режим - Да&lt;br /&gt;
* Текст - строка ''Линия пока не скоммутирована''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Буфер переключился?'''&amp;quot;. Если линия буфера соединена с какой-либо линией, то компонент проверяет соединена ли линия буфера с линией сотрудника, на которого переключали. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''СкоммутированнаяСБуфером'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - переменная &amp;quot;'''ЛинияПереключения'''&amp;quot; &lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, если правда - компонент &amp;quot;'''Линии скоммутированы'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - компонент &amp;quot;'''Линия вернулась?'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия скоммутированы'''&amp;quot;. Уведомляет администратора, что линии А и В скоммутировались.&lt;br /&gt;
* Отладочный режим - Нет. После успешных тестов можно выставить Да.&lt;br /&gt;
* Текст - строка ''Линии успешно скоммутировались''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Воспроизведение файла'''&amp;quot;. Воспроизводит в коммутацию звуковой файл &amp;quot;''Вы переключены на сотрудника''&amp;quot;, уведомляя обе стороны об успешном переключении.&lt;br /&gt;
* Действие - Установить&lt;br /&gt;
* Тип объекта - Линия&lt;br /&gt;
* Ключ линии - переменная &amp;quot;'''ЛинияБуфера'''&amp;quot;&lt;br /&gt;
* Свойство/действие - Воспроизвести файл в коммутацию/конференцию&lt;br /&gt;
* Звуковой файл - выберите файл &amp;quot;''Вы переключены на сотрудника.mp3''&amp;quot;&lt;br /&gt;
* Значение - 0. Означает полную громкость воспроизведения. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия вернулась?'''&amp;quot;. Линия буфера может быть скоммутирована с линией переключающего Б. В этом случае, мы делаем вывод, что линия вернулась обратно переключающему. Это могло произойти, после того, как Б и В поговорили, но первым положил трубку В. Тогда А соединяется обратно с Б. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''СкоммутированнаяСБуфером'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - переменная &amp;quot;'''ЛинияПользователя'''&amp;quot; &lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, если правда - компонент &amp;quot;'''Возврат буфера'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - компонент &amp;quot;'''Пока линия не скоммутирована'''&amp;quot;. &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Фактически, этот переход может произойти только вследствие ошибочной логики, поэтому обратите на него внимание во время отладки. Имеет смысл, убрать переход или поставить уведомление. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-012.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Возврат буфера'''&amp;quot;.&lt;br /&gt;
* Отладочный режим - Нет. После успешных тестов можно выставить Да.&lt;br /&gt;
* Текст - строка ''Линия вернулась обратно''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''500мс'''&amp;quot;. Если линия пока не соединена, компонент осуществляет задержку перед следующей итерацией анализа состояния линий. Эта задержка по сути является разрешающей способностью сценария. Если выставить слишком много - возможны перекрестные ошибки, если выставить мало - система будет сильно нагружаться. Вам следует поэкспериментировать с этим значением. Во время тестов было использовано значение 500 мс.&lt;br /&gt;
* Время задержки, мс - 500&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''''SIP-трансфер переключение.''' Отличие этого блока от предыдущего в том, что линия переключаемого клиента А будет располагаться в переменной &amp;quot;ЛинияПользователя&amp;quot;, так как в сценарии переключения именно она была активной.'' &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Трансфер'''&amp;quot;.&lt;br /&gt;
* Отладочный режим - Нет. После успешных тестов можно выставить Да.&lt;br /&gt;
* Текст - строка ''ТРАНСФЕР''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Скоммутированная с буфером 2'''&amp;quot;. Определяет номер скоммутированной линии с линией клиента А. В зависимости от того, какую линию вернет компонент, будет решаться соединилась ли линия буфера с пользователем В или нет. &lt;br /&gt;
* Действие - Определить&lt;br /&gt;
* Тип объекта - Линия&lt;br /&gt;
* Ключ линии - переменная &amp;quot;'''ЛинияПользователя'''&amp;quot; &lt;br /&gt;
* Функция - Номер скоммутированной линии/конференции&lt;br /&gt;
* Значение в переменную - переменная &amp;quot;'''СкоммутированнаяСБуфером'''&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Произошло соединение?'''&amp;quot;. Определяет произошло ли соединение линии клиента А и пользователя В. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''СкоммутированнаяСБуфером'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - переменная &amp;quot;'''ЛинияПользователя'''&amp;quot; &lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, если правда - компонент &amp;quot;'''Линии соединены'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - компонент &amp;quot;'''Пауза2'''&amp;quot;. &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Переход по ветке &amp;quot;Ложь&amp;quot; является некорректным и может произойти только вследствие системной ошибки или высокой загрузки процессора. Если этот переход выполнился, то вам следует обратить на это пристальное внимание. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линии соединены'''&amp;quot;.&lt;br /&gt;
* Отладочный режим - Нет. После успешных тестов можно выставить Да.&lt;br /&gt;
* Текст - строка ''Линии успешно скоммутировались''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Воспроизведение файла 2'''&amp;quot;. Воспроизводит в коммутацию звуковой файл &amp;quot;''Вы переключены на сотрудника''&amp;quot;, уведомляя обе стороны об успешном переключении.&lt;br /&gt;
* Действие - Установить&lt;br /&gt;
* Тип объекта - Линия&lt;br /&gt;
* Ключ линии - переменная &amp;quot;'''ЛинияПользователя'''&amp;quot;&lt;br /&gt;
* Свойство/действие - Воспроизвести файл в коммутацию/конференцию&lt;br /&gt;
* Звуковой файл - выберите файл &amp;quot;''Вы переключены на сотрудника.mp3''&amp;quot;&lt;br /&gt;
* Значение - 0. Означает полную громкость воспроизведения. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-013.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Пауза 2'''&amp;quot;. Переход на этот компонент, если переходные процессы заняли длительное время (большая загрузка процессора). В этом случае мы установили дополнительную задержку 200 мс для завершения всех переходных процессов. &lt;br /&gt;
* Время задержки, мс - 200&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия не соединилась'''&amp;quot;. Если линия пока не соединилась с линией сотрудника В, то ее состояние должно быть равно &amp;quot;'''-1'''&amp;quot;. Если это не так, то произошла ошибочная ситуация. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''СкоммутированнаяСБуфером'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - число&amp;quot;'''-1'''&amp;quot; &lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, если правда - компонент &amp;quot;'''IdChain 2'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - компонент &amp;quot;'''Неизвестная ситуация'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Неизвестная ситуация'''&amp;quot;. Уведомляет, что произошла неизвестная ситуация во время трансфер-переключения. Линия во время sip-трансфер переключения внезапно соединилась с другой линией, и следует подробно выяснить как такое могло произойти. &lt;br /&gt;
* Отладочный режим - Нет. После успешных тестов можно выставить Да.&lt;br /&gt;
* Текст - строка ''Неизвестная ситуация''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''IdChain 2'''&amp;quot;. Если линия клиента А не соединилась с линией пользователя В, то есть вероятность, что мог произойти обрыв связи. Проверить это поможет идентификатор цепочки коммутаций. &lt;br /&gt;
* Действие - Определить&lt;br /&gt;
* Тип объекта - Линия&lt;br /&gt;
* Ключ линии - переменная &amp;quot;'''ЛинияПользователя'''&amp;quot;&lt;br /&gt;
* Функция - Идентификатор цепочки коммутаций&lt;br /&gt;
* Значение в переменную - переменная &amp;quot;'''idChainuser'''&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-014.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув3'''&amp;quot;. Отладочное уведомление, с выводом полученного идентификатора цепочки коммутаций. &lt;br /&gt;
* Отладочный режим - Да.&lt;br /&gt;
* Текст - выражение '''[idChainuser] '+[idChainuser]''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия повесила трубку?'''&amp;quot;. Если Id цепочки коммутаций равен &amp;quot;''00000000-0000-0000-0000-000000000000''&amp;quot;, значит на данный момент активной коммутации на линии нет, то есть соединение с клиентом оборвалось. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''idChainuser'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - строка &amp;quot;''00000000-0000-0000-0000-000000000000''&amp;quot;&lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, если правда&amp;quot; - компонент &amp;quot;'''Линия оборвалась'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - &amp;quot;'''Пауза 500 мс'''&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия оборвалась'''&amp;quot;. Сообщает администратору, что на линии клиента А произошел обрыв связи. &lt;br /&gt;
* Отладочный режим - Нет. После успешных тестов можно выставить Да.&lt;br /&gt;
* Текст - строка ''Внешняя линия повесила трубку''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Пауза 500мс'''&amp;quot;. Если линия пока не соединена, компонент осуществляет задержку перед следующей итерацией. &lt;br /&gt;
* Время задержки, мс - 500&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-015.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Скачать сценарии:&lt;br /&gt;
* [[Media:%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%BC%D0%B5%D0%BD%D1%82%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F.oscr|Определение момента переключения.oscr]] ''(собрано на версии 2.11.2.141125)''&lt;br /&gt;
&lt;br /&gt;
*[[Media:%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%BC%D0%B5%D0%BD%D1%82%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%28%D1%81%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%29.oscr|Определение момента переключения (служебный).oscr]] ''(собрано на версии 2.11.2.141125)''&lt;br /&gt;
&lt;br /&gt;
==Назначение сценария переключения==&lt;br /&gt;
&lt;br /&gt;
Перейдите в Администрирование/Общие настройки/Сценарии АТС. Сценарий &amp;quot;'''Определение момента переключения'''&amp;quot; следует назначить в качестве &amp;quot;'''Сценария IVR маршрутизации при переводе звонка'''&amp;quot;, а также как &amp;quot;'''Сценарий IVR sip-трансфер переключения'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-003.png|800px|center]]&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%BC%D0%B5%D0%BD%D1%82%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D1%81%D0%BE%D1%82%D1%80%D1%83%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0_%D0%B2%D0%BE_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B7%D0%B2%D0%BE%D0%BD%D0%BA%D0%B0</id>
		<title>Определение момента переключения на сотрудника во время перевода звонка</title>
		<link rel="alternate" type="text/html" href="%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%BC%D0%B5%D0%BD%D1%82%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D1%81%D0%BE%D1%82%D1%80%D1%83%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0_%D0%B2%D0%BE_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B7%D0%B2%D0%BE%D0%BD%D0%BA%D0%B0"/>
				<updated>2023-03-31T11:49:45Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Установка готовых сценариев в систему */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Введение== &lt;br /&gt;
&lt;br /&gt;
Представим ситуацию, когда абонент А просит оператора Б переключить его на другого сотрудника В. Например, клиент, разговаривая с менеджером по продажам, хочет обсудить технический вопрос с инженерами технической поддержки. Менеджер по продажам может переключить абонента сразу напрямую (выполнить Transfer-переключение, неконсультативный перевод) или предварительно предупредить инженера о переводе (консультативный перевод). В каждом из этих случаев стоит задача воспроизвести в коммутацию сообщение &amp;quot;''Вы переключены на сотрудника''&amp;quot;, как только установилось успешное соединение. &lt;br /&gt;
&lt;br /&gt;
Такое звуковое сообщение помогает, во-первых, соориентировать клиента, что его звонок успешно переведен. Во-вторых, часто при переводе звонка принимающая сторона, в нашем случае инженер, не слышит как менеджер положил трубку, и не может понять переключили на него или еще нет. Звуковое сообщение в коммутацию облегчает сложившуюся ситуацию. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Установка готовых сценариев в систему==&lt;br /&gt;
&lt;br /&gt;
'''1.''' Скачайте и импортируйте сценарии: &lt;br /&gt;
* [[Media:%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%BC%D0%B5%D0%BD%D1%82%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F.oscr|Определение момента переключения.oscr]] ''(собрано на версии 2.11.2.141125)''&lt;br /&gt;
&lt;br /&gt;
*[[Media:%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%BC%D0%B5%D0%BD%D1%82%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%28%D1%81%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%29.oscr|Определение момента переключения (служебный).oscr]] ''(собрано на версии 2.11.2.141125)''&lt;br /&gt;
&lt;br /&gt;
'''2.''' Настройте внешние линии в сценарии переключения &amp;quot;'''Определение момента переключения'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Назначьте сценарии в качестве системных сценариев переключения. Смотрите пункт [[Определение момента переключения на сотрудника во время перевода звонка#Назначение сценария переключения | Назначение сценария переключения]]&lt;br /&gt;
&lt;br /&gt;
==Реализация сценария==&lt;br /&gt;
&lt;br /&gt;
Для определенности введем следующие понятия: А - переключаемый клиент, Б - переключающий оператор, В - пользователь, на которого переводят звонок. &lt;br /&gt;
&lt;br /&gt;
Основная идея алгоритма - запустить служебный сценарий, после того как сотрудник В возьмет трубку. Этот служебный сценарий в асинхронном режиме проверяет состояние переключения и после переключения клиента А на сотрудника В запускает воспроизведение файла в коммутацию. Все номера линий участвующие в переключении собираются в IVR сценарии переключения и передаются служебному сценарию на вход. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Модификация IVR сценария переключения===&lt;br /&gt;
&lt;br /&gt;
Модификация сценария заключается в сборе данных о линиях, участвующих в переводе звонка и запуске служебного сценария. Модифицированный сценарий выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-002.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Правка входного каскада.''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Старт 1'''&amp;quot;. Во время Sip-transfer переключения получает номер, на который выполнен перевод звонка. Во время обычного переключения на вход ничего не передается. &lt;br /&gt;
* Параметр запуска - переменная &amp;quot;'''Номер'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Режим Flash'''&amp;quot;. Присваивает служебной переменной &amp;quot;'''(сл) Режим Flash'''&amp;quot; - число '''1'''. Таким образом, если оператор Б положит трубку во время дозвона до сотрудника В, клиент А заменит его и самостоятельно будет ожидать соединения. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Параметр запуска пусто?'''&amp;quot;. Определяет передался ли номер на вход сценария во время SIP-transfer переключения. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''Номер'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - пустая строка&lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, правда - компонент &amp;quot;'''НОМЕР=CallerID'''&amp;quot;. &lt;br /&gt;
* Переход, ложь - компонент &amp;quot;'''Пауза 1'''&amp;quot;. Таким образом, номер отправляется сразу в набор.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-004.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компоненты &amp;quot;'''Номер=CallerID'''&amp;quot;, &amp;quot;'''Номер пусто?'''&amp;quot; и все компоненты блока сборки номера (выделен зеленым) не изменяются. &lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что ветка по таймауту компонента &amp;quot;'''+1 цифра'''&amp;quot; в сценарии переведена на компонент &amp;quot;'''Пауза 1'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2.''' Компонент &amp;quot;'''Определение линий'''&amp;quot;. Сохраняет номер линии абонента А (переключаемого, линия буфера) и линии пользователя Б (переключающего) в соответствующие переменные.&lt;br /&gt;
* Переменной &amp;quot;'''ЛинияБуфера'''&amp;quot; (строковая) присваивается значение функции &amp;quot;'''Номер линии, ожидающей во Flash-буфере'''&amp;quot;. &lt;br /&gt;
* Переменной &amp;quot;'''ЛинияПользователя'''&amp;quot; (строковая) присваивается значение функции &amp;quot;'''Номер линии'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-005.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Запуск служебного сценария'''. Блок определяет линию сотрудника В, записывает ее в переменную, а затем передает все три найденные линии (А, Б, В) на вход служебного сценария.&lt;br /&gt;
&lt;br /&gt;
В зависимости от типа набранного номера отрабатывают те или иные компоненты. Для внешнего номера: &lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''ВНЕШНИЕ'''&amp;quot;. Если переключают на внешний номер, то необходимо сохранить выбранную линию в переменную. &lt;br /&gt;
* Номер - переменная &amp;quot;'''Номер'''&amp;quot;.&lt;br /&gt;
* Тип вызова - Обычный&lt;br /&gt;
* Направления - выберите направления для вызова&lt;br /&gt;
* Идентификатор выбранной линии - переменная &amp;quot;ЛинияПереключения&amp;quot; (строковая)&lt;br /&gt;
* Коммутировать сразу - Нет, прослушивать медиа-поток&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия переключения'''&amp;quot;. Определяет номер линии по ее идентификатору и сохраняет его в ту же переменную. &lt;br /&gt;
* Действие - Определить&lt;br /&gt;
* Тип объекта - Линия&lt;br /&gt;
* Ключ линии - переменная &amp;quot;'''ЛинияПереключения'''&amp;quot;&lt;br /&gt;
* Функция - Номер линии&lt;br /&gt;
* Значение в переменную - переменная &amp;quot;'''ЛинияПереключения'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для внутреннего номера:&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''ВНУТРЕННИЕ'''&amp;quot;. Остается без изменения. &lt;br /&gt;
* Назначение - Внутрь&lt;br /&gt;
* Номер - переменная &amp;quot;'''Номер'''&amp;quot; &lt;br /&gt;
* Тип вызова - Обычный&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-006.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Пауза 200мс'''&amp;quot;. Необходим для корректной отработки переключения и записи всех значений в базу данных. &lt;br /&gt;
* Время задержки, мс - 200&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия переключения (2)'''&amp;quot;. По номеру активной линии, определяет номер скоммутированной линии. Активной линией будет линия пользователя Б, если он ожидал соединения сотрудника В и тот взял трубку. Если пользователь Б, бросил трубку, то активной линией будет линия клиента А.&lt;br /&gt;
* Действие - Определить&lt;br /&gt;
* Тип объекта - Линия&lt;br /&gt;
* Ключ линии - функция &amp;quot;'''Номер линии'''&amp;quot;&lt;br /&gt;
* Функция - Номер скоммутированной линии/конференции&lt;br /&gt;
* Значение в переменную - переменная '''ЛинияПереключения'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''XML'''&amp;quot;. Для передачи трех значений в служебный сценарий, компонент объединяет их в единую XML структуру. Такой прием часто используется для передачи нескольких значений в качестве одного параметра запуска. &lt;br /&gt;
* Переменной &amp;quot;'''XML'''&amp;quot; (строковая) присваивается выражение&lt;br /&gt;
&amp;lt;pre&amp;gt;'&amp;lt;bufferLine&amp;gt;'+[ЛинияБуфера]+'&amp;lt;/bufferLine&amp;gt;'+endline+&lt;br /&gt;
'&amp;lt;switchingLine&amp;gt;'+[ЛинияПереключения]+'&amp;lt;/switchingLine&amp;gt;'+endline+&lt;br /&gt;
'&amp;lt;userLine&amp;gt;'+[ЛинияПользователя]+'&amp;lt;/userLine&amp;gt;'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Можно и не использовать объединение переменных в XML, а передавать их как сессионные, однако удостоверьтесь, что у вас уже не используется одноименные переменные в других пересекающихся сценариях. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-007.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув1'''&amp;quot;. Отладочное уведомления для вывода XML структуры. &lt;br /&gt;
* Отладочный режим - Да&lt;br /&gt;
* Текст - переменная &amp;quot;'''XML'''&amp;quot;&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Запуск сценария'''&amp;quot;. Запускает асинхронный сценарий, который будет проверять соединение линии клиента А и сотрудника В. &lt;br /&gt;
* Тип запуска - Асинхронный служебный&lt;br /&gt;
* Режим выбора сценария - Из списка&lt;br /&gt;
* Сценарий - Определение момента переключения (служебный) &lt;br /&gt;
* Параметр запуска - переменная &amp;quot;'''XML'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-008.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Служебный сценарий определения момента переключения=== &lt;br /&gt;
&lt;br /&gt;
Служебный сценарий мониторит состояние линии А и определяет итог переключения. Сценарий выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-001.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Старт 1'''&amp;quot;. Получает переданную XML-структуру на вход сценария и записывает ее в переменную XML.&lt;br /&gt;
* Параметр запуска - переменная &amp;quot;'''XML'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув XML'''&amp;quot;. Отладочное уведомление для вывода полученной XML.&lt;br /&gt;
* Отладочный режим - Да&lt;br /&gt;
* Текст - переменная &amp;quot;'''XML'''&amp;quot;&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия буфера'''&amp;quot;. Выделяет линию буфера (клиента А) из XML-структуры.&lt;br /&gt;
* Документ - переменная &amp;quot;'''XML'''&amp;quot;&lt;br /&gt;
* Алгоритм - Язык OQuery для HTML&lt;br /&gt;
* Поисковый запрос - строка ''bufferLine''&lt;br /&gt;
* Функция - Содержимое&lt;br /&gt;
* Номер элемента - 0 &lt;br /&gt;
* Результат в переменную - переменная &amp;quot;'''ЛинияБуфера'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия переключения'''&amp;quot;. Выделяет линию сотрудника В, на которого переключают звонок, из XML-структуры.&lt;br /&gt;
* Документ - переменная &amp;quot;'''XML'''&amp;quot;&lt;br /&gt;
* Алгоритм - Язык OQuery для HTML&lt;br /&gt;
* Поисковый запрос - строка ''switchingLine''&lt;br /&gt;
* Функция - Содержимое&lt;br /&gt;
* Номер элемента - 0 &lt;br /&gt;
* Результат в переменную - переменная &amp;quot;'''ЛинияПереключения'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-009.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия пользователя'''&amp;quot;. Выделяет линию переключающего сотрудника Б из XML-структуры.&lt;br /&gt;
* Документ - переменная &amp;quot;'''XML'''&amp;quot;&lt;br /&gt;
* Алгоритм - Язык OQuery для HTML&lt;br /&gt;
* Поисковый запрос - строка ''userLine''&lt;br /&gt;
* Функция - Содержимое&lt;br /&gt;
* Номер элемента - 0 &lt;br /&gt;
* Результат в переменную - переменная &amp;quot;'''ЛинияПользователя'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Трансфер?'''&amp;quot;. Определяет произошло ли трансфер-переключение. Если это так, то линия буфера будет пустая, вследствие того, что она была активной и содержится в переменной &amp;quot;'''ЛинияПользователя'''&amp;quot;. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''ЛинияБуфера'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - пустая строка&lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, если правда - компонент &amp;quot;'''Трансфер'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - компонент &amp;quot;'''Скоммутированная с буфером'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
''Случай обычного переключения'' &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Скоммутированная с буфером'''&amp;quot;. Определяет номер скоммутированной линии с линией буфера (клиента А). В зависимости от того, какую линию вернет компонент, будет решаться соединилась ли линия буфера с пользователем В или вернулась обратно. &lt;br /&gt;
* Действие - Определить&lt;br /&gt;
* Тип объекта - Линия&lt;br /&gt;
* Ключ линии - переменная &amp;quot;'''ЛинияБуфера'''&amp;quot; &lt;br /&gt;
* Функция - Номер скоммутированной линии/конференции&lt;br /&gt;
* Значение в переменную - переменная &amp;quot;'''СкоммутированнаяСБуфером'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-010.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув1'''&amp;quot;. Отладочное уведомление для вывода номеров участвующих линий, а также линии, которая скоммутирована с буфером.&lt;br /&gt;
* Отладочный режим - Да&lt;br /&gt;
* Текст - выражение &lt;br /&gt;
&amp;lt;pre&amp;gt;'[ЛинияБуфера] '+[ЛинияБуфера]+endline+&lt;br /&gt;
'[ЛинияПереключения] '+[ЛинияПереключения]+endline+&lt;br /&gt;
'[ЛинияПользователя] '+[ЛинияПользователя]+endline+endline+&lt;br /&gt;
'[СкоммутированнаяСБуфером] '+[СкоммутированнаяСБуфером]&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Буфер не скоммутирован?'''&amp;quot;. Определяет скоммутирована ли линия буфера. Если переменная &amp;quot;'''СкоммутированнаяСБуфером'''&amp;quot; равна &amp;quot;'''-1'''&amp;quot;, значит линия пока не скоммутирована. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''СкоммутированнаяСБуфером'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - число &amp;quot;'''-1'''&amp;quot;&lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, если правда&amp;quot; - компонент &amp;quot;'''IdChain'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - &amp;quot;'''Буфер переключился?'''&amp;quot;. Переход отрабатывает, если линия буфера соединена с какой-либо другой линией. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''IdChain'''&amp;quot;. Если линия пока не скоммутирована, есть вероятность, что она разорвала связь. Такое бывает в условиях плохого соединения, например клиент зашел в метро, или клиент просто повесил трубку в следствие долгого ожидания. Чтобы определить это, нам потребуется знать идентификатор цепочки коммутаций. &lt;br /&gt;
* Действие - Определить&lt;br /&gt;
* Тип объекта - Линия&lt;br /&gt;
* Ключ линии - переменная &amp;quot;'''ЛинияБуфера'''&amp;quot;&lt;br /&gt;
* Функция - Идентификатор цепочки коммутаций&lt;br /&gt;
* Значение в переменную - переменная &amp;quot;'''idChainuser'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув2'''&amp;quot;. Отладочное уведомление для вывода Id цепочки коммутаций.&lt;br /&gt;
* Отладочный режим - Да&lt;br /&gt;
* Текст - переменная &amp;quot;'''idChainuser'''&amp;quot;&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Обрыв внешней линии'''&amp;quot;. Если Id цепочки коммутаций равен &amp;quot;''00000000-0000-0000-0000-000000000000''&amp;quot;, значит на данный момент активной коммутации на линии нет, то есть соединение с клиентом оборвалось. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''idChainuser'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - строка &amp;quot;''00000000-0000-0000-0000-000000000000''&amp;quot;&lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, если правда&amp;quot; - компонент &amp;quot;'''Линия повесила трубку'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - &amp;quot;'''Пока линия не скоммутирована'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-011.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия повесила трубку'''&amp;quot;. Отладочное уведомление, о том, что линия повесила трубку. &lt;br /&gt;
* Отладочный режим - Нет. После успешных тестов можно выставить Да.&lt;br /&gt;
* Текст - строка ''Внешняя линия повесила трубку''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Пока линия не скоммутирована'''&amp;quot;. Отладочное уведомление, о том, что линия пока ни с кем не скоммутирована. &lt;br /&gt;
* Отладочный режим - Да&lt;br /&gt;
* Текст - строка ''Линия пока не скоммутирована''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Буфер переключился?'''&amp;quot;. Если линия буфера соединена с какой-либо линией, то компонент проверяет соединена ли линия буфера с линией сотрудника, на которого переключали. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''СкоммутированнаяСБуфером'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - переменная &amp;quot;'''ЛинияПереключения'''&amp;quot; &lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, если правда - компонент &amp;quot;'''Линии скоммутированы'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - компонент &amp;quot;'''Линия вернулась?'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия скоммутированы'''&amp;quot;. Уведомляет администратора, что линии А и В скоммутировались.&lt;br /&gt;
* Отладочный режим - Нет. После успешных тестов можно выставить Да.&lt;br /&gt;
* Текст - строка ''Линии успешно скоммутировались''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Воспроизведение файла'''&amp;quot;. Воспроизводит в коммутацию звуковой файл &amp;quot;''Вы переключены на сотрудника''&amp;quot;, уведомляя обе стороны об успешном переключении.&lt;br /&gt;
* Действие - Установить&lt;br /&gt;
* Тип объекта - Линия&lt;br /&gt;
* Ключ линии - переменная &amp;quot;'''ЛинияБуфера'''&amp;quot;&lt;br /&gt;
* Свойство/действие - Воспроизвести файл в коммутацию/конференцию&lt;br /&gt;
* Звуковой файл - выберите файл &amp;quot;''Вы переключены на сотрудника.mp3''&amp;quot;&lt;br /&gt;
* Значение - 0. Означает полную громкость воспроизведения. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия вернулась?'''&amp;quot;. Линия буфера может быть скоммутирована с линией переключающего Б. В этом случае, мы делаем вывод, что линия вернулась обратно переключающему. Это могло произойти, после того, как Б и В поговорили, но первым положил трубку В. Тогда А соединяется обратно с Б. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''СкоммутированнаяСБуфером'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - переменная &amp;quot;'''ЛинияПользователя'''&amp;quot; &lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, если правда - компонент &amp;quot;'''Возврат буфера'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - компонент &amp;quot;'''Пока линия не скоммутирована'''&amp;quot;. &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Фактически, этот переход может произойти только вследствие ошибочной логики, поэтому обратите на него внимание во время отладки. Имеет смысл, убрать переход или поставить уведомление. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-012.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Возврат буфера'''&amp;quot;.&lt;br /&gt;
* Отладочный режим - Нет. После успешных тестов можно выставить Да.&lt;br /&gt;
* Текст - строка ''Линия вернулась обратно''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''500мс'''&amp;quot;. Если линия пока не соединена, компонент осуществляет задержку перед следующей итерацией анализа состояния линий. Эта задержка по сути является разрешающей способностью сценария. Если выставить слишком много - возможны перекрестные ошибки, если выставить мало - система будет сильно нагружаться. Вам следует поэкспериментировать с этим значением. Во время тестов было использовано значение 500 мс.&lt;br /&gt;
* Время задержки, мс - 500&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''''SIP-трансфер переключение.''' Отличие этого блока от предыдущего в том, что линия переключаемого клиента А будет располагаться в переменной &amp;quot;ЛинияПользователя&amp;quot;, так как в сценарии переключения именно она была активной.'' &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Трансфер'''&amp;quot;.&lt;br /&gt;
* Отладочный режим - Нет. После успешных тестов можно выставить Да.&lt;br /&gt;
* Текст - строка ''ТРАНСФЕР''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Скоммутированная с буфером 2'''&amp;quot;. Определяет номер скоммутированной линии с линией клиента А. В зависимости от того, какую линию вернет компонент, будет решаться соединилась ли линия буфера с пользователем В или нет. &lt;br /&gt;
* Действие - Определить&lt;br /&gt;
* Тип объекта - Линия&lt;br /&gt;
* Ключ линии - переменная &amp;quot;'''ЛинияПользователя'''&amp;quot; &lt;br /&gt;
* Функция - Номер скоммутированной линии/конференции&lt;br /&gt;
* Значение в переменную - переменная &amp;quot;'''СкоммутированнаяСБуфером'''&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Произошло соединение?'''&amp;quot;. Определяет произошло ли соединение линии клиента А и пользователя В. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''СкоммутированнаяСБуфером'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - переменная &amp;quot;'''ЛинияПользователя'''&amp;quot; &lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, если правда - компонент &amp;quot;'''Линии соединены'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - компонент &amp;quot;'''Пауза2'''&amp;quot;. &lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Переход по ветке &amp;quot;Ложь&amp;quot; является некорректным и может произойти только вследствие системной ошибки или высокой загрузки процессора. Если этот переход выполнился, то вам следует обратить на это пристальное внимание. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линии соединены'''&amp;quot;.&lt;br /&gt;
* Отладочный режим - Нет. После успешных тестов можно выставить Да.&lt;br /&gt;
* Текст - строка ''Линии успешно скоммутировались''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Воспроизведение файла 2'''&amp;quot;. Воспроизводит в коммутацию звуковой файл &amp;quot;''Вы переключены на сотрудника''&amp;quot;, уведомляя обе стороны об успешном переключении.&lt;br /&gt;
* Действие - Установить&lt;br /&gt;
* Тип объекта - Линия&lt;br /&gt;
* Ключ линии - переменная &amp;quot;'''ЛинияПользователя'''&amp;quot;&lt;br /&gt;
* Свойство/действие - Воспроизвести файл в коммутацию/конференцию&lt;br /&gt;
* Звуковой файл - выберите файл &amp;quot;''Вы переключены на сотрудника.mp3''&amp;quot;&lt;br /&gt;
* Значение - 0. Означает полную громкость воспроизведения. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-013.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Пауза 2'''&amp;quot;. Переход на этот компонент, если переходные процессы заняли длительное время (большая загрузка процессора). В этом случае мы установили дополнительную задержку 200 мс для завершения всех переходных процессов. &lt;br /&gt;
* Время задержки, мс - 200&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия не соединилась'''&amp;quot;. Если линия пока не соединилась с линией сотрудника В, то ее состояние должно быть равно &amp;quot;'''-1'''&amp;quot;. Если это не так, то произошла ошибочная ситуация. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''СкоммутированнаяСБуфером'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - число&amp;quot;'''-1'''&amp;quot; &lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, если правда - компонент &amp;quot;'''IdChain 2'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - компонент &amp;quot;'''Неизвестная ситуация'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Неизвестная ситуация'''&amp;quot;. Уведомляет, что произошла неизвестная ситуация во время трансфер-переключения. Линия во время sip-трансфер переключения внезапно соединилась с другой линией, и следует подробно выяснить как такое могло произойти. &lt;br /&gt;
* Отладочный режим - Нет. После успешных тестов можно выставить Да.&lt;br /&gt;
* Текст - строка ''Неизвестная ситуация''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''IdChain 2'''&amp;quot;. Если линия клиента А не соединилась с линией пользователя В, то есть вероятность, что мог произойти обрыв связи. Проверить это поможет идентификатор цепочки коммутаций. &lt;br /&gt;
* Действие - Определить&lt;br /&gt;
* Тип объекта - Линия&lt;br /&gt;
* Ключ линии - переменная &amp;quot;'''ЛинияПользователя'''&amp;quot;&lt;br /&gt;
* Функция - Идентификатор цепочки коммутаций&lt;br /&gt;
* Значение в переменную - переменная &amp;quot;'''idChainuser'''&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-014.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув3'''&amp;quot;. Отладочное уведомление, с выводом полученного идентификатора цепочки коммутаций. &lt;br /&gt;
* Отладочный режим - Да.&lt;br /&gt;
* Текст - выражение '''[idChainuser] '+[idChainuser]''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия повесила трубку?'''&amp;quot;. Если Id цепочки коммутаций равен &amp;quot;''00000000-0000-0000-0000-000000000000''&amp;quot;, значит на данный момент активной коммутации на линии нет, то есть соединение с клиентом оборвалось. &lt;br /&gt;
* Аргумент 1 - переменная &amp;quot;'''idChainuser'''&amp;quot;&lt;br /&gt;
* Аргумент 2 - строка &amp;quot;''00000000-0000-0000-0000-000000000000''&amp;quot;&lt;br /&gt;
* Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
* Переход, если правда&amp;quot; - компонент &amp;quot;'''Линия оборвалась'''&amp;quot;&lt;br /&gt;
* Переход, если ложь - &amp;quot;'''Пауза 500 мс'''&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Линия оборвалась'''&amp;quot;. Сообщает администратору, что на линии клиента А произошел обрыв связи. &lt;br /&gt;
* Отладочный режим - Нет. После успешных тестов можно выставить Да.&lt;br /&gt;
* Текст - строка ''Внешняя линия повесила трубку''&lt;br /&gt;
* Адресат - выберите администрирующего пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Пауза 500мс'''&amp;quot;. Если линия пока не соединена, компонент осуществляет задержку перед следующей итерацией. &lt;br /&gt;
* Время задержки, мс - 500&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-015.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Скачать сценарии:&lt;br /&gt;
* [http://wiki.oktell.ru/images/5/56/%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%BC%D0%B5%D0%BD%D1%82%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F.oscr Определение момента переключения.oscr] ''(собрано на версии 2.11.2.141125)''&lt;br /&gt;
&lt;br /&gt;
*[http://wiki.oktell.ru/images/8/85/%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%BC%D0%B5%D0%BD%D1%82%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%28%D1%81%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%29.oscr Определение момента переключения (служебный).oscr] ''(собрано на версии 2.11.2.141125)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Назначение сценария переключения==&lt;br /&gt;
&lt;br /&gt;
Перейдите в Администрирование/Общие настройки/Сценарии АТС. Сценарий &amp;quot;'''Определение момента переключения'''&amp;quot; следует назначить в качестве &amp;quot;'''Сценария IVR маршрутизации при переводе звонка'''&amp;quot;, а также как &amp;quot;'''Сценарий IVR sip-трансфер переключения'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Определение момент переключения-003.png|800px|center]]&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%92%D0%BE%D1%81%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0_%D0%B2_%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D1%82%D0%B0%D1%86%D0%B8%D1%8E</id>
		<title>Воспроизведение файла в коммутацию</title>
		<link rel="alternate" type="text/html" href="%D0%92%D0%BE%D1%81%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0_%D0%B2_%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D1%82%D0%B0%D1%86%D0%B8%D1%8E"/>
				<updated>2023-03-31T11:41:13Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Пример сценария */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]    &amp;lt;span style=&amp;quot;color:darkviolet&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;[Oktell 2.11.140813+]&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Введение==&lt;br /&gt;
&lt;br /&gt;
Начиная с версии 2.11.1.140813, появилась возможность проигрывать музыкальные файлы абонентам во время разговора или конференции. Возможность не предназначена для коммутации абонента с IVR. Функционал доступен в компоненте '''Cтатус объекта''' и может быть использован во всех видах сценариев. &lt;br /&gt;
&lt;br /&gt;
Для линии, сессии или конференции в статусе объекта существует свойство ''Воспроизвести файл в коммутацию/конференцию'' для воспроизведения файла сразу всем участникам разговора. Если абонент соединен с IVR сценарием, файл ему не будет воспроизводится. В качестве значений указать воспроизводимый звуковой файл в формате mp3 и уровень понижения громкости, где &lt;br /&gt;
* 0 - без понижения&lt;br /&gt;
* 8 - максимальное снижение громкости, почти не слышно.&lt;br /&gt;
По умолчанию, используется 4. &lt;br /&gt;
&lt;br /&gt;
Начиная с версии 2.11.3.150318, для линии существует дополнительное свойство ''Воспроизвести файл в линию'' для воспроизведения файла конкретному участнику разговора. В качестве значения указывается звуковой файл в формате mp3. Такое действие работает по следующей логике:&lt;br /&gt;
*Если абонент соединен с IVR сценарием — музыкальный файл не воспроизводится&lt;br /&gt;
*Если абонент находится в коммутации - музыкальный файл воспроизводится только в его линию&lt;br /&gt;
*Если абонент находится в конференции - на время воспроизведения файла данный участник перестает слышать остальных. Это называется &amp;quot;''исключающее воспроизведение''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример настройки компонента:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Воспроизведение файла в коммутацию -001.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Следует учитывать, что запись воспроизводимого файла ведется только в режиме конференции. Для коммутации воспроизводимый файл на запись разговора не попадает.&lt;br /&gt;
&lt;br /&gt;
Возможное применение:&lt;br /&gt;
* Воспроизведение в начале коммутации приветствия или предупреждения о включенной записи разговора.&lt;br /&gt;
* Воспроизведение в линию сигнала о превышении допустимого времени разговора.&lt;br /&gt;
* Оповещение оператора о наличии ожидающих абонентов в очереди. &lt;br /&gt;
* Создание полностью автоматизированного сервиса с заранее записанными ответами оператора, например в виде диалоговой формы. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Пример сценария==&lt;br /&gt;
&lt;br /&gt;
'''Задача:''' В самом начале разговора с оператором предупредить клиента о том, что все разговоры записываются. &lt;br /&gt;
&lt;br /&gt;
Сценарий выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Воспроизведение файла в коммутацию.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''На оператора'''&amp;quot;. Соединяет абонента с пользователем системы Oktell. &lt;br /&gt;
*Назначение - Внутрь&lt;br /&gt;
*Номер - 502&lt;br /&gt;
*Тип вызова - Обычный &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Пауза 500мс'''&amp;quot;. Нужен для того, чтобы после успешного соединения в системе отработали переходные процессы и с помощью функций можно было определить номер линии или Id цепочки коммутаций. &lt;br /&gt;
*Время задеркжи, мс - 500&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Воспроизвести в сессию'''&amp;quot;. Воспроизводит звуковой файл в разговоре.&lt;br /&gt;
*Действие - Установить &lt;br /&gt;
*Тип объекта - Сессия&lt;br /&gt;
*Идентификатор сессии - функция &amp;quot;'''Id цепочки коммутаций'''&amp;quot;. Также здесь можно выбрать функцию &amp;quot;'''Id сессии сценария'''&amp;quot;.&lt;br /&gt;
*Свойство - Воспроизвести файл в коммутацию/конференцию.&lt;br /&gt;
*Звуковой файл - выберите проигрываемый файл. В примере, &amp;quot;'''Ваш разговор записывается.mp3'''&amp;quot;&lt;br /&gt;
*Значение - выберите уровень понижения громкости. В примере, '''0''', т.е. без уменьшения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Скачать сценарий:''' [[Media:%D0%92%D0%BE%D1%81%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0_%D0%B2_%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D1%82%D0%B0%D1%86%D0%B8%D1%8E.oscr|Воспроизведение файла в коммутацию.oscr]]&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%A1%D0%B8%D0%BD%D1%82%D0%B5%D0%B7_%D1%80%D0%B5%D1%87%D0%B8_%D0%BD%D0%B0_%D0%B1%D0%B0%D0%B7%D0%B5_Google_Voice</id>
		<title>Синтез речи на базе Google Voice</title>
		<link rel="alternate" type="text/html" href="%D0%A1%D0%B8%D0%BD%D1%82%D0%B5%D0%B7_%D1%80%D0%B5%D1%87%D0%B8_%D0%BD%D0%B0_%D0%B1%D0%B0%D0%B7%D0%B5_Google_Voice"/>
				<updated>2023-03-31T11:36:21Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Быстрый старт */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Введение==&lt;br /&gt;
&lt;br /&gt;
'''Google Voice''' - сервис синтеза речи. &lt;br /&gt;
&lt;br /&gt;
Технология синтеза речи text-to-speech позволяет генерировать звуковой файл напрямую из печатного текста. Такая задача часто встречается для  озвучивание динамической информации, которая для каждого клиента индивидуальна. Озвучивание звуковых роликов синтезированным голосом будет также полезно в случае быстро меняющейся информации – это остаток товаров на складе, репертуар кинотеатров, аварийные ситуации и так далее. Синтез речи может понадобится в организации голосового меню с автоматически настраиваемыми пунктами навигации.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Быстрый старт==&lt;br /&gt;
&lt;br /&gt;
Для использования системы синтеза речи''' Google Voice''' выполните следующие действия:&lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Скачайте и импортируйте следующий сценарий. &lt;br /&gt;
&lt;br /&gt;
'''Скачать сценарий:''' [[Media:%D0%A1%D0%B8%D0%BD%D1%82%D0%B5%D0%B7_%D1%80%D0%B5%D1%87%D0%B8_Google.oscr|Синтез речи Google.oscr]] (для версий '''Oktell''' старше 2.9)&lt;br /&gt;
&lt;br /&gt;
Сценарий позволяет преобразовывать текст в звуковой файл, и воспроизводить его абоненту. &lt;br /&gt;
&lt;br /&gt;
После импорта сценария сохраните его &amp;quot;'''На сервер'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' Для использования сервиса используйте компонент &amp;quot;'''Запуск сценария'''&amp;quot; в IVR сценарии. В свойствах компонента выберите &lt;br /&gt;
* '''Тип запуска''' - Вложенный &lt;br /&gt;
* '''Сценарий''' - выберите сценарий &amp;quot;'''Синтез речи Google'''&amp;quot;&lt;br /&gt;
* '''Параметр запуска''' - введите ваш текст для воспроизведения. В примере, строка &amp;quot;''Здравствуйте! Вас приветствует компания Телефонные Системы!''&amp;quot;&lt;br /&gt;
* '''Возврат управления''' - Да&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Синтез речи Google -001.png|center]]&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%A0%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D1%87%D0%B8_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_Google_Speech_API</id>
		<title>Распознавание речи с помощью Google Speech API</title>
		<link rel="alternate" type="text/html" href="%D0%A0%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D1%87%D0%B8_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_Google_Speech_API"/>
				<updated>2023-03-31T11:31:11Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
'''Google Speech API''' - сервис распознавания голоса Google. &lt;br /&gt;
&lt;br /&gt;
Распознавание речи позволяет создавать системы автоматического обслуживания клиентов в тех случаях, когда не применимо управление с помощью тонального набора. В качестве примера можно рассмотреть сервис бронирования авиабилетов, который подразумевает выбор их большого числа городов. Тональное меню в таком сервисе не удобно, поэтому голосовое управление будет самым эффективным. Диалог между системой и абонентом может выглядеть следующим образом:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:darkred&amp;quot;&amp;gt;Система:&amp;lt;/span&amp;gt; Здравствуйте. Куда вы хотите лететь?&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;Абонент:&amp;lt;/span&amp;gt; Казань&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:darkred&amp;quot;&amp;gt;Система:&amp;lt;/span&amp;gt; Откуда вы хотите лететь?&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;Абонент:&amp;lt;/span&amp;gt; Москва&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:darkred&amp;quot;&amp;gt;Система:&amp;lt;/span&amp;gt; Назовите дату вылета&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;Абонент:&amp;lt;/span&amp;gt; 10 апреля&lt;br /&gt;
&lt;br /&gt;
Общение с таким голосовым порталом становится приближенным к обслуживанию оператором. &lt;br /&gt;
&lt;br /&gt;
Система распознавания голосовых запросов применяется во многих системах, например, для:&lt;br /&gt;
* Голосовой навигации в многоуровневых меню IVR и автоматического соединения с нужным сотрудником&lt;br /&gt;
* Распознавания адреса для доставки&lt;br /&gt;
* Автоматической голосовой аутентификации пользователей при запросе персонализированной или конфиденциальной информации по телефону или через интернет&lt;br /&gt;
* Справочной системы информационного обслуживания&lt;br /&gt;
* Корпоративной системы голосового самообслуживания клиентов (запрос баланса, проверка лицевого счета, бронирование билетов)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Система распознавания речи, как правило, состоит из следующих частей:&lt;br /&gt;
* Запись сообщения от абонента &lt;br /&gt;
* Распознавание голоса и прием текстовых данных от сервиса&lt;br /&gt;
* Анализ полученной информации и выполнение необходимых действий&lt;br /&gt;
&lt;br /&gt;
Для использования '''Google Speech API''' в вашей системе выполните следующие действия:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Скачайте и импортируйте сценарии в вашу систему '''Oktell'''.&lt;br /&gt;
&lt;br /&gt;
'''Скачать сценарий:''' [[Media:Google_Speech_API.zip|Google_Speech_API.zip]] (для версий '''Oktell''' старше 2.10)&lt;br /&gt;
&lt;br /&gt;
В архиве располагаются два сценария:&lt;br /&gt;
*'''Google_Speech_API_main''' - сценарий для записи голосового сообщения, является примером правильного использования сервиса распознавания в главном сценарии.&lt;br /&gt;
*'''Google_Speech_API''' - сценарий для отправки записи на сервис Google и приема распознанного сообщения.&lt;br /&gt;
&lt;br /&gt;
После импорта сценариев в '''Oktell''', сохраните их &amp;quot;'''На сервер'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ:&amp;lt;/span&amp;gt; Google Speech API — это платный продукт. В сценарии (компонент Web-запроса '''GoogleVoice''') используется пробный ключ, который может быть заблокирован в следствие определенного числа запросов. При тестах максимальное количество запросов не обнаружено. Если вы хотите приобрести платную версию Google Speech API обратитесь в поддержку Google. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Google Speech API 3.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' В модуле &amp;quot;'''Администрирование'''&amp;quot; - &amp;quot;'''Внутренние номера'''&amp;quot; добавьте внутренний номер с типом &amp;quot;'''Запуск IVR'''&amp;quot;. Выберите IVR-сценарий '''Google_Speech_API_main'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Google Speech API-001.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Нажмите &amp;quot;'''Сохранить'''&amp;quot;. Затем &amp;quot;'''Применить'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 3.''' При звонке на заданный номер (в примере, '''456'''), проговорите сообщение. В конце нажмите &amp;quot;'''*'''&amp;quot;. Через несколько секунд появятся уведомления с распознанным текстом. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Google Speech API-002.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Полученный текст передается в переменной '''text''', которую затем можно проанализировать и выполнить необходимые действия. Используйте пример  '''Google_Speech_API_main''' для использования сервиса распознавания в главном сценарии.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Google Speech API 4.png|center]]&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%A0%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D1%87%D0%B8_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_Yandex_SpeechKit_%D0%A1loud</id>
		<title>Распознавание речи с помощью Yandex SpeechKit Сloud</title>
		<link rel="alternate" type="text/html" href="%D0%A0%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D1%87%D0%B8_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_Yandex_SpeechKit_%D0%A1loud"/>
				<updated>2023-03-31T11:30:12Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Yandex_ASR_Cloud.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://cloud.yandex.ru/services/speechkit '''Yandex SpeechKit '''] – сервис распознавания и синтеза речи платформы Яндекс.Облако, который позволяет оптимизировать обработку звонков абонентов с помощью голосового управления IVR сценариями. Работает на базе разработанной в Яндексе технологии распознавания речи&lt;br /&gt;
&lt;br /&gt;
Это платный модуль, для использования которого необходимо заключить договор с Яндексом. Стоимость зависит от количества запросов в сутки. Ознакомьтесь с [https://cloud.yandex.ru/docs/speechkit/pricing Правилами тарификации для Yandex SpeechKit]&lt;br /&gt;
&lt;br /&gt;
Документация по API распознавания и синтеза речи Yandex SpeechKit доступна на сайте [https://cloud.yandex.ru/docs/speechkit/ Yandex SpeechKit]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Распознавание речи позволяет создавать системы автоматического обслуживания клиентов в тех случаях, когда &amp;lt;u&amp;gt;управление с помощью тонального набора неудобно&amp;lt;/u&amp;gt;. В качестве примера можно рассмотреть сервис бронирования авиабилетов, который подразумевает выбор из большого числа городов. Тональное меню в таком сервисе не удобно, поэтому голосовое управление будет самым эффективным. Диалог между системой и абонентом может выглядеть следующим образом:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:darkred&amp;quot;&amp;gt;Система:&amp;lt;/span&amp;gt; Здравствуйте. Куда вы хотите лететь?&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;Абонент:&amp;lt;/span&amp;gt; Казань&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:darkred&amp;quot;&amp;gt;Система:&amp;lt;/span&amp;gt; Откуда вы хотите лететь?&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;Абонент:&amp;lt;/span&amp;gt; Москва&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:darkred&amp;quot;&amp;gt;Система:&amp;lt;/span&amp;gt; Назовите дату вылета&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;Абонент:&amp;lt;/span&amp;gt; 10 апреля&lt;br /&gt;
&lt;br /&gt;
Общение с таким голосовым порталом становится приближенным к обслуживанию оператором. &lt;br /&gt;
&lt;br /&gt;
Распознавание голосовых запросов применяется во многих системах, например, для:&lt;br /&gt;
* Голосовой навигации в многоуровневых меню IVR и автоматического соединения с нужным сотрудником&lt;br /&gt;
* Распознавания адреса для доставки&lt;br /&gt;
* Автоматической голосовой аутентификации пользователей при запросе персонализированной или конфиденциальной информации по телефону или через интернет&lt;br /&gt;
* Справочной системы информационного обслуживания&lt;br /&gt;
* Корпоративной системы голосового самообслуживания клиентов (запрос баланса, проверка лицевого счета, бронирование билетов)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Внедрение такой системы позволит автоматизировать определенные задачи по обработке входящих звонков,  упростит взаимодействие клиента с системой и сократит суммарное время ожидания клиента на линии. Тем самым в вашей компании будут высвобождены значительные ресурсы операторов, что позволит распределить на другие не менее важные задачи. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Система распознавания речи, как правило, состоит из следующих частей:&lt;br /&gt;
# Запись сообщения от абонента &lt;br /&gt;
# Распознавание речи и прием текстовых данных от сервиса&lt;br /&gt;
# Анализ полученной информации и выполнение необходимых действий&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;span style=&amp;quot;color:lightblack&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
'''''По вопросам реализации данной функции на базе вашей АТС, а также приобретения продуктов Oktell &lt;br /&gt;
&lt;br /&gt;
'''''обращайтесь в отдел продаж ООО &amp;quot;Телефонные Системы&amp;quot;: +7 (495) 229-49-89, mail@oktell.ru.&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для использования '''Yandex SpeechKit''' в вашей системе выполните следующие действия:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 1.''' Получить авторизационные данные на использование сервиса Yandex SpeechKit.&lt;br /&gt;
* Выполните шаги 1-5 [https://cloud.yandex.ru/docs/speechkit/concepts/auth инструкции] по авторизации в API для получения идентификатора каталога&lt;br /&gt;
* [https://passport.yandex.ru/auth Войдите] в ваш аккаунт на Яндексе или Яндекс.Коннекте&lt;br /&gt;
* Получите OAuth-токен в сервисе Яндекс.OAuth. Для этого перейдите по [https://oauth.yandex.ru/authorize?response_type=token&amp;amp;client_id=1a6990aa636648e9b2ef855fa7bec2fb ссылке], нажмите '''Разрешить''' и скопируйте полученный OAuth-токен.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 2.''' Перейдите в '''Администрирование''' / '''Общие настройки''' / '''Распознавание речи Yandex SpeechKit Cloud'''. Введите полученные значения '''OAuth-токен''' и '''Идентификатор каталога''' в соответствующие поля&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Yandex ASR Cloud 001.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Нажмите &amp;quot;'''Сохранить'''&amp;quot;. Теперь вы можете использовать распознавание речи в сценариях. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 3.''' Для примера покажем простейшую маршрутизацию, основанную на распознавании речи. Сценарий выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Yandex ASR Cloud 002.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Компонент &amp;quot;'''Приветствие'''&amp;quot;&amp;lt;/u&amp;gt; - проигрывает приветственную фразу для абонента и спрашивает с кем он желает поговорить. В примере, для простоты, используется &amp;quot;'''ding.wav'''&amp;quot;. &lt;br /&gt;
*'''Режим''' - Файл полностью&lt;br /&gt;
*'''Файл''' - ding.wav&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Компонент &amp;quot;'''Распознавание речи'''&amp;quot;&amp;lt;/u&amp;gt; - новый компонент в IVR-сценариях, использующий систему Yandex SpeechKit Cloud. Позволяет распознавать речь как из заранее записанного файла, так и непосредственно из линии абонента. В примере, используется именно второй вариант. Рассмотрим настройки детальнее:&lt;br /&gt;
* '''Режим''' - Распознавание может происходить сразу из речи абонента, либо из файла. В примере, используется режим &amp;quot;'''Запись'''&amp;quot;.&lt;br /&gt;
* '''Символы прерывания''' - При нажатии на символ прерывания, введенные символы запишутся в переменную. Распознавание производиться не будет. В примере &amp;quot;'''*'''&amp;quot;.&lt;br /&gt;
* '''Буфер для DTMF''' - В компоненте можно ввести некоторое заданное количество DTMF-символов, аналогично компоненту &amp;quot;'''Преднабор'''&amp;quot;, после чего компонент прекратит распознавать текст, а сразу вернет полученную строку. В примере для введенных DTMF используется переменная '''number''' (строковая). &lt;br /&gt;
* '''Очистить буфер DTMF''' - Если да, то переменная для буфера будет заранее очищена от предыдущих значений. В примере '''Да'''.&lt;br /&gt;
* '''Макс время записи, с''' - В течении заданного количества секунд абонент должен будет либо произнести фразу, либо ввести заданное количество DTMF-символов. В примере '''5''' секунд. &lt;br /&gt;
* '''Количество символов''' - Необходимое количество DTMF-символов, которое нужно ввести. В примере, '''3''', так как предполагается, что в компании трехзначный номерной план &lt;br /&gt;
* '''Сигнал окончания''' - Сигнал, который будет воспроизведен после окончания распознавания. В примере, проигрывается файл &amp;quot;'''ding.wav'''&amp;quot;. &lt;br /&gt;
* '''Тема''' - настройка, отвечающая за тематику речи. Мы рекомендуем использовать '''queries'''. Эта тема применяется для поисковых запросов и коротких фраз (3–5 слов) на различную тематику, например &amp;quot;''а где ближайший банкомат''&amp;quot;, &amp;quot;''мне нужно заблокировать карту''&amp;quot; или &amp;quot;''соедините меня с оператором''&amp;quot;. В примере '''queries'''&lt;br /&gt;
* '''Предопределенные значения''' - компонент позволяет заранее предустановить код для распознанной фразы. В примере, это будут номера телефонов сотрудников. Таким образом, если будет произнесено &amp;quot;''Директор''&amp;quot; или &amp;quot;''С директором''&amp;quot;, определится код ответа &amp;quot;'''401'''&amp;quot;. &lt;br /&gt;
* '''Текст в переменную''' - распознанный текст может быть присвоен переменной. В примере, переменная '''parse_bestText''' (строковая).&lt;br /&gt;
* '''Код группировки в переменную''' - если распознанное выражение совпадает с каким-либо '''предопределенным значением''' (см. выше), то вы можете сохранить этот код в переменную. В примере, переменная '''group''' (строковая).&lt;br /&gt;
* '''Вероятность совпадения в переменную''' - выберите переменную для сохранения вероятности совпадения с одним из предопределенных выражений. В примере, переменная '''parse_bestConfidence''' (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Yandex ASR Cloud 003.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Компонент &amp;quot;'''Результаты'''&amp;quot;&amp;lt;/u&amp;gt; - выводит на экран результаты работы компонента &amp;quot;'''Распознавание речи'''&amp;quot;. Используется выражение &lt;br /&gt;
 'Точность '+[parse_bestConfidence]+endline+&lt;br /&gt;
 'Текст '+[parse_bestText]+endline+&lt;br /&gt;
 'Код группировки '+[group]+endline+&lt;br /&gt;
 'Введенный номер '+[number]&lt;br /&gt;
&lt;br /&gt;
Все компоненты ниже отвечают за маршрутизацию звонка, на основании полученных результатов. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Компонент &amp;quot;'''Ввели номер?'''&amp;quot;&amp;lt;/u&amp;gt; - определяет была ли введена DTMF-последовательность (внутренний номер сотрудника). &lt;br /&gt;
*Аргумент 1 - переменная '''number'''&lt;br /&gt;
*Аргумент 2 - пустая строка&lt;br /&gt;
*Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Компонент &amp;quot;'''Определилась группа?'''&amp;quot;&amp;lt;/u&amp;gt; - если номер не был введен вручную с помощью DTMF, то проверяется определился ли код распознанного текста. &lt;br /&gt;
*Аргумент 1 - переменная '''group'''&lt;br /&gt;
*Аргумент 2 - пустая строка&lt;br /&gt;
*Тип сравнения - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Компонент &amp;quot;'''number=group'''&amp;quot;&amp;lt;/u&amp;gt; - если код распознался, то переменной number присваивается значение переменной group. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Yandex ASR Cloud 005.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Компонент &amp;quot;'''Секретарь по умолчанию'''&amp;quot;&amp;lt;/u&amp;gt; - если номер, на который нужно переключить не был ни введен, ни распознан, то по умолчанию, звонок будет переключен на секретаря. Переменной '''number''' присваивается значение '''100'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Компонент &amp;quot;'''На секретаря'''&amp;quot;&amp;lt;/u&amp;gt; - отладочное уведомление для администратора, которое показывает, что был присвоен номер по умолчанию.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Компонент &amp;quot;'''Переключение на сотрудника'''&amp;quot;&amp;lt;/u&amp;gt; - компонент осуществляет переключение на сотрудника по номеру, определенному в переменной '''number'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Yandex ASR Cloud 007.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг.4.''' В модуле &amp;quot;'''Администрирование'''&amp;quot; - &amp;quot;'''Внутренние номера'''&amp;quot; добавьте внутренний номер с типом &amp;quot;'''Запуск IVR'''&amp;quot;. Выберите IVR-сценарий '''Yandex_SpeechKit_Cloud'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Нажмите &amp;quot;'''Сохранить'''&amp;quot;. Затем &amp;quot;'''Применить'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Yandex ASR Cloud 010.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 5.''' При звонке на заданный номер, проговорите сообщение. В конце нажмите &amp;quot;'''*'''&amp;quot;. Через несколько секунд появятся уведомления с распознанным текстом. Также можете проверить остальные случаи. &lt;br /&gt;
&lt;br /&gt;
'''Информация для отладки:''' Все нераспознанные фразы рекомендуется сохраняться в отдельную таблицу, а затем включать в &amp;quot;'''Предопределенные значения'''&amp;quot;. Тем самым, вы сможете распознавать большинство фраз, которые говорят ваши клиенты. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Шаг 6.'''  Если Вас устраивает тест, Вы заключаете договор с Яндексом. Отчетный период начинается с даты подписания договора. Оплата происходит по окончанию отчетного периода на основании подписанного акта.&lt;br /&gt;
&lt;br /&gt;
'''Скачать сценарий:''' [[Media:Yandex_SpeechKit_Cloud.oscr|Yandex_SpeechKit_Cloud.oscr]]&lt;br /&gt;
&lt;br /&gt;
'''Описание компонента:''' [[Компоненты_сценариев_IVR#.D0.A0.D0.B0.D1.81.D0.BF.D0.BE.D0.B7.D0.BD.D0.B0.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D1.80.D0.B5.D1.87.D0.B8|Распознавание речи]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;span style=&amp;quot;color:lightblack&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
'''''По вопросам реализации данной функции на базе вашей АТС, а также приобретения продуктов Oktell &lt;br /&gt;
&lt;br /&gt;
'''''обращайтесь в отдел продаж ООО &amp;quot;Телефонные Системы&amp;quot;: +7 (495) 229-49-89, mail@oktell.ru.&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82_%D0%B7%D0%B2%D0%BE%D0%BD%D0%BA%D0%BE%D0%B2_%D0%B8%D0%B7_%D0%BE%D1%87%D0%B5%D1%80%D0%B5%D0%B4%D0%B8</id>
		<title>Перехват звонков из очереди</title>
		<link rel="alternate" type="text/html" href="%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82_%D0%B7%D0%B2%D0%BE%D0%BD%D0%BA%D0%BE%D0%B2_%D0%B8%D0%B7_%D0%BE%D1%87%D0%B5%D1%80%D0%B5%D0%B4%D0%B8"/>
				<updated>2023-03-31T11:28:37Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Результаты работы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' Настроить внешний модуль с возможностью перехвата любого звонка, находящегося в очереди ожидания в системе '''Oktell'''. &lt;br /&gt;
&lt;br /&gt;
Задача актуальна в целях разгрузки очереди. Известно, что в часы наибольшей нагрузки в систему поступает большое количество звонков и часто доступные операторы не способны справиться с поступающим потоком абонентов. В эти моменты, супервизору может быть удобен мониторинг текущих очередей в системе и возможность перехватить абонента, который находится в очереди дольше всех. &lt;br /&gt;
&lt;br /&gt;
Функционал реализовывается во внешнем модуле с частотой обновления раз в 2 секунды. При создании сценариев было обращено особое внимание на минимальное количество обращений в базу данных с целью снижения нагрузки на сервер баз данных. &lt;br /&gt;
&lt;br /&gt;
Рассмотрим детальнее процесс реализации данной задачи.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Сценарий получения списка внешних линий===&lt;br /&gt;
&lt;br /&gt;
Сценарий предназначен для записи в '''глобальную''' переменную xml-структуры со списком всех внешних линий. Это нужно для того, чтобы не нагружать сервер БД при мониторинге, запрашивая их список. Глобальная переменная доступна во всех запускаемых сценариях. &lt;br /&gt;
&lt;br /&gt;
Сценарий рекомендуется один раз в день, например, при запуске системы (при условии, что список внешних линий не меняется в течении дня).  &lt;br /&gt;
&lt;br /&gt;
Вид сценария представлен на рисунке:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват звонков 001.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Получение списка линий'''&amp;quot;&amp;lt;/u&amp;gt; - делает запрос в БД '''Oktell''' на получение списка внешних линий в XML-формате. Используется следующий SQL-запрос:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;declare @lines xml&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set @lines = ( select SystemNumStr  from A_ServerExtLines for XML path (''))&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;select @lines as &amp;quot;lines_queus&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В параметрах SQL-запроса переменные не указываются. Запрос возвращает результат в столбце '''lines_queus''', поэтому для передачи значения в сценарии создается '''глобальная переменная''' &amp;lt;span style=&amp;quot;color:darkviolet&amp;quot;&amp;gt;'''lines_queus'''&amp;lt;/span&amp;gt;. Результат SQL-запроса '''lines_queus''' будет автоматически присвоен переменной сценария &amp;lt;span style=&amp;quot;color:darkviolet&amp;quot;&amp;gt;'''lines_queus'''&amp;lt;/span&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Если имя переменной сценария не будет совпадать с именем возвращаемого столбца в SQL-запросе, то значение не будет передано.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Замечено, что SQL-запрос не работает для версий MSSQL 2000 и ниже. Используйте следующий SQL-запрос, однако максимальный размер возвращаемой строки &amp;lt;u&amp;gt;не более 2000 символов&amp;lt;/u&amp;gt;:&lt;br /&gt;
 declare @lines nVARCHAR(4000)&lt;br /&gt;
 SET @lines = ''&lt;br /&gt;
 select @lines = @lines +'&amp;lt;SystemNumStr&amp;gt;'+ SystemNumStr + '&amp;lt;/SystemNumStr&amp;gt;'from A_ServerExtLines &lt;br /&gt;
 select @lines as &amp;quot;lines_queus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Ув1'''&amp;quot;&amp;lt;/u&amp;gt; - отладочное уведомление для вывода на экран значения в переменной &amp;lt;span style=&amp;quot;color:darkviolet&amp;quot;&amp;gt;'''lines_queus'''&amp;lt;/span&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка служебной задачи===&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы сценарий получения списка внешних линий запускался каждый раз при запуске системы, его необходимо назначить в служебную задачу. &lt;br /&gt;
*Перейдите в &amp;quot;'''Администрирование'''&amp;quot; - &amp;quot;'''Общие настройки'''&amp;quot;&lt;br /&gt;
*Перейдите на вкладку &amp;quot;'''Служебные задачи'''&amp;quot;&lt;br /&gt;
*Нажмите &amp;quot;'''Добавить'''&amp;quot;&lt;br /&gt;
*Настройте служебную задачу&lt;br /&gt;
:*'''Служебный сценарий''' - выберите служебный сценарий получения списка внешних линий. В примере, '''Очередь_Список внешних линий'''&lt;br /&gt;
:*'''Тип запуска''' - При запуске сервера &lt;br /&gt;
*Нажмите &amp;quot;'''Сохранить'''&amp;quot;&lt;br /&gt;
*Активируйте созданную служебную задачу&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Для того, чтобы глобальная переменная &amp;lt;span style=&amp;quot;color:darkviolet&amp;quot;&amp;gt;'''lines_queus'''&amp;lt;/span&amp;gt; получила список внешних линий, перезапустите сервер '''Oktell''', либо вручную запустите служебный сценарий получения списка внешних линий.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват звонков 007.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Модификация главного сценария===&lt;br /&gt;
&lt;br /&gt;
Модификация сценария заключается в добавлении в контент линии информации о переключении. Эта информация позволяет разделять абонентов в списке, видеть на какую группу операторов звонит тот или иной абонент. &lt;br /&gt;
&lt;br /&gt;
Рассмотрим упрощенный вид главного сценария. В примере перед переключением на номер отдела менеджеров (105), в контент линии абонента заносится строка &amp;quot;'''Менеджеры'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват звонков 002.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Контент линии'''&amp;quot;&amp;lt;/u&amp;gt; - добавляет информацию в контент линии. Установлены следующие настройки:&lt;br /&gt;
**'''Действие''' - Установить&lt;br /&gt;
**'''Тип объекта''' - Линия&lt;br /&gt;
**'''Ключ линии''' - Функция &amp;quot;'''Номер линии'''&amp;quot;&lt;br /&gt;
**'''Свойство/действие''' - Поле контента линии &lt;br /&gt;
**'''Значение''' - строка, например, &amp;quot;'''Менеджеры'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Переключение'''&amp;quot;&amp;lt;/u&amp;gt; - переключает абонента на пользователя или группу пользователей. Из основных настроек:&lt;br /&gt;
**'''Назначение''' - Внутрь&lt;br /&gt;
**'''Номер''' - например, '''105'''&lt;br /&gt;
**'''Очередь ожидания''' - Да&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Добавляйте или изменяйте информацию в контенте линии перед каждым переключением в вашей системе. Данная модификация также в некоторых случаях может применяться к сценарию переключения. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Сценарий мониторинга для внешнего модуля===&lt;br /&gt;
&lt;br /&gt;
Сценарий опрашивает каждую внешнюю линию из списка в глобальной переменной '''lines_queus''' и определяет находится ли линия в очереди. Если линия находится в очереди, то с помощью контента линии определяются все характеристики абонента (номер телефона, время в очереди, информации о переключении). Полученная информация в виде html-страницы выводится на экран в настроенном внешнем модуле. &lt;br /&gt;
&lt;br /&gt;
Вид сценария представлен на рисунке:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват звонков 003.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Старт 1'''&amp;quot;&amp;lt;/u&amp;gt; - в качестве параметра запуска используется переменная '''user''' (строковая). В этой переменной будет храниться ID пользователя, от имени которого запущен данный сценарий. &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''URL'''&amp;quot;&amp;lt;/u&amp;gt; - присвоение переменной URL (строковая) строки с подключением '''к вашему Web-серверу'''. Строка должна содержать &lt;br /&gt;
**базовую авторизацию (для версий '''Oktell''' старше 2.9). &lt;br /&gt;
**IP-адрес сервера '''Oktell'''&lt;br /&gt;
**Порт для подключений к Web-серверу '''Oktell'''&lt;br /&gt;
Подробнее о настройке можно прочитать в статье: [[Настройка Web-сервера Oktell]]. В примере, '''http://user1:1@192.168.0.82:4055'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Ув1'''&amp;quot;&amp;lt;/u&amp;gt; - отладочное уведомление с выводом значения глобальной переменной &amp;lt;span style=&amp;quot;color:darkviolet&amp;quot;&amp;gt;'''lines_queus'''&amp;lt;/span&amp;gt; и переменной '''user'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Id=1'''&amp;quot;&amp;lt;/u&amp;gt; - присваивает переменной '''id''' (число) значение '''1'''. Переменная '''id''' будет счетчиком в цикле. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''HTML-1'''&amp;quot;&amp;lt;/u&amp;gt; - присваивает переменной '''html''' (строковая) выражение:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;'&amp;lt;html&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;head&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;title&amp;gt;Очереди&amp;lt;/title&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;function locs()&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;   document.location.href=&amp;quot;&amp;quot;;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;setTimeout(&amp;quot;locs()&amp;quot;, 2000);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;body &amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;iframe name=&amp;quot;invisible&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;table border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;font: 20px arial;&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;td&amp;gt;Абонент&amp;lt;/td&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;td&amp;gt;Набранный номер&amp;lt;/td&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;td&amp;gt;Описание&amp;lt;/td&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;td&amp;gt;Время в ожидании&amp;lt;/td&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;td&amp;gt;Порядок в очереди&amp;lt;/td&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;td&amp;gt;Перехватить&amp;lt;/td&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;/tr&amp;gt;'&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В переменной '''html''' будет содержаться html-страница, которая будет показываться во внешнем модуле. Некоторые особенности:&lt;br /&gt;
:* в строке '''''setTimeout(&amp;quot;locs()&amp;quot;, 2000);''''' вы можете поменять период автообновления страницы. Для этого замените число '''2000''' на время в миллисекундах.&lt;br /&gt;
:* в строке '''''&amp;lt;nowiki&amp;gt;&amp;lt;table border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;font: 20px arial;&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;''''' вы можете поменять размер шрифта. Для этого измените выражение '''20px'''. &lt;br /&gt;
:* с помощью тега '''&amp;lt;nowiki&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/nowiki&amp;gt;''' вы сможете добавить или удалить столбцы в показываемой форме&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Rowcount'''&amp;quot;&amp;lt;/u&amp;gt; - определяет количество внешних линий (тег ''&amp;lt;SystemNumStr&amp;gt;'') в XML-структуре '''lines_queues'''. В парсере определяются следующие настройки:&lt;br /&gt;
:* '''Документ''' - глобальная переменная &amp;lt;span style=&amp;quot;color:darkviolet&amp;quot;&amp;gt;'''lines_queus'''&amp;lt;/span&amp;gt;&lt;br /&gt;
:* '''Алгоритм''' - Язык OQuery для HTML&lt;br /&gt;
:* '''Поисковый запрос''' - '''SystemNumStr'''&lt;br /&gt;
:* '''Функция''' - Количество элементов&lt;br /&gt;
:* '''Результат в переменную''' - переменная '''rowcount''' (число) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Id&amp;gt;Rowcount'''&amp;quot;&amp;lt;/u&amp;gt; - определяет просмотрены ли все линии в XML-структуре. Происходит сравнение:&lt;br /&gt;
**'''Аргумент 1''' - переменная &amp;quot;'''id'''&amp;quot;&lt;br /&gt;
**'''Аргумент 2''' - переменная &amp;quot;'''rowcount'''&amp;quot;&lt;br /&gt;
**'''Тип сравнения''' - &amp;quot;'''&amp;gt;'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Line'''&amp;quot;&amp;lt;/u&amp;gt; - определяет содержимое тега ''&amp;lt;SystemNumStr&amp;gt;'' с номером id из XML-структуры. Результатом является номер линии. &lt;br /&gt;
:* '''Документ''' - глобальная переменная &amp;lt;span style=&amp;quot;color:darkviolet&amp;quot;&amp;gt;'''lines_queus'''&amp;lt;/span&amp;gt;&lt;br /&gt;
:* '''Алгоритм''' - Язык OQuery для HTML&lt;br /&gt;
:* '''Поисковый запрос''' - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''SystemNumStr'''&amp;lt;/span&amp;gt;&lt;br /&gt;
:* '''Функция''' - Содержимое&lt;br /&gt;
:* '''Номер элемента''' - переменная '''id'''&lt;br /&gt;
:* '''Результат в переменную''' - переменная '''line''' (строковая) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Позиция в очереди'''&amp;quot;&amp;lt;/u&amp;gt; - определяется текущая позиция в очереди у выбранной линии.&lt;br /&gt;
**'''Действие''' - Определить&lt;br /&gt;
**'''Тип объекта''' - Линия&lt;br /&gt;
**'''Ключ линии''' - переменная &amp;quot;'''line'''&amp;quot;&lt;br /&gt;
**'''Функция''' - Текущая позиция в очереди&lt;br /&gt;
**'''Значение в переменную''' - переменная &amp;quot;'''prioritet'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:Линии, которые не участвуют в коммутации имеют значение позиции &amp;quot;-1&amp;quot;. Значение позиции &amp;quot;0&amp;quot; обозначает, что в данный момент линия коммутируется с  конкретным объектом (например, групповой номер менеджеров). Значение позиции &amp;quot;1&amp;quot;, &amp;quot;2&amp;quot; и т.д. обозначают, что линия находится в очереди и ожидает освобождения объекта.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Позиция &amp;gt;=0'''&amp;quot;&amp;lt;/u&amp;gt; - производит отсев линий, которые не участвуют в коммутации. Происходит сравнение:&lt;br /&gt;
**'''Аргумент 1''' - переменная &amp;quot;'''prioritet'''&amp;quot;&lt;br /&gt;
**'''Аргумент 2''' - число &amp;quot;'''0'''&amp;quot;&lt;br /&gt;
**'''Тип сравнения''' - &amp;quot;'''&amp;gt;='''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Контент линии'''&amp;quot;&amp;lt;/u&amp;gt; - определяет контент выбранной линии в XML-формате. С помощью контента линии можно определить все параметры соединения. &lt;br /&gt;
**'''Действие''' - Определить&lt;br /&gt;
**'''Тип объекта''' - Линия&lt;br /&gt;
**'''Ключ линии''' - переменная &amp;quot;'''line'''&amp;quot;&lt;br /&gt;
**'''Функция''' - Контент линии (XML)&lt;br /&gt;
**'''Значение в переменную''' - переменная &amp;quot;'''content_of_line'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Замечено, что на версиях 2.9 и ниже контент линии сохраняется в виде, например &amp;lt;![CDATA[Менеджеры]]&amp;gt;. Чтобы выделить нужную информацию используйте компонент с выражением: &amp;lt;/span&amp;gt; &lt;br /&gt;
 Remove( Remove( [content_of_line], Len( [content_of_line] )-3, 3 ),0 , 9 )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Ув2'''&amp;quot;&amp;lt;/u&amp;gt; - отладочное уведомление для вывода значения переменной &amp;quot;'''content_of_line'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Description'''&amp;quot;&amp;lt;/u&amp;gt; - определяет из контента линии информацию по соединению, которая задается в главном сценарии (см.выше) и помещает значение в переменную '''description'''. &lt;br /&gt;
:* '''Документ''' - переменная '''content_of_line'''&lt;br /&gt;
:* '''Алгоритм''' - Язык OQuery для HTML&lt;br /&gt;
:* '''Поисковый запрос''' - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''call&amp;gt;property_cdata[key=&amp;quot;custominfo&amp;quot;]'''&amp;lt;/span&amp;gt;&lt;br /&gt;
:* '''Функция''' - Содержимое&lt;br /&gt;
:* '''Номер элемента''' - не указан&lt;br /&gt;
:* '''Результат в переменную''' - переменная '''description''' (строковая) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Timestart'''&amp;quot;&amp;lt;/u&amp;gt; - определяет из контента линии время постановки в очередь. &lt;br /&gt;
:* '''Документ''' - переменная '''content_of_line'''&lt;br /&gt;
:* '''Алгоритм''' - Язык OQuery для HTML&lt;br /&gt;
:* '''Поисковый запрос''' - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''commutation:last&amp;gt;property_simple[key=&amp;quot;timestart&amp;quot;]'''&amp;lt;/span&amp;gt;&lt;br /&gt;
:* '''Функция''' - Значение атрибута&lt;br /&gt;
:* '''Номер элемента''' - не указан&lt;br /&gt;
:* '''Атрибут''' - строка &amp;quot;'''value'''&amp;quot;&lt;br /&gt;
:* '''Результат в переменную''' - переменная '''timestart''' (строковая) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''CallerID'''&amp;quot;&amp;lt;/u&amp;gt; - определяет из контента линии номер абонента (CallerID)&lt;br /&gt;
:* '''Документ''' - переменная '''content_of_line'''&lt;br /&gt;
:* '''Алгоритм''' - Язык OQuery для HTML&lt;br /&gt;
:* '''Поисковый запрос''' - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''call&amp;gt;property_simple[key=&amp;quot;callerid&amp;quot;]'''&amp;lt;/span&amp;gt;&lt;br /&gt;
:* '''Функция''' - Значение атрибута&lt;br /&gt;
:* '''Номер элемента''' - не указан&lt;br /&gt;
:* '''Атрибут''' - строка &amp;quot;'''value'''&amp;quot;&lt;br /&gt;
:* '''Результат в переменную''' - переменная '''callerid''' (строковая) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''CalledID'''&amp;quot;&amp;lt;/u&amp;gt; - определяет из контента линии набранный номер (CalledID)&lt;br /&gt;
:* '''Документ''' - переменная '''content_of_line'''&lt;br /&gt;
:* '''Алгоритм''' - Язык OQuery для HTML&lt;br /&gt;
:* '''Поисковый запрос''' - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''call&amp;gt;property_simple[key=&amp;quot;calledid&amp;quot;]'''&amp;lt;/span&amp;gt;&lt;br /&gt;
:* '''Функция''' - Значение атрибута&lt;br /&gt;
:* '''Номер элемента''' - не указан&lt;br /&gt;
:* '''Атрибут''' - строка &amp;quot;'''value'''&amp;quot;&lt;br /&gt;
:* '''Результат в переменную''' - переменная '''calledid''' (строковая) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''TimeInQueu'''&amp;quot;&amp;lt;/u&amp;gt; - определение продолжительности нахождения абонента в очереди. В компоненте переменной '''timeinqueu''' присваивается выражение &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''datediff(ss,datetime([timestart]),now)'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Ув3'''&amp;quot;&amp;lt;/u&amp;gt; - отладочное уведомление для вывода всех найденных значений из контента линии.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''HTML-2'''&amp;quot;&amp;lt;/u&amp;gt; - добавляет в HTML страницу строку с информацией об абоненте. В компоненте происходит присвоение переменной '''html''' выражения &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[html]+endline+&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;'&amp;lt;tr&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;td&amp;gt;'+[callerid]+'&amp;lt;/td&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;td&amp;gt;'+[calledid]+'&amp;lt;/td&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;td&amp;gt;'+[description]+'&amp;lt;/td&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;td&amp;gt;'+[timeinqueu]+'&amp;lt;/td&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;td&amp;gt;'+[prioritet]+'&amp;lt;/td&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;td&amp;gt;&amp;lt;a target=&amp;quot;invisible&amp;quot; href=&amp;quot;'+[URL]+'/execsvcscriptplain?name=Очередь_Перехват&amp;amp;startparam1='+[line]+'&amp;amp;startparam2='+[user]+'&amp;amp;async=0&amp;amp;timeout=10&amp;quot;&amp;gt;Перехватить&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;/tr&amp;gt;'&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В последней колонке используется метод '''execsvcscriptplain''' серверного HTTP интерфейса, который запускает служебный сценарий для вывода звонка из очереди с последующим перехватом. Этому сценарию передаются два стартовых параметра - '''line''' (какую линию надо перехватить) и '''user''' (на какого пользователя переключить). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Id++'''&amp;quot;&amp;lt;/u&amp;gt; - инкрементирует счетчик '''Id'''. На следующей ветке цикла происходят те же действия со следующей линией. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''HTML-3'''&amp;quot;&amp;lt;/u&amp;gt; - завершает генерацию HTML-страницы. Переменной '''html''' присваивается выражение&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[html]+endline+'&amp;lt;/table&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;/html&amp;gt;'&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Ув4'''&amp;quot;&amp;lt;/u&amp;gt; - отладочное уведомление для вывода сгенерированной html-страницы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Возвращаемое значение'''&amp;quot;&amp;lt;/u&amp;gt; - передача html-страницы во внешний модуль. В компоненте служебной переменной '''Возвращаемое значение 1 (строка)''' присваивается значение '''html'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка внешнего модуля ===&lt;br /&gt;
&lt;br /&gt;
Сценарий мониторинга назначается на запуск внешнего модуля с помощью серверного HTTP-интерфейса. &lt;br /&gt;
&lt;br /&gt;
* Перейдите в раздел &amp;quot;'''Администрирование'''&amp;quot; - &amp;quot;'''Внешние модули'''&amp;quot;. &lt;br /&gt;
* Перейдите на вкладку &amp;quot;'''Разделы меню'''&amp;quot;&lt;br /&gt;
* Нажмите кнопку &amp;quot;'''Добавить'''&amp;quot;&lt;br /&gt;
* Настройте свойства внешнего модуля. Основные настройки:&lt;br /&gt;
:*'''Тип:''' Веб-страница&lt;br /&gt;
:*'''Адрес страницы веб-сервиса:''' Используется метод '''execsvcscriptplain''', на вход которого передается параметр '''[user_guid]''' (ID пользователя). Укажите базовую авторизацию и IP-адрес Web-сервера '''Oktell'''. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://user1:1@192.168.0.82:4055/execsvcscriptplain?name=Очередь_Мониторинг&amp;amp;startparam1=[user_guid]&amp;amp;async=0&amp;amp;timeout=10&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Назначьте права доступа на соответствующей вкладке&lt;br /&gt;
*Нажмите &amp;quot;'''Сохранить'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Для появления внешнего модуля, необходимо перезапустить клиентское приложение. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват звонков 006.png|center|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Сценарий перехвата===&lt;br /&gt;
&lt;br /&gt;
Сценарий перехвата запускается, когда пользователь системы нажал кнопку &amp;quot;'''Перехватить'''&amp;quot; во внешнем модуле. Данный служебный сценарий предназначен для вывода линии из очереди с помощью &amp;quot;Мягкого сброса&amp;quot;. В процессе работы сценарий добавляет отличительную информацию в контент линии. После работы мягкого сброса, линия попадает в ''сценарий вместо отбоя внешней линии''.&lt;br /&gt;
&lt;br /&gt;
Ниже представлен вид сценария:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват звонков 004.png|center]]&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Старт 1'''&amp;quot;&amp;lt;/u&amp;gt; - в качестве входного параметра используется переменная '''line''' (строковая). В переменной будет содержаться номер линии, которую нужно перехватить.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''user'''&amp;quot;&amp;lt;/u&amp;gt; - присваивает переменной '''user''' (строковая) значение функции &amp;quot;'''Входной параметр 2'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Все входные параметры передаются в web-запросе при нажатии на кнопку &amp;quot;'''Перехватить'''&amp;quot; (см.выше)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Ув1'''&amp;quot;&amp;lt;/u&amp;gt; - отладочное уведомление с выводом стартовых параметров '''line''' и '''user'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Получить Content'''&amp;quot;&amp;lt;/u&amp;gt; - определяет контент линии для последующего добавления служебной информации. &lt;br /&gt;
**'''Действие''' - Определить&lt;br /&gt;
**'''Тип объекта''' - Линия&lt;br /&gt;
**'''Ключ линии''' - переменная &amp;quot;'''line'''&amp;quot;&lt;br /&gt;
**'''Функция''' - Поле контента линии&lt;br /&gt;
**'''Значение в переменную''' - переменная &amp;quot;'''content'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Ув2'''&amp;quot;&amp;lt;/u&amp;gt; - отладочное уведомление для вывода содержание переменной '''content'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Добавление ключа'''&amp;quot;&amp;lt;/u&amp;gt; - добавляет в контент линии ключ и информацию о пользователе. Ключ нужен для того, чтобы в сценарии вместо отбоя внешней линии определить, что это именно тот абонент, которого нужно перехватить. Таким образом добавляется уникальный признак в контент линии, позволяющий отделить ее от остальной массы линий, которые попадают в сценарий. В сценарии используется '''Ключ:Перехват'''. Для удобства парсинга все данные в контенте разделяются знаком дефиса. &lt;br /&gt;
**'''Действие''' - Установить&lt;br /&gt;
**'''Тип объекта''' - Линия&lt;br /&gt;
**'''Ключ линии''' - переменная &amp;quot;'''line'''&amp;quot;&lt;br /&gt;
**'''Свойство/действие''' - Поле контента линии&lt;br /&gt;
**'''Значение''' - выражение &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''[content]+'-Ключ:Перехват-Пользователь:'+[user]'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Мягкий сброс'''&amp;quot;&amp;lt;/u&amp;gt; - производит действие &amp;quot;'''мягкий сброс'''&amp;quot; на линии '''line'''. &lt;br /&gt;
**'''Действие''' - Установить&lt;br /&gt;
**'''Тип объекта''' - Линия&lt;br /&gt;
**'''Ключ линии''' - переменная &amp;quot;'''line'''&amp;quot;&lt;br /&gt;
**'''Свойство/действие''' - Мягкий сброс&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Сценарий вместо отбоя внешней линии ===&lt;br /&gt;
&lt;br /&gt;
Сценарий IVR вместо отбоя внешней линии в данном кейсе запускается после применения действия &amp;quot;'''Мягкий сброс'''&amp;quot; к линии. Основная цель сценария - определить, что линия пришла из перехвата и переключить ее на того пользователя, который нажал кнопку &amp;quot;'''Перехватить'''&amp;quot;. Определение линии на принадлежность к перехвату определяется путем парсинга контента линии. &lt;br /&gt;
&lt;br /&gt;
Сценарий выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват звонков 005.png | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: В данном примере, если линия не относится к перехвату то отрабатывает компонент &amp;quot;'''Обрыв связи'''&amp;quot;. Если ваш ''сценарий вместо отбоя внешней линии'' сложнее, то вместо ''обрыва связи'' производите другие действия с линией. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Контент линии'''&amp;quot;&amp;lt;/u&amp;gt; - определяет контент линии&lt;br /&gt;
**'''Действие''' - Определить&lt;br /&gt;
**'''Тип объекта''' - Линия&lt;br /&gt;
**'''Ключ линии''' - функция &amp;quot;'''Номер линии'''&amp;quot;&lt;br /&gt;
**'''Функция''' - Поле контента линии&lt;br /&gt;
**'''Значение в переменную''' - переменная &amp;quot;'''Контент'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Ув1'''&amp;quot;&amp;lt;/u&amp;gt; - отладочное уведомление для вывода значения переменной &amp;quot;'''Контент'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Контент пустой?'''&amp;quot;&amp;lt;/u&amp;gt; - если переменная &amp;quot;'''Контент'''&amp;quot; пустая, то линия не относится к перехвату. В компоненте происходит сравнение:&lt;br /&gt;
**'''Аргумент 1''' - переменная &amp;quot;'''Контент'''&amp;quot;&lt;br /&gt;
**'''Аргумент 2''' - пустая строка&lt;br /&gt;
**'''Тип сравнения''' - &amp;quot;'''&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Определить ключ'''&amp;quot;&amp;lt;/u&amp;gt; - если контент линии не пустой, это еще не означает, что линия относится к перехвату. В данном компоненте определяется ключ, находящийся в линии. Используются регулярные выражения. &lt;br /&gt;
:* '''Документ''' - переменная '''Контент'''&lt;br /&gt;
:* '''Алгоритм''' - Регулярные выражения&lt;br /&gt;
:* '''Поисковый запрос''' - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''-Ключ:([^/-]+)'''&amp;lt;/span&amp;gt;&lt;br /&gt;
:* '''Функция''' - Содержимое&lt;br /&gt;
:* '''Номер элемента''' - 0&lt;br /&gt;
:* '''Результат в переменную''' - переменная '''Ключ''' (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Ключ=Перехват?'''&amp;quot;&amp;lt;/u&amp;gt; - определяет содержится ли в переменной &amp;quot;'''Ключ'''&amp;quot; значение &amp;quot;Перехват&amp;quot;. &lt;br /&gt;
**'''Аргумент 1''' - переменная &amp;quot;'''Ключ'''&amp;quot;&lt;br /&gt;
**'''Аргумент 2''' - строка &amp;quot;'''Перехват'''&amp;quot;&lt;br /&gt;
**'''Тип сравнения''' - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Определить user'''&amp;quot;&amp;lt;/u&amp;gt; - определяет из контента линии ID пользователя, на которого нужно переключить. &lt;br /&gt;
:* '''Документ''' - переменная '''Контент'''&lt;br /&gt;
:* '''Алгоритм''' - Регулярные выражения&lt;br /&gt;
:* '''Поисковый запрос''' - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;'''-Пользователь:([^/r/n]+)'''&amp;lt;/span&amp;gt;&lt;br /&gt;
:* '''Функция''' - Содержимое&lt;br /&gt;
:* '''Номер элемента''' - 0&lt;br /&gt;
:* '''Результат в переменную''' - переменная '''user''' (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Имя пользователя'''&amp;quot;&amp;lt;/u&amp;gt; - определяет по ID пользователя его имя. &lt;br /&gt;
**'''Действие''' - Определить&lt;br /&gt;
**'''Тип объекта''' - Пользователь&lt;br /&gt;
**'''Ключ пользователя''' - переменная &amp;quot;'''user'''&amp;quot;&lt;br /&gt;
**'''Функция''' - Имя пользователя&lt;br /&gt;
**'''Значение в переменную''' - переменная &amp;quot;'''user'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Замена контента'''&amp;quot;&amp;lt;/u&amp;gt; - Очищает пользовательский контент линии и записывает в него имя пользователя. &lt;br /&gt;
**'''Действие''' - Установить&lt;br /&gt;
**'''Тип объекта''' - Линия&lt;br /&gt;
**'''Ключ линии''' - функция &amp;quot;'''Номер линии'''&amp;quot;&lt;br /&gt;
**'''Свойство/действие''' - Поле контента линии&lt;br /&gt;
**'''Значение''' - переменная &amp;quot;'''user'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Пользователь на месте'''&amp;quot;&amp;lt;/u&amp;gt; - нужен для тех ситуаций, когда перехватывающий находится в состоянии &amp;quot;'''Перерыв'''&amp;quot;. С помощью данного компонента пользователь принудительно ставится в состоянии &amp;quot;'''На месте'''&amp;quot;.&lt;br /&gt;
**'''Действие''' - Установить&lt;br /&gt;
**'''Тип объекта''' - Пользователь&lt;br /&gt;
**'''Ключ пользователя''' - переменная &amp;quot;'''user'''&amp;quot;&lt;br /&gt;
**'''Свойство/действие''' - Изменить статус&lt;br /&gt;
**'''Значение''' - '''1'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Номер пользователя'''&amp;quot;&amp;lt;/u&amp;gt; - определяет внутренний номер пользователя, на который затем будет переключаться абонент.&lt;br /&gt;
**'''Действие''' - Определить&lt;br /&gt;
**'''Тип объекта''' - Пользователь&lt;br /&gt;
**'''Ключ пользователя''' - переменная &amp;quot;'''user'''&amp;quot;&lt;br /&gt;
**'''Функция''' - Внутренний номер&lt;br /&gt;
**'''Значение в переменную''' - переменная &amp;quot;'''Номер'''&amp;quot; (строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''Ув2'''&amp;quot;&amp;lt;/u&amp;gt; - отладочное уведомление для вывода на экран &amp;quot;'''Номер'''&amp;quot; и &amp;quot;'''user'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;u&amp;gt;Компонент &amp;quot;'''На пользователя '''&amp;quot;&amp;lt;/u&amp;gt; - соединение абонента и перехватывающего пользователя. &lt;br /&gt;
** '''Назначение''' - Внутрь&lt;br /&gt;
** '''Номер''' - Номер&lt;br /&gt;
** '''Очередь ожидания''' - Да&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Включенная очередь ожидания позволяет перехватывать неограниченное количество абонентов. Все абоненты попадут в очередь к перехватывающему. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: В сценарии не рассматривается обработка неудачного соединения. Вы можете самостоятельно назначить соответствующие переходы (Занято, Не отвечает, Отсутствует и т.д.), если в этом возникнет необходимость&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Результаты работы ===&lt;br /&gt;
&lt;br /&gt;
При открытии внешнего модуля пользователь видит таблицу со всеми абонентами, ожидающими в очередях:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват звонков 008.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
При нажатии на кнопку &amp;quot;'''Перехватить'''&amp;quot; пользователь соединяется с абонентом. При этом пользователь может находиться в состоянии &amp;quot;'''Перерыв'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Пользователь '''Oktell''' во время разговора может добавить в свою очередь ожидания еще несколько абонентов. В описании будет отмечено к какому пользователю относится очередь.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Перехват звонков 009.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сценарий можно доработать таким образом, чтобы пользователи '''Oktell''' могли видеть только определенные очереди ожидания. Например, супервизор А  видит всех абонентов кто звонит в отдел менеджеров, а супервизор Б только тех, кто звонит в отдел технической поддержки. Для этого необходимо внести дополнительные условия в сценарий мониторинга.&lt;br /&gt;
&lt;br /&gt;
Внешний модуль может быть доступен только определенным пользователям. Для этого необходимо настроить права доступа для модуля. &lt;br /&gt;
&lt;br /&gt;
'''Скачать сценарии:''' [[Media:%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82_%D0%B8%D0%B7_%D0%BE%D1%87%D0%B5%D1%80%D0%B5%D0%B4%D0%B8.zip|Перехват из очереди.zip]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Основные моменты при установке:&amp;lt;/u&amp;gt;&lt;br /&gt;
#Импортируйте сценарии &lt;br /&gt;
#Модифицируйте главный сценарий, согласно примеру&lt;br /&gt;
#Настройте служебную задачу получения списка внешних линий&lt;br /&gt;
#Добавьте в сценарий мониторинга ваш URL для подключения к '''Web-серверу Oktell'''&lt;br /&gt;
#Настройте внешний модуль, согласно инструкции (см.выше)&lt;br /&gt;
#Перезагрузите сервер '''Oktell'''&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D0%BE%D1%84%D0%B8%D1%81%D0%B0</id>
		<title>Определение графика работы офиса</title>
		<link rel="alternate" type="text/html" href="%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D0%BE%D1%84%D0%B8%D1%81%D0%B0"/>
				<updated>2023-03-31T11:27:34Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Реализация для версий Oktell ниже 2.9 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
В общих настройках есть следующий пункт: '''Общие настройки'''-&amp;gt;'''График работы офиса'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:ГрафикОфиса.PNG|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Часто возникает вопрос как можно проверить, например, в главном IVR сценарии, соответствует ли текущее время графику работы офиса или нет. &lt;br /&gt;
&lt;br /&gt;
Сами данные по графику хранятся в таблице '''[oktell_settings].[dbo].[A_Settings]''' в виде xml-структур в строках с ключами: &lt;br /&gt;
*&amp;lt;nowiki&amp;gt;us~~~~o_WorkTime&amp;lt;/nowiki&amp;gt; (рабочее время), &lt;br /&gt;
*&amp;lt;nowiki&amp;gt;usd~~~o_Holidays&amp;lt;/nowiki&amp;gt; (праздники) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Реализация с помощью статуса объекта ==&lt;br /&gt;
&lt;br /&gt;
Для версий '''Oktell''' старше '''2.9 131126''' определение рабочего времени доступно в сценариях с помощью компонента &amp;quot;'''Статус объекта'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:График работы офиса -002.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В компоненте настраиваются следующие параметры:&lt;br /&gt;
*'''Действие''' - Определить&lt;br /&gt;
*'''Тип объекта''' - Сервер&lt;br /&gt;
*'''Функция''' - Рабочее время по графику офиса&lt;br /&gt;
*'''Параметр''' - текущее время (или время, за которое проверяем график работы офиса). В примере используется функция &amp;quot;'''Текущие дата и время'''&amp;quot;. &lt;br /&gt;
*'''Значение в переменную''' - выберите переменную для хранения результата. &lt;br /&gt;
&lt;br /&gt;
Результатом является число '''1''', если время в параметре соответствует графику работы офиса и '''0''' - если не соответствует. Функция проверяет график работы офиса и праздничные дни. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Реализация для версий Oktell ниже 2.9==&lt;br /&gt;
&lt;br /&gt;
Для версий ниже 2.9 131126 можно создать сценарий, возвращающий '''1''' - время соответствует графику офиса, '''0''' - не соответствует и запускать его как вложенный. Сами xml-структуры разбираются парсером '''Oktell'''. Для графика работы офиса (в сценарии-примере):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Количество записей для дня недели:&amp;lt;/strong&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''''&amp;gt;Period[WeekDay='+[деньнедели]+']''''&amp;lt;/span&amp;gt;, где '''[деньнедели]''' - переменная содержащая день недели в числовой форме: Понедельник=1, Вторник=2,.. Суббота=6, Воскресенье=0. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Период работы офиса в течении дня:&amp;lt;/strong&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''''&amp;gt;Period[WeekDay='+[деньнедели]+']:eq('+Str( [количество] )+')''''&amp;lt;/span&amp;gt;, где '''[количество]''' - номер по порядку периода работы офиса в течении дня (например, офис работает с 9.00 до 12.00 и с 13.00 до 18.00 - имеем 2 периода).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В нижеприведенном примере проверяется только график, праздники не проверяются):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:График работы офиса -001.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Представленный сценарий является служебным. Чтобы использовать его в главном сценарии используйте IVR-версию&lt;br /&gt;
&lt;br /&gt;
'''Скачать служебный сценарий:''' [[Media:ГрафикРаботыОфиса.oscr|ГрафикРаботыОфиса.oscr]] (для версий '''Oktell''' старше 2.6)&lt;br /&gt;
&lt;br /&gt;
'''Скачать IVR сценарий:'''  [[Media:%D0%93%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%D0%9E%D1%84%D0%B8%D1%81%D0%B0IVR.oscr|ГрафикРаботыОфисаIVR.oscr‎]] (для версий '''Oktell''' старше 2.9 131007)&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D0%BE%D1%84%D0%B8%D1%81%D0%B0</id>
		<title>Определение графика работы офиса</title>
		<link rel="alternate" type="text/html" href="%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D0%BE%D1%84%D0%B8%D1%81%D0%B0"/>
				<updated>2023-03-31T11:26:19Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Реализация для версий Oktell ниже 2.9 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
В общих настройках есть следующий пункт: '''Общие настройки'''-&amp;gt;'''График работы офиса'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:ГрафикОфиса.PNG|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Часто возникает вопрос как можно проверить, например, в главном IVR сценарии, соответствует ли текущее время графику работы офиса или нет. &lt;br /&gt;
&lt;br /&gt;
Сами данные по графику хранятся в таблице '''[oktell_settings].[dbo].[A_Settings]''' в виде xml-структур в строках с ключами: &lt;br /&gt;
*&amp;lt;nowiki&amp;gt;us~~~~o_WorkTime&amp;lt;/nowiki&amp;gt; (рабочее время), &lt;br /&gt;
*&amp;lt;nowiki&amp;gt;usd~~~o_Holidays&amp;lt;/nowiki&amp;gt; (праздники) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Реализация с помощью статуса объекта ==&lt;br /&gt;
&lt;br /&gt;
Для версий '''Oktell''' старше '''2.9 131126''' определение рабочего времени доступно в сценариях с помощью компонента &amp;quot;'''Статус объекта'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:График работы офиса -002.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В компоненте настраиваются следующие параметры:&lt;br /&gt;
*'''Действие''' - Определить&lt;br /&gt;
*'''Тип объекта''' - Сервер&lt;br /&gt;
*'''Функция''' - Рабочее время по графику офиса&lt;br /&gt;
*'''Параметр''' - текущее время (или время, за которое проверяем график работы офиса). В примере используется функция &amp;quot;'''Текущие дата и время'''&amp;quot;. &lt;br /&gt;
*'''Значение в переменную''' - выберите переменную для хранения результата. &lt;br /&gt;
&lt;br /&gt;
Результатом является число '''1''', если время в параметре соответствует графику работы офиса и '''0''' - если не соответствует. Функция проверяет график работы офиса и праздничные дни. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Реализация для версий Oktell ниже 2.9==&lt;br /&gt;
&lt;br /&gt;
Для версий ниже 2.9 131126 можно создать сценарий, возвращающий '''1''' - время соответствует графику офиса, '''0''' - не соответствует и запускать его как вложенный. Сами xml-структуры разбираются парсером '''Oktell'''. Для графика работы офиса (в сценарии-примере):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Количество записей для дня недели:&amp;lt;/strong&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''''&amp;gt;Period[WeekDay='+[деньнедели]+']''''&amp;lt;/span&amp;gt;, где '''[деньнедели]''' - переменная содержащая день недели в числовой форме: Понедельник=1, Вторник=2,.. Суббота=6, Воскресенье=0. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Период работы офиса в течении дня:&amp;lt;/strong&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;''''&amp;gt;Period[WeekDay='+[деньнедели]+']:eq('+Str( [количество] )+')''''&amp;lt;/span&amp;gt;, где '''[количество]''' - номер по порядку периода работы офиса в течении дня (например, офис работает с 9.00 до 12.00 и с 13.00 до 18.00 - имеем 2 периода).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В нижеприведенном примере проверяется только график, праздники не проверяются):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:График работы офиса -001.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВНИМАНИЕ: Представленный сценарий является служебным. Чтобы использовать его в главном сценарии используйте IVR-версию&lt;br /&gt;
&lt;br /&gt;
'''Скачать служебный сценарий:''' [[Media:%D0%93%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%D0%9E%D1%84%D0%B8%D1%81%D0%B0.oscr|ГрафикРаботыОфиса.oscr]‎] (для версий '''Oktell''' старше 2.6)&lt;br /&gt;
&lt;br /&gt;
'''Скачать IVR сценарий:'''  [[Media:http://wiki.oktell.ru/images/e/e0/%D0%93%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%D0%9E%D1%84%D0%B8%D1%81%D0%B0IVR.oscr|ГрафикРаботыОфисаIVR.oscr‎]] (для версий '''Oktell''' старше 2.9 131007)&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D1%8B%D0%B9_%D0%B7%D0%B2%D0%BE%D0%BD%D0%BE%D0%BA_%D1%81_%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B2_%D0%BE%D1%82%D0%B2%D0%B5%D1%82_%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D0%BF%D1%83%D1%89%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BE%D1%82_Oktell</id>
		<title>Обратный звонок с мобильного в ответ на пропущенный от Oktell</title>
		<link rel="alternate" type="text/html" href="%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D1%8B%D0%B9_%D0%B7%D0%B2%D0%BE%D0%BD%D0%BE%D0%BA_%D1%81_%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B2_%D0%BE%D1%82%D0%B2%D0%B5%D1%82_%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D0%BF%D1%83%D1%89%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BE%D1%82_Oktell"/>
				<updated>2023-03-31T11:25:26Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Дополнение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
'''Задача:''' Клиенты крупных компаний часто могут обнаружить пропущенный звонок с городского номера и при попытке перезвонить попадают на голосовое меню. Становится совершенно непонятно, кто звонил и какой выбрать пункт меню. Предлагается ввести следующий пункт в меню &amp;quot;''Если вы получили пропущенный, нажмите 5''&amp;quot; и при выборе - клиент соединяется с оператором, который совершал ему звонок. &lt;br /&gt;
&lt;br /&gt;
Решение задачи состоит из следующих этапов: &lt;br /&gt;
* При звонке клиента, находится и анализируется информация по его последней коммутации. &lt;br /&gt;
* Если обнаруживается, что это был неудачный исходящий звонок, клиенту предлагается соединиться с оператором, который совершал звонок. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; ВНИМАНИЕ: Если вы не используете сценарий автодозвона, вы можете пропустить следующие три пункта и переходить к модифицированию главного сценария. &amp;lt;/span&amp;gt; Это связано с тем, что в базе данных '''Oktell''' не хранится информация по неудачным исходящим звонкам с использованием сервиса автодозвона, поэтому надо самостоятельно заносить данные в отдельную таблицу. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Создание таблицы учета неудачных исходящих по автодозвону ===&lt;br /&gt;
&lt;br /&gt;
В базе данных '''oktell''' для решения задачи используются следующие таблицы:&lt;br /&gt;
* таблица '''[oktell].[dbo].[A_Stat_Connections_1x1]'''. В ней можно найти все удачные исходящие звонки.&lt;br /&gt;
* таблица '''[oktell].[dbo].[A_Stat_FailedCalls]'''. В ней можно найти в том числе все неудачные исходящие звонки, набранные в ручном режиме.&lt;br /&gt;
&lt;br /&gt;
Этих данных недостаточно для определения последнего звонка к клиенту, так как операторы могут использовать сервис автодозвона на своем рабочем месте. В этом случае надо отдельно записывать все неудачные соединения по автодозвону в отдельную таблицу. &lt;br /&gt;
&lt;br /&gt;
Для хранения информации по всем неудачным исходящих автодозвонам создана таблица &amp;quot;'''FailedCalls_ACM'''&amp;quot; со следующими полями:&lt;br /&gt;
:*'''Id''' - номер записи в списке. Тип '''Int''', создается автоматически.&lt;br /&gt;
:*'''number''' -набираемый телефон клиента. Тип '''Nvarchar (auto)'''. &lt;br /&gt;
:*'''calldate''' - дата звонка. Тип '''Datetime'''.&lt;br /&gt;
:*'''operator''' - внутренний номер пользователя внутри АТС. '''Тип Nvarchar (auto)'''.&lt;br /&gt;
&lt;br /&gt;
=== Модификация сценария автодозвона === &lt;br /&gt;
&lt;br /&gt;
В сценарий автодозвона необходимо добавить SQL-запрос с добавлением записи о исходящем звонке в таблицу '''FailedCalls_ACM'''. По умолчанию, каждый звонок считается неудачным, проверка происходит в сценарии обработки контента по ID цепочки коммутаций. Если определяется, что это был успешный звонок, то строка удаляется из таблицы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:ОбратныйЗвонок-001.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;Старт 1&amp;quot; - в качестве параметра запуска переменная '''Номер''' (строковая). Переменная содержит набираемый номер.&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''idchain_ACM, operator'''&amp;quot; - присваивает &lt;br /&gt;
* сессионной переменной '''idchain_ACM''' (строковая) значение функции &amp;quot;'''Id сессии сценария'''&amp;quot;. Это нужно для того, чтобы определить в сценарии контента были ли коммутации по данной цепочке. &lt;br /&gt;
* переменной '''operator''' (строковая) значение функции '''Инициатор дозвона.Внутренний номер(пользователь).'''&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Дозвон'''&amp;quot; - производит дозвон на указанный номер. В компоненте установлены свойства:&lt;br /&gt;
:*'''Номер/команда''' - переменная '''Номер'''&lt;br /&gt;
:*'''Среда''' - Внешняя сеть&lt;br /&gt;
:*'''Обслуживание''' - Управляющий модуль&lt;br /&gt;
:*'''Направления''' - выберите направления&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; ВНИМАНИЕ: Успешный переход не обозначает, что оператор дозвонился до абонента. Абонент может не взять трубку, однако сценарий автодозвона будет завершен, требуется дальнейший анализ в сценарии обработки контента. &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Компонент SQL-запроса &amp;quot;'''INSERT FailedCalls_ACM'''&amp;quot; ставится по всем неудачным веткам от компонента &amp;quot;'''Дозвон'''&amp;quot; и использует следующий текст запроса:&lt;br /&gt;
&lt;br /&gt;
 update FailedCalls_ACM&lt;br /&gt;
 set calldate=getdate(),&lt;br /&gt;
 operator=@operator,&lt;br /&gt;
 idchain=@idchain&lt;br /&gt;
 where number=@number&lt;br /&gt;
 &lt;br /&gt;
 if @@rowcount=0 &lt;br /&gt;
 begin&lt;br /&gt;
 insert into FailedCalls_ACM (number,calldate, operator, idchain)&lt;br /&gt;
 values (@number, getdate(), @operator, @idchain)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
где &lt;br /&gt;
&lt;br /&gt;
*'''@idchain''' - переменная '''idchain_ACM''' (строковая). &lt;br /&gt;
*'''@number''' - переменная '''Номер''' (строковая). &lt;br /&gt;
*'''@operator''' - переменная '''operator''' (строковая). &lt;br /&gt;
&lt;br /&gt;
Запрос позволяет использовать одну строку для одного абонента. &lt;br /&gt;
&lt;br /&gt;
Если у вас более сложный сценарий, SQL-запрос добавления данных в таблицу надо поставить по неудачным веткам после каждого компонента &amp;quot;'''Дозвон'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Отладочное уведомление'''&amp;quot; - оповещает администратора о добавленных значениях в таблицу '''FailedCalls_ACM'''. Текст уведомления - выражение:&lt;br /&gt;
&lt;br /&gt;
 'добавил в базу '+endline+ '[operator] '+[operator]+endline+ '[Номер] '+[Номер]+endline+  '[idchain] '+[idchain_ACM]&lt;br /&gt;
&lt;br /&gt;
=== Служебный сценарий обработки контента ===&lt;br /&gt;
&lt;br /&gt;
В сценарии обработки контента необходимо определить были ли коммутации по автодозвону. Если коммутации были, необходимо удалить запись о неуспешном дозвоне из таблицы '''FailedCalls_ACM'''. Сценарий выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:ОбратныйЗвонок-002.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Старт 1'''&amp;quot; -  в качестве параметра запуска переменная '''content''' (строковая). Переменная содержит контент цепочки коммутаций.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''id chain'''&amp;quot; - сравнивает сессионную переменную '''idchain_ACM''' с пустой строкой. Если переменная не пустая, значит это анализ ситуации, связанной с автодозвоном.&lt;br /&gt;
:*'''Аргумент 1''' - переменная '''idchain_ACM'''&lt;br /&gt;
:*'''Аргумент 2''' - пустая строка&lt;br /&gt;
:*'''Тип сравнения''' - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Количество коммутаций'''&amp;quot; - парсер определяет количество коммутаций по контенту.&lt;br /&gt;
:*'''Документ''' - переменная '''content'''&lt;br /&gt;
:*'''Алгоритм''' - язык OQuery для HTML&lt;br /&gt;
:*'''Поисковый запрос''' - строка&lt;br /&gt;
 commutation:has([name=abonent])&amp;gt;[key=idconnection]&lt;br /&gt;
:*'''Функция''' - количество элементов&lt;br /&gt;
:*'''Результат в переменную''' - переменная '''comcount'''(строковая)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:ОбратныйЗвонок-003.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Переход к следующему компоненту происходит по основной ветке и по ветке &amp;quot;'''Ошибка'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Есть коммутации?'''&amp;quot; - определяет были ли коммутации по автодозвону. Сравнивает переменную '''comcount''' и '''0'''. &lt;br /&gt;
:*'''Аргумент 1''' - переменная '''comcount'''&lt;br /&gt;
:*'''Аргумент 2''' - строка &amp;quot;'''0'''&amp;quot;&lt;br /&gt;
:*'''Тип сравнения''' - &amp;quot;'''&amp;gt;'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
По ветке '''Ложь''', сценарий заканчивается. Это обозначает, что если коммутаций не было, их не надо удалять из таблицы. По ветке '''Правда''', необходимо удалить записи из таблицы '''FailedCalls_ACM'''. &lt;br /&gt;
&lt;br /&gt;
Для этого используется компонент &amp;quot;'''delete failedcalls_acm'''&amp;quot;. Выполняется следующий SQL-запрос. &lt;br /&gt;
&lt;br /&gt;
 delete from failedcalls_acm where idchain=@idchain&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
:*@idchain - сессионная переменная '''idchain_ACM'''.&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Отладочное уведомление'''&amp;quot; сообщает администратору об удалении записи из таблицы. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Модификация главного сценария ===&lt;br /&gt;
&lt;br /&gt;
В начало главного сценария добавляется проверка, был ли неудачный исходящий звонок на номер абонента. Если действительно был, абоненту предлагается нажать &amp;quot;'''1'''&amp;quot; для соединения с тем сотрудником, который ему звонил. &lt;br /&gt;
&lt;br /&gt;
Ниже представлена только процедура проверки. Сценарий выглядит следующим образом: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:ОбратныйЗвонок-004.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''callerid'''&amp;quot; - присваивает переменной '''callerid''' значение функции '''Номер абонента (CallerId)'''. &lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Поиск внутреннего номера'''&amp;quot; - определяет был ли неудачный звонок абоненту. Выполняется следующий SQL-запрос:&lt;br /&gt;
&lt;br /&gt;
 declare @dt1 datetime&lt;br /&gt;
 declare @dt2 datetime &lt;br /&gt;
 declare @dt3 datetime&lt;br /&gt;
 declare @u1 nvarchar(100)&lt;br /&gt;
 declare @u3 nvarchar(100)&lt;br /&gt;
 &lt;br /&gt;
 set @dt1=cast ('1900-01-01' as datetime)&lt;br /&gt;
 set @dt2=cast ('1900-01-01'  as datetime)&lt;br /&gt;
 set @dt3=cast ('1900-01-01'  as datetime)&lt;br /&gt;
 &lt;br /&gt;
 SELECT TOP 1 @dt1=[TimeStart], @u1=[AOutNumber]&lt;br /&gt;
 FROM [oktell].[dbo].[A_Stat_FailedCalls]&lt;br /&gt;
 where ANumberdialed='{'+@tel+'}' &lt;br /&gt;
 order by TimeStart desc&lt;br /&gt;
 &lt;br /&gt;
 SELECT TOP 1 @dt2=[TimeStart]&lt;br /&gt;
 FROM [oktell].[dbo].[A_Stat_Connections_1x1]&lt;br /&gt;
 where (bstr=@tel and astr!='IVR') or (Astr=@tel and bstr!='IVR')&lt;br /&gt;
 order by TimeStart desc&lt;br /&gt;
 &lt;br /&gt;
 SELECT TOP 1 @dt3=[calldate], @u3=[operator]&lt;br /&gt;
 FROM [oktell].[dbo].[FailedCalls_ACM]&lt;br /&gt;
 where number=@tel&lt;br /&gt;
 order by calldate desc&lt;br /&gt;
 &lt;br /&gt;
 IF @dt1&amp;gt;@dt2 and @dt1&amp;gt;@dt3 begin set @u=@u1  return end&lt;br /&gt;
 IF @dt2&amp;gt;@dt1 and @dt2&amp;gt;@dt3 begin set @u='-1'  return end&lt;br /&gt;
 IF @dt3&amp;gt;@dt1 and @dt3&amp;gt;@dt1 begin set @u=@u3   return end&lt;br /&gt;
&lt;br /&gt;
где &lt;br /&gt;
&lt;br /&gt;
:*@tel - переменная '''callerid'''&lt;br /&gt;
:*@u - переменная '''number''' (строковая)&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Номер не нашелся?'''&amp;quot; - определяет, нашелся или нет внутренний номер. Сравнивает переменную '''number''' и строку '''-1'''.&lt;br /&gt;
:*'''Аргумент 1''' - переменная '''number'''&lt;br /&gt;
:*'''Аргумент 2''' - строка &amp;quot;'''-1'''&amp;quot;&lt;br /&gt;
:*'''Тип сравнения''' - &amp;quot;'''='''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Если номер не найден, то произойдет переход по ветке '''Правда''' далее на главный сценарий. &lt;br /&gt;
&lt;br /&gt;
Если номер найден, то абоненту предлагается ввести '''1''', чтобы соединиться с тем оператором, кто ему звонил.&lt;br /&gt;
&lt;br /&gt;
Используется компонент преднабора &amp;quot;Введите 1&amp;quot;. Компонент имеет следующие свойства:&lt;br /&gt;
:* '''Файл''' - выберите звуковой файл, который будет проигрываться клиенту.&lt;br /&gt;
:* '''Символы прерывания''' - &amp;quot;1&amp;quot;&lt;br /&gt;
:* '''Макс время, с''' - максимальное время, в течении которого необходимо ввести число. В примере, '''5''' секунд.&lt;br /&gt;
&lt;br /&gt;
Если клиент не хочет соединиться с оператором, то через 5 секунд, произойдет переход по ветке &amp;quot;'''Таймаут'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Если клиент нажал '''1''', то произойдет переключение на оператора с номером number. &lt;br /&gt;
&lt;br /&gt;
Для этого служит компонент &amp;quot;'''Переключение на оператора'''&amp;quot;&lt;br /&gt;
:* '''Назначение''' - '''Внутрь'''&lt;br /&gt;
:* '''Номер''' - переменная '''number'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Дополнение ===&lt;br /&gt;
&lt;br /&gt;
При желании учитывать неудачные исходящие вызовы по задачам, необходимо использовать таблицу '''[oktell_cc_temp].[dbo].[A_Cube_CC_EffortConnections]''' по полю '''AbonentNumber'''. К сожалению, информацию по оператору вы не получите, но сможете перевести на группу ответственных менеджеров, которые объяснят почему они звонили данному абоненту. &lt;br /&gt;
&lt;br /&gt;
В этом случае необходимо изменить SQL-запрос &amp;quot;Номер не нашелся?&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Если вы не используете автодозвон, ситуация облегчается. В этом случае необходимо только модифицировать главный сценарий. &lt;br /&gt;
&lt;br /&gt;
'''Скачать файлы сценариев:''' [[Media:%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D1%8B%D0%B9_%D0%B7%D0%B2%D0%BE%D0%BD%D0%BE%D0%BA.zip|Обратный звонок.zip]]&lt;br /&gt;
&lt;br /&gt;
Запрос для создания таблицы '''FailedCalls_ACM''':&lt;br /&gt;
&lt;br /&gt;
 USE [oktell]&lt;br /&gt;
 GO&lt;br /&gt;
 SET ANSI_NULLS ON&lt;br /&gt;
 GO&lt;br /&gt;
 SET QUOTED_IDENTIFIER ON&lt;br /&gt;
 GO&lt;br /&gt;
 CREATE TABLE [dbo].[FailedCalls_ACM](&lt;br /&gt;
 	[Id] [int] IDENTITY(1,1) NOT NULL,&lt;br /&gt;
 	[number] [nvarchar](2000) NULL,&lt;br /&gt;
 	[calldate] [datetime] NULL,&lt;br /&gt;
 	[operator] [nvarchar](2000) NULL,&lt;br /&gt;
 	[idchain] [nvarchar](2000) NULL,&lt;br /&gt;
 PRIMARY KEY CLUSTERED &lt;br /&gt;
 (&lt;br /&gt;
 	[Id] ASC&lt;br /&gt;
 )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]&lt;br /&gt;
 ) ON [PRIMARY]&lt;br /&gt;
 GO&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B5%D0%B9_%D1%80%D0%B0%D0%B7%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D0%B2_%D0%BD%D0%B0_e-mail</id>
		<title>Отправка записей разговоров на e-mail</title>
		<link rel="alternate" type="text/html" href="%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B5%D0%B9_%D1%80%D0%B0%D0%B7%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D0%B2_%D0%BD%D0%B0_e-mail"/>
				<updated>2023-03-31T11:24:44Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Установка сценария */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Задача:''' Отправить записи разговора клиента с операторами на почту. Учесть переключения клиента между операторами. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Руководителям всех отделов, подразделений и целых предприятий бывает полезно знать как их сотрудники общаются с клиентами, верно ли они преподносят информацию о продукте, правильно ли предлагают услуги. Если не контролировать этот процесс, лояльность ваших клиентов, и их отношение к организации в целом, может упасть. &lt;br /&gt;
&lt;br /&gt;
Отследить качество клиентского обслуживания и разрешить спорные ситуации, возникающие при телефонных контактах с клиентами, поможет прослушивание аудиозаписей телефонных разговоров. В '''Oktell''' все разговоры сотрудников с клиентами записываются по умолчанию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вы так же можете настроить автоматическую отправку отчета о разговорах на вашу электронную почту. В тексте письма вы получите дату и время звонка, имя оператора, продолжительность разговора, номер телефона клиента и его оценку разговора. &lt;br /&gt;
&lt;br /&gt;
При большом количестве звонков, ваша почта может быстро переполниться, поэтому советуем настроить оповещение только в крайних случаях. Например, когда клиент поставил сотруднику оценку “'''2'''” за обслуживание. &lt;br /&gt;
&lt;br /&gt;
В таких крайних случаях крайне важно понять, почему клиент недоволен и поставил низкую оценку. Учитывая, что в компаниях клиента могут переключать от одного оператора к другому, требуется восстановить всю последовательность разговоров - от первой коммутации с секретарем до последней коммутации с ответственным оператором. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для отправки записей разговоров в сценарии используется компонент &amp;quot;'''Отправка Email'''&amp;quot;. В этом компоненте возможно прикрепить до 5 вложений. Однако встает вопрос - что делать, если клиент общался больше чем с пятью операторами (суммарное количество переключение превышает 4). Существует несколько способов решения данной задачи. &lt;br /&gt;
&lt;br /&gt;
'''Способ 1:''' В сценарии отправляются 5 записей разговора - это могут быть последние пять коммутаций клиента с оператором, или, например, первая и четыре последних коммутации. &lt;br /&gt;
&lt;br /&gt;
*'''Достоинства:''' Такие сервисы как mail.ru или gmail.com позволяют сразу проигрывать вложенные звуковые файлы, не скачивая их. Это позволяет руководителю быстро прослушать записи разговоров прямо из окна браузера, что очень удобно. &lt;br /&gt;
&lt;br /&gt;
*'''Недостатки:''' По сути, если количество коммутаций больше 5, то мы теряем часть из них. Все зависит от максимального количества переключений, которое может быть в вашей компании. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 015.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Способ 2:''' В сценарии все найденные записи разговоров запаковываются в zip-архив, который затем отправляется одним вложением в элекронном письме. &lt;br /&gt;
&lt;br /&gt;
*'''Достоинства:''' В электронном письме может быть отправлено неограниченное количество записей (ограничение идет уже от Smtp-провайдера по максимальному размеру вложений). Если клиента переключали 10 раз между различными операторами - вы получите полную историю разговоров клиента. &lt;br /&gt;
&lt;br /&gt;
*'''Недостатки:''' В отличии от первого способа, архив придется скачать и распаковать. Этот процесс может занимать некоторое время. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 016.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Способ 3:''' Комбинация первого и второго способов. Если количество найденных коммутаций больше пяти - они запаковываются в архив, если их пять или меньше - отправляются в электронном письме напрямую. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; Рекомендуется использовать третий способ как наиболее удобный. &amp;lt;/span&amp;gt; В статье данный способ рассматривается по частям на примере первого и второго способов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Сценарий прямой отправки на email ===&lt;br /&gt;
&lt;br /&gt;
Для решения задачи используется '''сценарий обработки контента'''. Сценарий выглядит следующим образом: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 001.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Старт 1'''&amp;quot; - в качестве параметра запуска переменная '''content''' (строковая). В этой переменной будет храниться контент цепочки коммутаций.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Вывод контента'''&amp;quot; - отладочное уведомление, выводит переменную '''content'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Количество коммутаций'''&amp;quot; - Парсер, определяет количество коммутаций с операторами (исключает соединение с IVR-сценариями). &lt;br /&gt;
* '''Документ''' - переменная content&lt;br /&gt;
* '''Алгоритм''' - Язык OQuery для HTML&lt;br /&gt;
* '''Поисковый запрос''' - используется следующее выражение:&lt;br /&gt;
&lt;br /&gt;
 commutation:has([name=abonent])&amp;gt;[key=idconnection]&lt;br /&gt;
&lt;br /&gt;
* '''Функция''' - Количество элементов &lt;br /&gt;
* '''Результат в переменную''' - переменная '''com_count''' ('''число'''). В переменной будет храниться количество коммутаций.&lt;br /&gt;
&lt;br /&gt;
Если парсер не находит таких коммутаций, он переходит по ветке &amp;quot;'''Ошибка'''&amp;quot;. Так как в сценарии специально не задается обработка ошибки, то сценарий просто заканчивает свое выполнение. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 002.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув1'''&amp;quot; - отладочное уведомление, выводит переменную '''com_count'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Счетчик'''&amp;quot; - присвоение переменной '''i''' (строковая) значения '''1''' (строка).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Id записи'''&amp;quot; - парсер, определяет i-й Id коммутации, по которой в дальнейшем восстанавливается путь к файлу записи. Счетчик i в дальнейшем инкрементируется, таким образом пробегаются все коммутации клиента с операторами.&lt;br /&gt;
&lt;br /&gt;
* '''Документ''' - переменная content&lt;br /&gt;
* '''Алгоритм''' - Язык OQuery для HTML&lt;br /&gt;
* '''Поисковый запрос''' - используется следующее '''выражение''':&lt;br /&gt;
&lt;br /&gt;
 'commutation:has([name=abonent])&amp;gt;[key=idconnection]:eq('+[i]+')'&lt;br /&gt;
&lt;br /&gt;
* '''Функция''' - Значение атрибута &lt;br /&gt;
* '''Атрибут''' - value&lt;br /&gt;
* '''Результат в переменную''' - переменная '''id''' (строковая). В переменной будет храниться id коммутации. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 003.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Путь к файлу'''&amp;quot; - В SQL-запросе явно прописывается в какой папке располагаются записи разговоров. Рекомендуется проверить запрос на предмет использования в вашей системе (возможно, стоит убрать ''(x86)''). Используется следующий SQL-запрос:&lt;br /&gt;
&lt;br /&gt;
 declare @aln nvarchar(10)&lt;br /&gt;
 declare @bln nvarchar(10)&lt;br /&gt;
 declare @idrecdir int&lt;br /&gt;
 declare @ts nvarchar(50)&lt;br /&gt;
 declare @path nvarchar(1000)&lt;br /&gt;
 select top 1 @aln=case when alinenum&amp;lt;blinenum then alinenum else blinenum end,&lt;br /&gt;
 @bln=case when blinenum&amp;gt;alinenum then blinenum else alinenum end,&lt;br /&gt;
 @idrecdir=idrecdir, &lt;br /&gt;
 @ts=replace(convert(nvarchar(10), TimeStart, 121),'-','_')+'__'+&lt;br /&gt;
 replace(convert(nvarchar(20), TimeStart, 114),':','_') from A_Stat_Connections_1x1&lt;br /&gt;
 where Id=@id and isrecorded=1&lt;br /&gt;
 set @path='C:\Program Files (x86)\oktell\Server\RecordedFiles\'&lt;br /&gt;
 if (@idrecdir&amp;gt;0)&lt;br /&gt;
 select @path=path from A_Stat_RecordDirectories where id=@idrecdir&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set @filename=@path+replace(substring(@ts, 1, 10),'_','')+'\'+substring(@ts, 13, 2)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 +substring(@ts, 16, 2)+'\mix_'+@aln+'_'+@bln+'__'+@ts+'.mp3'&lt;br /&gt;
&lt;br /&gt;
где &lt;br /&gt;
&lt;br /&gt;
*'''@filename''' - переменная file (строковая)&lt;br /&gt;
*'''@id''' - переменная id.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Вывод пути'''&amp;quot; - отладочное уведомление, выводит переменную '''file'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''file?'''&amp;quot; - Компонент меню производит циклическую запись в переменные '''file1''', '''file2''', '''file3''', '''file4''' и '''file5'''. &lt;br /&gt;
&lt;br /&gt;
'''Пояснение:''' Все записи разговоров требуется отправить в компоненте '''Отправка Email'''. Компонент поддерживает до 5 вложений и эти вложения необходимо каким-либо образом указывать. Поэтому используются 5 строковых переменных '''file1'''...'''file5''', в каждую из которых в ходе цикла записывается путь к записи разговора. Путь к первой записи разговора ('''i=1''') будет записан в переменную '''file1''', путь к пятой ('''i=5''') в '''file5'''. Путь к шестой записи разговора будет перезаписан в переменную '''file1''' и так далее. Таким образом при отправке электронного письма, к нему будут прикреплены последние пять коммутаций клиента. &lt;br /&gt;
&lt;br /&gt;
У компонента используются следующие настройки:&lt;br /&gt;
&lt;br /&gt;
* Аргумент - выражение &amp;quot;'''[i]%5'''&amp;quot;. Выражение возвращает остаток от деления переменной i на 5. &lt;br /&gt;
* Значения - 0, 1, 2, 3, 4. &lt;br /&gt;
&lt;br /&gt;
В зависимости, от остатка путь, содержащийся в переменной file будет записываться следующим образом:&lt;br /&gt;
&lt;br /&gt;
* по ветке 0 - путь записывается в переменную file5 (т.к. это выполнится при i=5, 10...)&lt;br /&gt;
* по ветке 1 - путь записывается в переменную file1 &lt;br /&gt;
* по ветке 2 - путь записывается в переменную file2&lt;br /&gt;
* по ветке 3 - путь записывается в переменную file3&lt;br /&gt;
* по ветке 4 - путь записывается в переменную file4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 004.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Обнуление имени файла'''&amp;quot; - переменной &amp;quot;'''file'''&amp;quot; присваивается пустая строка. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''i++'''&amp;quot; - переменной '''i''' присваивается выражение &amp;quot;'''[i]+1'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Проверка на завершение'''&amp;quot; - значение счетчика '''i''' после инкремента сравнивается с количеством коммутаций '''com_count'''. &lt;br /&gt;
* '''Аргумент 1''' - переменная '''i'''&lt;br /&gt;
* '''Аргумент 2''' - переменная '''com_count'''&lt;br /&gt;
* '''Тип сравнения''' - '''&amp;lt;='''&lt;br /&gt;
&lt;br /&gt;
Если '''правда''', то производится еще одна итерация. Переход на компонент Id записи. &lt;br /&gt;
&lt;br /&gt;
Если '''ложь''', то переход на компонент &amp;quot;'''Ув2'''&amp;quot; и в дальнейшем на отправку электронного письма.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув2'''&amp;quot; - отладочное уведомление, показывает значения переменных '''file1'''..'''file5'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Количество вложений'''&amp;quot; - нужен для того, чтобы правильно задать отправку e-mail письма. Если имеется 1 коммутация, то прикрепляется только переменная '''file1'''; если 4 коммутации, то соответственно настраиваются 4 вложения. Если коммутаций 5 и больше, то отправляются 5 вложений.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компоненты '''отправка e-mail''' настраиваются одинаковым образом: &lt;br /&gt;
* '''Способ отправки''' - настраивается smtp-сервер, данные для авторизации. &lt;br /&gt;
* '''Кому''' - адрес получателя&lt;br /&gt;
* '''От кого''' - адрес отправителя&lt;br /&gt;
* '''Тема''', '''Содержание письма''' - генерируется соответствующая информация. В содержании письма можно указать с какого номера на какой номер звонил клиент, сколько времени ожидал на линии, с какими операторами разговаривал. В данном сценарии не рассматривается. &lt;br /&gt;
* '''Вложение 1'''..'''Вложение 5''' - указываются соответствующие переменные '''file 1'''... '''file 5'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 006.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Сценарий отправки записей в zip-архиве ===&lt;br /&gt;
&lt;br /&gt;
Для решения задачи используется '''сценарий обработки контента'''. Сценарий выглядит следующим образом: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 007.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В сценарии используется внешний процесс '''7za.exe''' - консольное приложение от 7-zip (скачано по ссылке [http://www.7-zip.org/download.html http://www.7-zip.org/download.html]). Данное консольное приложение предварительно скопировано на диск '''C:\'''. &lt;br /&gt;
&lt;br /&gt;
'''Скачать приложение:''' [[Media:7za.zip|7za.zip]]&lt;br /&gt;
&lt;br /&gt;
'''Пример''' архивации двух файлов '''C:\1.mp3''' и '''C:\2.mp3''' в архив '''С:\archive.zip''':&lt;br /&gt;
&lt;br /&gt;
 C:\7za.exe a -tzip c:\archive.zip &amp;quot;C:\1.mp3&amp;quot; &amp;quot;C:\2.mp3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Далее рассматриваются компоненты сценария:&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Старт 1'''&amp;quot; - в качестве параметра запуска переменная '''content''' (строковая). В этой переменной будет храниться контент цепочки коммутаций.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Вывод контента'''&amp;quot; - отладочное уведомление, выводит переменную '''content'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Количество коммутаций'''&amp;quot; - Парсер, определяет количество коммутаций с операторами (исключает соединение с IVR-сценариями). &lt;br /&gt;
* '''Документ''' - переменная content&lt;br /&gt;
* '''Алгоритм''' - Язык OQuery для HTML&lt;br /&gt;
* '''Поисковый запрос''' - используется следующее выражение:&lt;br /&gt;
&lt;br /&gt;
 commutation:has([name=abonent])&amp;gt;[key=idconnection]&lt;br /&gt;
&lt;br /&gt;
* '''Функция''' - Количество элементов &lt;br /&gt;
* '''Результат в переменную''' - переменная '''com_count''' ('''число'''). В переменной будет храниться количество коммутаций.&lt;br /&gt;
&lt;br /&gt;
Если парсер не находит таких коммутаций, он переходит по ветке &amp;quot;'''Ошибка'''&amp;quot;. Так как в сценарии специально не задается обработка ошибки, то сценарий просто заканчивает свое выполнение. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 002.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув1'''&amp;quot; - отладочное уведомление, выводит переменную '''com_count'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''cmd'''&amp;quot; - создание командной строки для консоли '''7za.exe'''. В компоненте задано:&lt;br /&gt;
&lt;br /&gt;
* Присвоение переменной '''path'''(строковая) - выражения &lt;br /&gt;
 'c:\temp\archive'+substr(now,0,2)+substr(now,3,2)+ substr(now,8,2)+'-'+substr(now,11,2)+&lt;br /&gt;
 substr(now,14,2)+substr(now,17,2)+'.zip'&lt;br /&gt;
&lt;br /&gt;
:Переменная '''path''' содержит путь к zip-архиву. В примере, все созданные архивы будут храниться в папке &amp;quot;'''c:\temp'''&amp;quot;, ее нужно будет очищать либо вручную либо автоматически с помощью сценария. &lt;br /&gt;
&lt;br /&gt;
* Присвоение переменной '''cmd'''(строковая) - выражения &lt;br /&gt;
 'a -tzip '+[path]&lt;br /&gt;
&lt;br /&gt;
: В переменной '''cmd''' будут храниться все параметры командной строки, которые в конце сценария будут переданы программе '''7za.exe'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Счетчик'''&amp;quot; - присвоение переменной '''i''' (строковая) значения '''1''' (строка).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Id записи'''&amp;quot; - парсер, определяет i-й Id коммутации, по которой в дальнейшем восстанавливается путь к файлу записи. Счетчик i в дальнейшем инкрементируется, таким образом пробегаются все коммутации клиента с операторами.&lt;br /&gt;
&lt;br /&gt;
* '''Документ''' - переменная content&lt;br /&gt;
* '''Алгоритм''' - Язык OQuery для HTML&lt;br /&gt;
* '''Поисковый запрос''' - используется следующее '''выражение''':&lt;br /&gt;
&lt;br /&gt;
 'commutation:has([name=abonent])&amp;gt;[key=idconnection]:eq('+[i]+')'&lt;br /&gt;
&lt;br /&gt;
* '''Функция''' - Значение атрибута &lt;br /&gt;
* '''Атрибут''' - value&lt;br /&gt;
* '''Результат в переменную''' - переменная '''id''' (строковая). В переменной будет храниться id коммутации. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 011.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Путь к файлу'''&amp;quot; - В SQL-запросе явно прописывается в какой папке располагаются записи разговоров. Рекомендуется проверить запрос на предмет использования в вашей системе (возможно, стоит убрать ''(x86)''). Используется следующий SQL-запрос:&lt;br /&gt;
&lt;br /&gt;
 declare @aln nvarchar(10)&lt;br /&gt;
 declare @bln nvarchar(10)&lt;br /&gt;
 declare @idrecdir int&lt;br /&gt;
 declare @ts nvarchar(50)&lt;br /&gt;
 declare @path nvarchar(1000)&lt;br /&gt;
 select top 1 @aln=case when alinenum&amp;lt;blinenum then alinenum else blinenum end,&lt;br /&gt;
 @bln=case when blinenum&amp;gt;alinenum then blinenum else alinenum end,&lt;br /&gt;
 @idrecdir=idrecdir, &lt;br /&gt;
 @ts=replace(convert(nvarchar(10), TimeStart, 121),'-','_')+'__'+&lt;br /&gt;
 replace(convert(nvarchar(20), TimeStart, 114),':','_') from A_Stat_Connections_1x1&lt;br /&gt;
 where Id=@id and isrecorded=1&lt;br /&gt;
 set @path='C:\Program Files (x86)\oktell\Server\RecordedFiles\'&lt;br /&gt;
 if (@idrecdir&amp;gt;0)&lt;br /&gt;
 select @path=path from A_Stat_RecordDirectories where id=@idrecdir&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set @filename=@path+replace(substring(@ts, 1, 10),'_','')+'\'+substring(@ts, 13, 2)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 +substring(@ts, 16, 2)+'\mix_'+@aln+'_'+@bln+'__'+@ts+'.mp3'&lt;br /&gt;
&lt;br /&gt;
где &lt;br /&gt;
&lt;br /&gt;
*'''@filename''' - переменная file (строковая, выходная)&lt;br /&gt;
*'''@id''' - переменная id (входная, содержит ID коммутации).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Вывод пути'''&amp;quot; - отладочное уведомление, выводит переменную '''file'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''cmd+file'''&amp;quot; - добавляет найденный файл к параметрам командной строки. В компоненте переменной '''cmd''' присваивается выражение &lt;br /&gt;
&lt;br /&gt;
 [cmd]+' &amp;quot;'+[file]+'&amp;quot;'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Обнуление имени файла'''&amp;quot; - переменной &amp;quot;'''file'''&amp;quot; присваивается пустая строка. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''i++'''&amp;quot; - переменной '''i''' присваивается выражение &amp;quot;'''[i]+1'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Проверка на завершение'''&amp;quot; - значение счетчика '''i''' после инкремента сравнивается с количеством коммутаций '''com_count'''. &lt;br /&gt;
* '''Аргумент 1''' - переменная '''i'''&lt;br /&gt;
* '''Аргумент 2''' - переменная '''com_count'''&lt;br /&gt;
* '''Тип сравнения''' - '''&amp;lt;='''&lt;br /&gt;
&lt;br /&gt;
Если '''правда''', то производится еще одна итерация. Переход на компонент Id записи. &lt;br /&gt;
&lt;br /&gt;
Если '''ложь''', то переход на компонент &amp;quot;'''Ув2'''&amp;quot; и в дальнейшем на отправку электронного письма.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув2'''&amp;quot; - отладочное уведомление, показывает значения переменных '''file1'''..'''file5'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Создание архива'''&amp;quot; - запускает внешний процесс '''C:\7za.exe''' с параметрами '''cmd'''. &lt;br /&gt;
&lt;br /&gt;
* '''Файл''' - указывается путь к приложению. В примере, '''C:\7za.exe'''&lt;br /&gt;
* '''Путь''' - абсолютный &lt;br /&gt;
* '''Параметры командной строки''' командной строки - переменная '''cmd'''&lt;br /&gt;
* '''Ожидание завершения''' - Да&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 008.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Отправка e-mail'''&amp;quot; - отправляет архив с записями разговоров на электронную почту:&lt;br /&gt;
* '''Способ отправки''' - настраивается smtp-сервер, данные для авторизации. &lt;br /&gt;
* '''Кому''' - адрес получателя&lt;br /&gt;
* '''От кого''' - адрес отправителя&lt;br /&gt;
* '''Тема''', '''Содержание письма''' - генерируется соответствующая информация. В содержании письма можно указать с какого номера на какой номер звонил клиент, сколько времени ожидал на линии, с какими операторами разговаривал. В данном сценарии не рассматривается. &lt;br /&gt;
* '''Вложение 1''' - переменная '''path'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 010.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Комбинированный метод=== &lt;br /&gt;
&lt;br /&gt;
На основании выше сказанного можно создать сценарий, в котором анализируется количество записей разговоров '''com_count'''. Если их больше 5, то отправка реализуется с помощью zip-архива, если 5 или меньше - отправляются вложениями. &lt;br /&gt;
&lt;br /&gt;
Сценарий выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 012.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Установка сценария===&lt;br /&gt;
&lt;br /&gt;
Перейдите в '''Администрирование''' - '''Общие настройки''' - '''Сценарии АТС''' и укажите созданный сценарий в качестве ''Служебного сценария обработки контента''. Нажмите &amp;quot;'''Сохранить'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 013.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Также установите следующие настройки в разделе '''Администрирование''' - '''Общие настройки''' - &amp;quot;Управление записями разговоров&amp;quot;. После установки нажмите &amp;quot;'''Сохранить'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 014.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
При создании сценариев использовалась статья: [[Получить путь к записи разговора по завершению коммутации]]&lt;br /&gt;
&lt;br /&gt;
'''Скачать файлы сценариев:''' [[Media:%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82_%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D1%8C_%D0%A0%D0%B0%D0%B7%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B0.zip|Контент_Запись_Разговора.zip]]&lt;br /&gt;
&lt;br /&gt;
Для использования необходимо&amp;lt;br&amp;gt;&lt;br /&gt;
'''1)''' Файл '''7za.exe''' поместить на диск '''C:'''\ &amp;lt;br&amp;gt;&lt;br /&gt;
'''2)''' Во всех компонентах отправки email поменять настройки smtp-сервера, адреса получателя и отправителя, текст письма.&amp;lt;br&amp;gt;&lt;br /&gt;
'''3)''' Обозначить сценарий в качестве служебного сценария обработки контента&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B5%D0%B9_%D1%80%D0%B0%D0%B7%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D0%B2_%D0%BD%D0%B0_e-mail</id>
		<title>Отправка записей разговоров на e-mail</title>
		<link rel="alternate" type="text/html" href="%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B5%D0%B9_%D1%80%D0%B0%D0%B7%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D0%B2_%D0%BD%D0%B0_e-mail"/>
				<updated>2023-03-31T11:24:07Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Сценарий отправки записей в zip-архиве */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Задача:''' Отправить записи разговора клиента с операторами на почту. Учесть переключения клиента между операторами. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Руководителям всех отделов, подразделений и целых предприятий бывает полезно знать как их сотрудники общаются с клиентами, верно ли они преподносят информацию о продукте, правильно ли предлагают услуги. Если не контролировать этот процесс, лояльность ваших клиентов, и их отношение к организации в целом, может упасть. &lt;br /&gt;
&lt;br /&gt;
Отследить качество клиентского обслуживания и разрешить спорные ситуации, возникающие при телефонных контактах с клиентами, поможет прослушивание аудиозаписей телефонных разговоров. В '''Oktell''' все разговоры сотрудников с клиентами записываются по умолчанию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вы так же можете настроить автоматическую отправку отчета о разговорах на вашу электронную почту. В тексте письма вы получите дату и время звонка, имя оператора, продолжительность разговора, номер телефона клиента и его оценку разговора. &lt;br /&gt;
&lt;br /&gt;
При большом количестве звонков, ваша почта может быстро переполниться, поэтому советуем настроить оповещение только в крайних случаях. Например, когда клиент поставил сотруднику оценку “'''2'''” за обслуживание. &lt;br /&gt;
&lt;br /&gt;
В таких крайних случаях крайне важно понять, почему клиент недоволен и поставил низкую оценку. Учитывая, что в компаниях клиента могут переключать от одного оператора к другому, требуется восстановить всю последовательность разговоров - от первой коммутации с секретарем до последней коммутации с ответственным оператором. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для отправки записей разговоров в сценарии используется компонент &amp;quot;'''Отправка Email'''&amp;quot;. В этом компоненте возможно прикрепить до 5 вложений. Однако встает вопрос - что делать, если клиент общался больше чем с пятью операторами (суммарное количество переключение превышает 4). Существует несколько способов решения данной задачи. &lt;br /&gt;
&lt;br /&gt;
'''Способ 1:''' В сценарии отправляются 5 записей разговора - это могут быть последние пять коммутаций клиента с оператором, или, например, первая и четыре последних коммутации. &lt;br /&gt;
&lt;br /&gt;
*'''Достоинства:''' Такие сервисы как mail.ru или gmail.com позволяют сразу проигрывать вложенные звуковые файлы, не скачивая их. Это позволяет руководителю быстро прослушать записи разговоров прямо из окна браузера, что очень удобно. &lt;br /&gt;
&lt;br /&gt;
*'''Недостатки:''' По сути, если количество коммутаций больше 5, то мы теряем часть из них. Все зависит от максимального количества переключений, которое может быть в вашей компании. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 015.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Способ 2:''' В сценарии все найденные записи разговоров запаковываются в zip-архив, который затем отправляется одним вложением в элекронном письме. &lt;br /&gt;
&lt;br /&gt;
*'''Достоинства:''' В электронном письме может быть отправлено неограниченное количество записей (ограничение идет уже от Smtp-провайдера по максимальному размеру вложений). Если клиента переключали 10 раз между различными операторами - вы получите полную историю разговоров клиента. &lt;br /&gt;
&lt;br /&gt;
*'''Недостатки:''' В отличии от первого способа, архив придется скачать и распаковать. Этот процесс может занимать некоторое время. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 016.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Способ 3:''' Комбинация первого и второго способов. Если количество найденных коммутаций больше пяти - они запаковываются в архив, если их пять или меньше - отправляются в электронном письме напрямую. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; Рекомендуется использовать третий способ как наиболее удобный. &amp;lt;/span&amp;gt; В статье данный способ рассматривается по частям на примере первого и второго способов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Сценарий прямой отправки на email ===&lt;br /&gt;
&lt;br /&gt;
Для решения задачи используется '''сценарий обработки контента'''. Сценарий выглядит следующим образом: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 001.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Старт 1'''&amp;quot; - в качестве параметра запуска переменная '''content''' (строковая). В этой переменной будет храниться контент цепочки коммутаций.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Вывод контента'''&amp;quot; - отладочное уведомление, выводит переменную '''content'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Количество коммутаций'''&amp;quot; - Парсер, определяет количество коммутаций с операторами (исключает соединение с IVR-сценариями). &lt;br /&gt;
* '''Документ''' - переменная content&lt;br /&gt;
* '''Алгоритм''' - Язык OQuery для HTML&lt;br /&gt;
* '''Поисковый запрос''' - используется следующее выражение:&lt;br /&gt;
&lt;br /&gt;
 commutation:has([name=abonent])&amp;gt;[key=idconnection]&lt;br /&gt;
&lt;br /&gt;
* '''Функция''' - Количество элементов &lt;br /&gt;
* '''Результат в переменную''' - переменная '''com_count''' ('''число'''). В переменной будет храниться количество коммутаций.&lt;br /&gt;
&lt;br /&gt;
Если парсер не находит таких коммутаций, он переходит по ветке &amp;quot;'''Ошибка'''&amp;quot;. Так как в сценарии специально не задается обработка ошибки, то сценарий просто заканчивает свое выполнение. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 002.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув1'''&amp;quot; - отладочное уведомление, выводит переменную '''com_count'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Счетчик'''&amp;quot; - присвоение переменной '''i''' (строковая) значения '''1''' (строка).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Id записи'''&amp;quot; - парсер, определяет i-й Id коммутации, по которой в дальнейшем восстанавливается путь к файлу записи. Счетчик i в дальнейшем инкрементируется, таким образом пробегаются все коммутации клиента с операторами.&lt;br /&gt;
&lt;br /&gt;
* '''Документ''' - переменная content&lt;br /&gt;
* '''Алгоритм''' - Язык OQuery для HTML&lt;br /&gt;
* '''Поисковый запрос''' - используется следующее '''выражение''':&lt;br /&gt;
&lt;br /&gt;
 'commutation:has([name=abonent])&amp;gt;[key=idconnection]:eq('+[i]+')'&lt;br /&gt;
&lt;br /&gt;
* '''Функция''' - Значение атрибута &lt;br /&gt;
* '''Атрибут''' - value&lt;br /&gt;
* '''Результат в переменную''' - переменная '''id''' (строковая). В переменной будет храниться id коммутации. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 003.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Путь к файлу'''&amp;quot; - В SQL-запросе явно прописывается в какой папке располагаются записи разговоров. Рекомендуется проверить запрос на предмет использования в вашей системе (возможно, стоит убрать ''(x86)''). Используется следующий SQL-запрос:&lt;br /&gt;
&lt;br /&gt;
 declare @aln nvarchar(10)&lt;br /&gt;
 declare @bln nvarchar(10)&lt;br /&gt;
 declare @idrecdir int&lt;br /&gt;
 declare @ts nvarchar(50)&lt;br /&gt;
 declare @path nvarchar(1000)&lt;br /&gt;
 select top 1 @aln=case when alinenum&amp;lt;blinenum then alinenum else blinenum end,&lt;br /&gt;
 @bln=case when blinenum&amp;gt;alinenum then blinenum else alinenum end,&lt;br /&gt;
 @idrecdir=idrecdir, &lt;br /&gt;
 @ts=replace(convert(nvarchar(10), TimeStart, 121),'-','_')+'__'+&lt;br /&gt;
 replace(convert(nvarchar(20), TimeStart, 114),':','_') from A_Stat_Connections_1x1&lt;br /&gt;
 where Id=@id and isrecorded=1&lt;br /&gt;
 set @path='C:\Program Files (x86)\oktell\Server\RecordedFiles\'&lt;br /&gt;
 if (@idrecdir&amp;gt;0)&lt;br /&gt;
 select @path=path from A_Stat_RecordDirectories where id=@idrecdir&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set @filename=@path+replace(substring(@ts, 1, 10),'_','')+'\'+substring(@ts, 13, 2)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 +substring(@ts, 16, 2)+'\mix_'+@aln+'_'+@bln+'__'+@ts+'.mp3'&lt;br /&gt;
&lt;br /&gt;
где &lt;br /&gt;
&lt;br /&gt;
*'''@filename''' - переменная file (строковая)&lt;br /&gt;
*'''@id''' - переменная id.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Вывод пути'''&amp;quot; - отладочное уведомление, выводит переменную '''file'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''file?'''&amp;quot; - Компонент меню производит циклическую запись в переменные '''file1''', '''file2''', '''file3''', '''file4''' и '''file5'''. &lt;br /&gt;
&lt;br /&gt;
'''Пояснение:''' Все записи разговоров требуется отправить в компоненте '''Отправка Email'''. Компонент поддерживает до 5 вложений и эти вложения необходимо каким-либо образом указывать. Поэтому используются 5 строковых переменных '''file1'''...'''file5''', в каждую из которых в ходе цикла записывается путь к записи разговора. Путь к первой записи разговора ('''i=1''') будет записан в переменную '''file1''', путь к пятой ('''i=5''') в '''file5'''. Путь к шестой записи разговора будет перезаписан в переменную '''file1''' и так далее. Таким образом при отправке электронного письма, к нему будут прикреплены последние пять коммутаций клиента. &lt;br /&gt;
&lt;br /&gt;
У компонента используются следующие настройки:&lt;br /&gt;
&lt;br /&gt;
* Аргумент - выражение &amp;quot;'''[i]%5'''&amp;quot;. Выражение возвращает остаток от деления переменной i на 5. &lt;br /&gt;
* Значения - 0, 1, 2, 3, 4. &lt;br /&gt;
&lt;br /&gt;
В зависимости, от остатка путь, содержащийся в переменной file будет записываться следующим образом:&lt;br /&gt;
&lt;br /&gt;
* по ветке 0 - путь записывается в переменную file5 (т.к. это выполнится при i=5, 10...)&lt;br /&gt;
* по ветке 1 - путь записывается в переменную file1 &lt;br /&gt;
* по ветке 2 - путь записывается в переменную file2&lt;br /&gt;
* по ветке 3 - путь записывается в переменную file3&lt;br /&gt;
* по ветке 4 - путь записывается в переменную file4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 004.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Обнуление имени файла'''&amp;quot; - переменной &amp;quot;'''file'''&amp;quot; присваивается пустая строка. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''i++'''&amp;quot; - переменной '''i''' присваивается выражение &amp;quot;'''[i]+1'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Проверка на завершение'''&amp;quot; - значение счетчика '''i''' после инкремента сравнивается с количеством коммутаций '''com_count'''. &lt;br /&gt;
* '''Аргумент 1''' - переменная '''i'''&lt;br /&gt;
* '''Аргумент 2''' - переменная '''com_count'''&lt;br /&gt;
* '''Тип сравнения''' - '''&amp;lt;='''&lt;br /&gt;
&lt;br /&gt;
Если '''правда''', то производится еще одна итерация. Переход на компонент Id записи. &lt;br /&gt;
&lt;br /&gt;
Если '''ложь''', то переход на компонент &amp;quot;'''Ув2'''&amp;quot; и в дальнейшем на отправку электронного письма.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув2'''&amp;quot; - отладочное уведомление, показывает значения переменных '''file1'''..'''file5'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Количество вложений'''&amp;quot; - нужен для того, чтобы правильно задать отправку e-mail письма. Если имеется 1 коммутация, то прикрепляется только переменная '''file1'''; если 4 коммутации, то соответственно настраиваются 4 вложения. Если коммутаций 5 и больше, то отправляются 5 вложений.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компоненты '''отправка e-mail''' настраиваются одинаковым образом: &lt;br /&gt;
* '''Способ отправки''' - настраивается smtp-сервер, данные для авторизации. &lt;br /&gt;
* '''Кому''' - адрес получателя&lt;br /&gt;
* '''От кого''' - адрес отправителя&lt;br /&gt;
* '''Тема''', '''Содержание письма''' - генерируется соответствующая информация. В содержании письма можно указать с какого номера на какой номер звонил клиент, сколько времени ожидал на линии, с какими операторами разговаривал. В данном сценарии не рассматривается. &lt;br /&gt;
* '''Вложение 1'''..'''Вложение 5''' - указываются соответствующие переменные '''file 1'''... '''file 5'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 006.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Сценарий отправки записей в zip-архиве ===&lt;br /&gt;
&lt;br /&gt;
Для решения задачи используется '''сценарий обработки контента'''. Сценарий выглядит следующим образом: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 007.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В сценарии используется внешний процесс '''7za.exe''' - консольное приложение от 7-zip (скачано по ссылке [http://www.7-zip.org/download.html http://www.7-zip.org/download.html]). Данное консольное приложение предварительно скопировано на диск '''C:\'''. &lt;br /&gt;
&lt;br /&gt;
'''Скачать приложение:''' [[Media:7za.zip|7za.zip]]&lt;br /&gt;
&lt;br /&gt;
'''Пример''' архивации двух файлов '''C:\1.mp3''' и '''C:\2.mp3''' в архив '''С:\archive.zip''':&lt;br /&gt;
&lt;br /&gt;
 C:\7za.exe a -tzip c:\archive.zip &amp;quot;C:\1.mp3&amp;quot; &amp;quot;C:\2.mp3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Далее рассматриваются компоненты сценария:&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Старт 1'''&amp;quot; - в качестве параметра запуска переменная '''content''' (строковая). В этой переменной будет храниться контент цепочки коммутаций.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Вывод контента'''&amp;quot; - отладочное уведомление, выводит переменную '''content'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Количество коммутаций'''&amp;quot; - Парсер, определяет количество коммутаций с операторами (исключает соединение с IVR-сценариями). &lt;br /&gt;
* '''Документ''' - переменная content&lt;br /&gt;
* '''Алгоритм''' - Язык OQuery для HTML&lt;br /&gt;
* '''Поисковый запрос''' - используется следующее выражение:&lt;br /&gt;
&lt;br /&gt;
 commutation:has([name=abonent])&amp;gt;[key=idconnection]&lt;br /&gt;
&lt;br /&gt;
* '''Функция''' - Количество элементов &lt;br /&gt;
* '''Результат в переменную''' - переменная '''com_count''' ('''число'''). В переменной будет храниться количество коммутаций.&lt;br /&gt;
&lt;br /&gt;
Если парсер не находит таких коммутаций, он переходит по ветке &amp;quot;'''Ошибка'''&amp;quot;. Так как в сценарии специально не задается обработка ошибки, то сценарий просто заканчивает свое выполнение. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 002.png |center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув1'''&amp;quot; - отладочное уведомление, выводит переменную '''com_count'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''cmd'''&amp;quot; - создание командной строки для консоли '''7za.exe'''. В компоненте задано:&lt;br /&gt;
&lt;br /&gt;
* Присвоение переменной '''path'''(строковая) - выражения &lt;br /&gt;
 'c:\temp\archive'+substr(now,0,2)+substr(now,3,2)+ substr(now,8,2)+'-'+substr(now,11,2)+&lt;br /&gt;
 substr(now,14,2)+substr(now,17,2)+'.zip'&lt;br /&gt;
&lt;br /&gt;
:Переменная '''path''' содержит путь к zip-архиву. В примере, все созданные архивы будут храниться в папке &amp;quot;'''c:\temp'''&amp;quot;, ее нужно будет очищать либо вручную либо автоматически с помощью сценария. &lt;br /&gt;
&lt;br /&gt;
* Присвоение переменной '''cmd'''(строковая) - выражения &lt;br /&gt;
 'a -tzip '+[path]&lt;br /&gt;
&lt;br /&gt;
: В переменной '''cmd''' будут храниться все параметры командной строки, которые в конце сценария будут переданы программе '''7za.exe'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Счетчик'''&amp;quot; - присвоение переменной '''i''' (строковая) значения '''1''' (строка).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Id записи'''&amp;quot; - парсер, определяет i-й Id коммутации, по которой в дальнейшем восстанавливается путь к файлу записи. Счетчик i в дальнейшем инкрементируется, таким образом пробегаются все коммутации клиента с операторами.&lt;br /&gt;
&lt;br /&gt;
* '''Документ''' - переменная content&lt;br /&gt;
* '''Алгоритм''' - Язык OQuery для HTML&lt;br /&gt;
* '''Поисковый запрос''' - используется следующее '''выражение''':&lt;br /&gt;
&lt;br /&gt;
 'commutation:has([name=abonent])&amp;gt;[key=idconnection]:eq('+[i]+')'&lt;br /&gt;
&lt;br /&gt;
* '''Функция''' - Значение атрибута &lt;br /&gt;
* '''Атрибут''' - value&lt;br /&gt;
* '''Результат в переменную''' - переменная '''id''' (строковая). В переменной будет храниться id коммутации. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 011.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Путь к файлу'''&amp;quot; - В SQL-запросе явно прописывается в какой папке располагаются записи разговоров. Рекомендуется проверить запрос на предмет использования в вашей системе (возможно, стоит убрать ''(x86)''). Используется следующий SQL-запрос:&lt;br /&gt;
&lt;br /&gt;
 declare @aln nvarchar(10)&lt;br /&gt;
 declare @bln nvarchar(10)&lt;br /&gt;
 declare @idrecdir int&lt;br /&gt;
 declare @ts nvarchar(50)&lt;br /&gt;
 declare @path nvarchar(1000)&lt;br /&gt;
 select top 1 @aln=case when alinenum&amp;lt;blinenum then alinenum else blinenum end,&lt;br /&gt;
 @bln=case when blinenum&amp;gt;alinenum then blinenum else alinenum end,&lt;br /&gt;
 @idrecdir=idrecdir, &lt;br /&gt;
 @ts=replace(convert(nvarchar(10), TimeStart, 121),'-','_')+'__'+&lt;br /&gt;
 replace(convert(nvarchar(20), TimeStart, 114),':','_') from A_Stat_Connections_1x1&lt;br /&gt;
 where Id=@id and isrecorded=1&lt;br /&gt;
 set @path='C:\Program Files (x86)\oktell\Server\RecordedFiles\'&lt;br /&gt;
 if (@idrecdir&amp;gt;0)&lt;br /&gt;
 select @path=path from A_Stat_RecordDirectories where id=@idrecdir&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set @filename=@path+replace(substring(@ts, 1, 10),'_','')+'\'+substring(@ts, 13, 2)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 +substring(@ts, 16, 2)+'\mix_'+@aln+'_'+@bln+'__'+@ts+'.mp3'&lt;br /&gt;
&lt;br /&gt;
где &lt;br /&gt;
&lt;br /&gt;
*'''@filename''' - переменная file (строковая, выходная)&lt;br /&gt;
*'''@id''' - переменная id (входная, содержит ID коммутации).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Вывод пути'''&amp;quot; - отладочное уведомление, выводит переменную '''file'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''cmd+file'''&amp;quot; - добавляет найденный файл к параметрам командной строки. В компоненте переменной '''cmd''' присваивается выражение &lt;br /&gt;
&lt;br /&gt;
 [cmd]+' &amp;quot;'+[file]+'&amp;quot;'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Обнуление имени файла'''&amp;quot; - переменной &amp;quot;'''file'''&amp;quot; присваивается пустая строка. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''i++'''&amp;quot; - переменной '''i''' присваивается выражение &amp;quot;'''[i]+1'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Проверка на завершение'''&amp;quot; - значение счетчика '''i''' после инкремента сравнивается с количеством коммутаций '''com_count'''. &lt;br /&gt;
* '''Аргумент 1''' - переменная '''i'''&lt;br /&gt;
* '''Аргумент 2''' - переменная '''com_count'''&lt;br /&gt;
* '''Тип сравнения''' - '''&amp;lt;='''&lt;br /&gt;
&lt;br /&gt;
Если '''правда''', то производится еще одна итерация. Переход на компонент Id записи. &lt;br /&gt;
&lt;br /&gt;
Если '''ложь''', то переход на компонент &amp;quot;'''Ув2'''&amp;quot; и в дальнейшем на отправку электронного письма.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Ув2'''&amp;quot; - отладочное уведомление, показывает значения переменных '''file1'''..'''file5'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Создание архива'''&amp;quot; - запускает внешний процесс '''C:\7za.exe''' с параметрами '''cmd'''. &lt;br /&gt;
&lt;br /&gt;
* '''Файл''' - указывается путь к приложению. В примере, '''C:\7za.exe'''&lt;br /&gt;
* '''Путь''' - абсолютный &lt;br /&gt;
* '''Параметры командной строки''' командной строки - переменная '''cmd'''&lt;br /&gt;
* '''Ожидание завершения''' - Да&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 008.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Отправка e-mail'''&amp;quot; - отправляет архив с записями разговоров на электронную почту:&lt;br /&gt;
* '''Способ отправки''' - настраивается smtp-сервер, данные для авторизации. &lt;br /&gt;
* '''Кому''' - адрес получателя&lt;br /&gt;
* '''От кого''' - адрес отправителя&lt;br /&gt;
* '''Тема''', '''Содержание письма''' - генерируется соответствующая информация. В содержании письма можно указать с какого номера на какой номер звонил клиент, сколько времени ожидал на линии, с какими операторами разговаривал. В данном сценарии не рассматривается. &lt;br /&gt;
* '''Вложение 1''' - переменная '''path'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 010.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Комбинированный метод=== &lt;br /&gt;
&lt;br /&gt;
На основании выше сказанного можно создать сценарий, в котором анализируется количество записей разговоров '''com_count'''. Если их больше 5, то отправка реализуется с помощью zip-архива, если 5 или меньше - отправляются вложениями. &lt;br /&gt;
&lt;br /&gt;
Сценарий выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 012.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Установка сценария===&lt;br /&gt;
&lt;br /&gt;
Перейдите в '''Администрирование''' - '''Общие настройки''' - '''Сценарии АТС''' и укажите созданный сценарий в качестве ''Служебного сценария обработки контента''. Нажмите &amp;quot;'''Сохранить'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 013.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Также установите следующие настройки в разделе '''Администрирование''' - '''Общие настройки''' - &amp;quot;Управление записями разговоров&amp;quot;. После установки нажмите &amp;quot;'''Сохранить'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Отправка записей на почту 014.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
При создании сценариев использовалась статья: [[Получить путь к записи разговора по завершению коммутации]]&lt;br /&gt;
&lt;br /&gt;
'''Скачать файлы сценариев:''' [http://wiki.oktell.ru/images/7/7e/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82_%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D1%8C_%D0%A0%D0%B0%D0%B7%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B0.zip Контент_Запись_Разговора.zip]&lt;br /&gt;
&lt;br /&gt;
Для использования необходимо&amp;lt;br&amp;gt;&lt;br /&gt;
'''1)''' Файл '''7za.exe''' поместить на диск '''C:'''\ &amp;lt;br&amp;gt;&lt;br /&gt;
'''2)''' Во всех компонентах отправки email поменять настройки smtp-сервера, адреса получателя и отправителя, текст письма.&amp;lt;br&amp;gt;&lt;br /&gt;
'''3)''' Обозначить сценарий в качестве служебного сценария обработки контента&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%A3%D1%87%D0%B5%D1%82_%D0%BE%D0%BF%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B9_%D1%81%D0%BE%D1%82%D1%80%D1%83%D0%B4%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2</id>
		<title>Учет опозданий сотрудников</title>
		<link rel="alternate" type="text/html" href="%D0%A3%D1%87%D0%B5%D1%82_%D0%BE%D0%BF%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B9_%D1%81%D0%BE%D1%82%D1%80%D1%83%D0%B4%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2"/>
				<updated>2023-03-31T11:21:57Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Результат работы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
'''Задача:''' вести статистику по опозданиям сотрудников. &lt;br /&gt;
&lt;br /&gt;
Каждый руководитель хочет быть уверен в соблюдении правил внутреннего распорядка своими сотрудниками. Одним из критериев ответственности сотрудника является время появления на работе. '''Oktell''' позволяет автоматизировать эту проверку. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Способы проверки ===&lt;br /&gt;
&lt;br /&gt;
Существует несколько способов проверки появления сотрудника на работе. Рассмотрим их на примере. Пусть компания начинает работу в 9-00. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Способ 1. Проверка дозвоном.''' &lt;br /&gt;
&lt;br /&gt;
Каждый день в 9-05 производится обзвон всех сотрудников. Если сотрудник снимает трубку, то считается, что он на рабочем месте. &lt;br /&gt;
&lt;br /&gt;
Достоинства: &lt;br /&gt;
* Проверяет наличие сотрудника на рабочем месте&lt;br /&gt;
&lt;br /&gt;
Недостатки:&lt;br /&gt;
* Вместо проверяемого сотрудника, трубку может снять его коллега.&lt;br /&gt;
* Возможность установить софтфон на телефоне, используя технологию SIP Forking, позволяет сотруднику взять трубку где угодно при наличии интернета. Однако, чаще всего сотрудники не знают паролей от своих устройств. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Способ 2. Проверка по клиентскому приложению.''' &lt;br /&gt;
&lt;br /&gt;
В 9-05 служебный сценарий обращается в таблицу '''[oktell].[dbo].[A_CallCenter_UserStateHistory]'''. В этой таблице хранится время запуска клиентского приложения (столбец '''TimeEnter''') и время, когда клиентское приложение было закрыто (столбец '''TimeLeave'''). Для того, чтобы использовать эту идею необходимо включенное клиентское приложение. &lt;br /&gt;
&lt;br /&gt;
Достоинства:&lt;br /&gt;
* Не отвлекает сотрудника от работы&lt;br /&gt;
&lt;br /&gt;
Недостатки: &lt;br /&gt;
* Клиентское приложение должно быть обязательно включено &lt;br /&gt;
* При наличии домена для веб-клиента или веб-оператора, сотрудник может отметиться, зайдя на веб-сервис со своего смартфона. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Способ 3. Смешанный вариант.''' &lt;br /&gt;
&lt;br /&gt;
Если при проверке SQL-запросом сотрудник показан, как отсутствующий в системе (не включено клиентское приложение), то вполне возможно, что он забыл включить клиентское приложение или возникли технические неполадки. Если сотрудник отмечен как пользователь по умолчанию для своего телефона, то ему можно сделать дозвон и проверить на месте ли он находится. &lt;br /&gt;
&lt;br /&gt;
Достоинства:&lt;br /&gt;
* Если у сотрудника не включено клиентское приложение, система пытается дозвонится до сотрудника. &lt;br /&gt;
&lt;br /&gt;
Недостатки:&lt;br /&gt;
* Такие же, как у '''варианта 1''' - трубку могут поднять другие сотрудники. Однако, этот вариант можно обработать отдельно и записать в отчет с особой пометкой. &lt;br /&gt;
&lt;br /&gt;
В этой статье рассматривается смешанный вариант учета опозданий. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Создание таблицы ===&lt;br /&gt;
&lt;br /&gt;
Предварительно создается таблица '''latecomers''', в которой будет храниться вся информация по сотрудникам. Таблица имеет следующие поля:&lt;br /&gt;
&lt;br /&gt;
* '''Id''' - номер записи в списке. Тип '''Int''', создается автоматически.&lt;br /&gt;
* '''date''' - дата и время проверки. Тип '''Datetime'''. &lt;br /&gt;
* '''user''' - имя пользователя. Тип '''NVarchar (auto)'''. &lt;br /&gt;
* '''status''' - результат проверки. Тип '''NVarchar (auto)'''.&lt;br /&gt;
* '''time''' - время, с которого у пользователя включено клиентское приложение. Тип '''Datetime'''. &lt;br /&gt;
* '''iduser''' - идентификатор пользователя. Нужен для нахождения внутреннего номера. Тип '''NVarchar (auto)'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Реализация сценария ===&lt;br /&gt;
&lt;br /&gt;
Сценарий выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Учет опозданий-001.png | center ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Структурно сценарий состоит из &lt;br /&gt;
* SQL-запроса проверки включенных клиентских приложений&lt;br /&gt;
* Цикла по пользователям. Блок взят из статьи [[Построковая обработка sql выборки в сценарии]] (Вариант 1)&lt;br /&gt;
* Дозвон до пользователя и занесение результата&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Проверка по таблице'''&amp;quot; - SQL-запрос определяет запущено ли клиентское приложение у сотрудника и записывает результаты в таблицу.&lt;br /&gt;
&lt;br /&gt;
 with ausers as&lt;br /&gt;
 (&lt;br /&gt;
 select getdate() ddt,us.Name,'На месте' status,uh.TimeEnter, us.ID&lt;br /&gt;
 from  [oktell].[dbo].[A_CallCenter_UserStateHistory] uh &lt;br /&gt;
 inner join A_Users us &lt;br /&gt;
 on uh.operatorid=us.ID&lt;br /&gt;
 where GETDATE()&amp;gt;TimeEnter &lt;br /&gt;
 and (GETDATE()&amp;lt;TimeLeave or TimeLeave is null)&lt;br /&gt;
 and uh.State =0 &lt;br /&gt;
 )&lt;br /&gt;
 &lt;br /&gt;
 insert into latecomers (date,[user],status,time,iduser)&lt;br /&gt;
 select * from ausers &lt;br /&gt;
 union all&lt;br /&gt;
 select getdate(),Name,'0',null, ID&lt;br /&gt;
 from A_Users &lt;br /&gt;
 where id not in (select id from ausers)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''id_before'''&amp;quot; - присваивает переменной '''id_before''' (строковая) значение &amp;quot;'''-1000'''&amp;quot;. Нужен для перебора сотрудников в таблице latecomers, у которых еще нет статуса (не определены с прошлого шага).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Определяем следующего'''&amp;quot; - SQL-запрос определяет следующего пользователя в таблице latecomers, которому нужно позвонить. &lt;br /&gt;
&lt;br /&gt;
 select top 1 @id=id, @iduser=iduser, @user=[user]&lt;br /&gt;
 from latecomers &lt;br /&gt;
 where id &amp;gt; @id_before&lt;br /&gt;
 and status='0' &lt;br /&gt;
 and cast(floor(cast(getdate() as float)) as datetime) = cast(floor(cast(date as float)) as datetime)&lt;br /&gt;
 &lt;br /&gt;
 set @rowcount=@@rowcount&lt;br /&gt;
&lt;br /&gt;
где &lt;br /&gt;
&lt;br /&gt;
*'''@id''' - переменная id_after (строковая). Переменная содержит номер найденного пользователя в таблице latecomers.&lt;br /&gt;
*'''@id_before''' - переменная id_before. &lt;br /&gt;
*'''@iduser''' - переменная iduser (строковая). Переменная содержит id пользователя. &lt;br /&gt;
*'''@rowcount''' - переменная rowcount (строковая). Переменная содержит количество найденных строк. &lt;br /&gt;
*'''@user''' - переменная user (строковая). Переменная содержит имя пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Проверка на завершение'''&amp;quot; - определяет завершен ли перебор по пользователям. Сравнение переменной rowcount с &amp;quot;'''0'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''id_before=id_after'''&amp;quot; - переприсваивает переменную '''id_before''', чтобы найти следующего пользователя. Также обнуляет переменную '''prefix'''.&lt;br /&gt;
* переменной '''idbefore''' присваивает переменную id_after&lt;br /&gt;
* переменной '''prefix''' присваивает пустую строку&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Внутренний номер по id'''&amp;quot; - SQL-запрос находит по таблице внутренний номер пользователя по его идентификатору iduser. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; ВНИМАНИЕ: У пользователя должен быть &amp;quot;нативный&amp;quot; номер, то есть такой стандартный внутренний номер, в котором только один объект - данный пользователь. Иначе запрос не найдет внутренний номер этого пользователя. &lt;br /&gt;
&lt;br /&gt;
 SELECT TOP 1 @prefix=np.Prefix FROM A_NumberPlan np &lt;br /&gt;
 INNER JOIN A_NumberPlanAction npa ON np.ID=npa.NumID AND npa.ExtraId IN &lt;br /&gt;
 (SELECT RuleID FROM A_RuleRecords &lt;br /&gt;
 WHERE reactid=@userid AND InnerAddressType=0 &lt;br /&gt;
 AND RuleID IN &lt;br /&gt;
 (SELECT RuleID FROM A_RuleRecords &lt;br /&gt;
 GROUP BY RuleID HAVING COUNT(*)=1)) &lt;br /&gt;
 ORDER BY np.Prefix &lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
*'''@prefix''' - переменная prefix, содержит внутренний номер пользователя&lt;br /&gt;
*'''@userid''' - переменная iduser&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Дозвон'''&amp;quot; - происходит дозвон до пользователя. Если пользователь поднимет трубку или занят (в разговоре) - считается, что он на месте.&lt;br /&gt;
&lt;br /&gt;
* '''Номер/команда''' - prefix&lt;br /&gt;
* '''Среда''' - Внутренний номерной план&lt;br /&gt;
* '''Обслуживание''' - IVR&lt;br /&gt;
* '''Сценарий IVR''' - предварительно созданный IVR сценарий &amp;quot;Учет опозданий IVR&amp;quot;. Сценарий достаточно простой - после того, как сотрудник берет трубку, связь обрывается. Здесь можно поставить звуковое оповещение сотрудника о том, что это проверка. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Учет опозданий-002.png | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Caller ID''' - &amp;quot;Proverka&amp;quot; (устанавливается по желанию, сотрудники будут видеть это название на табло телефона)&lt;br /&gt;
* '''Caller Name''' - &amp;quot;Proverka&amp;quot; (аналогично полю Caller ID)&lt;br /&gt;
* '''Очередь ожидания''' - Нет&lt;br /&gt;
* '''Время ожидания''' - 40 секунд. Максимальное время за которое сотрудник должен поднять трубку, чтобы система отметила его как на месте. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Компоненты &amp;quot;'''На месте'''&amp;quot; , &amp;quot;'''Занято'''&amp;quot; или &amp;quot;'''Нет на месте'''&amp;quot; - SQL-запросы для обновления статуса в таблице '''latecomers'''. Переход к этим компонентам происходит по веткам от предыдущего компонента &amp;quot;'''Дозвон'''&amp;quot;. Соответственно: &lt;br /&gt;
&lt;br /&gt;
 update latecomers &lt;br /&gt;
 set status = 'На месте (Взял трубку)'&lt;br /&gt;
 where iduser=@iduser&lt;br /&gt;
&lt;br /&gt;
 update latecomers &lt;br /&gt;
 set status = 'На месте (Занято)'&lt;br /&gt;
 where iduser=@iduser&lt;br /&gt;
&lt;br /&gt;
 update latecomers &lt;br /&gt;
 set status = 'Нет на месте'&lt;br /&gt;
 where iduser=@iduser&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
*'''@iduser''' - переменная iduser (во всех запросах).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Создание служебной задачи===&lt;br /&gt;
&lt;br /&gt;
Данный сценарий необходимо назначить на служебную задачу. Переходим «'''Администрирование'''» - «'''Общие настройки'''» - вкладка «'''Служебные задачи'''» - «'''Добавить'''» &lt;br /&gt;
&lt;br /&gt;
* Выбираем для запуска данный сценарий. &lt;br /&gt;
* Указываем расписание - с понедельника по пятницу, с 9:05 до 9:10. &lt;br /&gt;
* Тип запуска - периодический, раз в сутки. &lt;br /&gt;
* Нажимаем «'''Сохранить'''» и активируем служебную задачу. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; Служебный сценарий не рекомендуется отдельно запускать, так как служебная задача не будет работать. Если вы запустили отдельно служебный сценарий, то вам надо переактивировать служебную задачу. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Учет опозданий-004.png | center | 600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Результат работы ===&lt;br /&gt;
&lt;br /&gt;
В таблице latecomers формируется следующая информация: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Учет опозданий-003.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Файл сценария:''' [[Media:%D0%A3%D1%87%D0%B5%D1%82_%D0%BE%D0%BF%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B9.zip|Учет опозданий.zip]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Запрос для создания таблицы:'''&lt;br /&gt;
&lt;br /&gt;
 USE [oktell]&lt;br /&gt;
 GO&lt;br /&gt;
 SET ANSI_NULLS ON&lt;br /&gt;
 GO&lt;br /&gt;
 SET QUOTED_IDENTIFIER ON&lt;br /&gt;
 GO&lt;br /&gt;
 CREATE TABLE [dbo].[latecomers](&lt;br /&gt;
 	[Id] [int] IDENTITY(1,1) NOT NULL, &lt;br /&gt;
 	[date] [datetime] NULL,&lt;br /&gt;
 	[user] [nvarchar](2000) NULL,&lt;br /&gt;
 	[status] [nvarchar](2000) NULL,&lt;br /&gt;
 	[time] [datetime] NULL,&lt;br /&gt;
 	[iduser] [nvarchar](2000) NULL,&lt;br /&gt;
 PRIMARY KEY CLUSTERED &lt;br /&gt;
 (&lt;br /&gt;
 	[Id] ASC&lt;br /&gt;
 )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]&lt;br /&gt;
 ) ON [PRIMARY]&lt;br /&gt;
 GO&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_CallerID_%D0%B8_CalledID</id>
		<title>Определение CallerID и CalledID</title>
		<link rel="alternate" type="text/html" href="%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_CallerID_%D0%B8_CalledID"/>
				<updated>2023-03-31T11:20:48Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Шаг. Установка сценария */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики|Наверх]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Идентификация абонента в системе '''Oktell''' при входящем звонке часто происходит по таким характеристикам, как '''CallerId''' и '''CalledId'''. &lt;br /&gt;
* '''CallerId''' - номер звонящего.  &lt;br /&gt;
* '''CalledId''' - набранный номер.&lt;br /&gt;
&lt;br /&gt;
'''Пример''': Клиент '''89171234567''' набрал номер компании Телефонные Системы '''84952294989'''. '''Oktell''' определяет ''CallerId = 89171234567'' и ''CalledId = 84952294989''. &lt;br /&gt;
&lt;br /&gt;
В этой статье разбираются случаи, если эти параметры не соответствуют действительности, их значения отличны от реальных. Неправильное определение полностью зависит от вида SIP-пакета с INVITE-запросом от внешнего шлюза (провайдер, оборудование). &lt;br /&gt;
&lt;br /&gt;
== Источник определения CallerId ==&lt;br /&gt;
&lt;br /&gt;
Если при работе в '''Oktell''' замечено некорректное распознавание '''CallerId''', вы можете попробовать изменить '''Источник определения CallerId''' в SIP-пакете.&lt;br /&gt;
&lt;br /&gt;
* Зайдите в '''Администрирование''' - '''Параметры аппаратуры'''. &lt;br /&gt;
* Перейдите настройки шлюза. Измените параметр &amp;quot;'''Источник определения CallerId'''&amp;quot;. Параметр влияет на распознавание '''CallerId''' в принятом INVITE-пакете. Выберите одно из трех значений (каждое значение - это поле в пакете INVITE): &lt;br /&gt;
:* '''From: Uri''' &lt;br /&gt;
:* '''From: DispayName'''&lt;br /&gt;
:* '''Contact: Uri'''&lt;br /&gt;
&lt;br /&gt;
Нажмите &amp;quot;'''Сохранить'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Сценарий преобразования CallerID-001.png |center | 700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В случае, если ни один из этих вариантов не обеспечивает нужного результата, необходимо использовать ''Служебный сценарий преобразования CallerId''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Сценарий преобразования CallerId ==&lt;br /&gt;
&lt;br /&gt;
===Шаг. Разбор SIP-пакета===&lt;br /&gt;
&lt;br /&gt;
Определите, что во входящем SIP-пакете вообще присутствует искомый '''CallerId''' или '''CalledId'''. &lt;br /&gt;
&lt;br /&gt;
Все поступающие SIP-пакеты записываются в '''trn'''-лог. Лог располагается по пути '''server\log\hardware\sip'''. Откройте лог за текущую дату и найдите вид INVITE-пакета. &lt;br /&gt;
&lt;br /&gt;
'''Ключевые слова:''' RECV, FROM {Внешний IP-адрес}, INVITE&lt;br /&gt;
&lt;br /&gt;
По виду '''INVITE'''-пакета вы сможете определить:&lt;br /&gt;
* приходит ли правильная информация &lt;br /&gt;
* в каком поле располагается '''CallerID''' и корректно определить его в модуле &amp;quot;Параметры аппаратуры&amp;quot;&lt;br /&gt;
* в каком поле располагается '''CalledID''' и программно переопределить его. &lt;br /&gt;
&lt;br /&gt;
На рисунке показан пример SIP-пакета, в котором в поле '''INVITE''' подставлен некорректный '''CalledId'''. Необходимо программно переопределить '''CalledId'''.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Сценарий преобразования CallerID-002.png |center ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Шаг. Сохранение SIP-сообщения===&lt;br /&gt;
&lt;br /&gt;
В модуле &amp;quot;'''Параметры аппаратуры'''&amp;quot; в настройках шлюза (см. выше) установите параметру &amp;quot;'''Источник определения CallerId'''&amp;quot; в значение &amp;quot;'''Сообщение полностью'''&amp;quot;. Нажмите &amp;quot;'''Сохранить'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Сценарий преобразования CallerID-003.png |center | 700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Шаг. Создание сценария===&lt;br /&gt;
&lt;br /&gt;
Перейдите в '''Администрирование''' - '''Сценарии'''. Создайте служебный сценарий &amp;quot;'''Преобразование CallerId и CalledId'''&amp;quot;. Вид сценария показан ниже: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Сценарий преобразования CallerID-004.png |center ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1.''' Компонент &amp;quot;'''Старт'''&amp;quot;. Задан параметр запуска - переменная '''CallerID''' (строковая). В нее будет записан полностью весь текст SIP пакета. &lt;br /&gt;
&lt;br /&gt;
'''2.''' Компонент &amp;quot;'''CalledID'''&amp;quot; - парсит SIP-пакет и определяет значение '''CalledID''' (строковая) из поля &amp;quot;'''To:'''&amp;quot;. Используются регулярные выражения:&lt;br /&gt;
&lt;br /&gt;
 To:\s&amp;lt;sip:([^@]+) &lt;br /&gt;
&lt;br /&gt;
'''3.''' Компонент &amp;quot;'''CallerID'''&amp;quot; - определяет '''CallerID''' из поля &amp;quot;'''Contact:'''&amp;quot;. Используются регулярные выражения:&lt;br /&gt;
&lt;br /&gt;
 Contact:\s&amp;lt;sip:([^@]+)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FONT color=&amp;quot;red&amp;quot;&amp;gt;ВНИМАНИЕ:Не обязательно использовать только поле Contact. Вы также можете самостоятельно найти DisplayName и Uri и использовать их.&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как видим, хоть '''CallerID''' изначально правильно определялся в системе, но нам пришлось заново его определять, так как система записала полностью сообщение в эту переменную. Важно, что вначале определяется '''CalledId''', а затем '''CallerId'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Сценарий преобразования CallerID-006.png | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4.''' Компонент &amp;quot;'''8+Called'''&amp;quot; - фактически, приводит '''CalledId''' к общепринятому 11-значному формату. Добавляет &amp;quot;'''8'''&amp;quot; к началу номера с помощью выражения:&lt;br /&gt;
&lt;br /&gt;
 '8'+[CalledID]&lt;br /&gt;
&lt;br /&gt;
'''5.''' Компонент &amp;quot;'''8+Called'''&amp;quot; - действие, аналогично предыдущему. Компонент&lt;br /&gt;
&lt;br /&gt;
 '8'+[CalledID]&lt;br /&gt;
&lt;br /&gt;
'''6.''' Компонент &amp;quot;'''Возвращаемые значения'''&amp;quot; нужен чтобы ввести в систему найденные значения присваиваем &lt;br /&gt;
* служебной переменной &amp;quot;'''Возвращаемое значение'''&amp;quot; значение переменной '''CallerID''' &lt;br /&gt;
* служебной переменной &amp;quot;'''Возвращаемое значение 2'''&amp;quot; значение переменной '''CalledID'''&lt;br /&gt;
&lt;br /&gt;
'''7.''' Компонент &amp;quot;'''Отладочное уведомление'''&amp;quot; выводит информацию о найденных значениях на экран.  &lt;br /&gt;
&lt;br /&gt;
 '[CalledID] '+[CalledID]+endline+&lt;br /&gt;
 '[CallerID] '+[CallerID]&lt;br /&gt;
&lt;br /&gt;
'''8.''' Перейдите на вкладку '''Сохранение''' и сохраните сценарий  с помощью кнопки &amp;quot;'''На сервер'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Шаг. Установка сценария===&lt;br /&gt;
&lt;br /&gt;
Перейдите в '''Администрирование''' - '''Общие настройки''' - '''Сценарии АТС''' и укажите созданный сценарий в качестве ''Служебного сценария преобразования CallerID''. Нажмите &amp;quot;'''Сохранить'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Сценарий преобразования CallerID-005.png |center ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Скачать сценарий:''' [[Media:%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_CallerId_%D0%B8_CalledId.zip|Преобразование CallerId и CalledId.zip]]&lt;br /&gt;
&lt;br /&gt;
'''Техническая документация:''' [[Сценарии_АТС#SvcCallerIdModify|Служебный сценарий преобразования CallerId]]&lt;br /&gt;
&lt;br /&gt;
Про компонент '''Парсер''' написано в статье: [[Компонент Парсер]]&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	<entry>
		<id>%D0%9A%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82_%D0%9F%D0%B0%D1%80%D1%81%D0%B5%D1%80</id>
		<title>Компонент Парсер</title>
		<link rel="alternate" type="text/html" href="%D0%9A%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82_%D0%9F%D0%B0%D1%80%D1%81%D0%B5%D1%80"/>
				<updated>2023-03-31T11:19:13Z</updated>
		
		<summary type="html">&lt;p&gt;Oktell Support: /* Язык OQuery для HTML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Практики | Наверх ]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Компонент &amp;quot;'''Парсер'''&amp;quot; предназначен для разбора текстовых структур.&lt;br /&gt;
&lt;br /&gt;
* Для разбора обычного текста применяются '''регулярные выражения'''&lt;br /&gt;
* Для разбора гипертекста или XML-структуры применяется '''парсер OQuery''' &lt;br /&gt;
* Для разбора JSON-структура применяется '''парсер JSON'''&lt;br /&gt;
&lt;br /&gt;
Входным аргументом для парсера является '''Документ''' (структура, подлежащая разбору). '''Документ''' может быть задан текстом, через переменную или выражение, с помощью функции. Далее, в зависимости от документа, задается алгоритм поиска и поисковый запрос. При необходимости задаются дополнительные параметры:  '''Функция''' и '''Номер элемента'''. Результат разбора документа (&amp;quot;парсинга&amp;quot;) сохраняется в переменную (поле &amp;quot;'''Результат в переменную'''&amp;quot;).  &lt;br /&gt;
&lt;br /&gt;
Если с помощью одного парсера невозможно определить искомое выражение, необходимо использовать последовательность из таких компонентов. Каждый следующий парсер получает на вход результат от предыдущего компонента. Таким образом, возможен сколь угодно глубокий поиск нужной информации. &lt;br /&gt;
&lt;br /&gt;
В этой статье подробно рассматривается применение каждого алгоритма и примеры использования парсера. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Парсер-001.png | center | 500 px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Язык OQuery для HTML === &lt;br /&gt;
&lt;br /&gt;
'''Язык OQuery''' применяется для разбора гипертекста или XML-структуры. &lt;br /&gt;
&lt;br /&gt;
Для тестирования запросов применяется программа [[Media:OQuery-tester.zip|'''OQuery-tester.exe''']].&lt;br /&gt;
&lt;br /&gt;
Рассмотрим следующую XML-структуру:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-16&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;info&amp;gt;&lt;br /&gt;
 	&amp;lt;list index=&amp;quot;1&amp;quot; name=&amp;quot;matrix33&amp;quot;&amp;gt; &lt;br /&gt;
 		&amp;lt;row id=&amp;quot;1&amp;quot; name=&amp;quot;aaa&amp;quot;&amp;gt;&lt;br /&gt;
 			&amp;lt;col id=&amp;quot;1&amp;quot; name=&amp;quot;r1c1&amp;quot; /&amp;gt;&lt;br /&gt;
 			&amp;lt;col id=&amp;quot;2&amp;quot; name=&amp;quot;r1c2&amp;quot; /&amp;gt;&lt;br /&gt;
 			&amp;lt;col id=&amp;quot;3&amp;quot; name=&amp;quot;r1c3&amp;quot; /&amp;gt;&lt;br /&gt;
 		&amp;lt;/row&amp;gt;&lt;br /&gt;
 		&amp;lt;row id=&amp;quot;2&amp;quot; name=&amp;quot;bbb&amp;quot;&amp;gt;&lt;br /&gt;
 			&amp;lt;col id=&amp;quot;1&amp;quot; name=&amp;quot;r2c1&amp;quot; /&amp;gt;&lt;br /&gt;
 			&amp;lt;col id=&amp;quot;2&amp;quot; name=&amp;quot;r2c2&amp;quot; /&amp;gt;&lt;br /&gt;
 			&amp;lt;col id=&amp;quot;3&amp;quot; name=&amp;quot;r2c3&amp;quot; /&amp;gt;&lt;br /&gt;
 	&amp;lt;/row&amp;gt;&lt;br /&gt;
 		&amp;lt;row id=&amp;quot;3&amp;quot; name=&amp;quot;ccc&amp;quot;&amp;gt;&lt;br /&gt;
 			&amp;lt;col id=&amp;quot;1&amp;quot; name=&amp;quot;r3c1&amp;quot; /&amp;gt;&lt;br /&gt;
 			&amp;lt;col id=&amp;quot;2&amp;quot; name=&amp;quot;r3c2&amp;quot; /&amp;gt;&lt;br /&gt;
 			&amp;lt;col id=&amp;quot;3&amp;quot; name=&amp;quot;r3c3&amp;quot; /&amp;gt;&lt;br /&gt;
 		&amp;lt;/row&amp;gt;&lt;br /&gt;
 	&amp;lt;/list&amp;gt;&lt;br /&gt;
 	&amp;lt;list index=&amp;quot;2&amp;quot; name=&amp;quot;matrix22&amp;quot;&amp;gt;&lt;br /&gt;
 		&amp;lt;row id=&amp;quot;1&amp;quot; name=&amp;quot;ddd&amp;quot;&amp;gt;&lt;br /&gt;
 			&amp;lt;col id=&amp;quot;1&amp;quot; name=&amp;quot;element11&amp;quot; /&amp;gt;&lt;br /&gt;
 			&amp;lt;col id=&amp;quot;2&amp;quot; name=&amp;quot;element12&amp;quot; /&amp;gt;&lt;br /&gt;
 		&amp;lt;/row&amp;gt;&lt;br /&gt;
 		&amp;lt;row id=&amp;quot;2&amp;quot; name=&amp;quot;eee&amp;quot;&amp;gt;&lt;br /&gt;
 			&amp;lt;col id=&amp;quot;1&amp;quot; name=&amp;quot;element21&amp;quot; /&amp;gt;&lt;br /&gt;
 			&amp;lt;col id=&amp;quot;2&amp;quot; name=&amp;quot;element22&amp;quot; /&amp;gt;&lt;br /&gt;
 		&amp;lt;/row&amp;gt;&lt;br /&gt;
 	&amp;lt;/list&amp;gt;&lt;br /&gt;
 	&amp;lt;list index=&amp;quot;3&amp;quot; name=&amp;quot;matrixnull&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;/list&amp;gt;&lt;br /&gt;
 &amp;lt;/info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
XML-структура представляет из себя два листа, на первом листе матрица 3x3, на другом матрица 2x2. Ниже приведены запросы как можно добраться до каждого компонента в представленной структуре.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''info''' - запрос отображает все теги ''&amp;lt;info&amp;gt;'' и их содержимое. &lt;br /&gt;
&lt;br /&gt;
* '''list''' - запрос отображает все теги ''&amp;lt;list&amp;gt;'' и их содержимое. В примере, информация по двум листам.&lt;br /&gt;
&lt;br /&gt;
* '''list[index=&amp;quot;2&amp;quot;]''' - запрос отображает все теги ''&amp;lt;list index=&amp;quot;2&amp;quot;&amp;gt;'' (у которых атрибут index=2) и их содержимое. В примере, вся информация во втором листе.&lt;br /&gt;
&lt;br /&gt;
* '''col[id=&amp;quot;2&amp;quot;]''' - запрос отображает все теги ''&amp;lt;col id=&amp;quot;2&amp;quot;&amp;gt;'' (у которых атрибут id=&amp;quot;2&amp;quot;). В примере, все элементы во втором столбце в обеих матрицах. &lt;br /&gt;
&lt;br /&gt;
* '''list[index=&amp;quot;2&amp;quot;] col[id=&amp;quot;2&amp;quot;]''' - запрос отображает все теги ''&amp;lt;col id=&amp;quot;2&amp;quot;&amp;gt;'', которые находятся в ''&amp;lt;list index=&amp;quot;2&amp;quot;&amp;gt;''. В примере, это все элементы во втором столбце, которые находятся на втором листе.&lt;br /&gt;
&lt;br /&gt;
* '''col[id=&amp;quot;2&amp;quot;][name=&amp;quot;element22&amp;quot;]''' - запрос отображает все теги ''&amp;lt;col id=&amp;quot;2&amp;quot; name=&amp;quot;element22&amp;quot; /&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
* '''(col[id=&amp;quot;1&amp;quot;]):last:parent''' - запрос отображает родительский тег ('':parent'') у последнего тега ('':last'')'' &amp;lt;col id=&amp;quot;1&amp;quot;''&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После того, как вы доберетесь до нужного тега, например ''&amp;lt;col id=&amp;quot;1&amp;quot; name=&amp;quot;element21&amp;quot; /&amp;gt;'' вы можете определить значение каждого атрибута (id, name). Для этого воспользуйтесь свойством компонента &amp;quot;'''Функция'''&amp;quot; и выберите &amp;quot;'''Значения атрибута'''&amp;quot;, а в поле &amp;quot;'''Атрибут'''&amp;quot; введите название, например name. &lt;br /&gt;
&lt;br /&gt;
Если запрос возвращает несколько тегов, вы можете перебрать каждый в цикле, воспользовавшись полем &amp;quot;'''Номер элемента'''&amp;quot;. Количество найденных тегов можно найти с помощью функции &amp;quot;'''Количество элементов'''&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Синтаксис языка '''OQuery''' также описан в технической документации: [[Общие_компоненты_сценариев#.D0.9F.D0.B0.D1.80.D1.81.D0.B5.D1.80_.D1.82.D0.B5.D0.BA.D1.81.D1.82.D0.B0 | Парсер]]&lt;br /&gt;
&lt;br /&gt;
Пример использования: [[Служебный_сценарий_обработки_контента]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Парсер-002.png | center | 700 px]]&lt;br /&gt;
&lt;br /&gt;
=== Регулярные выражения ===&lt;br /&gt;
&lt;br /&gt;
'''Регулярные выражения''' - формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов. В Oktell регулярные выражения можно использовать для того, чтобы найти в тексте отдельно стоящее слово или найти все слова после заданного. &lt;br /&gt;
&lt;br /&gt;
Тестировать регулярные выражение можно с помощью сервиса [http://www.regexr.com/ http://www.regexr.com/]&lt;br /&gt;
&lt;br /&gt;
Регулярные выражения могут применяться, например, в задаче распознавания '''mailer-daemon''' (электронные письма о неудачной доставке). Например, вы делаете рассылку электронных писем, однако некоторые электронные адреса являются не валидными. При попытке отправки на такой адрес, на почту приходит письмо о неудачной доставке. Часть такого письма показана ниже: &lt;br /&gt;
&lt;br /&gt;
 Delivery to the following recipient failed permanently:&lt;br /&gt;
 &lt;br /&gt;
     oktell@mail.ru&lt;br /&gt;
 &lt;br /&gt;
 Technical details of permanent failure:&lt;br /&gt;
 Google tried to deliver your message, but it was rejected by the server for the recipient domain mail.ru by mxs.mail.ru. [94.100.176.20].&lt;br /&gt;
   &lt;br /&gt;
 The error that the other server returned was:&lt;br /&gt;
 550 spam message rejected. Please visit http://help.mail.ru/notspam-support/id?c=8JqX&lt;br /&gt;
 A-SgNbLWePr06WQuKoX2oyRiVZYKKcj1vWDyM~ or   report details to abuse@corp.mail.ru. &lt;br /&gt;
 Error code: 03979AF0B235A0E4FFFA78D642964EA76A5FA8E2592546328F9CA260D04BD65B. ID: 0000000B000054D5230F090F.&lt;br /&gt;
  &lt;br /&gt;
 ----- Original message -----&lt;br /&gt;
 &lt;br /&gt;
 X-Received: by 10.194.94.137 with SMTP id dc9mr4910734wjb.38.1380271480979;&lt;br /&gt;
         Fri, 27 Sep 2013 01:44:40 -0700 (PDT)&lt;br /&gt;
 X-Forwarded-To: oktell@mail.ru&lt;br /&gt;
 X-Forwarded-For: oktell@gmail.com oktell@mail.ru&lt;br /&gt;
 Delivered-To: oktell@gmail.com&lt;br /&gt;
 Received: by 10.216.42.200 with SMTP id j50csp355274web;&lt;br /&gt;
         Fri, 27 Sep 2013 01:44:38 -0700 (PDT)&lt;br /&gt;
 X-Received: by 10.58.100.144 with SMTP id ey16mr5269098veb.25.1380271477282;&lt;br /&gt;
         Fri, 27 Sep 2013 01:44:37 -0700 (PDT)&lt;br /&gt;
 Return-Path: &amp;lt;576@oktell.ru&amp;gt;&lt;br /&gt;
 Received: from mail-ve0-f179.google.com (mail-ve0-f179.google.com [209.85.128.179])&lt;br /&gt;
         by mx.google.com with ESMTPS id om2si1573076vec.37.1969.12.31.16.00.00&lt;br /&gt;
         (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);&lt;br /&gt;
         Fri, 27 Sep 2013 01:44:37 -0700 (PDT)&lt;br /&gt;
 Received-SPF: neutral (google.com: 209.85.128.179 is neither permitted nor denied by best guess record &lt;br /&gt;
 for domain of 576@oktell.ru) client- ip=209.85.128.179;&lt;br /&gt;
 Authentication-Results: mx.google.com;&lt;br /&gt;
        spf=neutral (google.com: 209.85.128.179 is neither permitted nor denied by best guess record for domain &lt;br /&gt;
 of 576@oktell.ru)  smtp.mail=576@oktell.ru&lt;br /&gt;
 Received: by mail-ve0-f179.google.com with SMTP id c14so1802657vea.10&lt;br /&gt;
         for &amp;lt;oktell@gmail.com&amp;gt;; Fri, 27 Sep 2013 01:44:36 -0700 (PDT)&lt;br /&gt;
 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;&lt;br /&gt;
&lt;br /&gt;
Ниже показаны примеры регулярных выражений:&lt;br /&gt;
&lt;br /&gt;
* '''\S+''' - все целые слова &lt;br /&gt;
&lt;br /&gt;
* '''[A-Z][A-Za-z]+''' - все слова, начинающиеся на прописную букву, за которой идет либо прописная либо строчная буква несколько раз.&lt;br /&gt;
&lt;br /&gt;
* '''X\-Forwarded\-For\:\s*(\S+(?:[^\r\n]+\S+)*)''' - находит все электронные почты, после ''X-Forwarded-For:'' до переноса строки. &lt;br /&gt;
&lt;br /&gt;
* '''(?:[a-zA-Z0-9][a-zA-Z0-9\-\.]*@)?(?:[a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,999}'''  - находит все электронные адресы и электронные почты в тексте. &lt;br /&gt;
&lt;br /&gt;
Перед группой рекомендуется ставить знак '''?:''' , чтобы возвратить значение в '''Oktell'''&lt;br /&gt;
&lt;br /&gt;
Если запрос возвращает несколько значений, перебор возможен с помощью цикла. Количество найденных значений можно найти с помощью функции &amp;quot;'''Количество элементов'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Парсер-003.png | center | 700 px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Парсер JSON ===&lt;br /&gt;
&lt;br /&gt;
'''JSON''' - текстовый формат обмена данными, основанный на '''JavaScript''' и обычно используемый именно с этим языком. &lt;br /&gt;
&lt;br /&gt;
Посмотреть структуру '''JSON'''-документа позволяет сервис [http://www.jsoneditoronline.org/ http://www.jsoneditoronline.org/] &lt;br /&gt;
&lt;br /&gt;
Рассмотрим следующий документ: &lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;info&amp;quot;: {&lt;br /&gt;
     &amp;quot;list1&amp;quot;: {&lt;br /&gt;
       &amp;quot;index&amp;quot;: 1,&lt;br /&gt;
       &amp;quot;name&amp;quot;: &amp;quot;matrix&amp;quot;,&lt;br /&gt;
       &amp;quot;rows&amp;quot;: [&lt;br /&gt;
         {&lt;br /&gt;
           &amp;quot;id&amp;quot;: 1,&lt;br /&gt;
           &amp;quot;name&amp;quot;: &amp;quot;row1&amp;quot;,&lt;br /&gt;
           &amp;quot;cols&amp;quot;: [&lt;br /&gt;
             {&lt;br /&gt;
               &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
               &amp;quot;name&amp;quot;: &amp;quot;element11&amp;quot;&lt;br /&gt;
             },&lt;br /&gt;
             {&lt;br /&gt;
               &amp;quot;id&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
               &amp;quot;name&amp;quot;: &amp;quot;element12&amp;quot;&lt;br /&gt;
             }&lt;br /&gt;
           ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
           &amp;quot;id&amp;quot;: 2,&lt;br /&gt;
           &amp;quot;name&amp;quot;: &amp;quot;row2&amp;quot;,&lt;br /&gt;
           &amp;quot;cols&amp;quot;: [&lt;br /&gt;
             {&lt;br /&gt;
               &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
               &amp;quot;name&amp;quot;: &amp;quot;element21&amp;quot;&lt;br /&gt;
             },&lt;br /&gt;
             {&lt;br /&gt;
               &amp;quot;id&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
               &amp;quot;name&amp;quot;: &amp;quot;element22&amp;quot;&lt;br /&gt;
             }&lt;br /&gt;
           ]&lt;br /&gt;
         }&lt;br /&gt;
       ]&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
В документе описана матрица 2x2, которая находится на первом листе в ''info''. &lt;br /&gt;
&lt;br /&gt;
'''Oktell''' имеет собственный синтаксис разбора '''JSON'''-объектов. В принципе синтаксис простейший: доступ к значению идет по имени в кавычках, доступ к вложенным объектам — через /, доступ к элементу массива по индексу. В качестве примера, рассмотрим следующие запросы: &lt;br /&gt;
&lt;br /&gt;
* '''&amp;quot;info&amp;quot;/&amp;quot;list1&amp;quot;/&amp;quot;name&amp;quot;''' - получить значение по имени name у объекта ''list1'' в объекте ''info''. Запрос вернет: '''&amp;quot;matrix&amp;quot;'''.&lt;br /&gt;
* '''&amp;quot;info&amp;quot;/&amp;quot;list1&amp;quot;/&amp;quot;rows&amp;quot;/1/&amp;quot;name&amp;quot;''' - получить значение по имени name у второго элемента (отсчет элемент начинается с нуля) в массиве ''rows''. Запрос вернет '''&amp;quot;row2&amp;quot;'''. &lt;br /&gt;
* '''&amp;quot;info&amp;quot;/&amp;quot;list1&amp;quot;/&amp;quot;rows&amp;quot;/1/&amp;quot;cols&amp;quot;/0/&amp;quot;name&amp;quot;''' - получить значение по имени ''name'' у первого элемента в массиве ''cols'' у второй строки на первом листе. Запрос вернет '''&amp;quot;element21&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
'''Техническая документация:''' [[Общие_компоненты_сценариев#json | Парсер JSON]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Парсер-004.png | center | 700 px]]&lt;/div&gt;</summary>
		<author><name>Oktell Support</name></author>	</entry>

	</feed>