- Created by Vitalii Kovalyshyn, last modified by Olesya Tantsyura on May 16, 2024
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 20 Current »
Операторы
if
Оператор if управляет условным ветвлением.
{ "if": { "expression": "${myVar} == '1'", "then": [], "else": [] } }
switch
Операторы switch и case помогают управлять сложными условными операциями и операциями ветвления.
{ "switch": { "variable": "${getIvrDigit}", "case": { "1": [], "2": [], "3": [], "default": [] } } }
while
Логика работы такая же, как и в языках программирования. Первый раз аппликейшены в блоке [do] выполняются без проверки условия. Последующие разы выполняются только если условие истинно.
{ "while": { "condition": "${myVar} < 10", "maxSteps": "1000", "do": [ { "log": "log is ${myVar}" }, { "js": { "data": "+${myVar} + 1", "setVar": "myVar" } } ] } }
condition - условие, написанное с учетом синтаксиса js;
maxSteps -глобальный параметр отвечает за максимальное количество шагов в непосредственно блоке (сделано для того чтобы если где-то дальше например в конце схемы цикл будет снова вызван из goto то схема не зациклилась) если не указывать по умолчанию будет 1000;
do – массив аппликейшенов, которые будут выполняться в цикле.
Триггеры
disconnected
Выполняет набор приложений после завершение основного скрипта. Объявляется единожды вначале скрипта.
{ "trigger": { "disconnected": [] } }
commands
Commands влиять пока только на все recvMessage в схеме, если будет выполнена команда, тогда recvMessage таймаут обновляется.
{ "trigger": { "commands": { "/queue": [ { "sendText": "queue" } ], "/show map": [ { "sendText": "map" } ], "press button 1": [ { "sendText": "button" } ] }, "disconnected": [ { "dump": true } ] } }, { "sendText": "start" }, { "recvMessage": { "set": "текст", "timeout": 20 } },
Функции
function
Объединить набор приложений в именную функцию. Объявляется вначале скрипта.
{ "function": { "name": "myFunction", "actions": [] } }
execute
Выполнение предварительно объявленной функции по имени.
{ "execute": { "name": "myFunction" } }
Переменные
set
Назначение переменных на канал.
{ "set": { "hangup_after_bridge": "true", "ivrLang": "en" } }
export
Экспорт переменных на сторону оператора, а также в статистику.
{ "export": [ "reverted_caller_id_number" ] },
unSet
Разустанавливает переменную.
{ "unSet": [ "reverted_caller_id_number" ] }
Служебные приложения
calendar
Приложение позволяет проверить текущее время с рабочим календарем. Значение сохраняется в переменную.
{ "calendar": { "extended": false, "name": "WorkDay", "setVar": "isWorkDay" } }
cache
Приложение позволяет работать с данными в памяти либо Redis сервере.
[ { "cache": { "action": "set", "set": { "data": { "key": "value" }, "ttl": "10000" }, "type": "memory" } }, { "cache": { "action": "get", "get": { "myVar": "key" }, "type": "redis" } }, { "cache": { "action": "delete", "delete": { "keys": [ "key", "key1" ] }, "type": "redis" } } ]
httpRequest
Выполнение HTTP REST запроса и обработка результата (get JSON)
{ "httpRequest": { "url": "https://sales.bpmonline.com/${id}/dataservice/json/reply/SelectQuery", "method": "POST", "timeout": 1000, "insecureSkipVerify": false, "parser": "application/json", "cacheCookie": false, "responseCode": "http_response_code", "headers": { "Content-Type":"application/json", "Cookie": "${my_cookie}" }, "path": { "id": 0 }, "data": { "Name": "Supervisor", "UserID": "Supervisor" }, "exportVariables": { "effective_caller_id_name": "callerIdName", "owner_caller_id_number": "callerIdOwner" } } }
js
Выполнение произвольного JavaScript кода с возвращением результата в переменную
{ "js": { "data": "var time = LocalDate(); time.setDate(time.getDate() + (+${dpd}*-1)); return time.getMonth() + '-' + time.getDate() + '-' + time.getFullYear()", "setVar": "myVar" } }
joinAgent
Постановка абонента в личную очередь оператора. Работает только для звонков.
{ "joinAgent": { "agent": { "extension": "1008" }, "processing": { "sec": 30, "form": { "id": 604 }, "enabled": true, "renewal_sec": 10 }, "queue_name": "${cc_queue_name}", "cancel_distribute": false } }
processing.form.id
- идентификатор формы. Если пусто, или 0 - без формы.
joinAgentToTask
Возможность из схемы оператору назначить таску (join task новая очередь task)
{ "joinAgentToTask": { "agent": { "extension": "1008", "id": "OR AGENT ID" }, "communication": { "description": "bla bla bla description", "destination": "bla bla", "type": { "id": 1 } }, "processing": { "enabled": true, "form": { "id": 604 }, "renewal_sec": 10, "sec": 30 }, "queue_name": "Igor test queue", "timeout": 20 } }
Работает для всех типов схем.
agent.id
oragent.extension
- обязательные поля, на какого оператора нужно назначить задачу;communication.description
- не обязательно, описание типа связи (см. Абоненты);communication.destination
- не обязательно, номер или любой текст типа связи (см. Абоненты);communication.type.id
- ид типа связи (Swagger UI здесь список);processing
- настройки постобработки:enabled
- включена или выключена постобработка;form.id
- ид формы (не обязательно);sec
- время в секундах постобработки в секундах;renewal_sec
- время возможности добавить постобработку;
queue_name
- название очередиtimeout
- время в секундах сколько ожидать ответа оператора (по умолчанию включено автоподнятие, поэтому этот параметр нужен больше для случаев, когда оператор не в Workspace).
math
Приложение для работы с математическими функциями
{ "math": { "data": "${caller_id_array}", "setVar": "new_random_caller_id", "fn": "random" } }
fn
random
: returns a random number from arraymin
andmax
: can be used to find the lowest or highest value in a list of argumentsround
: rounds a number to the nearest integerceil
: rounds a number up to the nearest integerfloor
: rounds a number down to the nearest integer
string
Приложение для работы со строкой.
{ "string": { "data": "${caller_id_number}", "fn": "replace", "setVar": "reverted_caller_id_number", "args": [ "/^0/", "+84" ], } }
fn
length
: returns the length of a stringindexOf
andlastIndexOf
: returns the index of (the position of) the first or last occurrence of a specified text in a stringsearch
: searches a string for a specified value and returns the position of the matchslice
: extracts a part of a string and returns the extracted part in a new stringsubstring
: is similar to slice. The difference is thatsubstring
cannot accept negative indexes.substr
: is similar to slice. The difference is that the second parameter specifies the length of the extracted part.replace
: replaces a specified value with another value in a stringtoUpperCase
ortoLowerCase
: A string is converted to upper case or to lower casecharAt
: returns the character at a specified index (position) in a stringcharCodeAt
: returns the unicode of the character at a specified index in a stringsplit
: A string can be converted to an array with thesplit
functionreverse
: Reverse the provided stringbase64
: base64 encoder / decoderMD5
: Computes a digest from a string usingMD5
algorithmSHA-256
: Computes a digest from a string usingSHA-256
algorithmSHA-512
: Computes a digest from a string usingSHA-512
algorithm
markIVR
Позволяет сохранить массив значений в переменную, которая будет доступна в истории
{ "markIVR": { "name": "Log", "value": "Входящий звонок" } }
userInfo
Приложение позволяет получить значение из объекта пользователя по номеру телефона
{ "userInfo": { "set": { "usrId": "id", "email": "email", "mob": "variables.fwd_mob", "out": "variables.out_cid" }, "user": { "extension": "${ext}" } } }
setGrantee
Передать права на канал пользователю с идентификатором указанным в id
{ "setGrantee": { "id": 10 } }
schema
Выполнить внешнюю схему по идентификатору
{ "schema": { "id": 1 } }
softSleep
Пауза выполнения скрипта в миллисекундах
{ "softSleep": 1000 }
sql
Приложение доступно исключительно для выделенных либо собственных серверов Webitel, позволяет выполнить запрос в базу данных и вернуть результат в переменную
[ { "sql": { "dns": "admin:123Webitel4@tcp(database-1.cluster-cnvuzqnsxvyv.eu-central-1.rds.amazonaws.com:3306)/mysql", "driver": "mysql", "params": [ "db" ], "query": "select 1 as tst_number, true as tst_bool, table_name, last_update from mysql.innodb_index_stats where table_name = ? order by rand() limit 1" } }, { "sql": { "dns": "user=webitel password=webitel host=10.9.8.111 dbname=webitel sslmode=disable", "driver": "postgres", "params": [ 12 ], "query": "select user_id from call_center.cc_agent where id = $1", "timeout": 5000 } }, { "sql": { "dns": "/opt/DataGripProjects/default/identifier.sqlite", "driver": "sqlite3", "query": "select count(*) as ss from storage where key like 'mph_%'", "timeout": 5000 } } ]
list
Проверка на наличие абонента в списке с выполнением действий
{ "list": { "name": "StopList_Chat_bot", "destination": "${user}", "actions": [ { "sendText": "BAN: ${from} ⛔️", "break": true } ] } }
listAdd
Добавить абонента в список
{ "listAdd": { "destination": "${caller_id_number}", "description": "${caller_id_name}", "expireAt": "${expired_at}", "list": { "id": 16 } } }
log
Вывод дополнительной информации в лог файл приложений
{ "log": " >> ${Hold} <<<" }
goto
Перейти к именной метке
{ "goto": "tagName" }
monoPay
Перейти к именной метке
{ "monoPay":{ "invoice":{ "action":"create", "body":{ "amount":"1", "paymentType":"debit", "setVar":"monoInvoice", "validity":"3600" } }, "token":"uLRpgdn9yE5JP11NuXVqdvWpKk6TbSiQnquzS2BxtiCw" }
Параметры приложений
Данные приложения могут вызываться как самостоятельно, так и как параметр другого приложения.
tag
Установить именную метку в скрипте
{ "tag": "tagName" }
async
Выполнение приложения без блокировки
{ "async": true }
break
Прерывает выполнение скрипта
{ "break": true }
limit
Позволяет прерывать цикл после прохождения количества указанного в атрибуте max. Выход осуществляется в именную метку, указанную в атрибуте failover.
{ "limit": { "max": 5, "failover": "anotherTag" } }
- No labels