Общие компоненты: файлы, процессы, плагины

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

Файловая операция

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

Тип объектаОперации
КаталогСоздать, удалить, переместить, переименовать, скопировать, проверить существование, количество подкаталогов, вернуть путь к подкаталогу, количество файлов, вернуть путь к файлу.
ФайлСоздать, удалить, переместить, переименовать, скопировать, проверить существование, определить размер, определить MD5 содержимого, считать данные, дописать данные в конец.
ПутьВернуть родительский каталог, вернуть имя, вернуть имя без расширения, вернуть расширение, проверить полноту, склеить пути.

Свойства

СвойствоОписание
ПутьАбсолютный путь к каталогу или файлу, над которым выполняется операция.
Тип объектаКаталог, файл или путь.
ОперацияОдна из перечисленных выше.
Новый путь / Новое имя / Путь копииПуть или имя для вновь созданного объекта. При переименовании без указания пути за основу берётся путь исходного объекта.
ДанныеСтрока, которая по выбранной кодировке переводится в двоичный вид и помещается в файл при создании и записи.
КодировкаUnicode, UTF-8, UTF-7, текущая кодовая страница Windows, Windows-1251, указанная кодовая страница Windows.
Данные в переменнуюСтроковая переменная для содержимого файла при чтении: данные считываются двоично и преобразуются в строку по выбранной кодировке.
МаскаМаска файлов или каталогов в формате операционной системы, например *.inf или data_??.txt. Используется при определении содержимого каталога.
ИндексПорядковый номер объекта в списке файлов или подкаталогов, отфильтрованном по маске. Отсчёт с 0.
Добавочный путьЧасть пути для склейки с основным. Основной C:\1 плюс добавочный 2.txt дают C:\1\2.txt.
Результат в переменнуюПеременная для результата операции: строковая либо числовая, в зависимости от операции.
ПереходПосле успешного завершения.
Переход, не найденоЕсли указанный каталог или файл не найден.
Переход, ошибкаЕсли в параметрах допущена ошибка либо ошибка возникла при выполнении операции.
Кодировка ANSI при сквозной передаче файла Если считанные из файла данные передаются дальше без изменений — веб-запросом или обратной записью в файл, — в обоих компонентах нужно выбирать кодировки ANSI. Только они гарантируют однозначное двустороннее преобразование без потери данных.
Маска нужна и при взятии пути по индексу Индекс отсчитывается в списке, уже отфильтрованном маской. Поэтому, определив содержимое каталога с маской, ту же самую маску следует указать и в операции взятия пути к конкретному файлу — иначе индексы разойдутся.

Запуск внешнего процесса с параметрами

Запускает на сервере внешний процесс или открывает приложение с указанным документом. В сценариях IVR применяется чаще всего для запуска системных программ и учётных или сервисных программ организации.

От чьего имени запускается процесс Когда сервер Октелл работает в режиме службы, процесс запускается от имени пользователя, указанного в настройках службы, — по умолчанию это системная учётная запись NETWORK SERVICE. Такие процессы выполняются в фоновом режиме и на экране пользователя не отображаются. Права этой учётной записи и определяют, что запускаемая программа сможет сделать.
СвойствоОписание
ФайлИмя или путь к файлу, который нужно запустить.
ПутьОтносительный или абсолютный. Относительный отсчитывается от папки запуска приложения Октелл.
Параметры командной строкиСтроковый аргумент с параметрами запуска.
Режим запускаС помощью оболочки — можно указывать документы, они откроются в зарегистрированных приложениях, но консольный ввод-вывод недоступен. Скрыть окно — приложение не показывает консольное окно. Не скрывать окно — обычное поведение.
Ожидание завершенияДа / нет. Приостанавливать ли сценарий до завершения процесса.
Консольный ввод/выводТолько при ожидании завершения и обычном режиме запуска. Нет; только ввод; только вывод; ввод и вывод.
Консольный вводСтроковый аргумент, передаваемый в консоль сразу после запуска.
Консольный вывод в переменнуюСтроковая переменная, куда полностью сохраняется вывод приложения.
Таймаут, мсТолько при ожидании завершения. Предельное время ожидания; 0 — таймаут не установлен.
Завершать при обрывеТолько при ожидании завершения. Принудительно ли завершать процесс, если он не завершился сам за отведённое время.
Переход, успехЕсли приложение успешно стартовало.
Переход, таймаутТолько при ожидании завершения.
Переход, неудачаФайл не найден, нет доступа или запуск не удался по иной причине.
Как упростить чтение из консоли При передаче сложных данных в консоль рекомендуется в самом начале сообщения указывать его общий размер — тогда принимающая сторона знает, сколько читать, и разбор становится тривиальным.

Действие или карточка в plugin либо WebCRM

Компонент выполняет метод во внешней среде — в подключённом плагине или активной Web-CRM. Обычно интеграция устроена наоборот: Октелл выступает сервером, исполняя запросы CRM и сообщая ей о коммуникационных событиях. Этот компонент даёт встречное направление — Октелл становится клиентом CRM-системы.

Что можно вызвать Общесерверные запросы: «определить компанию и ответственного сотрудника по определившемуся номеру», «создать инцидент по обращению».
Пользовательские действия: «отобразить карточку компании», «закрыть карточку», «переключить отображение в режим работы с партнёрами».

В клиентском плагине динамическими методами выступают заявленные формы — их опрашивают после регистрации плагина при настройке сценария. Исполнимыми поддерживаются диалоговые формы (тип 0) и компоненты типа 3. Серверные плагины тонкой настройки не требуют, их методы вызывает компонент «Плагин». Web-CRM сообщает о поддерживаемых методах в рамках обмена по интеграционному web-socket протоколу.

СвойствоОписание
Модуль, действиеВыбор plugin-модуля или Web-CRM и одного из заявленных в нём динамических методов.
СвойстваНастройка входных и выходных параметров метода. Выходные сохраняются только при вызове с ожиданием завершения.
Дожидаться завершенияДа / нет. При ожидании сценарий приостанавливается до ответа и сохраняет выходные значения в переменные. Без ожидания команда отправляется, и сценарий идёт дальше.
Момент отображенияТолько при отключённом ожидании; при включённом автоматически применяется «Сразу». См. таблицу ниже.
Ключ получателяТолько при моменте отображения «Сразу»; в остальных случаях получатели определяются автоматически. Идентификатор пользователя, имя, логин либо внутренний стандартный номер, явно определяющий пользователя. Для группового номера получателями станут все его участники, и запросов уйдёт ровно столько, сколько найдено получателей. Допустим список ключей через запятую.
Таймаут, секТолько в режиме ожидания. Сколько сценарий простаивает, ожидая ответ. По истечении управление уходит по ветке «Таймаут». Значение 0 — бесконечное ожидание.
ПереходПосле успешного выполнения.
Переход, таймаутДоступен только при «Дожидаться завершения — Да».
Переход, ошибкаМодуль не обнаружен, недоступен или операция невозможна.

Моменты отображения

МоментКогда отправляется командаОтмена
Сразу Немедленно и одновременно на адреса всех указанных пользователей. —
При входящем вызове Команда запоминается и хранится до следующего компонента «Переключение». Исполняется у каждого пользователя в тот момент, когда его телефон фактически начинает звонить, а обслуживаемый канал стоит первым в очереди. Есть: если пользователь не снял трубку и вызов ушёл дальше или потерялся, отправляется команда на прекращение исполнения метода.
При коммутации Только при успешном переключении — тому, с кем соединился обслуживаемый канал. Невозможна
При завершении коммутации В момент разрыва коммутации с тем, с кем состоялось соединение. Невозможна

Три последних момента настраиваются только в сценариях IVR.

Метод может не требовать пользователя В декларации динамического метода Web-CRM может быть заявлен режим вызова без указания пользователя — это прямые методы, исполняемые на сервере без привязки к рабочим станциям. В этом случае «Ключ получателя» просто не применяется. О том, нужны ли пользователи, должно сообщаться в описании самого метода.

Плагин

Выполняет произвольный сторонний код, подключённый к серверу стандартным plugin-компонентом. При выполнении подгружается внешняя сборка и ей передаётся управление; если сборка уже загружена, повторной загрузки не происходит — исключением является только обновление сборок в модуле «Администрирование. Внешние модули».

Управление передаётся вызовом метода PrepareShow управляющего объекта плагина. Параметром передаётся XML-структура с информацией о компоненте (его GUID из GetForms()), параметрах сценария, сессии, задачи и прочих доступных свойствах — состав зависит от типа сценария. Помимо базовых передаются значения параметров, заявленных плагином через GetInputParams. В ответ ожидается XML-структура с выходными значениями по списку из GetOutputParams. Компонентами сценария могут выступать все формы подпрограммы со свойством module=2.

СвойствоОписание
Модуль / ФормаВыбор плагина и одного из его компонентов.
СвойстваРедактор параметров формы: что передаётся и куда сохраняется.
Таймаут, секВремя, по истечении которого управление принудительно отбирается у подпрограммы. Нулевой интервал (по умолчанию) означает, что таймаут не установлен.
ПереходПосле успешного возврата.
Переход, компонент не найденPlugin-программа не указана, не найдена или не может быть загружена.
Переход, таймаутУправление не вернулось за отведённое время.
Переход, ошибкаПри возникновении ошибок.

Выполнение сценария приостанавливается до возврата управления из внешнего компонента. Обрыв исполнения происходит также при остановке сценария.

Регистрация динамического потока

Работает в паре со шлюзом, у которого включена динамическая регистрация потоков. Компонент регистрирует поток под указанным аккаунтом перед звонком по каналу такого шлюза. Логин и пароль можно взять из базы, вычислить или указать явно.

Достаточно выбрать шлюз — свободный поток будет автоматически зарегистрирован и зарезервирован под вызов именно в этом экземпляре сценария.

Такие потоки не видны в обычных списках Потоки и линии шлюзов с динамической регистрацией недоступны для выбора ни в задачах, ни в правах пользователей, ни в списках линий при наборе номера. Позвонить через них можно только явно передав код зарегистрированного потока в аргумент компонентов «Дозвон» служебного сценария или «Переключение на внешние» сценария IVR.
Когда поток разрегистрируется При успешной коммутации — автоматически, по завершении разговора и переводе одной из линий потока в состояние готовности.
Если коммутации не произошло — автоматически по истечении 3 минут неактивности либо этим же компонентом с действием «Отмена регистрации». На неудачных дозвонах поток простаивает эти три минуты, если явно его не освободить.
СвойствоОписание
ДействиеРегистрация — регистрирует аккаунт на сервере и переводит один из потоков шлюза в состояние готовности. Отмена регистрации — освобождает аккаунт и отключает указанный поток.
ШлюзТолько для регистрации. Один из шлюзов карты сети с динамической регистрацией потоков.
Аккаунт, ПарольТолько для регистрации. Логин и пароль для регистрации потока.
Время ожиданияТолько для регистрации. По истечении регистрация прерывается, выход по ветке «Таймаут».
Автоматическая отмена регистрацииТолько для регистрации. При любой последующей попытке дозвона по линии этого потока — даже неудачной, с ответом «занято» или «недоступно», — регистрация мгновенно отменяется.
Код потока в переменнуюТолько для регистрации. GUID зарегистрированного потока; далее используется в «Переключении на внешние», «Дозвоне» или при отмене регистрации.
Код ошибки в переменнуюТолько для регистрации. Большинство кодов совпадают с кодами ответов HTTP-сервера, например 404 — not found.
Код потокаТолько для отмены регистрации. GUID потока строкой: явно либо из переменной предыдущего компонента «Регистрация».
ПереходПосле успешного выполнения.
Переход, потоков не найденоТолько для регистрации. У выбранного шлюза нет свободных потоков.
Переход, таймаутТолько для регистрации. Ответ от внешнего сервера или шлюза не получен вовремя.
Переход, ошибкаПри возникновении ошибок.