Эта группа общих компонентов выводит сценарий за пределы платформы: работа с файлами на диске сервера, запуск внешних программ, вызов стороннего кода через плагины и CRM, регистрация потоков на шлюзах.
Файловая операция
Выполняет дисковую операцию с файлом, каталогом или путём. Перечень доступных операций зависит от выбранного типа объекта.
| Тип объекта | Операции |
|---|---|
| Каталог | Создать, удалить, переместить, переименовать, скопировать, проверить существование, количество подкаталогов, вернуть путь к подкаталогу, количество файлов, вернуть путь к файлу. |
| Файл | Создать, удалить, переместить, переименовать, скопировать, проверить существование, определить размер, определить MD5 содержимого, считать данные, дописать данные в конец. |
| Путь | Вернуть родительский каталог, вернуть имя, вернуть имя без расширения, вернуть расширение, проверить полноту, склеить пути. |
Свойства
| Свойство | Описание |
|---|---|
| Путь | Абсолютный путь к каталогу или файлу, над которым выполняется операция. |
| Тип объекта | Каталог, файл или путь. |
| Операция | Одна из перечисленных выше. |
| Новый путь / Новое имя / Путь копии | Путь или имя для вновь созданного объекта. При переименовании без указания пути за основу берётся путь исходного объекта. |
| Данные | Строка, которая по выбранной кодировке переводится в двоичный вид и помещается в файл при создании и записи. |
| Кодировка | Unicode, UTF-8, UTF-7, текущая кодовая страница Windows, Windows-1251, указанная кодовая страница Windows. |
| Данные в переменную | Строковая переменная для содержимого файла при чтении: данные считываются двоично и преобразуются в строку по выбранной кодировке. |
| Маска | Маска файлов или каталогов в формате операционной системы, например *.inf или data_??.txt. Используется при определении содержимого каталога. |
| Индекс | Порядковый номер объекта в списке файлов или подкаталогов, отфильтрованном по маске. Отсчёт с 0. |
| Добавочный путь | Часть пути для склейки с основным. Основной C:\1 плюс добавочный 2.txt дают C:\1\2.txt. |
| Результат в переменную | Переменная для результата операции: строковая либо числовая, в зависимости от операции. |
| Переход | После успешного завершения. |
| Переход, не найдено | Если указанный каталог или файл не найден. |
| Переход, ошибка | Если в параметрах допущена ошибка либо ошибка возникла при выполнении операции. |
Запуск внешнего процесса с параметрами
Запускает на сервере внешний процесс или открывает приложение с указанным документом. В сценариях IVR применяется чаще всего для запуска системных программ и учётных или сервисных программ организации.
| Свойство | Описание |
|---|---|
| Файл | Имя или путь к файлу, который нужно запустить. |
| Путь | Относительный или абсолютный. Относительный отсчитывается от папки запуска приложения Октелл. |
| Параметры командной строки | Строковый аргумент с параметрами запуска. |
| Режим запуска | С помощью оболочки — можно указывать документы, они откроются в зарегистрированных приложениях, но консольный ввод-вывод недоступен. Скрыть окно — приложение не показывает консольное окно. Не скрывать окно — обычное поведение. |
| Ожидание завершения | Да / нет. Приостанавливать ли сценарий до завершения процесса. |
| Консольный ввод/вывод | Только при ожидании завершения и обычном режиме запуска. Нет; только ввод; только вывод; ввод и вывод. |
| Консольный ввод | Строковый аргумент, передаваемый в консоль сразу после запуска. |
| Консольный вывод в переменную | Строковая переменная, куда полностью сохраняется вывод приложения. |
| Таймаут, мс | Только при ожидании завершения. Предельное время ожидания; 0 — таймаут не установлен. |
| Завершать при обрыве | Только при ожидании завершения. Принудительно ли завершать процесс, если он не завершился сам за отведённое время. |
| Переход, успех | Если приложение успешно стартовало. |
| Переход, таймаут | Только при ожидании завершения. |
| Переход, неудача | Файл не найден, нет доступа или запуск не удался по иной причине. |
Действие или карточка в plugin либо WebCRM
Компонент выполняет метод во внешней среде — в подключённом плагине или активной Web-CRM. Обычно интеграция устроена наоборот: Октелл выступает сервером, исполняя запросы CRM и сообщая ей о коммуникационных событиях. Этот компонент даёт встречное направление — Октелл становится клиентом CRM-системы.
Пользовательские действия: «отобразить карточку компании», «закрыть карточку», «переключить отображение в режим работы с партнёрами».
В клиентском плагине динамическими методами выступают заявленные формы — их опрашивают после регистрации плагина при настройке сценария. Исполнимыми поддерживаются диалоговые формы (тип 0) и компоненты типа 3. Серверные плагины тонкой настройки не требуют, их методы вызывает компонент «Плагин». Web-CRM сообщает о поддерживаемых методах в рамках обмена по интеграционному web-socket протоколу.
| Свойство | Описание |
|---|---|
| Модуль, действие | Выбор plugin-модуля или Web-CRM и одного из заявленных в нём динамических методов. |
| Свойства | Настройка входных и выходных параметров метода. Выходные сохраняются только при вызове с ожиданием завершения. |
| Дожидаться завершения | Да / нет. При ожидании сценарий приостанавливается до ответа и сохраняет выходные значения в переменные. Без ожидания команда отправляется, и сценарий идёт дальше. |
| Момент отображения | Только при отключённом ожидании; при включённом автоматически применяется «Сразу». См. таблицу ниже. |
| Ключ получателя | Только при моменте отображения «Сразу»; в остальных случаях получатели определяются автоматически. Идентификатор пользователя, имя, логин либо внутренний стандартный номер, явно определяющий пользователя. Для группового номера получателями станут все его участники, и запросов уйдёт ровно столько, сколько найдено получателей. Допустим список ключей через запятую. |
| Таймаут, сек | Только в режиме ожидания. Сколько сценарий простаивает, ожидая ответ. По истечении управление уходит по ветке «Таймаут». Значение 0 — бесконечное ожидание. |
| Переход | После успешного выполнения. |
| Переход, таймаут | Доступен только при «Дожидаться завершения — Да». |
| Переход, ошибка | Модуль не обнаружен, недоступен или операция невозможна. |
Моменты отображения
| Момент | Когда отправляется команда | Отмена |
|---|---|---|
| Сразу | Немедленно и одновременно на адреса всех указанных пользователей. | — |
| При входящем вызове | Команда запоминается и хранится до следующего компонента «Переключение». Исполняется у каждого пользователя в тот момент, когда его телефон фактически начинает звонить, а обслуживаемый канал стоит первым в очереди. | Есть: если пользователь не снял трубку и вызов ушёл дальше или потерялся, отправляется команда на прекращение исполнения метода. |
| При коммутации | Только при успешном переключении — тому, с кем соединился обслуживаемый канал. | Невозможна |
| При завершении коммутации | В момент разрыва коммутации с тем, с кем состоялось соединение. | Невозможна |
Три последних момента настраиваются только в сценариях IVR.
Плагин
Выполняет произвольный сторонний код, подключённый к серверу стандартным plugin-компонентом. При выполнении подгружается внешняя сборка и ей передаётся управление; если сборка уже загружена, повторной загрузки не происходит — исключением является только обновление сборок в модуле «Администрирование. Внешние модули».
Управление передаётся вызовом метода PrepareShow управляющего объекта плагина. Параметром передаётся XML-структура с информацией о компоненте (его GUID из GetForms()), параметрах сценария, сессии, задачи и прочих доступных свойствах — состав зависит от типа сценария. Помимо базовых передаются значения параметров, заявленных плагином через GetInputParams. В ответ ожидается XML-структура с выходными значениями по списку из GetOutputParams. Компонентами сценария могут выступать все формы подпрограммы со свойством module=2.
| Свойство | Описание |
|---|---|
| Модуль / Форма | Выбор плагина и одного из его компонентов. |
| Свойства | Редактор параметров формы: что передаётся и куда сохраняется. |
| Таймаут, сек | Время, по истечении которого управление принудительно отбирается у подпрограммы. Нулевой интервал (по умолчанию) означает, что таймаут не установлен. |
| Переход | После успешного возврата. |
| Переход, компонент не найден | Plugin-программа не указана, не найдена или не может быть загружена. |
| Переход, таймаут | Управление не вернулось за отведённое время. |
| Переход, ошибка | При возникновении ошибок. |
Выполнение сценария приостанавливается до возврата управления из внешнего компонента. Обрыв исполнения происходит также при остановке сценария.
Регистрация динамического потока
Работает в паре со шлюзом, у которого включена динамическая регистрация потоков. Компонент регистрирует поток под указанным аккаунтом перед звонком по каналу такого шлюза. Логин и пароль можно взять из базы, вычислить или указать явно.
Достаточно выбрать шлюз — свободный поток будет автоматически зарегистрирован и зарезервирован под вызов именно в этом экземпляре сценария.
Если коммутации не произошло — автоматически по истечении 3 минут неактивности либо этим же компонентом с действием «Отмена регистрации». На неудачных дозвонах поток простаивает эти три минуты, если явно его не освободить.
| Свойство | Описание |
|---|---|
| Действие | Регистрация — регистрирует аккаунт на сервере и переводит один из потоков шлюза в состояние готовности. Отмена регистрации — освобождает аккаунт и отключает указанный поток. |
| Шлюз | Только для регистрации. Один из шлюзов карты сети с динамической регистрацией потоков. |
| Аккаунт, Пароль | Только для регистрации. Логин и пароль для регистрации потока. |
| Время ожидания | Только для регистрации. По истечении регистрация прерывается, выход по ветке «Таймаут». |
| Автоматическая отмена регистрации | Только для регистрации. При любой последующей попытке дозвона по линии этого потока — даже неудачной, с ответом «занято» или «недоступно», — регистрация мгновенно отменяется. |
| Код потока в переменную | Только для регистрации. GUID зарегистрированного потока; далее используется в «Переключении на внешние», «Дозвоне» или при отмене регистрации. |
| Код ошибки в переменную | Только для регистрации. Большинство кодов совпадают с кодами ответов HTTP-сервера, например 404 — not found. |
| Код потока | Только для отмены регистрации. GUID потока строкой: явно либо из переменной предыдущего компонента «Регистрация». |
| Переход | После успешного выполнения. |
| Переход, потоков не найдено | Только для регистрации. У выбранного шлюза нет свободных потоков. |
| Переход, таймаут | Только для регистрации. Ответ от внешнего сервера или шлюза не получен вовремя. |
| Переход, ошибка | При возникновении ошибок. |