BPL-операции работают только в чатах и во входящих звонках. Для тестирования сценариев, использующих BPL-операции, используйте чат в виджете. Как создать тестовый виджет: Создание тестового виджета |
Назначение: удаление локальной или модульной переменной.
Аргументы:
Возвращаемое значение: отсутствует.
$localVar = 123
#moduleVar = true
del("$localVar") // Удаляет локальную переменную $localVar
del("localVar") // Тоже самое что и del("$localVar")
del("#moduleVar") // Удаляет переменную с областью видимости в пределах модуля |
Назначение: фактически преобразует аргумент к числу. Эквивалент унарной операции "+".
Аргументы:
Возвращаемое значение: число.
$a = math.pos(true) // $a будет равно 1 $a = math.pos(false) // $a будет равно 0 $a = math.pos(nil) // $a будет равно 0 $a = +true // $a будет равно 1, то же что и math.pos(true) |
Назначение: меняет знак числа. Эквивалент унарной операции "-".
Аргументы:
Возвращаемое значение: число со знаком обратному исходному.
$a = math.neg(-1) // $a будет равно 1 $a = math.neg(1) // $a будет равно -1 $a = math.neg(0) // $a будет равно 0 $a = -(-10) // $a будет равно 10, то же что и math.neg(-10) |
Назначение: инверсия бит числа. Эквивалент унарной операции "~".
Аргументы:
Возвращаемое значение: инвертированное число.
$a = math.inv(5) // $a равно 3 $a = ~5 // то же, что и предыдущая строка |
Назначение: логическое отрицание числа. Эквивалент унарной операции "!".
Аргументы:
Возвращаемое значение: true если num не равно 0 и false в противном случае.
$a = math.not(5) // $a равно false $a = math.not(0) // $a равно true $a = !0 // то же, что и предыдущая строка |
Назначение: сложение чисел. Эквивалент бинарной операции "+".
Аргументы:
Возвращаемое значение: сумма чисел.
$a = math.add(1.5, 3.5) // $a равно 5 $a = 1.5 + 3.5 // то же, что и предыдущая строка $a = math.add(1.000006, 2.1, 5) // $a равно 3.10001 |
Назначение: разность чисел. Эквивалент бинарной операции "-".
Аргументы:
Возвращаемое значение: разность чисел.
$a = math.sub(1.5, 3.5) // $a равно -2 $a = 1.5 - 3.5 // то же, что и предыдущая строка $a = math.sub(2.100006, 1.1, 5) // $a равно 1.00001 |
Назначение: произведение чисел. Эквивалент бинарной операции "*".
Аргументы:
Возвращаемое значение: произведение чисел.
$a = math.mul(1.5, 3.5) // $a равно 5.25 $a = 1.5 * 3.5 // то же, что и предыдущая строка $a = math.mul(1.2345, 1.234, 5) // $a равно 1.52337 |
Назначение: частное чисел. Эквивалент бинарной операции "/".
Аргументы:
Возвращаемое значение: частное чисел.
$a = math.div(1.5, 3.5) // $a равно 0.428571428571 $a = 1.5 / 3.5 // то же, что и предыдущая строка $a = math.div(1, 3, 5) // $a равно 0.33333 |
Назначение: целочисленное деление чисел. Эквивалент бинарной операции "\".
Аргументы:
Возвращаемое значение: целая часть частного чисел.
$a = math.idiv(2.5, 0.3) // $a равно 8 $a = 2.5 \ 0.3 // то же, что и предыдущая строка |
Назначение: остаток от деления двух чисел. Эквивалент бинарной операции "%".
Аргументы:
Возвращаемое значение: остаток от деления.
$a = math.mod(3.5, 1.5) // $a равно 0.5 $a = 3.5 % 1.5 // то же, что и предыдущая строка $a = math.mod(1/3, 2/7, 5) // $a равно 0.04762 |
Назначение: возведение числа base в степень power. Эквивалент бинарной операции "**".
Аргументы:
Возвращаемое значение: результат возведения в степень.
$a = math.pow(1.5, 3.5) // $a равно 4.133513940947 $a = 1.5 ** 3.5 // то же, что и предыдущая строка $a = math.pow(1.3, 7.1, 5) // $a равно 0.44166 |
Назначение: извлечение квадратного корня.
Аргументы:
Возвращаемое значение: квадратный корень либо ошибка, если число отрицательное.
$a = math.sqrt(3.14) // $a равно 1.772004514667 $a = math.sqrt(1.7, 5) // $a равно 0.30384 |
Назначение: округление числа до требуемого знака после запятой.
Аргументы:
Возвращаемое значение: округлённое с заданной точностью число.
$a = math.round(3.14159265358979323846264338327950288419716, 17) // $a равно 3.14159265358979324 $a = math.round(3.14159265358979323846264338327950288419716, 2) // $a равно 3.14 $a = math.round(3.14159265358979323846264338327950288419716, 0) // $a равно 3 |
Назначение: определение длины строки в символах.
Аргументы:
Возвращаемое значение: целое число равное количеству символов в строке.
$str = "Какая-то строка" $len = str.len($str) // $len будет содержать 15 |
Назначение: преобразовапние символов строки в нижний регистр.
Аргументы:
Возвращаемое значение: строка все символы которой находятся в нижнем регистре.
$str = "СтРоКа" $lower = str.lower($str) // $lower будет содержать "строка" |
Назначение: преобразование символов строки в верхний регистр.
Аргументы:
Возвращаемое значение: строка все символы которой находятся в верхнем регистре.
$str = "СтРоКа" $upper = str.upper($str) // $lower будет содержать "СТРОКА" |
Назначение: преобразование первого символа строки в верхний регистр.
Аргументы:
Возвращаемое значение: строка в которой первый символ записан в верхнем регистре.
$str = str.ucfirst("строка") // $str будет содержать "Строка" |
Назначение: преобразование первого символа строки в нижний регистр.
Аргументы:
Возвращаемое значение: строка в которой первый символ записан в нижнем регистре.
$str = str.ucfirst("Строка") // $str будет содержать "строка" |
Назначение: получение указанного символа строки.
Аргументы:
Возвращаемое значение: строка соответствующая указанному символу, либо пустая строка если символа с такой позицией не существует.
$str = "Слово" $firstLetter = str.letter($str, 0) // Первая буква $lastLetter = str.letter($str, -1) // Последняя буква |
Назначение: получение указанного символа строки начиная с начала строки.
Аргументы:
Возвращаемое значение: строка соответствующая указанному символу, либо пустая строка если символа с такой позицией не существует.
$str = "Слово" $firstLetter = str.first($str) // Первая буква $secondLetter = str.first($str, 1) // Вторая буква |
Назначение: получение указанного символа строки начиная с конца строки.
Аргументы:
Возвращаемое значение: строка соответствующая указанному символу, либо пустая строка если символа с такой позицией не существует.
$str = "Слово" $lastLetter = str.last($str) // Последняя буква $penultLetter = str.last($str, 1) // Предпоследняя буква |
Назначение: объединяет две строки в одну.
Аргументы:
Возвращаемое значение: новая строка состоящая из первой строки справа от которой добавлена вторая строка.
$str1 = "один" $str2 = "два" $str = str.concat($str1, $str2) // $str будет содержать "одиндва" |
Назначение: возвращает подстроку строки str, начинающейся с offset символа по счету и длиной length символов.
Аргументы:
Возвращаемое значение: часть str или пустая строка.
$sub = str.sub("abcdef", 1) // $sub равен bcdef
$sub = str.sub("abcdef", 1, 3) // $sub равен bcd
$sub = str.sub("abcdef", 0, 4) // $sub равен abcd
$sub = str.sub("abcdef", 0, 8) // $sub равен abcdef
$sub = str.sub("abcdef", -1, 1) // $sub равен f
$sub = str.sub("abcdef", -1) // $sub равен f
$sub = str.sub("abcdef", -2) // $sub равен ef
$sub = str.sub("abcdef", -3, 1) // $sub равен d
$sub = str.sub("abcdef", 0, -1) // $sub равен abcde
$sub = str.sub("abcdef", 2, -1) // $sub равен cde
$sub = str.sub("abcdef", 4, -4) // $sub равен пустой строке
$sub = str.sub("abcdef", -3, -1) // $sub равен de |
Назначение: объединяет элементы коллекции (кортежа, списка или ассоциативного массива) в строку.
Аргументы:
Возвращаемое значение: новая строка составленная из всех элементов коллекции отделённых между собой разделителем.
$str = str.join([1, 2, 3, 4, 5], "-") // $str будет содержать "1-2-3-4-5"
$str = str.join(("a", "b", "c")) // $str будет содержать "abc"
$str = str.join({"a": "один", "b": "два"}, " + ") // $str будет содержать "один + два"
$str = str.join(["одно"], "/") // $str будет содержать "одно"
$str = str.join([], "/") // $str будет содержать "" |
Назначение: разбивает строку на части использую separator в качестве разделителя.
Аргументы:
Возвращаемое значение: список подстрок на которые была разбита строка.
$letters = str.split("абвгде") // Получили список букв слова
$words = str.split("один два три", " ") // Получили список слов
$words = str.split("один два три", " ", 1) // words содержит ["один", "два три"] |
Назначение: ищет все вхождения подстроки в строке и заменяет их на заданное значение.
Аргументы:
Возвращаемое значение: новая строка в которой все search заменены на replace.
$str = str.replace("мама мыла раму", "рам", "Даш") // $str содержит "мама мыла Дашу" |
Назначение: выполняет проверку данной строки регулярному выражению.
Аргументы:
Возвращаемое значение: возвращает true, если строка соответствует регулярному выражению и false в противном случае.
Примечание: в качестве регулярных выражений используется Perl совместимые регулярные выражения (PCRE). Ссылка на документацию и примеры регулярных выражений: PCRE Doc.
Онлайн редактор регулярных выражений: http://myregexp.com/
$isIntNumber = str.match("1.234", "/^[0-9]+$/") // $isIntNumber будет равен false
$isIntNumber = str.match("1234", "/^[0-9]+$/") // $isIntNumber будет равен true |
Назначение: вычисляет степень сходства двух строк.
Аргументы:
Возвращаемое значение: возвращает число от 0 до 1 включительно определяющее степень сходства двух строк. 1 - строки эквивалентны, 0 - строки абсолютно разные.
Примечание: функция фактически вычисляет расстояние Дамерау-Левенштейна.
$d = str.distance("", "abc") // $d равен 0
$d = str.distance("Да", "да") // $d равен 1
$d = str.distance("корыто", "открыто") // $d равен 0.714
$d = str.distance("Да, верно", "таверна") // $d равен 0.625
$d = str.distance("жутко косые бананы", "жуй кокосы, ешь бананы") // $d равен 0.714
$d = str.distance("сошел с ума от раны", "Пошел он в пусурманы") // $d равен 0.45
$d = str.distance("ёж", "дезоксирибонуклеиновая кислота") // $d равен 0.033 |
Назначение: вычисляет хэш строки согласно указанному алгоритму.
Аргументы:
Возвращаемое значение: возвращает строку содержащую вычисленный хеш-код в шестнадцатеричной кодировке в нижнем регистре. Если binary задан как true, то возвращается хеш-код в виде бинарных данных. В случае ошибки (например, если указан недопустимый алгоритм хэширования) возвращает пустую строку.
Допустимые значения алгоритмов хэширования:
Примечание: если третий параметр true, то передавать возвращаемое функцией значение в качества сообщения бота или его части нельзя. Это приведёт к падению бота.
$hash = hash.of("Наглый коричневый лисёнок прыгает вокруг ленивой собаки.") // $hash будет содержать bff8b4bc8b5c1c1d5b3211dfb21d1e76
$hash = hash.of("Наглый коричневый лисёнок прыгает вокруг ленивой собаки.", "ripemd160") // $hash будет содержать 8817ca339f7f902ad3fb456150a1bb9b4cb5dde9
$hash = hash.of("Наглый коричневый лисёнок прыгает вокруг ленивой собаки.", "sha256", true) // $hash будет содержать бинарную строку (содержащую неотображаемые символы) |
Назначение: кодирует заданную строку в base64.
Аргументы:
Возвращаемое значение: возвращает строку закодированную в base64.
$encoded = codec.base64Encode("Привет!") // $encoded будет содержать строку "0J/RgNC40LLQtdGCIQ==" |
Назначение: декодирует заданную в base64 строку.
Аргументы:
Возвращаемое значение: возвращает раскодированную строку либо nil, если закодированная строка содержит символы не входящие в алфавит символов base64 кодировки.
$decoded = codec.base64Decode("0J/RgNC40LLQtdGCIQ==") // $decoded будет содержать строку "Привет!"
$failed = codec.base64Decode("Привет!") // $failed будет равен nil |
Назначение: складывает две даты, заданные в виде строки либо как число секунд.
Аргументы:
Возвращаемое значение: возвращает новую дату и время в виде строки.
$d = dt.add("2022-01-01 12:30:00", 59) // $d содержит строку "2022-01-01 12:30:59"
$d = dt.add(3600, "2022-01-01 12:30:00") // $d содержит строку "2022-01-01 13:30:00"
$d = dt.add("2022-01-01 00:00:00", "2022-01-02 00:00:00") // $d содержит строку "2022-01-03 00:00:00" |
Назначение: вычисляет разность двух дат, заданных в виде строк либо количеством секунд.
Аргументы:
Возвращаемое значение: возвращает новую дату и время в виде строки либо число секунд - разность дат.
$d = dt.sub(100, 50) // $d содержит 50
$d = dt.sub("2022-01-01 12:30:00", 3600) // $d содержит строку "2022-01-01 11:30:00"
$d = dt.sub(3600, "2022-01-01 12:30:00") // Такой вызов недопустим и приведёт к остановке программы
$d = dt.sub("2022-01-01 01:00:00", "2022-01-01 00:00:00") // $d содержит 3600 |
Назначение: форматирует дату согласно заданному формату.
Аргументы:
Возвращаемое значение: строка даты в заданном формате.
Допустимые параметры форматирования:
| Символ в строке format | Описание | Пример возвращаемого значения |
|---|---|---|
| Год | ||
| y | Полное числовое представление года, не менее 4 цифр | 1999, 2012, 10208 |
| yy | Две последние цифры года c дополнением нулями если необходимо | 99, 05 |
| Месяц | ||
| M | Порядковый номер месяца без ведущего нуля | от 1 до 12 |
| MM | Порядковый номер месяца с ведущим нулём | от 01 до 12 |
| День | ||
| d | День месяца без ведущего нуля | от 1 до 31 |
| dd | День месяца, 2 цифры с ведущим нулём | от 01 до 31 |
| Час | ||
| h | Часы в 12-часовом формате без ведущего нуля | от 1 до 12 |
| hh | Часы в 12-часовом формате с ведущим нулём | от 01 до 12 |
| H | Часы в 24-часовом формате без ведущего нуля | от 0 до 23 |
| HH | Часы в 24-часовом формате с ведущим нулём | от 00 до 23 |
| Минуты | ||
| m | Минуты без ведущего нуля | от 0 до 59 |
| mm | Минуты с ведущим нулём | от 00 до 59 |
| Секунды | ||
| s | Секунды без ведущего нуля | от 0 до 59 |
| ss | Секунды с ведущим нулём | от 00 до 59 |
Примечание: если строка формата содержит символы совпадающие с вышеперечисленными, но не являющиеся параметрами форматирования, то их следует экранировать с помощью символа обратного слэша "\".
$dt = dt.format('2022-12-20 08:34:05', 'y.MM.dd h-mm-ss') // $dt будет содержать строку "22.12.20 8-34-05"
$dt = dt.format('16:30:47', '\Hour\s an\d \minute\s: HH/mm') // $dt будет содержать строку "Hours and minutes: 16/30" |
Назначение: возвращает ближайшую будущую к текущей дату по заданному дню.
Аргументы:
Возвращаемое значение: возвращает ближайшую к day дату.
// Допустим сейчас 2022-12-20 $d = date.nearFuture(25) // $d содержит 2022-12-25 $d = date.nearFuture(10) // $d содержит 2023-01-10 |
Назначение: возвращает ближайшую прошлую к текущей дату по заданному дню.
Аргументы:
Возвращаемое значение: возвращает ближайшую к day дату.
// Допустим сейчас 2022-12-20 $d = date.nearPast(25) // $d содержит 2022-11-25 $d = date.nearPast(10) // $d содержит 2023-12-10 |
Назначение: возвращает дату соответствующую указанному дню в следующем месяце.
Аргументы:
Возвращаемое значение: дата в будущем.
// Допустим сейчас 2022-12-20 $d = date.future(25) // $d содержит 2023-01-25 $d = date.future(10) // $d содержит 2023-01-10 |
Назначение: возвращает дату соответствующую указанному дню в прошлом месяце.
Аргументы:
Возвращаемое значение: дата в прошлом.
// Допустим сейчас 2022-12-20 $d = date.past(25) // $d содержит 2022-11-25 $d = date.past(10) // $d содержит 2022-11-10 |
Назначение: возвращает ближайшее будущее к текущему время по заданному количеству минут.
Аргументы:
Возвращаемое значение: возвращает ближайшее к minute время.
// Допустим сейчас 23:30:00 $t = time.nearFuture(45) // $t содержит 23:45:00 $t = time.nearFuture(15) // $t содержит 00:15:00 |
Назначение: возвращает ближайшее прошлое к текущему время по заданному количеству минут.
Аргументы:
Возвращаемое значение: возвращает ближайшее к minute время.
// Допустим сейчас 23:30:00 $t = time.nearPast(45) // $t содержит 22:45:00 $t = time.nearPast(15) // $t содержит 23:15:00 |
Назначение: возвращает время соответствующее указанному числу минут в следующем часе.
Аргументы:
Возвращаемое значение: время в будущем.
// Допустим сейчас 23:30:00 $t = time.future(45) // $t содержит 00:45:00 $t = time.future(15) // $t содержит 00:15:00 |
Назначение: возвращает время соответствующее указанному числу минут в прошедшем часе.
Аргументы:
Возвращаемое значение: время в прошлом.
// Допустим сейчас 23:30:00 $t = time.past(45) // $t содержит 22:45:00 $t = time.past(15) // $t содержит 22:15:00 |
Назначение: определение размера очереди сообщений пользователя.
Аргументы: отсутствуют.
Возвращаемое значение: число сообщений пользователя.
$messageCount = queue.size() // $messageCount содержит число сообщений пользователя за всё время диалога |
Назначение: возвращает последнее сообщение пользователя либо nil, если очередь сообщений пуста.
Аргументы: отсутствуют.
Возвращаемое значение: объект UserMessage или nil.
$lastMessage = queue.last() // $lastMessage содержит последнее на данный момент сообщение пользователя |
Назначение: возвращает первое сообщение пользователя либо nil, если очередь сообщений пуста.
Аргументы: отсутствуют.
Возвращаемое значение: объект UserMessage или nil.
$firstMessage = queue.first() // $firstMessage содержит первое сообщение пользователя за всё время диалога |
Назначение: возвращает сообщение пользователя по его порядковому номеру, начиная с 1.
Аргументы:
Возвращаемое значение: объект UserMessage или nil.
$message = queue.nth(1) // $message содержит первое сообщение пользователя $message = queue.nth(5) // $message содержит пятое сообщение пользователя |
Назначение: возвращает сообщение пользователя по его порядковому номеру считая с конца очереди. Последнее сообщение соответствует порядковому номеру 1.
Аргументы:
Возвращаемое значение: объект UserMessage или nil.
$message = queue.lastNth(1) // $message содержит последнее сообщение пользователя $message = queue.lastNth(5) // $message содержит пятое с конца очереди сообщение пользователя |
Назначение: сохраняет факт в базе фактов.
Аргументы:
Возвращаемое значение: отсутствует.
fact.save("место", "город", "Екатеринбург") // Факт доступный всем ботам компании
fact.save("место", "город", "Екатеринбург", nil, @clientId) // Факт с привязкой к клиенту
fact.save("место", "город", "Екатеринбург", @botId) // Факт с привязкой к боту
fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Факт с привязкой к боту и клиенту |
Назначение: извлекает факт из базы фактов.
Аргументы:
Возвращаемое значение: содержимое факта.
fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Сохраняет факт с привязкой к боту и клиенту
$city = fact.load("место", "город", @botId, @clientId) // Загружаем факт в переменную. $city содержит "Екатеринбург" |
Назначение: удаляет факт из базы фактов.
Аргументы:
Возвращаемое значение: отсутствует.
fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Сохраняет факт с привязкой к боту и клиенту
$city = fact.load("место", "город", @botId, @clientId) // Загружаем факт в переменную. $city содержит "Екатеринбург"
fact.delete("место", "город", @botId, @clientId) // Удаляем факт.
$city = fact.load("место", "город", @botId, @clientId) // Пытаемся загрузить удалённый факт. Теперь $city содержит nil. |
Назначение: возвращает экземпляр FactQuery для построения и выполнения запросов к базе фактов.
Аргументы: отсутствуют.
Возвращаемое значение: объект FactQuery.
// Добавили пару фактов в базу
fact.save("место", "страна", "Россия")
fact.save("место", "город", "Екатеринбург")
// Загрузили в $places список мест отсортированных по имени факта в порядке убывания:
// [{"name": "город", "value": "Россия"}, {"name": "страна", "value": "Екатеринбург"}]
$places = fact.query().
select("name,value").
where("context", "=", "место").
sortBy("-name").
rows() |
Назначение: возвращает экземпляр FactQueryCondition для построения составных условий в запросах к базе фактов.
Аргументы: отсутствуют.
Возвращаемое значение: объект FactQueryCondition.
// Добавили факты в базу
fact.save("города", "екатеринбург", "Екатеринбург")
fact.save("города", "москва", "Москва")
fact.save("города", "санкт-петербург", "Санкт-Петербург")
fact.save("города", "новосибирск", "Новосибирск")
// Найдём один город начинающийся с буквы "м" или с буквы "т" и не равный городам "Екатеринбург" и "Новосибирск"
$city = fact.query().
select("value").
where("context", "=", "города").
where(fact.cond().
where("name", "^@", "м").
orWhere("name", "^@", "т")).
where("name", "not in", ("екатеринбург", "новосибирск")).
one() |
Назначение: запускает таймер обратного отсчёта. По истечении указанного времени бот осуществит переход на указанный узел (блок).
Аргументы:
Возвращаемое значение: идентификатор таймера.
$timerId = timer.start(60, "760b9732-4bfb-4846-a348-faae5138fcb2") // $timerId содержит уникальный идентификатор таймера на 60 секунд |
Назначение: останавливает (удаляет) таймер обратного отсчёта.
Аргументы:
Возвращаемое значение: отсутствует.
$timerId = timer.start(60, "760b9732-4bfb-4846-a348-faae5138fcb2") timer.stop($timerId) // останавливаем (удаляем) таймер |
Назначение: парсит текст на естественном языке.
Аргументы:
Возвращаемое значение: объект Sentence содержащий информацию о всех намерениях и сущностях исходного сообщения.
Примечание: данная функция извлекает из текста только сущности. Для работы с намерениями используйте функцию nlu.parse
$sentence = nlp.parse(queue.first()) // парсим первое сообщение пользователя |
Назначение: объединяет два текста на естественном языке в одно и затем парсит его.
Аргументы:
Возвращаемое значение: объект Sentence содержащий информацию о всех намерениях и сущностях объединённого сообщения.
$sentence = nlp.join(queue.lastNth(2), queue.lastNth(1)) // объединяем предпоследнее и последнее сообщения пользователя и затем парсим его |
Назначение: позволяет установить сообщение пользователя для обработки в других узлах (блоках) схемы бота.
Аргументы:
Возвращаемое значение: отсутствует.
$sentence = nlp.join(queue.lastNth(2), queue.lastNth(1)) // объединяем предпоследнее и последнее сообщения пользователя и затем парсим его nlp.setPerception($sentence) // Теперь остальные узлы схемы будут работать с cообщением $sentence |
Назначение: разбор текста на естественном языке. Выявление намерений и сущностей.
Аргументы:
Возвращаемое значение: объект Sentence.
$sentence = nlu.parse("Доброе утро Вася!", "d926726a-5acb-4233-8c1e-ce4300921de0") |
Назначение: отправляет HTTP запрос на указанный URL.
Аргументы:
Возвращаемое значение: объект HTTP ответа.
// Выполняем запрос на получение списка юзеров
$response = http.sendRequest("https://iam.twin24.ai/api/v1/users", "GET", {"limit": 15, "offset": 5}, {"Authorization": "Bearer authToken"})
// Извлекаем информацию о запросе
$statusCode = $response.statusCode
$body = $response.body
$headers = $response.headers
$error = $response.error |
Назначение: формирует новый объект HTTP запроса.
Аргументы:
Возвращаемое значение: объект содержащий информацию о HTTP запросе.
$response = http.request("https://some.url", "POST", {"param1": 123, "param2": true}).
headers({"Content-Type": "application/json"}).
timeout(300).
send() |
Назначение: задаёт максимально допустимое время запроса в секундах. Если запрос отрабатывает дольше указанного времени, то его выполнение прерывается.
Аргументы:
Возвращаемое значение: объект содержащий информацию о HTTP запросе.
$response = http.request("https://some.url", "GET").
timeout(300).
send() |
Назначение: задаёт URL запроса.
Аргументы:
Возвращаемое значение: объект содержащий информацию о HTTP запросе.
$response = http.request().
url("http://some.url?p1=v1&p2=v2").
method("GET").
send() |
Назначение: задаёт HTTP метод запроса.
Аргументы:
Возвращаемое значение: объект содержащий информацию о HTTP запросе.
$response = http.request().
url("http://some.url?p1=v1&p2=v2").
method("GET").
send() |
Назначение: задаёт тело запроса.
Аргументы:
Возвращаемое значение: объект содержащий информацию о HTTP запросе.
$response = http.request().
url("http://some.url?p1=v1&p2=v2")
method("PUT").
body("some body").
send() |
Назначение: добавляет HTTP заголовок.
Аргументы:
Возвращаемое значение: объект содержащий информацию о HTTP запросе.
$response = http.request().
url("http://some.url?p1=v1&p2=v2").
method("POST").
header("Content-Type", "application/json").
header("Accept-Language", "en-US,en;q=0.5").
send() |
Назначение: задаёт HTTP заголовки.
Аргументы:
Возвращаемое значение: объект содержащий информацию о HTTP запросе.
$response = http.request().
url("http://some.url?p1=v1&p2=v2").
method("PUT").
body("some body").
headers({"Content-Type": "application/json", "Accept-Language": "en-US,en;q=0.5"}).
send() |
Назначение: добавляет файл для отправки по HTTP.
Аргументы:
Возвращаемое значение: объект содержащий информацию о HTTP запросе.
$response = http.request().
url("http://some.url").
method("POST").
header("Content-Type", "multipart/form-data").
file($fileId, "file").
send() |
Назначение: отправляет сформированный запрос.
Возвращаемое значение: объект ответа сервера.
$response = http.request("http://some.url?p1=v1&p2=v2", "PUT", "some body").
headers({"header1": "...", "header2": "...").
send() |
Назначение: код статуса ответа.
$response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
$code = $response.statusCode |
Назначение: тело ответа.
$response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
$body = $response.body |
Назначение: заголовки ответа.
$response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
$headers = $response.headers |
Назначение: значение элемента error тела ответа или пустая строка, если такого элемента нет.
$response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
$error = $response.error |
Назначение: определение успешности ответа.
Возвращаемое значение: возвращает true, если свойство error не пустое или код статуса больше или равен 400, иначе возвращает false.
$response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
$isError = $response.isError() |
Назначение: определение успешности ответа.
Возвращаемое значение: возвращает true, если свойство error пустое и код статуса меньше 400, иначе возвращает false.
$response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
$isSuccessful = $response.isSuccessful() |
Назначение: определение наличия заголовка.
Аргументы:
Возвращаемое значение: true, если заголовок с указанным именем существует и false в противном случае.
$response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
$hasContentType = $response.hasHeader("Content-Type") |
Назначение: получение значения заголовка.
Аргументы:
Возвращаемое значение: значение заголовка с указанным именем или пустую строку, если такого заголовка нет.
$response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
$contentType = $response.header("Content-Type") |
Назначение: получение файла из HTTP ответа.
Возвращаемое значение: идентификатор загруженного файла.
$response = http.sendRequest("http://some.url", "GET")
$fileId = $response.toFile() |
Назначение: останавливает работу бота на указанное количество микросекунд. Если количество микросекунд превышает 1 минуту, то пауза будет уменьшена до 1 минуты.
Аргументы:
Возвращаемое значение: отсутствует.
sys.sleep(3_000_000) // Пауза в 3 секунды |
Назначение: отправляет сообщение в демо версию нейросети RuGTP-3 и возвращает её ответ.
Аргументы:
Возвращаемое значение: ответ нейросети в виде строки.
$answer = gpt3.ask("Есть ли жизнь на Марсе?") // В $answer будет ответ нейросети на заданный вопрос |
Используя методы этого объекты вы можете выполнять и строить разнообразные запросы к базе фактов. База фактов представляет собой список записей. Каждая запись представляет собой единичный факт состоящий из следующих частей (полей):
Назначение: задаёт список полей из базы фактов значения которых следует вернуть в результате запроса. Если метод select не вызыался, то будут возвращены поля context,name и value.
Аргументы:
Возвращаемое значение: тот же объект FactQuery.
$facts = fact.query().rows() // select не вызван возвращаем все поля.
$facts = fact.query().select(["value", "context"]).rows() // Возвращаем список фактов для которых нам нужны только value и context.
$facts = fact.query().select("botId").rows() // Возвращаем только поле botId к которым привязаны факты. |
Назначение: задаёт условие поиска фактов. Несколько методов where объединяются по принципу логического "И", т.е. все условия должны быть выполнены. Метод where равносилен методу andWhere(field, operator, value).
Аргументы:
Возвращаемое значение: тот же объект FactQuery.
Список доступных операций:
// Ищем факты у которых context содержит подстроку test
$facts = fact.query().
select("name,value").
where("context", "~", "^.*test.*$").
rows() |
Эквивалентен where(field, operator, value).
Аналогичен where, с той лишь разницей, что несколько вызовов этого метода объединяются по принципу логического "ИЛИ", т.е. должно выполняться хотя бы одно условие.
Назначение: задаёт сложное (вложенное) условие. Несколько вызвов метода объединяются по принципу логического "И". Эквивалентен методу andWhere(cond).
Аргументы:
Возвращаемое значение: тот же объект FactQuery.
// Ищем факты у которых context содержит подстроку test и при этом name равен "слово" или name начинается на "оп".
$facts = fact.query().
select("name,value").
where("context", "~", "^.*test.*$").
andWhere(fact.cond().
where("name", "=", "слово").
orWhere("name", "^@", "оп")).
rows() |
Эквивалентен where(cond)
Аналогичен where(cond), с той лишь разницей, что несколько вызовов этого метода объединяются по принципу логического "ИЛИ", т.е. должно выполняться хотя бы одно условие.
Назначение: задаёт сортирову фактов по указанным полям.
Аргументы:
Возвращаемое значение: тот же объект FactQuery.
// Получаем все факты для бота с двойной сортировкой:
// сначала по контексту по возрастанию (т.е. в алфавитном порядке)
// и далее по имени факта по убыванию.
$facts = fact.query().
select("name,value").
where("botId", "=", @botId)
sortBy("+context,-name"). // можно также использовать коллеции. Например, sortBy(["+context", "-name"])
rows() |
Назначение: ставит ограничение на максимальное количество извлекаемых фактов.
Аргументы:
Возвращаемое значение: тот же объект FactQuery.
// Получаем первые 10 фактов
$facts = fact.query().
select("name,value").
sortBy("name").
limit(10).
rows() |
Назначение: задаёт количество фактов которые следует пропустить при поиске.
Аргументы:
Возвращаемое значение: тот же объект FactQuery.
// Пропускаем 5 первых фактов и извлекаем следующие 10
$facts = fact.query().
select("name,value").
sortBy("name").
skip(5).
limit(10).
rows() |
Назначение: возвращает первое указанное через select поле первого найденного факта.
Аргументы: отсутствуют.
Возвращаемое значение: значение поля.
// Извлекает имя первого найденного факта
$firstFactName = fact.query().
select("name,value"). // value хоть и указано, но будет проигнорировано
one() |
Назначение: возвращает список состоящий из всех значений первого выбранного поля найденных фактов.
Аргументы: отсутствуют.
Возвращаемое значение: список значений поля.
// Извлекает список имён всех найденных фактов
$names = fact.query().
select("name,value"). // value хоть и указано, но будет проигнорировано
column() |
Назначение: возвращает все выбранные поля в виде ассоциативного массива для первого найденного факта.
Аргументы: отсутствуют.
Возвращаемое значение: значения всех полей первого факта.
// Извлекает имя и значение первого найденного факта
$names = fact.query().
select("name,value").
row() |
Назначение: возвращает список всех найденных фактов. Каждый факт возвращается как ассоциативный массив ключами которого являются поля факта, а значениями - значения полей.
Аргументы: отсутствуют.
Возвращаемое значение: значения всех полей всех фактов.
// Извлекает имя и значение всех фактов
$names = fact.query().
select("name,value").
rows() |
Используйте методы этого объекта чтобы строить сложные вложенные условия к базе фактам.
Аналогичен методу where(field string, operator string, value mixed) объекта FactQuery.
Аналогичен методу andWhere(field string, operator string, value mixed) объекта FactQuery.
Аналогичен методу orWhere(field string, operator string, value mixed) объекта FactQuery.
Аналогичен методу andWhere(field string, operator string, value mixed) объекта FactQuery.
Аналогичен методу orWhere(field string, operator string, value mixed) объекта FactQuery.
Аналогичен методу where(cond FactQueryCondition) объекта FactQuery.
Аналогичен методу andWhere(cond FactQueryCondition) объекта FactQuery.
Аналогичен методу orWhere(cond FactQueryCondition) объекта FactQuery.
Аналогичен методу andWhere(cond FactQueryCondition) объекта FactQuery.
Аналогичен методу orWhere(cond FactQueryCondition) объекта FactQuery.
Назначение: оригинальный текст сообщения.
$msg = queue.last().message // $msg содержит текст последнего сообщения пользователя |
Назначение: список идентификаторов файлов приложенных к сообщению.
$attachments = queue.first().attachments // $attachments содержит список вложений первого сообщения пользователя. |
Назначение: определяет пустое ли сообщение.
Аргументы: отсутствуют.
Возвращаемое значение: true, если сообщение пустое и false в противном случае.
$isEmpty = queue.last().isEmpty() // $isEmpty содержит true, если последнее сообщение пользователя пустое и false в противном случае |
Назначение: определяет есть ли вложения в данном сообщении.
Аргументы: отсутствуют.
Возвращаемое значение: true, если сообщение имеет вложения и false в противном случае.
$hasAttachments = queue.first().hasAttachments() // $hasAttachments содержит true, если первое сообщение пользователя имеет вложения и false в противном случае |
Назначение: распознанное намерение.
$sentence = nlu.parse("Привет Вася", "d926726a-5acb-4233-8c1e-ce4300921de0")
$intent = $sentence.intent // $intent содержит "greeting" |
Назначение: степень достоверности распознанного намерения (1 - однозначное распознавание, 0 - намерение фактически нераспознанно).
$sentence = nlu.parse("Привет Вася", "d926726a-5acb-4233-8c1e-ce4300921de0")
$confidence = $sentence.intentConfidence // $confidence содержит 0.98 |
Назначение: список распознанных сущностей. Каждый элемент списка содержит кортеж из трёх элементов: тип сущности (string), значение сущности (строка), достоверность распознавания сущности (number).
$sentence = nlu.parse("Доброе утро Вася", "d926726a-5acb-4233-8c1e-ce4300921de0")
$entities = $sentence.entities // $entities содержит [("human-name", "Вася", 0.96), ("time", "2023-01-09 23:30:00", 0.87)]
$first = $entities.get(0) // $first содержит ("human-name", "Вася", 0.96)
$type = $first.get(0) // $type содержит "human-name" |
BPL operations work only in chats and incoming calls. To test scenarios with BPL operations, use chats in the widget. Also see Creating a test widget. |
Purpose: deletion of a local or module variable.
Arguments:
Returned value: none.
$localVar = 123
#moduleVar = true
del("$localVar") // Deletes the local variable $localVar
del("localVar") // Result is the same as for del("$localVar")
del("#moduleVar") // Deletes a variable visiable within a module |
Purpose: converts the argument to a number. The function acts as quivalent to the unary "+" operator.
Arguments:
Returned value: number.
$a = math.pos(true) // $a will be equal toо 1 $a = math.pos(false) // $a will be equal to 0 $a = math.pos(nil) // $a will be equal to 0 $a = +true // $a will be equal to 1, same as math.pos(true) |
Purpose: changes the sign of a number. The function acts as quivalent to the unary operation "-".
Arguments:
Returned value: the same number with the opposite sign.
$a = math.neg(-1) // $a will be equal to 1 $a = math.neg(1) // $a will be equal to -1 $a = math.neg(0) // $a will be equal to 0 $a = -(-10) // $a will be equal to 10, same as math.neg(-10) |
Purpose: bit number inversion. This function is equivalent to the unary operator "~".
Arguments:
Returned value: inverted number.
$a = math.inv(5) // $a is equal to 3 $a = ~5 // same as previous line |
Purpose: logical negation of a number. This function is equivalent to the unary operation "!".
Arguments:
Returned value: true if num is not equal to 0; otherwise false.
$a = math.not(5) // $a is equal to false $a = math.not(0) // $a is equal to true $a = !0 // same as previous line |
Purpose: addition of numbers. This function is equivalent to the binary operation "+".
Arguments:
Returned value: sum of numbers.
$a = math.add(1.5, 3.5) // $a is equal to 5 $a = 1.5 + 3.5 // same as previous line $a = math.add(1.000006, 2.1, 5) // $a is equal to 3.10001 |
Purpose: difference of numbers. This function is equivalent to the binary operation "-".
Arguments:
Returned value: difference of numbers.
$a = math.sub(1.5, 3.5) // $a is equal to -2 $a = 1.5 - 3.5 // same as previous line $a = math.sub(2.100006, 1.1, 5) // $a is equal to 1.00001 |
Purpose: multiplication. This function is equivalent to the binary operation "*".
Arguments:
Returned value: multiplication.
$a = math.mul(1.5, 3.5) // $a is equal to 5.25 $a = 1.5 * 3.5 // same as previous line $a = math.mul(1.2345, 1.234, 5) // $a is equal to 1.52337 |
Purpose: quotient of numbers. Equivalent to the binary operation "/".
Arguments:
Returned value: quotient of numbers.
$a = math.div(1.5, 3.5) // $a is equal to 0.428571428571 $a = 1.5 / 3.5 // same as previous line $a = math.div(1, 3, 5) // $a is equal to 0.33333 |
Purpose: integer division of numbers. This function is equivalent to the binary operation "\".
Arguments:
Returned value: integer part of private numbers.
$a = math.idiv(2.5, 0.3) // $a is equal to 8 $a = 2.5 \ 0.3 // same as previous line |
Purpose: remainder after dividing two numbers. This function is equivalent to the binary operation "%".
Arguments:
Returned value: remainder of the division.
$a = math.mod(3.5, 1.5) // $a is equal to 0.5 $a = 3.5 % 1.5 // same as previous line $a = math.mod(1/3, 2/7, 5) // $a is equal to 0.04762 |
Purpose: raising the number base to the power power. This function is equivalent to the binary operation "**".
Arguments:
Returned value: result of exponentiation.
$a = math.pow(1.5, 3.5) // $a is equal to 4.133513940947 $a = 1.5 ** 3.5 // same as previous line $a = math.pow(1.3, 7.1, 5) // $a is equal to 0.44166 |
Purpose: extracting the square root.
Arguments:
Returned value: square root or error if the number is negative.
$a = math.sqrt(3.14) // $a is equal to 1.772004514667 $a = math.sqrt(1.7, 5) // $a is equal to 0.30384 |
Purpose: rounding the number to the required decimal place.
Arguments:
Returned value: number rounded with a given precision.
$a = math.round(3.14159265358979323846264338327950288419716, 17) // $a is equal to 3.14159265358979324 $a = math.round(3.14159265358979323846264338327950288419716, 2) // $a is equal to 3.14 $a = math.round(3.14159265358979323846264338327950288419716, 0) // $a is equal to 3 |
Purpose: determining the length of the string in characters.
Arguments:
Returned value: integer is equal to the number of characters in the string.
$str = "Some string" $len = str.len($str) // $len will contain 15 |
Purpose: convertion of string characters to lower case.
Arguments:
Returned value: a string with all characters in lowercase.
$str = "StRiNg" $lower = str.lower($str) // $lower will contain "string" |
Purpose: преобразование символов строки в верхний регистр.
Arguments:
Returned value: строка все символы которой находятся в верхнем регистре.
$str = "СтРоКа" $upper = str.upper($str) // $lower будет содержать "СТРОКА" |
Purpose: преобразование первого символа строки в верхний регистр.
Arguments:
Returned value: строка в которой первый символ записан в верхнем регистре.
$str = str.ucfirst("строка") // $str будет содержать "Строка" |
Purpose: преобразование первого символа строки в нижний регистр.
Arguments:
Returned value: строка в которой первый символ записан в нижнем регистре.
$str = str.ucfirst("Строка") // $str будет содержать "строка" |
Purpose: получение указанного символа строки.
Arguments:
Returned value: строка соответствующая указанному символу, либо пустая строка если символа с такой позицией не существует.
$str = "Слово" $firstLetter = str.letter($str, 0) // Первая буква $lastLetter = str.letter($str, -1) // Последняя буква |
Purpose: получение указанного символа строки начиная с начала строки.
Arguments:
Returned value: строка соответствующая указанному символу, либо пустая строка если символа с такой позицией не существует.
$str = "Слово" $firstLetter = str.first($str) // Первая буква $secondLetter = str.first($str, 1) // Вторая буква |
Purpose: получение указанного символа строки начиная с конца строки.
Arguments:
Returned value: строка соответствующая указанному символу, либо пустая строка если символа с такой позицией не существует.
$str = "Слово" $lastLetter = str.last($str) // Последняя буква $penultLetter = str.last($str, 1) // Предпоследняя буква |
Purpose: объединяет две строки в одну.
Arguments:
Returned value: новая строка состоящая из первой строки справа от которой добавлена вторая строка.
$str1 = "один" $str2 = "два" $str = str.concat($str1, $str2) // $str будет содержать "одиндва" |
Purpose: возвращает подстроку строки str, начинающейся с offset символа по счету и длиной length символов.
Arguments:
Returned value: часть str или пустая строка.
$sub = str.sub("abcdef", 1) // $sub равен bcdef
$sub = str.sub("abcdef", 1, 3) // $sub равен bcd
$sub = str.sub("abcdef", 0, 4) // $sub равен abcd
$sub = str.sub("abcdef", 0, 8) // $sub равен abcdef
$sub = str.sub("abcdef", -1, 1) // $sub равен f
$sub = str.sub("abcdef", -1) // $sub равен f
$sub = str.sub("abcdef", -2) // $sub равен ef
$sub = str.sub("abcdef", -3, 1) // $sub равен d
$sub = str.sub("abcdef", 0, -1) // $sub равен abcde
$sub = str.sub("abcdef", 2, -1) // $sub равен cde
$sub = str.sub("abcdef", 4, -4) // $sub равен пустой строке
$sub = str.sub("abcdef", -3, -1) // $sub равен de |
Purpose: объединяет элементы коллекции (кортежа, списка или ассоциативного массива) в строку.
Arguments:
Returned value: новая строка составленная из всех элементов коллекции отделённых между собой разделителем.
$str = str.join([1, 2, 3, 4, 5], "-") // $str будет содержать "1-2-3-4-5"
$str = str.join(("a", "b", "c")) // $str будет содержать "abc"
$str = str.join({"a": "один", "b": "два"}, " + ") // $str будет содержать "один + два"
$str = str.join(["одно"], "/") // $str будет содержать "одно"
$str = str.join([], "/") // $str будет содержать "" |
Purpose: разбивает строку на части использую separator в качестве разделителя.
Arguments:
Returned value: список подстрок на которые была разбита строка.
$letters = str.split("абвгде") // Получили список букв слова
$words = str.split("один два три", " ") // Получили список слов
$words = str.split("один два три", " ", 1) // words содержит ["один", "два три"] |
Purpose: ищет все вхождения подстроки в строке и заменяет их на заданное значение.
Arguments:
Returned value: новая строка в которой все search заменены на replace.
$str = str.replace("мама мыла раму", "рам", "Даш") // $str содержит "мама мыла Дашу" |
Purpose: выполняет проверку данной строки регулярному выражению.
Arguments:
Returned value: возвращает true, если строка соответствует регулярному выражению и false в противном случае.
Примечание: в качестве регулярных выражений используется Perl совместимые регулярные выражения (PCRE). Ссылка на документацию и примеры регулярных выражений: PCRE Doc.
Онлайн редактор регулярных выражений: http://myregexp.com/
$isIntNumber = str.match("1.234", "/^[0-9]+$/") // $isIntNumber будет равен false
$isIntNumber = str.match("1234", "/^[0-9]+$/") // $isIntNumber будет равен true |
Purpose: вычисляет степень сходства двух строк.
Arguments:
Returned value: возвращает число от 0 до 1 включительно определяющее степень сходства двух строк. 1 - строки эквивалентны, 0 - строки абсолютно разные.
Примечание: функция фактически вычисляет расстояние Дамерау-Левенштейна.
$d = str.distance("", "abc") // $d равен 0
$d = str.distance("Да", "да") // $d равен 1
$d = str.distance("корыто", "открыто") // $d равен 0.714
$d = str.distance("Да, верно", "таверна") // $d равен 0.625
$d = str.distance("жутко косые бананы", "жуй кокосы, ешь бананы") // $d равен 0.714
$d = str.distance("сошел с ума от раны", "Пошел он в пусурманы") // $d равен 0.45
$d = str.distance("ёж", "дезоксирибонуклеиновая кислота") // $d равен 0.033 |
Purpose: вычисляет хэш строки согласно указанному алгоритму.
Arguments:
Returned value: возвращает строку содержащую вычисленный хеш-код в шестнадцатеричной кодировке в нижнем регистре. Если binary задан как true, то возвращается хеш-код в виде бинарных данных. В случае ошибки (например, если указан недопустимый алгоритм хэширования) возвращает пустую строку.
Допустимые значения алгоритмов хэширования:
Примечание: если третий параметр true, то передавать возвращаемое функцией значение в качества сообщения бота или его части нельзя. Это приведёт к падению бота.
$hash = hash.of("Наглый коричневый лисёнок прыгает вокруг ленивой собаки.") // $hash будет содержать bff8b4bc8b5c1c1d5b3211dfb21d1e76
$hash = hash.of("Наглый коричневый лисёнок прыгает вокруг ленивой собаки.", "ripemd160") // $hash будет содержать 8817ca339f7f902ad3fb456150a1bb9b4cb5dde9
$hash = hash.of("Наглый коричневый лисёнок прыгает вокруг ленивой собаки.", "sha256", true) // $hash будет содержать бинарную строку (содержащую неотображаемые символы) |
Purpose: кодирует заданную строку в base64.
Arguments:
Returned value: возвращает строку закодированную в base64.
$encoded = codec.base64Encode("Привет!") // $encoded будет содержать строку "0J/RgNC40LLQtdGCIQ==" |
Purpose: декодирует заданную в base64 строку.
Arguments:
Returned value: возвращает раскодированную строку либо nil, если закодированная строка содержит символы не входящие в алфавит символов base64 кодировки.
$decoded = codec.base64Decode("0J/RgNC40LLQtdGCIQ==") // $decoded будет содержать строку "Привет!"
$failed = codec.base64Decode("Привет!") // $failed будет равен nil |
Purpose: складывает две даты, заданные в виде строки либо как число секунд.
Arguments:
Returned value: возвращает новую дату и время в виде строки.
$d = dt.add("2022-01-01 12:30:00", 59) // $d содержит строку "2022-01-01 12:30:59"
$d = dt.add(3600, "2022-01-01 12:30:00") // $d содержит строку "2022-01-01 13:30:00"
$d = dt.add("2022-01-01 00:00:00", "2022-01-02 00:00:00") // $d содержит строку "2022-01-03 00:00:00" |
Purpose: вычисляет разность двух дат, заданных в виде строк либо количеством секунд.
Arguments:
Returned value: возвращает новую дату и время в виде строки либо число секунд - разность дат.
$d = dt.sub(100, 50) // $d содержит 50
$d = dt.sub("2022-01-01 12:30:00", 3600) // $d содержит строку "2022-01-01 11:30:00"
$d = dt.sub(3600, "2022-01-01 12:30:00") // Такой вызов недопустим и приведёт к остановке программы
$d = dt.sub("2022-01-01 01:00:00", "2022-01-01 00:00:00") // $d содержит 3600 |
Purpose: форматирует дату согласно заданному формату.
Arguments:
Returned value: строка даты в заданном формате.
Допустимые параметры форматирования:
| Символ в строке format | Описание | Пример возвращаемого значения |
|---|---|---|
| Год | ||
| y | Полное числовое представление года, не менее 4 цифр | 1999, 2012, 10208 |
| yy | Две последние цифры года c дополнением нулями если необходимо | 99, 05 |
| Месяц | ||
| M | Порядковый номер месяца без ведущего нуля | от 1 до 12 |
| MM | Порядковый номер месяца с ведущим нулём | от 01 до 12 |
| День | ||
| d | День месяца без ведущего нуля | от 1 до 31 |
| dd | День месяца, 2 цифры с ведущим нулём | от 01 до 31 |
| Час | ||
| h | Часы в 12-часовом формате без ведущего нуля | от 1 до 12 |
| hh | Часы в 12-часовом формате с ведущим нулём | от 01 до 12 |
| H | Часы в 24-часовом формате без ведущего нуля | от 0 до 23 |
| HH | Часы в 24-часовом формате с ведущим нулём | от 00 до 23 |
| Минуты | ||
| m | Минуты без ведущего нуля | от 0 до 59 |
| mm | Минуты с ведущим нулём | от 00 до 59 |
| Секунды | ||
| s | Секунды без ведущего нуля | от 0 до 59 |
| ss | Секунды с ведущим нулём | от 00 до 59 |
Примечание: если строка формата содержит символы совпадающие с вышеперечисленными, но не являющиеся параметрами форматирования, то их следует экранировать с помощью символа обратного слэша "\".
$dt = dt.format('2022-12-20 08:34:05', 'y.MM.dd h-mm-ss') // $dt будет содержать строку "22.12.20 8-34-05"
$dt = dt.format('16:30:47', '\Hour\s an\d \minute\s: HH/mm') // $dt будет содержать строку "Hours and minutes: 16/30" |
Purpose: возвращает ближайшую будущую к текущей дату по заданному дню.
Arguments:
Returned value: возвращает ближайшую к day дату.
// Допустим сейчас 2022-12-20 $d = date.nearFuture(25) // $d содержит 2022-12-25 $d = date.nearFuture(10) // $d содержит 2023-01-10 |
Purpose: возвращает ближайшую прошлую к текущей дату по заданному дню.
Аргументы:
Returned value: возвращает ближайшую к day дату.
// Допустим сейчас 2022-12-20 $d = date.nearPast(25) // $d содержит 2022-11-25 $d = date.nearPast(10) // $d содержит 2023-12-10 |
Purpose: возвращает дату соответствующую указанному дню в следующем месяце.
Arguments:
Returned value: дата в будущем.
// Допустим сейчас 2022-12-20 $d = date.future(25) // $d содержит 2023-01-25 $d = date.future(10) // $d содержит 2023-01-10 |
Purpose: возвращает дату соответствующую указанному дню в прошлом месяце.
Аргументы:
Returned value: дата в прошлом.
// Допустим сейчас 2022-12-20 $d = date.past(25) // $d содержит 2022-11-25 $d = date.past(10) // $d содержит 2022-11-10 |
Purpose: возвращает ближайшее будущее к текущему время по заданному количеству минут.
Arguments:
Returned value: возвращает ближайшее к minute время.
// Допустим сейчас 23:30:00 $t = time.nearFuture(45) // $t содержит 23:45:00 $t = time.nearFuture(15) // $t содержит 00:15:00 |
Purpose: возвращает ближайшее прошлое к текущему время по заданному количеству минут.
Arguments:
Returned value: возвращает ближайшее к minute время.
// Допустим сейчас 23:30:00 $t = time.nearPast(45) // $t содержит 22:45:00 $t = time.nearPast(15) // $t содержит 23:15:00 |
Purpose: возвращает время соответствующее указанному числу минут в следующем часе.
Arguments:
Returned value: время в будущем.
// Допустим сейчас 23:30:00 $t = time.future(45) // $t содержит 00:45:00 $t = time.future(15) // $t содержит 00:15:00 |
Purpose: возвращает время соответствующее указанному числу минут в прошедшем часе.
Arguments:
Returned value: время в прошлом.
// Допустим сейчас 23:30:00 $t = time.past(45) // $t содержит 22:45:00 $t = time.past(15) // $t содержит 22:15:00 |
Purpose: определение размера очереди сообщений пользователя.
Arguments: отсутствуют.
Returned value: число сообщений пользователя.
$messageCount = queue.size() // $messageCount содержит число сообщений пользователя за всё время диалога |
Purpose: возвращает последнее сообщение пользователя либо nil, если очередь сообщений пуста.
Arguments: отсутствуют.
Returned value: объект UserMessage или nil.
$lastMessage = queue.last() // $lastMessage содержит последнее на данный момент сообщение пользователя |
Purpose: возвращает первое сообщение пользователя либо nil, если очередь сообщений пуста.
Arguments: отсутствуют.
Returned value: объект UserMessage или nil.
$firstMessage = queue.first() // $firstMessage содержит первое сообщение пользователя за всё время диалога |
Purpose: возвращает сообщение пользователя по его порядковому номеру, начиная с 1.
Arguments:
Returned value: объект UserMessage или nil.
$message = queue.nth(1) // $message содержит первое сообщение пользователя $message = queue.nth(5) // $message содержит пятое сообщение пользователя |
Purpose: возвращает сообщение пользователя по его порядковому номеру считая с конца очереди. Последнее сообщение соответствует порядковому номеру 1.
Arguments:
Returned value: объект UserMessage или nil.
$message = queue.lastNth(1) // $message содержит последнее сообщение пользователя $message = queue.lastNth(5) // $message содержит пятое с конца очереди сообщение пользователя |
Purpose: сохраняет факт в базе фактов.
Arguments:
Returned value: отсутствует.
fact.save("место", "город", "Екатеринбург") // Факт доступный всем ботам компании
fact.save("место", "город", "Екатеринбург", nil, @clientId) // Факт с привязкой к клиенту
fact.save("место", "город", "Екатеринбург", @botId) // Факт с привязкой к боту
fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Факт с привязкой к боту и клиенту |
Purpose: извлекает факт из базы фактов.
Arguments:
Returned value: содержимое факта.
fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Сохраняет факт с привязкой к боту и клиенту
$city = fact.load("место", "город", @botId, @clientId) // Загружаем факт в переменную. $city содержит "Екатеринбург" |
Purpose: удаляет факт из базы фактов.
Arguments:
Returned value: отсутствует.
fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Сохраняет факт с привязкой к боту и клиенту
$city = fact.load("место", "город", @botId, @clientId) // Загружаем факт в переменную. $city содержит "Екатеринбург"
fact.delete("место", "город", @botId, @clientId) // Удаляем факт.
$city = fact.load("место", "город", @botId, @clientId) // Пытаемся загрузить удалённый факт. Теперь $city содержит nil. |
Purpose: возвращает экземпляр FactQuery для построения и выполнения запросов к базе фактов.
Arguments: отсутствуют.
Returned value: объект FactQuery.
// Добавили пару фактов в базу
fact.save("место", "страна", "Россия")
fact.save("место", "город", "Екатеринбург")
// Загрузили в $places список мест отсортированных по имени факта в порядке убывания:
// [{"name": "город", "value": "Россия"}, {"name": "страна", "value": "Екатеринбург"}]
$places = fact.query().
select("name,value").
where("context", "=", "место").
sortBy("-name").
rows() |
Purpose: возвращает экземпляр FactQueryCondition для построения составных условий в запросах к базе фактов.
Arguments: отсутствуют.
Returned value: объект FactQueryCondition.
// Добавили факты в базу
fact.save("города", "екатеринбург", "Екатеринбург")
fact.save("города", "москва", "Москва")
fact.save("города", "санкт-петербург", "Санкт-Петербург")
fact.save("города", "новосибирск", "Новосибирск")
// Найдём один город начинающийся с буквы "м" или с буквы "т" и не равный городам "Екатеринбург" и "Новосибирск"
$city = fact.query().
select("value").
where("context", "=", "города").
where(fact.cond().
where("name", "^@", "м").
orWhere("name", "^@", "т")).
where("name", "not in", ("екатеринбург", "новосибирск")).
one() |
Purpose: запускает таймер обратного отсчёта. По истечении указанного времени бот осуществит переход на указанный узел (блок).
Arguments:
Returned value: идентификатор таймера.
$timerId = timer.start(60, "760b9732-4bfb-4846-a348-faae5138fcb2") // $timerId содержит уникальный идентификатор таймера на 60 секунд |
Purpose: останавливает (удаляет) таймер обратного отсчёта.
Arguments:
Returned value: отсутствует.
$timerId = timer.start(60, "760b9732-4bfb-4846-a348-faae5138fcb2") timer.stop($timerId) // останавливаем (удаляем) таймер |
Purpose: парсит текст на естественном языке.
Arguments:
Returned value: объект Sentence содержащий информацию о всех намерениях и сущностях исходного сообщения.
Примечание: данная функция извлекает из текста только сущности. Для работы с намерениями используйте функцию nlu.parse
$sentence = nlp.parse(queue.first()) // парсим первое сообщение пользователя |
Purpose: объединяет два текста на естественном языке в одно и затем парсит его.
Arguments:
Returned value: объект Sentence содержащий информацию о всех намерениях и сущностях объединённого сообщения.
$sentence = nlp.join(queue.lastNth(2), queue.lastNth(1)) // объединяем предпоследнее и последнее сообщения пользователя и затем парсим его |
Purpose: позволяет установить сообщение пользователя для обработки в других узлах (блоках) схемы бота.
Arguments:
Returned value: отсутствует.
$sentence = nlp.join(queue.lastNth(2), queue.lastNth(1)) // объединяем предпоследнее и последнее сообщения пользователя и затем парсим его nlp.setPerception($sentence) // Теперь остальные узлы схемы будут работать с cообщением $sentence |
Purpose: разбор текста на естественном языке. Выявление намерений и сущностей.
Arguments:
Returned value: объект Sentence.
$sentence = nlu.parse("Доброе утро Вася!", "d926726a-5acb-4233-8c1e-ce4300921de0") |
Purpose: отправляет HTTP запрос на указанный URL.
Arguments:
Returned value: объект HTTP ответа.
// Выполняем запрос на получение списка юзеров
$response = http.sendRequest("https://iam.twin24.ai/api/v1/users", "GET", {"limit": 15, "offset": 5}, {"Authorization": "Bearer authToken"})
// Извлекаем информацию о запросе
$statusCode = $response.statusCode
$body = $response.body
$headers = $response.headers
$error = $response.error |
Purpose: формирует новый объект HTTP запроса.
Arguments:
Returned value: объект содержащий информацию о HTTP запросе.
$response = http.request("https://some.url", "POST", {"param1": 123, "param2": true}).
headers({"Content-Type": "application/json"}).
timeout(300).
send() |
Purpose: задаёт максимально допустимое время запроса в секундах. Если запрос отрабатывает дольше указанного времени, то его выполнение прерывается.
Arguments:
Returned value: объект содержащий информацию о HTTP запросе.
$response = http.request("https://some.url", "GET").
timeout(300).
send() |
Purpose: задаёт URL запроса.
Arguments:
Returned value: объект содержащий информацию о HTTP запросе.
$response = http.request().
url("http://some.url?p1=v1&p2=v2").
method("GET").
send() |
Purpose: задаёт HTTP метод запроса.
Arguments:
Returned value: объект содержащий информацию о HTTP запросе.
$response = http.request().
url("http://some.url?p1=v1&p2=v2").
method("GET").
send() |
Purpose: задаёт тело запроса.
Arguments:
Returned value: объект содержащий информацию о HTTP запросе.
$response = http.request().
url("http://some.url?p1=v1&p2=v2")
method("PUT").
body("some body").
send() |
Purpose: добавляет HTTP заголовок.
Arguments:
Returned value: объект содержащий информацию о HTTP запросе.
$response = http.request().
url("http://some.url?p1=v1&p2=v2").
method("POST").
header("Content-Type", "application/json").
header("Accept-Language", "en-US,en;q=0.5").
send() |
Purpose: задаёт HTTP заголовки.
Arguments:
Returned value: объект содержащий информацию о HTTP запросе.
$response = http.request().
url("http://some.url?p1=v1&p2=v2").
method("PUT").
body("some body").
headers({"Content-Type": "application/json", "Accept-Language": "en-US,en;q=0.5"}).
send() |
Purpose: добавляет файл для отправки по HTTP.
Arguments:
Returned value: объект содержащий информацию о HTTP запросе.
$response = http.request().
url("http://some.url").
method("POST").
header("Content-Type", "multipart/form-data").
file($fileId, "file").
send() |
Purpose: отправляет сформированный запрос.
Returned value: объект ответа сервера.
$response = http.request("http://some.url?p1=v1&p2=v2", "PUT", "some body").
headers({"header1": "...", "header2": "...").
send() |
Purpose: код статуса ответа.
$response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
$code = $response.statusCode |
Purpose: тело ответа.
$response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
$body = $response.body |
Purpose: заголовки ответа.
$response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
$headers = $response.headers |
Purpose: значение элемента error тела ответа или пустая строка, если такого элемента нет.
$response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
$error = $response.error |
Purpose: определение успешности ответа.
Returned value: возвращает true, если свойство error не пустое или код статуса больше или равен 400, иначе возвращает false.
$response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
$isError = $response.isError() |
Purpose: определение успешности ответа.
Returned value: возвращает true, если свойство error пустое и код статуса меньше 400, иначе возвращает false.
$response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
$isSuccessful = $response.isSuccessful() |
Purpose: определение наличия заголовка.
Arguments:
Returned value: true, если заголовок с указанным именем существует и false в противном случае.
$response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
$hasContentType = $response.hasHeader("Content-Type") |
Purpose: получение значения заголовка.
Arguments:
Returned value: значение заголовка с указанным именем или пустую строку, если такого заголовка нет.
$response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
$contentType = $response.header("Content-Type") |
Purpose: получение файла из HTTP ответа.
Returned value: идентификатор загруженного файла.
$response = http.sendRequest("http://some.url", "GET")
$fileId = $response.toFile() |
Purpose: останавливает работу бота на указанное количество микросекунд. Если количество микросекунд превышает 1 минуту, то пауза будет уменьшена до 1 минуты.
Arguments:
Returned value: отсутствует.
sys.sleep(3_000_000) // Пауза в 3 секунды |
Purpose: отправляет сообщение в демо версию нейросети RuGTP-3 и возвращает её ответ.
Arguments:
Returned value: ответ нейросети в виде строки.
$answer = gpt3.ask("Есть ли жизнь на Марсе?") // В $answer будет ответ нейросети на заданный вопрос |
Используя методы этого объекты вы можете выполнять и строить разнообразные запросы к базе фактов. База фактов представляет собой список записей. Каждая запись представляет собой единичный факт состоящий из следующих частей (полей):
Purpose: задаёт список полей из базы фактов значения которых следует вернуть в результате запроса. Если метод select не вызыался, то будут возвращены поля context,name и value.
Arguments:
Returned value: тот же объект FactQuery.
$facts = fact.query().rows() // select не вызван возвращаем все поля.
$facts = fact.query().select(["value", "context"]).rows() // Возвращаем список фактов для которых нам нужны только value и context.
$facts = fact.query().select("botId").rows() // Возвращаем только поле botId к которым привязаны факты. |
Purpose: задаёт условие поиска фактов. Несколько методов where объединяются по принципу логического "И", т.е. все условия должны быть выполнены. Метод where равносилен методу andWhere(field, operator, value).
Arguments:
Returned value: тот же объект FactQuery.
Список доступных операций:
// Ищем факты у которых context содержит подстроку test
$facts = fact.query().
select("name,value").
where("context", "~", "^.*test.*$").
rows() |
Эквивалентен where(field, operator, value).
Аналогичен where, с той лишь разницей, что несколько вызовов этого метода объединяются по принципу логического "ИЛИ", т.е. должно выполняться хотя бы одно условие.
Purpose: задаёт сложное (вложенное) условие. Несколько вызвов метода объединяются по принципу логического "И". Эквивалентен методу andWhere(cond).
Arguments:
Returned value: тот же объект FactQuery.
// Ищем факты у которых context содержит подстроку test и при этом name равен "слово" или name начинается на "оп".
$facts = fact.query().
select("name,value").
where("context", "~", "^.*test.*$").
andWhere(fact.cond().
where("name", "=", "слово").
orWhere("name", "^@", "оп")).
rows() |
Эквивалентен where(cond)
Аналогичен where(cond), с той лишь разницей, что несколько вызовов этого метода объединяются по принципу логического "ИЛИ", т.е. должно выполняться хотя бы одно условие.
Purpose: задаёт сортирову фактов по указанным полям.
Arguments:
Returned value: тот же объект FactQuery.
// Получаем все факты для бота с двойной сортировкой:
// сначала по контексту по возрастанию (т.е. в алфавитном порядке)
// и далее по имени факта по убыванию.
$facts = fact.query().
select("name,value").
where("botId", "=", @botId)
sortBy("+context,-name"). // можно также использовать коллеции. Например, sortBy(["+context", "-name"])
rows() |
Purpose: ставит ограничение на максимальное количество извлекаемых фактов.
Arguments:
Returned value: тот же объект FactQuery.
// Получаем первые 10 фактов
$facts = fact.query().
select("name,value").
sortBy("name").
limit(10).
rows() |
Purpose: задаёт количество фактов которые следует пропустить при поиске.
Arguments:
Returned value: тот же объект FactQuery.
// Пропускаем 5 первых фактов и извлекаем следующие 10
$facts = fact.query().
select("name,value").
sortBy("name").
skip(5).
limit(10).
rows() |
Purpose: возвращает первое указанное через select поле первого найденного факта.
Arguments: отсутствуют.
Returned value: значение поля.
// Извлекает имя первого найденного факта
$firstFactName = fact.query().
select("name,value"). // value хоть и указано, но будет проигнорировано
one() |
Purpose: возвращает список состоящий из всех значений первого выбранного поля найденных фактов.
Arguments: отсутствуют.
Returned value: список значений поля.
// Извлекает список имён всех найденных фактов
$names = fact.query().
select("name,value"). // value хоть и указано, но будет проигнорировано
column() |
Purpose: возвращает все выбранные поля в виде ассоциативного массива для первого найденного факта.
Arguments: отсутствуют.
Returned value: значения всех полей первого факта.
// Извлекает имя и значение первого найденного факта
$names = fact.query().
select("name,value").
row() |
Purpose: возвращает список всех найденных фактов. Каждый факт возвращается как ассоциативный массив ключами которого являются поля факта, а значениями - значения полей.
Arguments: отсутствуют.
Returned value: значения всех полей всех фактов.
// Извлекает имя и значение всех фактов
$names = fact.query().
select("name,value").
rows() |
Используйте методы этого объекта чтобы строить сложные вложенные условия к базе фактам.
Аналогичен методу where(field string, operator string, value mixed) объекта FactQuery.
Аналогичен методу andWhere(field string, operator string, value mixed) объекта FactQuery.
Аналогичен методу orWhere(field string, operator string, value mixed) объекта FactQuery.
Аналогичен методу andWhere(field string, operator string, value mixed) объекта FactQuery.
Аналогичен методу orWhere(field string, operator string, value mixed) объекта FactQuery.
Аналогичен методу where(cond FactQueryCondition) объекта FactQuery.
Аналогичен методу andWhere(cond FactQueryCondition) объекта FactQuery.
Аналогичен методу orWhere(cond FactQueryCondition) объекта FactQuery.
Аналогичен методу andWhere(cond FactQueryCondition) объекта FactQuery.
Аналогичен методу orWhere(cond FactQueryCondition) объекта FactQuery.
Purpose: оригинальный текст сообщения.
$msg = queue.last().message // $msg содержит текст последнего сообщения пользователя |
Purpose: список идентификаторов файлов приложенных к сообщению.
$attachments = queue.first().attachments // $attachments содержит список вложений первого сообщения пользователя. |
Purpose: определяет пустое ли сообщение.
Arguments: отсутствуют.
Returned value: true, если сообщение пустое и false в противном случае.
$isEmpty = queue.last().isEmpty() // $isEmpty содержит true, если последнее сообщение пользователя пустое и false в противном случае |
Purpose: определяет есть ли вложения в данном сообщении.
Arguments: отсутствуют.
Returned value: true, если сообщение имеет вложения и false в противном случае.
$hasAttachments = queue.first().hasAttachments() // $hasAttachments содержит true, если первое сообщение пользователя имеет вложения и false в противном случае |
Purpose: распознанное намерение.
$sentence = nlu.parse("Привет Вася", "d926726a-5acb-4233-8c1e-ce4300921de0")
$intent = $sentence.intent // $intent содержит "greeting" |
Purpose: степень достоверности распознанного намерения (1 - однозначное распознавание, 0 - намерение фактически нераспознанно).
$sentence = nlu.parse("Привет Вася", "d926726a-5acb-4233-8c1e-ce4300921de0")
$confidence = $sentence.intentConfidence // $confidence содержит 0.98 |
Purpose: список распознанных сущностей. Каждый элемент списка содержит кортеж из трёх элементов: тип сущности (string), значение сущности (строка), достоверность распознавания сущности (number).
$sentence = nlu.parse("Доброе утро Вася", "d926726a-5acb-4233-8c1e-ce4300921de0")
$entities = $sentence.entities // $entities содержит [("human-name", "Вася", 0.96), ("time", "2023-01-09 23:30:00", 0.87)]
$first = $entities.get(0) // $first содержит ("human-name", "Вася", 0.96)
$type = $first.get(0) // $type содержит "human-name" |