Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Якорь
Top
Top

...

CSS Stylesheet

На этой странице:

Оглавление
classbpl

Примечание
titleПримечание

Для тестирования сценариев, содержащих BPL-операции, необходимо использовать веб-виджет или интеграцию с каким-либо мессенджером, так как данные операции не работают в тестовом чате внутри редактора.

Как создать тестовый виджет: Создание тестового виджета

Функции общего назначения

del(varName string)

Назначение: удаление локальной или модульной переменной.

Аргументы:

  1. varName – название переменной в виде строки. Может начинаться с префикса области видимости переменной. Если префикс опущен то считается, что переменная локальная.

Возвращаемое значение: отсутствует.

Блок кода
languagephp
themeDJango
firstline1
titleПримеры использования
linenumberstrue
$localVar = 123
#moduleVar = true
del("$localVar")   // Удаляет локальную переменную $localVar
del("localVar")    // Тоже самое что и del("$localVar")
del("#moduleVar")  // Удаляет переменную с областью видимости в пределах модуля 

setClientTimezoneOffset(offset int)

Назначение: изменяет текущее смещение временной зоны собеседника бота.

Аргументы:

  1. offset – смещение временной зоны в минутах.

Возвращаемое значение: отсутствует.

Примечание: вызов этой функции также приведёт к изменению значений системных переменных now, today и time согласно новой временной зоне.

Блок кода
languagephp
themeDJango
firstline1
titleПримеры использования
linenumberstrue
setClientTimezoneOffset(-1800)

asBool(obj any) bool

Назначение: преобразует аргумент к булеву значению.

Аргументы:

  1. obj любое значение для преобразования.

Возвращаемое значение: булево значение.

Примечание: в BPL все значения могут быть преобразованы к булеву типу.

Блок кода
languagephp
themeDJango
firstline1
titleПримеры использования
linenumberstrue
$bool = asBool(nil) // $bool содержит false
$bool = asBool("")  // $bool содержит false
$bool = asBool(0)   // $bool содержит false
$bool = asBool([])  // $bool содержит true
$bool = asBool(123) // $bool содержит true

asString(obj any) string

Назначение: преобразует аргумент к строковому значению.

Аргументы:

  1. obj любое значение для преобразования.

Возвращаемое значение: строковое значение.

Примечание: в BPL все значения могут быть преобразованы к строковому типу.

Блок кода
languagephp
themeDJango
firstline1
titleПримеры использования
linenumberstrue
$str = asString(123)  // $str равно "123"
$str = asString(1.23) // $str равно "1.23"
$str = asString(true) // $str равно "true"
$str = asString({1: "a b c", 2: 0.5}) // $str равно "{1: "a b c", 2: 0.5}"

asInt(obj any) int

Назначение: преобразует аргумент к целочисленному значению.

Аргументы:

  1. obj любое значение для преобразования.

Возвращаемое значение: целочисленное значение, 0 в случае невозможности преобразования.

Блок кода
languagephp
themeDJango
firstline1
titleПримеры использования
linenumberstrue
$int = asInt(5.67)  // $int равно 5
$int = asInt("123") // $int равно 123
$int = asInt(true)  // $int равно 1
$int = asInt(nil)   // $int равно 0
$int = asInt("abc") // $int равно 0

asFloat(obj any) float

Назначение: преобразует аргумент к вещественному числу.

Аргументы:

  1. obj любое значение для преобразования.

Возвращаемое значение: вещественное число, 0 в случае невозможности преобразования.

Блок кода
languagephp
themeDJango
firstline1
titleПримеры использования
linenumberstrue
$float = asFloat("5.67") // $float равно 5.67
$float = asFloat(123)    // $float равно 123.0
$float = asfloat(true)   // $float равно 1.0
$float = asfloat(nil)    // $float равно 0.0
$float = asFloat("abc")  // $float равно 0.0

Математические функции

math.pos(num mixed) number

Назначение: фактически преобразует аргумент к числу. Эквивалент унарной операции "+".

Аргументы:

  1. num – произвольное значение, которое будет преобразовано к числу.

Возвращаемое значение: число.

На этой странице:

Блок кода
languagephp
themeDJango
firstline1
titleПримеры использования
linenumberstrue
$a = math.pos(true)  // 
.top-button {
		background-image: url(https://confluence.twin24.ai/download/thumbnails/23986188/baseline_keyboard_arrow_up_white_18dp.png) !important;
		background-position: center;
		background-color: #47a7f5 !important;
		background-repeat: no-repeat;
		box-shadow: -1px 1.5px 3px #999;
		color: #47a7f5 !important;
		border-radius:50px !important;
        position: fixed;
        bottom: 45px;
        left: 93.5%;
        width: 50px;
		height: 50px !important;
        font-size: 12px !important;
        padding: 14.5px !important;
		z-index: 2;
}
.top-button:hover{
		background-color: #65b9ff !important;
        color: #65b9ff !important;
}
.page-header{
		background-color: #232838;
	    background-repeat: no-repeat;
	    background-position: center;
		width: auto;
    	height: 100px;
		background-image: url(https://confluence.twin24.ai/download/attachments/23986188/logo_twin-02.png);
		background-size: 10em;
        color: #fff;
        font-size: 20px;
        padding: 20px;
}
.page-footer{
		background-color: #232838;
		background-image: url(https://confluence.twin24.ai/download/thumbnails/23986188/decorated-pattern-dark.png);
		width: auto;
    	height: 10px;
        color: #fff;
		text-align: end;
    	font: small-caption;
    	padding-inline-end: 30px;
    	padding-top: 200px;
    	padding-bottom: 30px;
}
.page-headline{
		background-image: url(https://confluence.twin24.ai/download/thumbnails/23986188/Solid256dot8_2changed.png);
    	background-repeat: no-repeat;
    	background-position-x: -227px;
    	background-position-y: center;
    	padding: 20px;
		background-color: #007bff;
		width: auto;
    	height: 10px;
        color: #fff;
		text-align: center;
    	font: caption;
    	font-weight: 600;
}
.tabs-menu{
    	padding-left: 85% !important;
}
Оглавление
classbpl

Предупреждение
titleВнимание

BPL-операции работают только в чатах и во входящих звонках. Для тестирования сценариев, использующих BPL-операции, используйте чат в виджете.

Как создать тестовый виджет: Создание тестового виджета

Функции общего назначения

del(varName string)

Назначение: удаление локальной или модульной переменной.

Аргументы:

  1. varName - название переменной в виде строки. Может начинаться с префикса области видимости переменной. Если префикс опущен то считается, что переменная локальная.

Возвращаемое значение: отсутствует.

Блок кода
languagepy
themeDJango
linenumberstrue
collapsetrue
$localVar = 123
#moduleVar = true
del("$localVar")   // Удаляет локальную переменную $localVar
del("localVar")    // Тоже самое что и del("$localVar")
del("#moduleVar")  // Удаляет переменную с областью видимости в пределах модуля 

Математические функции

math.pos(num mixed) number

Назначение: фактически преобразует аргумент к числу. Эквивалент унарной операции "+".

Аргументы:

  1. num - произвольное значение которое будет преобразовано к числу.

Возвращаемое значение: число.

Блок кода
languagephp
$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)

math.neg(num number) number

Назначение: меняет знак числа. Эквивалент унарной операции "-".

Аргументы:

  1. num

...

  1. произвольное число, у

...

  1. которого изменится знак на противоположный.

Возвращаемое значение: число со знаком обратному исходному.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$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)

math.inv(num number) number

Назначение: инверсия бит числа. Эквивалент унарной операции "~".

Аргументы:

  1. num

...

  1. произвольное число, у

...

  1. которого инвертируются биты.

Возвращаемое значение: инвертированное число.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$a = math.inv(5) // $a равно 
3
-6
$a = ~5          // то же, что и предыдущая строка

math.not(num number) bool

Назначение: логическое отрицание числа. Эквивалент унарной операции "!".

Аргументы:

  1. num

...

  1. произвольное число.

Возвращаемое значение:

...

 true, если num не равно 0 и false в противном случае.

Блок кода
languagephp
themeDJango
firstline1
titleПримеры использования
linenumberstrue
$a = math.not(5) // $a равно false
$a = math.not(0) // $a равно true
$a = !0          // то же, что и предыдущая строка

math.add(num1 number, num2 number, precision int = 12) number

Назначение: сложение чисел. Эквивалент бинарной операции "+".

Аргументы:

  1. num1

...

  1. первое слагаемое.
  2. num2

...

  1. второе слагаемое.
  2. precision

...

  1. точность вычислений, количество цифр после запятой. Значение по умолчанию 12,

...

  1. максимальное – 14.

Возвращаемое значение: сумма чисел.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$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

math.sub(num1 number, num2 number, precision int = 12) number

Назначение: разность чисел. Эквивалент бинарной операции "-".

Аргументы:

  1. num1

...

  1. уменьшаемое.
  2. num2

...

  1. вычитаемое.
  2. precision

...

  1. точность вычислений, количество цифр после запятой. Значение по умолчанию 12,

...

  1. максимальное – 14.

Возвращаемое значение: разность чисел.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$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

math.mul(num1 number, num2 number, precision int = 12) number

Назначение: произведение чисел. Эквивалент бинарной операции "*".

Аргументы:

  1. num1

...

  1. первый множитель.
  2. num2

...

  1. второй множитель.
  2. precision

...

  1. точность вычислений, количество цифр после запятой. Значение по умолчанию 12,

...

  1. максимальное – 14.

Возвращаемое значение: произведение чисел.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline
1
linenumberstrue
$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

math.div(num1 number, num2 number, precision int = 12) number

Назначение: частное чисел. Эквивалент бинарной операции "/".

Аргументы:

  1. num1

...

  1. делимое.
  2. num2

...

  1. делитель.
  2. precision

...

  1. точность вычислений, количество цифр после запятой. Значение по умолчанию 12,

...

  1. максимальное – 14.

Возвращаемое значение: частное чисел.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$a = math.div(1.5, 3.5) // $a равно 0.428571428571
$a = 1.5 / 3.5          // то же, что и предыдущая строка
$a = math.div(1, 3, 5)  // $a равно 0.33333

math.idiv(num1 number, num2 number) int

Назначение: целочисленное деление чисел. Эквивалент бинарной операции "\".

Аргументы:

  1. num1

...

  1. делимое.
  2. num2

...

  1. делитель.

Возвращаемое значение: целая часть частного чисел.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$a = math.idiv(2.5, 0.3) // $a равно 8
$a = 2.5 \ 0.3           // то же, что и предыдущая строка

math.mod(num1 number, num2 number, precision int = 12) number

Назначение: остаток от деления двух чисел. Эквивалент бинарной операции "%".

Аргументы:

  1. num1

...

  1. делимое.
  2. num2

...

  1. делитель.
  2. precision

...

  1. точность вычислений, количество цифр после запятой. Значение по умолчанию 12,

...

  1. максимальное – 14.

Возвращаемое значение: остаток от деления.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$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

math.pow(base number, power number, precision int = 12) number

Назначение: возведение числа base в степень power. Эквивалент бинарной операции "**".

Аргументы:

  1. base

...

  1. основание.
  2. power

...

  1. степень.
  2. precision

...

  1. точность вычислений, количество цифр после запятой. Значение по умолчанию 12,

...

  1. максимальное – 14.

Возвращаемое значение: результат возведения в степень.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$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

math.sqrt(num number, precision int = 12) number

Назначение: извлечение квадратного корня.

Аргументы:

  1. num

...

  1. число, из которого извлекается корень.
  2. precision

...

  1. точность вычислений, количество цифр после запятой. Значение по умолчанию 12,

...

  1. максимальное – 14.

Возвращаемое значение: квадратный корень либо ошибка, если число отрицательное.

collapse
Блок кода
languagepy
themeDJango
linenumberstrue
firstline1
titleПримеры использования
linenumberstrue
$a = math.sqrt(3.14)   // $a равно 1.772004514667
$a = math.sqrt(1.7, 5) // $a равно 0.30384

math.round(num number, precision int) number

Назначение: округление числа до требуемого знака после запятой.

Аргументы:

  1. num

...

  1. число для округления.
  2. precision

...

  1. точность округления, количество цифр после запятой.

...

  1. Максимальное значение

...

  1. – 14.

Возвращаемое значение: округлённое с заданной точностью число.

pycollapse
Блок кода
language
php
themeDJango
firstline
linenumberstrue
1
titleПримеры использования
linenumberstrue
$a = math.round(3.14159265358979323846264338327950288419716, 17) // $a равно 3.
14159265358979324
1415926535898
$a = math.round(3.14159265358979323846264338327950288419716, 2)  // $a равно 3.14
$a = math.round(3.14159265358979323846264338327950288419716, 0)  // $a равно 3

math.rand(min int, max int) int

Назначение: генерация псевдослучайного числа в диапазоне от min до max включительно.

Аргументы:

  1. min - минимальное значение числа.
  2. max - максимальное значение числа.

Возвращаемое значение: число в диапазоне от min до max.

Блок кода
languagephp
themeDJango
firstline1
titleПримеры использования
linenumberstrue
$r = math.rand(-10, 10)

Функции для работы со строками

str.len(str string) int

Назначение: определение длины строки в символах.

Аргументы:

  1. str

...

  1. строка, длину которой необходимо определить.

Возвращаемое значение: целое число, равное количеству символов в строке.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$str = "Какая-то строка"
$len = str.len($str) // $len будет содержать 15

str.lower(str string) string

Назначение:

...

преобразование символов строки в нижний регистр.

Аргументы:

  1. str

...

  1. строка, которую необходимо преобразовать.

Возвращаемое значение: строка, все символы которой находятся в нижнем регистре.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$str = "СтРоКа"
$lower = str.lower($str) // $lower будет содержать "строка" 

str.upper(str string) string

Назначение: преобразование символов строки в верхний регистр.

Аргументы:

  1. str

...

  1. строка, которую необходимо преобразовать.

Возвращаемое значение: строка, все символы которой находятся в верхнем регистре.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$str = "СтРоКа"
$upper = str.upper($str) // $lower будет содержать "СТРОКА" 

str.ucfirst(str string) string

Назначение: преобразование первого символа строки в верхний регистр.

Аргументы:

  1. str

...

  1. строка, первый символ которой необходимо преобразовать.

Возвращаемое значение: строка, в которой первый символ записан в верхнем регистре.

pylinenumberstrue
$str = str.ucfirst("строка") // $str будет содержать "Строка" 
Блок кода
language
php
themeDJango
firstline
1
titleПримеры использования
linenumberstrue
collapsetrue

str.lcfirst(str string) string

Назначение: преобразование первого символа строки в нижний регистр.

Аргументы:

  1. str

...

  1. строка, первый символ которой необходимо преобразовать.

Возвращаемое значение: строка, в которой первый символ записан в нижнем регистре.

pycollapse
Блок кода
language
php
themeDJango
firstline
linenumberstrue
1
titleПримеры использования
linenumberstrue
$str = str.ucfirst("Строка") // $str будет содержать "строка" 

str.letter(str string, index int) string

Назначение: получение указанного символа строки.

Аргументы:

  1. str

...

  1. строка, символ которой требуется получить.
  2. index

...

  1. целое число, определяющее позицию символа в строке, начиная с 0. Если это число отрицательное, то отсчёт начинается с конца строки.

Возвращаемое значение: строка, соответствующая указанному символу, либо пустая строка, если символа с такой позицией не существует.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$str = "Слово"
$firstLetter = str.letter($str, 0)  // Первая буква
$lastLetter = str.letter($str, -1)  // Последняя буква

str.first(str string, index int = 0) string

Назначение: получение указанного символа строки, начиная с начала строки.

Аргументы:

  1. str

...

  1. строка, символ которой требуется получить.
  2. index

...

  1. целое число, определяющее позицию символа с начала строки, начиная с 0. При этом знак числа игнорируется. Значение по умолчанию 0 (первый символ).

Возвращаемое значение: строка, соответствующая указанному символу, либо пустая строка, если символа с такой позицией не существует.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$str = "Слово"
$firstLetter = str.first($str)      // Первая буква
$secondLetter = str.first($str, 1)  // Вторая буква

str.last(str string, index int = 0) string

Назначение: получение указанного символа строки, начиная с конца строки.

Аргументы:

  1. str

...

  1. строка, символ которой требуется получить.
  2. index

...

  1. целое число, определяющее позицию символа с конца строки, начиная с 0. При этом знак числа игнорируется. Значение по умолчанию 0 (последний символ).

Возвращаемое значение: строка, соответствующая указанному символу, либо пустая строка, если символа с такой позицией не существует.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$str = "Слово"
$lastLetter = str.last($str)       // Последняя буква
$penultLetter = str.last($str, 1)  // Предпоследняя буква

str.concat(str1 string, str2 string) string

Назначение: объединяет две строки в одну.

Аргументы:

  1. str1

...

  1. строка, которая объединяется.
  2. str2

...

  1. строка, с которой объединяются.

Возвращаемое значение: новая строка, состоящая из первой строки, справа от которой добавлена вторая строка.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$str1 = "один"
$str2 = "два"
$str = str.concat($str1, $str2) // $str будет содержать "одиндва" 

str.sub(str string, offset int, length int = nil) string

Назначение: возвращает подстроку строки str, начинающейся с offset символа по счету и длиной length символов.

Аргументы:

  1. str

...

  1. исходная строка.
  2. offset

...

  1. – если offset неотрицательный, то возвращаемая подстрока начинается с

...

  1. позиции offset от начала строки, считая от нуля.
    Если offset отрицательный, то возвращаемая подстрока начинается с позиции, отстоящей на offset символов от конца строки str.
    Если str меньше offset символов, то будет возвращена пустая строка.
  2. length

...

  1. если length положительный, то возвращаемая строка будет не длиннее length символов, начиная с параметра offset (в зависимости от длины string).

...

  1. Если length отрицательный, то будет отброшено указанное этим аргументом число символов с конца

...

  1. строки string (после того как будет вычислена стартовая позиция,

...

  1. если offset отрицательный). Если при этом позиция начала подстроки, определяемая

...

  1. аргументом offset, находится в отброшенной части строки или за ней, то возвращается пустая строка. 
    Если

...

  1. параметр length задан и равен 0, то будет возвращена пустая строка.
    Если параметр length опущен или nil, то будет возвращена подстрока, начинающаяся с позиции, указанной параметром offset и длящейся до конца строки.

Возвращаемое значение: часть str или пустая строка.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$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.join(arr Collection, separator string = "") string

Назначение: объединяет элементы коллекции (кортежа, списка или ассоциативного массива) в строку.

Аргументы:

  1. arr

...

  1. коллекция элементов для объединения.
  2. separator

...

  1. разделитель элементов коллекции. По умолчанию равен пустой строке.

Возвращаемое значение:

...

новая строка, составленная из всех элементов коллекции отделённых между собой разделителем.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$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 будет содержать ""

str.split(str string, separator string = "", limit int = 0) List

Назначение: разбивает строку на части

...

, используя separator в качестве разделителя.

Аргументы:

  1. str

...

  1. строка для разделения.
  2. separator

...

  1. разделитель. Если равен пустой строке, то разбиение происходит посимвольно.
  2. limit

...

  1. необязательный параметр, равный максимальному количеству частей, на которые будет разбита строка. Если limit равен 0, то без ограничений. Если limit является положительным, возвращаемый список будет содержать максимум limit элементов

...

  1. . При этом последний элемент будет содержать остаток строки str. Если limit

...

  1. отрицательный, то будут возвращены все компоненты, кроме последних

...

  1. limit.

Возвращаемое значение:

...

список подстрок, на которые была разбита строка.

pycollapse
Блок кода
language
php
themeDJango
linenumberstrue
firstline1
titleПримеры использования
linenumberstrue
$letters = str.split("абвгде")             // Получили список букв слова
$words = str.split("один два три", " ")    // Получили список слов
$words = str.split("один два три", " ", 
1
2) // words содержит ["один", "два три"]

str.replace(str string, search string, replace string) string

Назначение: ищет все вхождения подстроки в строке и заменяет их на заданное значение.

Аргументы:

  1. str

...

  1. – строка в которой выполняется замена.
  2. search

...

  1. подстрока, которая ищется в исходной строке.

...

  1. replace

...

  1. строка замены.

Возвращаемое значение:

...

новая строка, в которой все search заменены на replace.

pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$str = str.replace("мама мыла раму", "рам", "Даш") // $str содержит "мама мыла Дашу"

str.

...

rreplace(str string, pattern string, replace string)

...

string

Назначение:

...

ищет все вхождения соответствующие регулярному выражению в строке и заменяет их на заданное значение.

Аргументы:

  1. str

...

  1. – строка в которой выполняется замена.
  2. pattern

...

  1. шаблон регулярного выражения соответствия которому ищутся в исходной строке
  2. replace – строка замены.

Возвращаемое значение: новая строка, в которой все cоответствия pattern заменены на replace.

HTML
<b>Примечание:</b> в качестве регулярных выражений используются <a href="http://ru.wikipedia.org/wiki/PCRE" target="_blank">Perl совместимые регулярные выражения (PCRE)</a>. 
HTML
<a href="http://www.shtogrin.com/library/web/pcre/" target="_blank">Ссылка на документацию и примеры регулярных выражений.</a> 
HTML
<a href="
  возвращает true, если строка соответствует регулярному выражению и false в противном случае.

Примечание: в качестве регулярных выражений используется Perl совместимые регулярные выражения (PCRE). Ссылка на документацию и примеры регулярных выражений: PCRE Doc.

Онлайн редактор регулярных выражений:
http://myregexp.com/" target="_blank">Онлайн редактор регулярных выражений.</a>
pylinenumberstruecollapse
Блок кода
language
php
themeDJango
firstline1
title
Примеры использования
linenumberstrue
$isIntNumber
$str = str.
match
rreplace("раз 1
.234"
, 
"/^[0-9]+$/") // $isIntNumber будет равен false $isIntNumber = str.match("1234
два 2, три 3", "/
^
[0-9]
+$
/", "") 
// $str 
$isIntNumber
содержит 
будет равен true
"раз, два, три"

str.

...

match(

...

str string,

...

pattern string)

...

bool

Назначение:

...

выполняет проверку данной строки регулярному выражению.

Аргументы:

...

  1. strстрока для

...

  1. сопоставления с регулярным выражением.
  2. pattern – шаблон регулярного выражения

...

Возвращаемое значение: возвращает true, если строка соответствует регулярному выражению и false в противном случае.

HTML
<b>Примечание:</b> в качестве регулярных выражений используются <a href="http://ru.wikipedia.org/wiki/PCRE" target="_blank">Perl совместимые регулярные выражения (PCRE)</a>. 
HTML
<a href="http://www.shtogrin.com/library/web/pcre/" target="_blank">Ссылка на документацию и примеры регулярных выражений.</a> 
HTML
<a href="http://myregexp.com/" target="_blank">Онлайн редактор регулярных выражений.</a>
Блок кода
languagephp
themeDJango
firstline1
titleПримеры использования
linenumberstrue
$isIntNumber = str.match("1.234", "/^[0-9]+$/") // $isIntNumber будет равен false
$isIntNumber = str.match("1234", "/^[0-9]+$/")  // $isIntNumber будет равен true

str.distance(str1 string, str2 string) number

Назначение: вычисляет степень сходства двух строк.

Аргументы:

  1. str1 – первая строка для сравнения.
  2. str2 – вторая строка для сравнения. 

Возвращаемое значение: возвращает число от 0 до 1 включительно, определяющее степень сходства двух строк: 1 – строки эквивалентны, 0 – строки абсолютно разные.

HTML
<b>Примечание:</b> функция фактически вычисляет
<a href="https://en.wikipedia.org/wiki/Word_error_rate" target="_blank">Word Error Rate.</a>
Блок кода
languagephp
themeDJango
firstline1
titleПримеры использования
linenumberstrue
$d = str.distance("", "abc")              // $d равен 0
$d = str.distance("Да", "да")             // $d равен 1
$d = str.distance("корыто", "открыто")    // $d равен 0.571
$d = str.distance("Да, верно", "таверна") // $d равен 0.625
$d = str.distance("жутко косые бананы", "жуй кокосы, ешь бананы") // $d равен 0.714
$d = str.distance("сошел с ума от раны", "Пошел он в пусурманы")  // $d равен 0.45
$d = str.distance("ёж", "дезоксирибонуклеиновая кислота")         // $d равен 0

Функции хэширования

hash.of(text string, algo string = "md5", binary bool = false) string

Назначение: вычисляет хэш строки согласно указанному алгоритму.

Аргументы:

  1. text – произвольная строка для хэширования.
  2. algo – название алгоритма хэширования. По умолчанию используется алгоритм md5.
  3. binary – когда установлено в true, выводит необработанные двоичные данные. При false выводит данные в шестнадцатеричной кодировке в нижнем регистре. По умолчания равен false.

Возвращаемое значение:возвращает строку, содержащую вычисленный хеш-код в шестнадцатеричной кодировке в нижнем регистре. Если binary задан как true, то возвращается хеш-код в виде бинарных данных. В случае ошибки (например, если указан недопустимый алгоритм хэширования) возвращает пустую строку.

Допустимые значения алгоритмов хэширования:

  • md2
  • md4
  • md5
  • sha1
  • sha224
  • sha256
  • sha384
  • sha512/224
  • sha512/256
  • sha512
  • sha3–224
  • sha3–256
  • sha3–384
  • sha3–512
  • ripemd128
  • ripemd160
  • ripemd256
  • ripemd320
  • whirlpool
  • tiger128,3
  • tiger160,3
  • tiger192,3
  • tiger128,4
  • tiger160,4
  • tiger192,4
  • snefru
  • snefru256
  • gost
  • gost–crypto
  • adler32
  • crc32
  • crc32b
  • crc32c
  • fnv132
  • fnv1a32
  • fnv164
  • fnv1a64
  • joaat
  • murmur3a
  • murmur3c
  • murmur3f
  • xxh32
  • xxh64
  • xxh3
  • xxh128
  • haval128,3
  • haval160,3
  • haval192,3
  • haval224,3
  • haval256,3
  • haval128,4
  • haval160,4
  • haval192,4
  • haval224,4
  • haval256,4
  • haval128,5
  • haval160,5
  • haval192,5
  • haval224,5
  • haval256,5

Примечание: если третий параметр true, то передавать возвращаемое функцией значение в качестве сообщения бота или его части нельзя. Это приведёт к падению бота.

$d = dt.add("2022-01-01 12:30:00", 59)
                // 
$d
$hash 
содержит
будет 
строку "2022-01-01 12:30:59" $d
содержать bff8b4bc8b5c1c1d5b3211dfb21d1e76
$hash = 
dt
hash.
add
of(
3600, "2022-01-01 12:30:00")
"Наглый коричневый лисёнок прыгает вокруг ленивой собаки.", "ripemd160")    // 
$d
$hash 
содержит
будет 
строку "2022-01-01 13:30:00" $d
содержать 8817ca339f7f902ad3fb456150a1bb9b4cb5dde9
$hash = 
dt
hash.
add("2022-01-01 00:00:00
of("Наглый коричневый лисёнок прыгает вокруг ленивой собаки.", 
"2022-01-02 00:00:00"
"sha256", true) // $hash будет 
$d
содержать 
содержит
бинарную строку
"2022-01-03 00:00:00"

dt.sub(d1 int|string, d2 int|string) int|string

Назначение: вычисляет разность двух дат, заданных в виде строк либо количеством секунд.

  • Если обе даты заданы количеством секунд, то функция вернёт их разность в виде числа секунд.
  • Если обе даты заданы строкой, то будет возвращено целое число равное разности между датами в секундах.
  • Если первый аргумент задан строкой даты, а второй числом секунд, то результатом будет новая дата равная разности даты и числа секунд.
  • Если второй аргумент задан строкой даты, а первый числом секунд, то результатом будет ошибка.

Аргументы:

  • d1 - строка представляющая собой дату в одном из допустимых форматов или целое число соответствующее количеству секунд.
  • d2 - аналогично первому аргументу
     (содержащую неотображаемые символы)
    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $hash = hash.of("Наглый коричневый лисёнок прыгает вокруг ленивой собаки.") 
      возвращает число от 0 до 1 включительно определяющее степень сходства двух строк. 1 - строки эквивалентны, 0 - строки абсолютно разные.

    Примечание: функция фактически вычисляет расстояние Дамерау-Левенштейна.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    $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

    Функции хэширования

    hash.of(text string, algo string = "md5", binary bool = false) string

    Назначение: вычисляет хэш строки согласно указанному алгоритму.

    Аргументы:

    1. text - произвольная строка для хэширования.
    2. algo - название алгоритма хэширования. По умолчанию используется алгоритм md5.
    3. binary - когда установлено в true, выводит необработанные двоичные данные. При false выводит данные в шестнадцатеричной кодировке в нижнем регистре. По умолчания равен false.

    Возвращаемое значение: возвращает строку содержащую вычисленный хеш-код в шестнадцатеричной кодировке в нижнем регистре. Если binary задан как true, то возвращается хеш-код в виде бинарных данных. В случае ошибки (например, если указан недопустимый алгоритм хэширования) возвращает пустую строку.

    Допустимые значения алгоритмов хэширования:

    • md2
    • md4
    • md5
    • sha1
    • sha224
    • sha256
    • sha384
    • sha512/224
    • sha512/256
    • sha512
    • sha3-224
    • sha3-256
    • sha3-384
    • sha3-512
    • ripemd128
    • ripemd160
    • ripemd256
    • ripemd320
    • whirlpool
    • tiger128,3
    • tiger160,3
    • tiger192,3
    • tiger128,4
    • tiger160,4
    • tiger192,4
    • snefru
    • snefru256
    • gost
    • gost-crypto
    • adler32
    • crc32
    • crc32b
    • crc32c
    • fnv132
    • fnv1a32
    • fnv164
    • fnv1a64
    • joaat
    • murmur3a
    • murmur3c
    • murmur3f
    • xxh32
    • xxh64
    • xxh3
    • xxh128
    • haval128,3
    • haval160,3
    • haval192,3
    • haval224,3
    • haval256,3
    • haval128,4
    • haval160,4
    • haval192,4
    • haval224,4
    • haval256,4
    • haval128,5
    • haval160,5
    • haval192,5
    • haval224,5
    • haval256,5

    Примечание: если третий параметр true, то передавать возвращаемое функцией значение в качества сообщения бота или его части нельзя. Это приведёт к падению бота.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    $hash = hash.of("Наглый коричневый лисёнок прыгает вокруг ленивой собаки.")                 // $hash будет содержать bff8b4bc8b5c1c1d5b3211dfb21d1e76
    $hash = hash.of("Наглый коричневый лисёнок прыгает вокруг ленивой собаки.", "ripemd160")    // $hash будет содержать 8817ca339f7f902ad3fb456150a1bb9b4cb5dde9
    $hash = hash.of("Наглый коричневый лисёнок прыгает вокруг ленивой собаки.", "sha256", true) // $hash будет содержать бинарную строку (содержащую неотображаемые символы)

    Функции кодирования/декодирования

    codec.base64Encode(str string) string

    Назначение: кодирует заданную строку в base64.

    Аргументы:

    1. str - произвольная строка для кодирования.

    Возвращаемое значение: возвращает строку закодированную в base64.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    $encoded = codec.base64Encode("Привет!") // $encoded будет содержать строку "0J/RgNC40LLQtdGCIQ=="

    codec.base64Decode(str string) ?string

    Назначение: декодирует заданную в base64 строку.

    Аргументы:

    1. str - строка закодированная в base64.

    Возвращаемое значение: возвращает раскодированную строку либо nil, если закодированная строка содержит символы не входящие в алфавит символов base64 кодировки.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    $decoded = codec.base64Decode("0J/RgNC40LLQtdGCIQ==") // $decoded будет содержать строку "Привет!"
    $failed = codec.base64Decode("Привет!")               // $failed будет равен nil

    Функции для работы с датой и временем

    dt.add(d1 int|string, d2 int|string) string

    Назначение: складывает две даты, заданные в виде строки либо как число секунд.

    • Если хотя бы один из аргументов функции число секунд, то это число будет прибавлено к числу секунд другой даты.
    • Если обе даты заданы строкой, то результат определяется по формуле d1 + abs(secondsOf(d1) - secondsOf(d2)), где abs - модуль числа (положительное значение), secondsOf - это дата представленная как количество секунд прошедших с начала 1970 года (даты до этого времени представлены отрицательным значением). 

    Аргументы:

    1. d1 - строка представляющая собой дату в одном из допустимых форматов или целое число соответствующее количеству секунд.
    2. d2 - аналогично первому аргументу.

    Возвращаемое значение: возвращает новую дату и время в виде строки.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue

    Функции кодирования/декодирования

    codec.base64Encode(str string) string

    HTML
    <b>Назначение:</b> кодирует заданную строку в <a href="https://ru.wikipedia.org/wiki/Base64" target="_blank">Base64</a>.

    Аргументы:

    1. str – произвольная строка для кодирования.

    Возвращаемое значение: возвращает

    ...

    строку, закодированную в Base64.

    pylinenumberstruecollapse
    Блок кода
    language
    php
    themeDJango
    firstline1
    title
    Примеры использования
    linenumberstrue
    $d
    $encoded = 
    dt
    codec.
    sub(100, 50
    base64Encode("Привет!") // $encoded будет содержать строку "0J/RgNC40LLQtdGCIQ=="

    codec.base64Decode(str string) ?string

    HTML
    <b>Назначение:</b> декодирует заданную в 
    <a href="https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B5_%D0%94%D0%B0%D0%BC%D0%B5%D1%80%D0%B0%D1%83_%E2%80%94_%D0%9B%D0%B5%D0%B2%D0%B5%D0%BD%D1%88%D1%82%D0%B5%D0%B9%D0%BD%D0%B0" target="_blank">Base64</a> строку.

    Аргументы:

    1. str – строка, закодированная в Base64.

    Возвращаемое значение: возвращает раскодированную строку либо nil, если закодированная строка содержит символы, не входящие в алфавит символов Base64 кодировки.

    Примечание: если строка формата содержит символы совпадающие с вышеперечисленными, но не являющиеся параметрами форматирования, то их следует экранировать с помощью символа обратного слэша "\".

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $decoded = codec.base64Decode("0J/RgNC40LLQtdGCIQ==") // $decoded будет содержать строку "Привет!"
    $failed = codec.base64Decode("Привет!")               // 
    $d
    $failed 
    содержит
    будет 
    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

    dt.format(dt int|string, format string) string

    Назначение: форматирует дату согласно заданному формату.

    Аргументы:

    • dt - дата заданная строкой или числом секунд.
    • format - строка определяющая формат даты и времени.

    Возвращаемое значение: строка даты в заданном формате.

    Допустимые параметры форматирования:

    Символ в строке 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
    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    $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"

    date.nearFuture(day int) string

    Назначение: возвращает ближайшую будущую к текущей дату по заданному дню.

    Аргументы:

    1. day - число дней для определения ближайшей в будущем даты.

    Возвращаемое значение: возвращает ближайшую к day дату.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    // Допустим сейчас 2022-12-20
    $d = date.nearFuture(25) // $d содержит 2022-12-25
    $d = date.nearFuture(10) // $d содержит 2023-01-10

    date.nearPast(day int) string

    Назначение: возвращает ближайшую прошлую к текущей дату по заданному дню.

    Аргументы:

    1. day - число дней для определения ближайшей в прошлом даты.

    Возвращаемое значение: возвращает ближайшую к day дату.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    // Допустим сейчас 2022-12-20
    $d = date.nearPast(25) // $d содержит 2022-11-25
    $d = date.nearPast(10) // $d содержит 2023-12-10

    date.future(day int) string

    Назначение: возвращает дату соответствующую указанному дню в следующем месяце.

    Аргументы:

    1. day - число дней для определения даты в будущем.

    Возвращаемое значение: дата в будущем.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    // Допустим сейчас 2022-12-20
    $d = date.future(25) // $d содержит 2023-01-25
    $d = date.future(10) // $d содержит 2023-01-10

    date.past(day int) string

    Назначение: возвращает дату соответствующую указанному дню в прошлом месяце.

    Аргументы:

    1. day - число дней для определения даты в прошлом.

    Возвращаемое значение: дата в прошлом.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    // Допустим сейчас 2022-12-20
    $d = date.past(25) // $d содержит 2022-11-25
    $d = date.past(10) // $d содержит 2022-11-10

    time.nearFuture(minute int) string

    Назначение: возвращает ближайшее будущее к текущему время по заданному количеству минут.

    Аргументы:

    1. minute - число минут для определения ближайшего в будущем времени.

    Возвращаемое значение: возвращает ближайшее к minute время.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    // Допустим сейчас 23:30:00
    $t = time.nearFuture(45) // $t содержит 23:45:00
    $t = time.nearFuture(15) // $t содержит 00:15:00

    time.nearPast(minute int) string

    Назначение: возвращает ближайшее прошлое к текущему время по заданному количеству минут.

    Аргументы:

    1. minute - число минут для определения ближайшего в прошлом времени.

    Возвращаемое значение: возвращает ближайшее к minute время.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    // Допустим сейчас 23:30:00
    $t = time.nearPast(45) // $t содержит 22:45:00
    $t = time.nearPast(15) // $t содержит 23:15:00

    time.future(minute int) string

    Назначение: возвращает время соответствующее указанному числу минут в следующем часе.

    Аргументы:

    1. minute - число минут для определения времени в будущем.

    Возвращаемое значение: время в будущем.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    // Допустим сейчас 23:30:00
    $t = time.future(45) // $t содержит 00:45:00
    $t = time.future(15) // $t содержит 00:15:00

    time.past(minute int) string

    Назначение: возвращает время соответствующее указанному числу минут в прошедшем часе.

    Аргументы:

    1. minute - число минут для определения времени в прошлом.

    Возвращаемое значение: время в прошлом.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    // Допустим сейчас 23:30:00
    $t = time.past(45) // $t содержит 22:45:00
    $t = time.past(15) // $t содержит 22:15:00

    Функции по работе с очередью сообщений пользователя

    queue.size() int

    Назначение: определение размера очереди сообщений пользователя.

    Аргументы: отсутствуют.

    Возвращаемое значение: число сообщений пользователя.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    $messageCount = queue.size() // $messageCount содержит число сообщений пользователя за всё время диалога

    queue.last() ?UserMessage

    Назначение: возвращает последнее сообщение пользователя либо nil, если очередь сообщений пуста.

    Аргументы: отсутствуют.

    Возвращаемое значение: объект UserMessage или nil.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    $lastMessage = queue.last() // $lastMessage содержит последнее на данный момент сообщение пользователя

    queue.first() ?UserMessage

    Назначение: возвращает первое сообщение пользователя либо nil, если очередь сообщений пуста.

    Аргументы: отсутствуют.

    Возвращаемое значение: объект UserMessage или nil.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    $firstMessage = queue.first() // $firstMessage содержит первое сообщение пользователя за всё время диалога

    queue.nth(index int) ?UserMessage

    Назначение: возвращает сообщение пользователя по его порядковому номеру, начиная с 1.

    Аргументы:

    1. index - порядковый номер сообщения пользователя.
    Возвращаемое значение: объект UserMessage или nil
    равен nil

    codec.jsonEncode(value any) string

    HTML
    <b>Назначение:</b> кодирует заданное значение в <a href="https://ru.wikipedia.org/wiki/JSON" target="_blank">json</a>.

    Аргументы:

    1. value – произвольное значение для кодирования.

    Возвращаемое значение: возвращает значение в формате json.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $encoded = codec.jsonEncode((1, true, "a", {"a": 1, "b": 2})) // $encoded будет содержать строку '[1, true, "a", {"a": 1, "b": 2}]'

    codec.jsonDecode(value string) any

    HTML
    <b>Назначение:</b> декодирует заданное в 
    <a href="https://ru.wikipedia.org/wiki/JSON" target="_blank">json</a> значение.

    Аргументы:

    1. value – значение, закодированное в json.

    Возвращаемое значение: возвращает раскодированное значение либо nil, в случае невозможности его раскодирования.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $decoded = codec.jsonDecode('[1, true, "a", {"a": 1, "b": 2}]') // $decoded будет содержать список [1, true, "a", {"a": 1, "b": 2}]
    

    Функции для работы с датой и временем

    dt.add(d1 int|string, d2 int|string) string

    Назначение: складывает две даты, заданные в виде строки либо как число секунд.

    • Если хотя бы один из аргументов функции число секунд, то это число будет прибавлено к числу секунд другой даты.
    • Если обе даты заданы строкой, то результат определяется по формуле d1 + abs(secondsOf(d1) - secondsOf(d2)), где abs – модуль числа (положительное значение), secondsOf – это дата, представленная как количество секунд, прошедших с начала 1970 года (даты до этого времени представлены отрицательным значением). 

    Аргументы:

    1. d1 – строка, представляющая собой дату в одном из допустимых форматов, или целое число, соответствующее количеству секунд.
    2. d2 – аналогично первому аргументу.

    Возвращаемое значение: возвращает новую дату и время в виде строки.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $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-02 02:00:00", "2022-01-01 01:00:00") // $d содержит строку "2022-01-03 03:00:00"

    dt.sub(d1 int|string, d2 int|string) int|string

    Назначение: вычисляет разность двух дат, заданных в виде строк либо количеством секунд.

    • Если обе даты заданы количеством секунд, то функция вернёт их разность в виде числа секунд.
    • Если обе даты заданы строкой, то будет возвращено целое число, равное разности между датами в секундах.
    • Если первый аргумент задан строкой даты, а второй – числом секунд, то результатом будет новая дата, равная разности даты и числа секунд.
    • Если второй аргумент задан строкой даты, а первый числом секунд, то результатом будет ошибка.

    Аргументы:

    1. d1 – строка, представляющая собой дату в одном из допустимых форматов, или целое число, соответствующее количеству секунд.
    2. d2 – аналогично первому аргументу.

    Возвращаемое значение: возвращает новую дату и время в виде строки либо число секунд – разность дат.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $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

    dt.format(dt int|string, format string) string

    Назначение: форматирует дату согласно заданному формату.

    Аргументы:

    • dt – дата, заданная строкой или числом секунд.
    • format – строка, определяющая формат даты и времени.

    Возвращаемое значение: строка даты в заданном формате.

    Допустимые параметры форматирования:

    Символ в строке 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

    Примечание: если строка формата содержит символы, совпадающие с вышеперечисленными, но не являющиеся параметрами форматирования, то их следует экранировать с помощью символа обратного слэша "\".

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $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"

    dt.year(dt int|string) int

    Назначение: возвращает полное числовое представление года, не менее 4 цифр.

    Аргументы:

    1. dt – дата, заданная строкой или числом секунд.

    Возвращаемое значение: возвращает число, представляющее год аргумента даты dt.

    Примечание: если в аргумент dt передано только время, то в качестве даты будет расцениваться 1 января 1970 года, и таким образом возвращаемое функцией значение будет равно 1970.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $dt = dt.year('2022-12-20 08:34:05') // $dt будет содержать число 2022
    $dt = dt.year('08:34:05') // $dt будет содержать число 1970

    dt.month(dt int|string) int

    Назначение: возвращает порядковый номер месяца.

    Аргументы:

    1. dt – дата, заданная строкой или числом секунд.

    Возвращаемое значение: возвращает число, представляющее месяц аргумента даты dt.

    Примечание: если в аргумент dt передано только время, то в качестве даты будет расцениваться 1 января 1970 года, и таким образом возвращаемое функцией значение будет равно 1.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $dt = dt.month('2022-12-20 08:34:05') // $dt будет содержать число 12
    $dt = dt.month('08:34:05') // $dt будет содержать число 1

    dt.day(dt int|string) int

    Назначение: возвращает день месяца.

    Аргументы:

    1. dt – дата, заданная строкой или числом секунд.

    Возвращаемое значение: возвращает число, представляющее день месяца аргумента даты dt.

    Примечание: если в аргумент dt передано только время, то в качестве даты будет расцениваться 1 января 1970 года, и таким образом возвращаемое функцией значение будет равно 1.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $dt = dt.day('2022-12-20 08:34:05') // $dt будет содержать число 20
    $dt = dt.day('08:34:05') // $dt будет содержать число 1

    dt.hour(dt int|string) int

    Назначение: возвращает часы в 24-часовом формате .

    Аргументы:

    1. dt – дата, заданная строкой или числом секунд.

    Возвращаемое значение: возвращает число, представляющее часы аргумента даты dt.

    Примечание: если в аргумент dt передана дата без времени, то возвращаемое значение будет равно нулю.

    $message
     = 
    queue
    dt.
    nth(1
    hour('2022-12-20 08:34:05') // 
    $message
    $dt 
    содержит
    будет 
    первое
    содержать 
    сообщение
    число 
    пользователя
    8
    
    $message
    $dt = 
    queue
    dt.
    nth(5
    hour('2022-12-20') // 
    $message
    $dt 
    содержит
    будет 
    пятое
    содержать 
    сообщение
    число 
    пользователя
    0
    queue
    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Допустим сейчас 2023-01-01
    $dt
    linenumberstrue
    collapsetrue

    dt.

    ...

    minute(

    ...

    dt int|string)

    ...

    int

    Назначение: возвращает

    ...

    минуты.

    Аргументы:

    1. dt – дата, заданная строкой или числом секунд

    Аргументы:

    ...

    1. .

    Возвращаемое значение: 

    ...

    возвращает число, представляющее минуты аргумента даты dt.

    Примечание: если в аргумент dt передана дата без времени, то возвращаемое значение будет равно нулю.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Допустим сейчас 2023-01-01
    $dt
    $message
     = 
    queue
    dt.
    lastNth(1
    minute('2022-12-20 08:34:05') // 
    $message
    $dt 
    содержит
    будет 
    последнее
    содержать 
    сообщение
    число 
    пользователя
    34
    
    $message
    $dt = 
    queue
    dt.
    lastNth(5
    minute('2022-12-20') // 
    $message
    $dt 
    содержит
    будет 
    пятое
    содержать 
    с конца очереди сообщение пользователя

    Функции для работы с фактами

    fact.save(context string, factName string, factValue mixed, botId string = nil, clientId string = nil)

    Назначение: сохраняет факт в базе фактов.

    Аргументы:

    1. context - строка определяющая контекс в рамках которого существует факт.
    2. factName - строка определяющая название факта.
    3. factValue - любое значение определяющее содержимое факта.
    4. botId - идентификатор бота. По умолчанию не задан.
    5. clientId - идентификатор клиента, По умолчанию не задан.
    Возвращаемое значение: отсутствует
    число 0

    dt.second(dt int|string) int

    Назначение: возвращает секунды.

    Аргументы:

    1. dt – дата, заданная строкой или числом секунд.

    Возвращаемое значение: возвращает число, представляющее секунды аргумента даты dt.

    Примечание: если в аргумент dt передана дата без времени, то возвращаемое значение будет равно нулю.

    fact.load(context string, factName string, botId string = nil, clientId string = nil) mixed

    Назначение:  извлекает факт из базы фактов.

    Аргументы:

    1. context - строка определяющая контекс в рамках которого существует факт.
    2. factName - строка определяющая название факта.
    3. botId - идентификатор бота. По умолчанию не задан.
    4. clientId - идентификатор клиента, По умолчанию не задан.

    Возвращаемое значение: содержимое факта.

    Блок кода
    languagephp
    fact.save("место", "город", "Екатеринбург")                    // Факт доступный всем ботам компании       
    fact.save("место", "город", "Екатеринбург", nil, @clientId)    // Факт с привязкой к клиенту
    fact.save("место", "город", "Екатеринбург", @botId)            // Факт с привязкой к боту
    fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Факт с привязкой к боту и клиенту
    Блок кода
    languagephp
    fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Сохраняет факт с привязкой к боту и клиенту
    $city = fact.load("место", "город", @botId, @clientId)         // Загружаем факт в переменную. $city содержит "Екатеринбург"

    fact.delete(context string, factName string, botId string = nil, clientId string = nil)

    Назначение:  удаляет факт из базы фактов.

    Аргументы:

    1. context - строка определяющая контекс в рамках которого существует факт.
    2. factName - строка определяющая название факта.
    3. botId - идентификатор бота. По умолчанию не задан.
    4. clientId - идентификатор клиента, По умолчанию не задан.

    Возвращаемое значение: отсутствует.

    Блок кода
    languagephp
    fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Сохраняет факт с привязкой к боту и клиенту
    $city = fact.load("место", "город", @botId, @clientId)         // Загружаем факт в переменную. $city содержит "Екатеринбург"
    fact.delete("место", "город", @botId, @clientId)               // Удаляем факт.
    $city = fact.load("место", "город", @botId, @clientId)         // Пытаемся загрузить удалённый факт. Теперь $city содержит nil.

    fact.query() FactQuery

    Назначение: возвращает экземпляр FactQuery для построения и выполнения запросов к базе фактов.

    Аргументы: отсутствуют.

    Возвращаемое значение: объект FactQuery.

    Блок кода
    languagephp
    // Добавили пару фактов в базу
    fact.save("место", "страна", "Россия")
    fact.save("место", "город", "Екатеринбург")
    
    // Загрузили в $places список мест отсортированных по имени факта в порядке убывания:
    // [{"name": "город", "value": "Россия"}, {"name": "страна", "value": "Екатеринбург"}]
    $places = fact.query().
        select("name,value").
        where("context", "=", "место").
        sortBy("-name").
        rows()

    fact.cond() FactQueryCondition

    Назначение: возвращает экземпляр FactQueryCondition для построения составных условий в запросах к базе фактов.

    Аргументы: отсутствуют.

    Возвращаемое значение: объект FactQueryCondition.

    Блок кода
    languagephp
    // Добавили факты в базу
    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()

    Функции для работы с таймером

    timer.start(time int, nodeId string) string

    Назначение: запускает таймер обратного отсчёта. По истечении указанного времени бот осуществит переход на указанный узел (блок).

    Аргументы:

    1. time - время в секундах.
    2. nodeId - идентификатор блока для перехода после завершения отсчёта.

    Возвращаемое значение: идентификатор таймера.

    Блок кода
    languagephp
    $timerId = timer.start(60, "760b9732-4bfb-4846-a348-faae5138fcb2") // $timerId содержит уникальный идентификатор таймера на 60 секунд

    timer.stop(timerId string)

    Назначение: останавливает (удаляет) таймер обратного отсчёта.

    Аргументы:

    1. timerId - идентификатор таймера.

    Возвращаемое значение: отсутствует.

    Блок кода
    languagephp
    $timerId = timer.start(60, "760b9732-4bfb-4846-a348-faae5138fcb2")
    timer.stop($timerId) // останавливаем (удаляем) таймер

    Функции для работы с текстом на естественном языке (NLP)

    nlp.parse(message string|UserMessage) Sentence

    Назначение: парсит текст на естественном языке. 

    Аргументы:

    1. message - текст на естественном языке или объект UserMessage.

    Возвращаемое значение: объект Sentence содержащий информацию о всех намерениях и сущностях исходного сообщения.

    Примечание: данная функция извлекает из текста только сущности. Для работы с намерениями используйте функцию nlu.parse

    Блок кода
    languagephp
    $sentence = nlp.parse(queue.first()) // парсим первое сообщение пользователя

    nlp.join(message1 string|UserMessage, message2 string|UserMessage) Sentence

    Назначение: объединяет два текста на естественном языке в одно и затем парсит его.

    Аргументы:

    1. message1 - текст на естественном языке или объект UserMessage.
    2. message2 - текст на естественном языке или объект UserMessage.

    Возвращаемое значение: объект Sentence содержащий информацию о всех намерениях и сущностях объединённого сообщения.

    Блок кода
    languagephp
    $sentence = nlp.join(queue.lastNth(2), queue.lastNth(1)) // объединяем предпоследнее и последнее сообщения пользователя и затем парсим его  

    nlp.setPerception($sentence Sentence)

    Назначение: позволяет установить сообщение пользователя для обработки в других узлах (блоках) схемы бота. 

    Аргументы:

    sentence - объект Sentence содержащий информацию о намерениях и сущностях некоторого сообщения
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Допустим сейчас 2023-01-01
    $dt = dt.second('2022-12-20 08:34:05') // $dt будет содержать число 5
    $dt = dt.second('2022-12-20') // $dt будет содержать число 0

    dt.weekday(dt int|string) int

    Назначение: возвращает порядковый номер дня недели.

    Аргументы:

    1. dt – дата, заданная строкой или числом секунд.

    Возвращаемое значение: возвращает число, представляющее номер дня недели аргумента даты dt, от 0 (понедельник) до 6 (воскресенье).

    Примечание: если в аргумент dt передано только время, то в качестве даты будет расцениваться 1 января 1970 года, и таким образом возвращаемое функцией значение будет равно 3 (четверг).

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $dt = dt.weekday('2022-12-20 08:34:05') // $dt будет содержать число 1
    $dt = dt.weekday('08:34:05') // $dt будет содержать число 3

    date.nearFuture(day int) string

    Назначение: возвращает ближайшую будущую к текущей дату по заданному дню.

    Аргументы:

    1. day – число дней для определения ближайшей в будущем даты.

    Возвращаемое значение: возвращает ближайшую к day дату.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Допустим сейчас 2022-12-20
    $d = date.nearFuture(25) // $d содержит 2022-12-25
    $d = date.nearFuture(10) // $d содержит 2023-01-10

    date.nearPast(day int) string

    Назначение: возвращает ближайшую прошлую к текущей дату по заданному дню.

    Аргументы:

    1. day – число дней для определения ближайшей в прошлом даты.

    Возвращаемое значение: возвращает ближайшую к day дату.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Допустим сейчас 2022-12-20
    $d = date.nearPast(25) // $d содержит 2022-11-25
    $d = date.nearPast(10) // $d содержит 2023-12-10

    date.future(day int) string

    Назначение: возвращает дату, соответствующую указанному дню в следующем месяце.

    Аргументы:

    1. day – число дней для определения даты в будущем.

    Возвращаемое значение: дата в будущем.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Допустим сейчас 2022-12-20
    $d = date.future(25) // $d содержит 2023-01-25
    $d = date.future(10) // $d содержит 2023-01-10

    date.past(day int) string

    Назначение: возвращает дату, соответствующую указанному дню в прошлом месяце.

    Аргументы:

    1. day – число дней для определения даты в прошлом.

    Возвращаемое значение: дата в прошлом.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Допустим сейчас 2022-12-20
    $d = date.past(25) // $d содержит 2022-11-25
    $d = date.past(10) // $d содержит 2022-11-10

    time.nearFuture(minute int) string

    Назначение: возвращает ближайшее будущее к текущему время по заданному количеству минут.

    Аргументы:

    1. minute – число минут для определения ближайшего в будущем времени.

    Возвращаемое значение: возвращает ближайшее к minute время.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Допустим сейчас 23:30:00
    $t = time.nearFuture(45) // $t содержит 23:45:00
    $t = time.nearFuture(15) // $t содержит 00:15:00

    time.nearPast(minute int) string

    Назначение: возвращает ближайшее прошлое к текущему время по заданному количеству минут.

    Аргументы:

    1. minute – число минут для определения ближайшего в прошлом времени.

    Возвращаемое значение: возвращает ближайшее к minute время.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Допустим сейчас 23:30:00
    $t = time.nearPast(45) // $t содержит 22:45:00
    $t = time.nearPast(15) // $t содержит 23:15:00

    time.future(minute int) string

    Назначение: возвращает время, соответствующее указанному числу минут в следующем часе.

    Аргументы:

    1. minute – число минут для определения времени в будущем.

    Возвращаемое значение: время в будущем.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Допустим сейчас 23:30:00
    $t = time.future(45) // $t содержит 00:45:00
    $t = time.future(15) // $t содержит 00:15:00

    time.past(minute int) string

    Назначение: возвращает время, соответствующее указанному числу минут в прошедшем часе.

    Аргументы:

    1. minute – число минут для определения времени в прошлом.

    Возвращаемое значение: время в прошлом.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Допустим сейчас 23:30:00
    $t = time.past(45) // $t содержит 22:45:00
    $t = time.past(15) // $t содержит 22:15:00

    Функции по работе с очередью сообщений пользователя

    queue.size() int

    Назначение: определение размера очереди сообщений пользователя.

    Аргументы: отсутствуют.

    Возвращаемое значение: число сообщений пользователя.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $messageCount = queue.size() // $messageCount содержит число сообщений пользователя за всё время диалога

    queue.last() ?UserMessage

    Назначение: возвращает последнее сообщение пользователя либо nil, если очередь сообщений пуста.

    Аргументы: отсутствуют.

    Возвращаемое значение: объект UserMessage или nil.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $lastMessage = queue.last() // $lastMessage содержит последнее на данный момент сообщение пользователя

    queue.first() ?UserMessage

    Назначение: возвращает первое сообщение пользователя либо nil, если очередь сообщений пуста.

    Аргументы: отсутствуют.

    Возвращаемое значение: объект UserMessage или nil.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $firstMessage = queue.first() // $firstMessage содержит первое сообщение пользователя за всё время диалога

    queue.nth(index int) ?UserMessage

    Назначение: возвращает сообщение пользователя по его порядковому номеру, начиная с 1.

    Аргументы:

    1. index – порядковый номер сообщения пользователя.

    Возвращаемое значение: объект UserMessage или nil.

    Блок кода
    languagephp
    themeDJango
    firstline1
    linenumberstrue
    $message = queue.nth(1) // $message содержит первое сообщение пользователя
    $message = queue.nth(5) // $message содержит пятое сообщение пользователя

    queue.lastNth(index int) ?UserMessage

    Назначение: возвращает сообщение пользователя по его порядковому номеру, считая с конца очереди. Последнее сообщение соответствует порядковому номеру 1.

    Аргументы:

    1. index – порядковый номер сообщения пользователя, считая с конца очереди.

    Возвращаемое значение: объект UserMessage или nil.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $message = queue.lastNth(1) // $message содержит последнее сообщение пользователя
    $message = queue.lastNth(5) // $message содержит пятое с конца очереди сообщение пользователя

    Функции для работы с сообщениями бота

    msg.addAction(actionType string, actionData Collection|nil = nil)

    Назначение: добавление действия к текущему сообщению бота.

    Аргументы:

    1. actionType – тип действия.
    2. actionData – любая коллекция элементов (словарь, список или кортеж).

    Возвращаемое значение: отсутствует.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    msg.addAction(
        "prompter_suggestions",
        {
            "suggestions": [
        
    $sentence = nlp.join(queue.lastNth(2), queue.lastNth(1)) // объединяем предпоследнее и последнее сообщения пользователя и затем парсим его nlp.setPerception($sentence)
            {
                    "message": "some message",
       
    // Теперь остальные узлы схемы будут работать с cообщением $sentence

    Функции для "понимания" естественного языка.

    nlu.parse(text string, agentId string, timezoneOffset int = 0, version int = 1) Sentence

    Purpose: разбор текста на естественном языке. Выявление намерений и сущностей.

    Arguments:

    text -текст для разбора.
  • agentId - идентификатор (uuid) агента (нейросети) производящего разбор текста.
  • timezoneOffset - смещение временной зоны, необходимое для правильного выявления временных сущностей. По умолчанию используется смещение для UTC.
  •              "intent": {
                        "name": "some name",
                        "confidence": 0.9999,
                    },
                    "something": "bla-bla-bla",
                },
            ],
        }, 
    )

    Функции для работы с файлами

    file.download(url string) string

    Назначение: загрузка файла по указанному адресу.

    Аргументы:

    1. url – интернет ссылка на файл.

    Возвращаемое значение: идентификатор загруженного в систему TWIN файла.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $fileId = file.download("http://some.file.url") // $fileId будет содержать идентификатор файла

    Функции для работы с фактами

    fact.save(context string, factName string, factValue mixed, botId string = nil, clientId string = nil)

    Назначение: сохраняет факт в базе фактов.

    Аргументы:

    1. context – строка, определяющая контекст, в рамках которого существует факт.
    2. factName – строка, определяющая название факта.
    3. factValue – любое значение, определяющее содержимое факта.
    4. botId – идентификатор бота. По умолчанию не задан.
    5. clientId – идентификатор клиента. По умолчанию не задан.

    Возвращаемое значение: отсутствует.

    $response = http.request("https://some.url", "POST", {"param1": 123, "param2": true}).
                     
    headers({"Content-Type": "application/json"}).
     // Факт, доступный всем ботам компании       
    fact.save("место", "город", "Екатеринбург", 
    timeout(300).
    nil, @clientId)    // Факт с привязкой 
    send()

    Объект Request

    timeout(timeout int) Request

    Назначение: задаёт максимально допустимое время запроса в секундах. Если запрос отрабатывает дольше указанного времени, то его выполнение прерывается.

    Аргументы:

    1. timeout - допустимое время запроса в секундах.

    Возвращаемое значение: объект содержащий информацию о HTTP запросе.

    $response = http.request("https://some.url", "GET").
    к клиенту
    fact.save("место", "город", "Екатеринбург", @botId)            // Факт с привязкой к 
    timeout(300). send()

    url(url string) Request

    Назначение: задаёт URL запроса.

    Аргументы:

    1. url - строка URL.
    Возвращаемое значение: объект содержащий информацию о HTTP запросе
    боту
    fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Факт с привязкой к боту и клиенту
    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    fact.save("место", "город", "Екатеринбург")  
  • version - версия NLU. Может быть числом 1 или 2.
  • Возвращаемое значение: объект Sentence.

    Блок кода
    languagephp
    $sentence = nlu.parse("Доброе утро Вася!", "d926726a-5acb-4233-8c1e-ce4300921de0")

    Функции для работы с HTTP

    http.sendRequest(url string, method string, body any = nil, headers Map = nil) Response

    Назначение: отправляет HTTP запрос на указанный URL. 

    Аргументы:

    1. url - URL адрес на который будет оправлен запрос.
    2. method - HTTP метод. Допустимые значения: GET, POST, PUT, DELETE, PATCH, HEAD и OPTIONS.
    3. body - тело запроса. Может быть представлено скалярным значением, списком или ассоциативным массивом.
    4. headers - HTTP заголовки запроса. По умолчанию устанавливается заголовок Content-Type: application/json. 

    Возвращаемое значение: объект HTTP ответа.

    Блок кода
    languagephp
    // Выполняем запрос на получение списка юзеров
    $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.request(url string = "", method string = "POST", body any = nil) Request

    Назначение: формирует новый объект HTTP запроса.

    Аргументы:

    1. url - строка URL.
    2. method - название HTTP метода.
    3. body - содержимое тела запроса.

    Возвращаемое значение: объект содержащий информацию о HTTP запросе.

    Блок кода
    languagephp
    Блок кода
    languagephp

    fact.load(context string, factName string, botId string = nil, clientId string = nil) mixed

    Назначение: извлекает факт из базы фактов.

    Аргументы:

    1. context – строка, определяющая контекст, в рамках которого существует факт.
    2. factName – строка, определяющая название факта.
    3. botId – идентификатор бота. По умолчанию не задан.
    4. clientId – идентификатор клиента. По умолчанию не задан.

    Возвращаемое значение: содержимое факта.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Сохраняет факт с привязкой к боту и клиенту
    $city = fact.load("место", "город", @botId, @clientId)
    $response = http.request(). url("http://some.url?p1=v1&p2=v2").
             // Загружаем факт 
    method("GET"). send()

    method(method string) Request

    Назначение: задаёт HTTP метод запроса.

    Аргументы:

    1. method - название HTTP метода.
    Возвращаемое значение: объект содержащий информацию о HTTP запросе
    в переменную. $city содержит "Екатеринбург"

    fact.delete(context string, factName string, botId string = nil, clientId string = nil)

    Назначение: удаляет факт из базы фактов.

    Аргументы:

    1. context – строка, определяющая контекст, в рамках которого существует факт.
    2. factName – строка, определяющая название факта.
    3. botId – идентификатор бота. По умолчанию не задан.
    4. clientId – идентификатор клиента. По умолчанию не задан.

    Возвращаемое значение: отсутствует.

    $response = http.request().
    , "город", @botId, @clientId)               // Удаляем факт
    $city = 
    url("http://some.url?p1=v1&p2=v2") method("PUT").
    fact.load("место", "город", @botId, @clientId)         // Пытаемся загрузить 
    body("some body"). send()

    header(header string, value string) Request

    Назначение: добавляет HTTP заголовок.

    Аргументы:

    1. header - название HTTP заголовка.
    2. value - значение HTTP заголовка.
    Возвращаемое значение: объект содержащий информацию о HTTP запросе
    удалённый факт. Теперь $city содержит nil.
    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Сохраняет факт с привязкой к боту и клиенту
    $city = fact.load("место", "город", @botId, @clientId)
    $response = http.request(). url("http://some.url?p1=v1&p2=v2").
             // Загружаем факт в 
    method
    переменную. $city содержит "Екатеринбург"
    fact.delete("
    GET
    место"
    ). send()

    body(body any) Request

    Назначение: задаёт тело запроса.

    Аргументы:

    1. body - тело запроса.

    Возвращаемое значение: объект содержащий информацию о HTTP запросе.

    Блок кода
    languagephp

    fact.clean(contexts string|List, factNames string|List = nil, factValues any = nil, botIds string|List = nil, clientIds string|List = nil)

    Назначение: удаляет факты из базы фактов.

    Аргументы:

    1. contexts – строка или список строк, определяющий контексты, все факты которых будут удалены.
    2. factNames – строка или список строк, определяющий названия фактов которые будут удалены.
    3. factValues – значение или список значений фактов, которые должны быть удалены.
    4. botIds – идентификатор или список идентификаторов бота. Все факты для указанных ботов будут удалены.
    5. clientIds – идентификатор или идентификаторы клиентов. Все факты для указанных клиентов будут удалены.

    Возвращаемое значение: отсутствует.

    headers(headers Map) Request

    Назначение: задаёт HTTP заголовки.

    Аргументы:

    headers - HTTP заголовки
    Блок кода
    languagephp
    $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()
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Удалить все факты:
    // - для контекста ctx; 
    // - факты с названиями fact1 и fact2;
    // - все факты со значениями 123 и true;
    // - все факты бота fa5d268c-bcc9-4734-a10f-3dfd357764ac
    // - все факты текущего клиента.
    fact.clean("ctx", ["fact1", "fact2"], [123, true], "fa5d268c-bcc9-4734-a10f-3dfd357764ac", @clientId)

    fact.query() FactQuery

    Назначение: возвращает экземпляр FactQuery для построения и выполнения запросов к базе фактов.

    Аргументы: отсутствуют.

    Возвращаемое значение: объект

    ...

    FactQuery.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Добавили пару фактов в базу
    fact.save("место", "страна", "Россия")
    fact.save("место", "город", "Екатеринбург")
    
    // Загрузили в $places список мест, отсортированных по имени факта в порядке убывания:
    // [{"name": "город", "value": "Россия"}, {"name": "страна", "value": "Екатеринбург"}]
    $places = fact.query(
    $response = http.request(). url("http://some.url?p1=v1&p2=v2"
    ).
        select("name,value").
        where("context", "=", "место").
        
    method
    sortBy("
    PUT
    -name").
        rows()

    fact.cond() FactQueryCondition

    Назначение: возвращает экземпляр FactQueryCondition для построения составных условий в запросах к базе фактов.

    Аргументы: отсутствуют.

    Возвращаемое значение: объект FactQueryCondition.

    $response = http.request
    where("context", "=", "города").
        where(fact.cond().
            
    url("http://some.url
    where("name", "^@", "м").
            orWhere("name", "^@", "т")).
        where("name", "not in", 
    method
    ("екатеринбург", "
    POST
    новосибирск")).
        
    header("Content-Type", "multipart/form-data"). file($fileId, "file"). send()

    send() Response

    Назначение: отправляет сформированный запрос
    one()
    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Добавили факты в базу
    fact.save("города", "екатеринбург", "Екатеринбург")
    fact.save("города", "москва", "Москва")
    fact.save("города", "санкт-петербург", 
    body("some body"). headers({"Content-Type": "application/json", "Accept-Language": "en-US,en;q=0.5"}
    "Санкт-Петербург")
    fact.save("города", "новосибирск", "Новосибирск")
    
    // Найдём один город, начинающийся с буквы "м" или с буквы "т" и не равный городам "Екатеринбург" и "Новосибирск"
    $city = fact.query().
        select("value").
        
    send()

    file(fileId string, name string = "") Request

    Назначение: добавляет файл для отправки по HTTP.

    Аргументы:

    1. fileId - идентификатор ранее загруженного файла.
    2. name - название параметра запроса. Если параметр не задан, то его имя будет совпадать с идентификатором файла.

    Возвращаемое значение: объект содержащий информацию о HTTP запросе.

    Блок кода
    languagephp

    Функции для работы с таймером

    timer.start(time int, nodeId string) string

    Назначение: запускает таймер обратного отсчёта. По истечении указанного времени бот осуществит переход на указанный узел (блок).

    Аргументы:

    1. time – время в секундах.
    2. nodeId – идентификатор блока для перехода после завершения отсчёта.

    Возвращаемое значение: 

    ...

    идентификатор таймера.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $timerId
    $response
     = 
    http
    timer.
    request("http://some.url?p1=v1&p2=v2", "PUT", "some body"). headers({"header1": "...", "header2": "..."). send()

    Объект Response

    statusCode int

    Назначение: код статуса ответа
    start(60, "760b9732-4bfb-4846-a348-faae5138fcb2") // $timerId содержит уникальный идентификатор таймера на 60 секунд

    timer.stop(timerId string)

    Назначение: останавливает (удаляет) таймер обратного отсчёта.

    Аргументы:

    1. timerId – идентификатор таймера.

    Возвращаемое значение: отсутствует.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $timerId
    $response
     = 
    http
    timer.
    sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body") $code = $response.statusCode

    body any

    Назначение: тело ответа.

    Блок кода
    languagephp
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $body = $response.body

    headers Map

    Назначение: заголовки ответа
    start(60, "760b9732-4bfb-4846-a348-faae5138fcb2")
    timer.stop($timerId) // останавливаем (удаляем) таймер

    timer.stopAll()

    Назначение: останавливает (удаляет) все таймеры обратного отсчёта.

    Аргументы: отсутствуют.

    Возвращаемое значение: отсутствует.

    error string

    Назначение: значение элемента error тела ответа или пустая строка, если такого элемента нет
    Блок кода
    languagephp
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $headers = $response.headers
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // запускаем два таймера
    timer.start(60, "760b9732-4bfb-4846-a348-faae5138fcb2")
    timer.start(120, "760b9732-4bfb-4846-a348-faae5138fcb2")
    // останавливаем все таймеры
    timer.stopAll() 

    Функции для работы с текстом на естественном языке (NLP)

    nlp.parse(message string|UserMessage) Sentence

    Назначение: парсит текст на естественном языке. 

    Аргументы:

    1. message – текст на естественном языке или объект UserMessage.

    Возвращаемое значение: объект Sentence,содержащий информацию о всех намерениях и сущностях исходного сообщения.

    Примечание: данная функция извлекает из текста только сущности чисел и даты/времени. Для работы с намерениями и остальными сущностями используйте функцию nlu.parse.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $sentence
    $response
     = 
    http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body") $error = $response.error

    isError() bool

    Назначение: определение успешности ответа
    nlp.parse(queue.first()) // парсим первое сообщение пользователя

    nlp.join(message1 string|UserMessage, message2 string|UserMessage) Sentence

    Назначение: объединяет два текста на естественном языке в одно и затем парсит его.

    Аргументы:

    1. message1 – текст на естественном языке или объект UserMessage.
    2. message2 – текст на естественном языке или объект UserMessage.

    Возвращаемое значение: 

    ...

    объект Sentence,содержащий информацию о всех намерениях и сущностях объединённого сообщения.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $sentence
    $response
     = 
    http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body") $isError = $response.isError()

    isSuccessful() bool

    Назначение: определение успешности ответа.

    Возвращаемое значение: возвращает true, если свойство error пустое и код статуса меньше 400, иначе возвращает false.

    Блок кода
    languagephp
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $isSuccessful = $response.isSuccessful()

    hasHeader(header string) bool

    Назначение: определение наличия заголовка.

    Аргументы:

    1. header - название заголовка.

    Возвращаемое значение: true, если заголовок с указанным именем существует и false в противном случае.

    Блок кода
    languagephp
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $hasContentType = $response.hasHeader("Content-Type")

    header(header string) string

    Назначение: получение значения заголовка.

    Аргументы:

    1. header - название заголовка.

    Возвращаемое значение: значение заголовка с указанным именем или пустую строку, если такого заголовка нет.

    Блок кода
    languagephp
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $contentType = $response.header("Content-Type")

    toFile() string

    Назначение: получение файла из HTTP ответа.

    Возвращаемое значение: идентификатор загруженного файла.

    Блок кода
    languagephp
    $response = http.sendRequest("http://some.url", "GET")
    $fileId = $response.toFile()

    Системные функции

    sys.sleep(microseconds int)

    Назначение: останавливает работу бота на указанное количество микросекунд. Если количество микросекунд превышает 1 минуту, то пауза будет уменьшена до 1 минуты.

    Аргументы:

    1. microseconds - число микросекунд паузы.

    Возвращаемое значение: отсутствует.

    Блок кода
    languagephp
    sys.sleep(3_000_000) // Пауза в 3 секунды

    Функции для работы с GPT-3

    gpt3.ask(text string) string

    Назначение: отправляет сообщение в нейросеть ChatGPT3 и возвращает её ответ.

    Аргументы:

    1. text - запрос к нейросети на русском языке.

    Возвращаемое значение: ответ нейросети в виде строки.

    Блок кода
    languagephp
    $answer = gpt3.ask("Есть ли жизнь на Марсе?") // В $answer будет ответ нейросети на заданный вопрос

    Объект FactQuery

    Используя методы этого объекты вы можете выполнять и строить разнообразные запросы к базе фактов. База фактов представляет собой список записей. Каждая запись представляет собой единичный факт состоящий из следующих частей (полей):

    • Контекст (context). Произвольная строка длина которой не превышает 255 символов. Обозначает некоторую предметную область в рамках которой существует факт. Может участвовать в поиске.
    • Имя факта (name). Произвольная строка длина которой не превышает 255 символов. Служит для идентификации факта в заданном контексте. Может участвовать в поиске.
    • Значение факта (value). Любое значение. Это собственно и есть та информация которую мы трактуем как факт. Не может участвовать в поиске (технически может, но результат недетерминирован).
    • Идентификатор бота (botId). Может быть задан при сохранении факта с целью привязки факта к боту. Может участвовать в поиске.
    • Идентификатор клиента (clientId). Может быть задан при сохранении факта с целью привязки факта к клиенту. Может участвовать в поиске.

    select(fields string|Collection) FactQuery

    Назначение: задаёт список полей из базы фактов значения которых следует вернуть в результате запроса. Если метод select не вызыался, то будут возвращены поля context,name и value.

    Аргументы:

    1. fields - строка содержащая список неободимых полей разделённых запятой либо коллекция этих полей.

    Возвращаемое значение: тот же объект FactQuery.

    Блок кода
    languagephp
    $facts = fact.query().rows()                               // select не вызван возвращаем все поля.
    $facts = fact.query().select(["value", "context"]).rows()  // Возвращаем список фактов для которых нам нужны только value и context.
    $facts = fact.query().select("botId").rows()               // Возвращаем только поле botId к которым привязаны факты.

    where(field string, operator string, value mixed) FactQuery

    Назначение: задаёт условие поиска фактов. Несколько методов where объединяются по принципу логического "И", т.е. все условия должны быть выполнены. Метод where равносилен методу andWhere(field, operator, value).

    Аргументы:

    1. field - название поля для которого задаётся условие, т.е. первый аргумент операции operator.
    2. operator - оператор обозначающий операцию выполняющуюся над field. Список доступных операций смотри ниже.
    3. value - второй аргумент операции.

    Возвращаемое значение: тот же объект FactQuery.

    Список доступных операций:

    1. "=" проверка, что field равно value.
    2. "!=" или "<>" проверка на неравенство, что field не равно value.
    3. ">" проверяет, что field больше value.
    4. "<" проверяет, что field меньше value.
    5. ">=" проверяет, что field больше или равно value.
    6. "<=" проверяет, что field меньше или равно value.
    7. "^@" или "startsWith" ищет совпадение строки value с началом field. Поиск регистрозависимый.
    8. "~" проверяет соответствие field регулярному выражению value. Поиск регистрозависимый.
    9. "!~" проверяет несоотвествие field регулярному выражению value. Поиск регистрозависимый.
    10. "~*" проверяет соответствие field регулярному выражению value. Поиск регистронезависимый.
    11. "!~*" проверяет несоотвествие field регулярному выражению value. Поиск регистронезависимый.
    12. "in" проверяет совпадение field хотя бы с одним значением в коллекции value. 
    13. "not in" проверяет несовпадение field со всеми значениями из коллекции value.
    Блок кода
    languagephp
    // Ищем факты у которых context содержит подстроку test
    $facts = fact.query().
        select("name,value").
        where("context", "~", "^.*test.*$").
        rows()

    andWhere(field string, operator string, value mixed) FactQuery

    Эквивалентен where(field, operator, value).

    orWhere(field string, operator string, value mixed) FactQuery

    Аналогичен where, с той лишь разницей, что несколько вызовов этого метода объединяются по принципу логического "ИЛИ", т.е. должно выполняться хотя бы одно условие.

    where(cond FactQueryCondition) FactQuery

    Назначение: задаёт сложное (вложенное) условие. Несколько вызвов метода объединяются по принципу логического "И". Эквивалентен методу andWhere(cond).

    Аргументы:

    1. cond - объект FactQueryCondition определяющий сложносоставное условие.

    Возвращаемое значение: тот же объект FactQuery.

    Блок кода
    languagephp
    // Ищем факты у которых context содержит подстроку test и при этом name равен "слово" или name начинается на "оп".
    $facts = fact.query().
        select("name,value").
        where("context", "~", "^.*test.*$").
        andWhere(fact.cond().
            where("name", "=", "слово").
            orWhere("name", "^@", "оп")).
        rows()

    andWhere(cond FactQueryCondition) FactQuery

    Эквивалентен where(cond)

    orWhere(cond FactQueryCondition) FactQuery

    Аналогичен where(cond), с той лишь разницей, что несколько вызовов этого метода объединяются по принципу логического "ИЛИ", т.е. должно выполняться хотя бы одно условие.

    sortBy(fields string|Collection) FactQuery

    Назначение: задаёт сортирову фактов по указанным полям.

    Аргументы:

    1. fields - строка содержащая список полей (через запятую) по которым следует отсортировать факты либо коллекция содержащая названия полей. Каждое поле может содержать префикс "+" для сортировки по возрастанию или "-" для сортировки по убыванию. Если префикс не указан, то используется сортировка по возрастанию. 

    Возвращаемое значение: тот же объект FactQuery. 

    Блок кода
    languagephp
    // Получаем все факты для бота с двойной сортировкой: 
    // сначала по контексту по возрастанию (т.е. в алфавитном порядке)
    // и далее по имени факта по убыванию.
    $facts = fact.query().
        select("name,value").
        where("botId", "=", @botId)
        sortBy("+context,-name"). // можно также использовать коллеции. Например, sortBy(["+context", "-name"])
        rows()

    limit(limit int) FactQuery

    Назначение: ставит ограничение на максимальное количество извлекаемых фактов.

    Аргументы:

    1. limit - целое число определяющее лимит на количество извлекаемых фактов.

    Возвращаемое значение: тот же объект FactQuery. 

    Блок кода
    languagephp
    // Получаем первые 10 фактов
    $facts = fact.query().
        select("name,value").
        sortBy("name").
        limit(10).
        rows()

    skip(count int) FactQuery

    Назначение: задаёт количество фактов которые следует пропустить при поиске.

    Аргументы:

    1. count - целое число определяющее количество фактов для пропуска.

    Возвращаемое значение: тот же объект FactQuery. 

    Блок кода
    languagephp
    // Пропускаем 5 первых фактов и извлекаем следующие 10
    $facts = fact.query().
        select("name,value").
        sortBy("name").
        skip(5).
        limit(10).
        rows()

    one() mixed

    Назначение: возвращает первое указанное через select поле первого найденного факта.

    Аргументы: отсутствуют.

    Возвращаемое значение: значение поля.

    Блок кода
    languagephp
    // Извлекает имя первого найденного факта
    $firstFactName = fact.query().
        select("name,value").        // value хоть и указано, но будет проигнорировано
        one()

    column() List

    Назначение: возвращает список состоящий из всех значений первого выбранного поля найденных фактов.

    Аргументы: отсутствуют.

    Возвращаемое значение: списокзначений поля.
    Блок кода
    languagephp
    // Извлекает список имён всех найденных фактов
    $names = fact.query().
        select("name,value").        // value хоть и указано, но будет проигнорировано
        column()

    row() Map

    Назначение: возвращает все выбранные поля в виде ассоциативного массива для первого найденного факта.

    Аргументы: отсутствуют.

    Возвращаемое значение: значения всех полей первого факта.

    Блок кода
    languagephp
    // Извлекает имя и значение первого найденного факта
    $names = fact.query().
        select("name,value").
        row()

    rows() List<Map>

    Назначение: возвращает список всех найденных фактов. Каждый факт возвращается как ассоциативный массив ключами которого являются поля факта, а значениями - значения полей.

    Аргументы: отсутствуют.

    Возвращаемое значение: значения всех полей всех фактов.

    Блок кода
    languagephp
    // Извлекает имя и значение всех фактов
    $names = fact.query().
        select("name,value").
        rows()

    Объект FactQueryCondition

    Используйте методы этого объекта чтобы строить сложные вложенные условия к базе фактам.

    where(field string, operator string, value mixed) FactQueryCondition

    Аналогичен методу where(field string, operator string, value mixed) объекта FactQuery.

    andWhere(field string, operator string, value mixed) FactQueryCondition

    Аналогичен методу andWhere(field string, operator string, value mixed) объекта FactQuery.

    orWhere(field string, operator string, value mixed) FactQueryCondition

    Аналогичен методу orWhere(field string, operator string, value mixed) объекта FactQuery.

    and(field string, operator string, value mixed) FactQueryCondition

    Аналогичен методу andWhere(field string, operator string, value mixed) объекта FactQuery.

    or(field string, operator string, value mixed) FactQueryCondition

    Аналогичен методу orWhere(field string, operator string, value mixed) объекта FactQuery.

    where(cond FactQueryCondition) FactQueryCondition

    Аналогичен методу where(cond FactQueryCondition) объекта FactQuery.

    andWhere(cond FactQueryCondition) FactQueryCondition

    Аналогичен методу andWhere(cond FactQueryCondition) объекта FactQuery.

    orWhere(cond FactQueryCondition) FactQueryCondition

    Аналогичен методу orWhere(cond FactQueryCondition) объекта FactQuery.

    and(cond FactQueryCondition) FactQueryCondition

    Аналогичен методу andWhere(cond FactQueryCondition) объекта FactQuery.

    or(cond FactQueryCondition) FactQueryCondition

    Аналогичен методу orWhere(cond FactQueryCondition) объекта FactQuery.

    Объект UserMessage

    message string

    Назначение: оригинальный текст сообщения.

    Блок кода
    languagephp
    $msg = queue.last().message // $msg содержит текст последнего сообщения пользователя

    attachments List<string>

    Назначение: список идентификаторов файлов приложенных к сообщению.

    Блок кода
    languagephp
    $attachments = queue.first().attachments // $attachments содержит список вложений первого сообщения пользователя.

    isEmpty() bool

    Назначение: определяет пустое ли сообщение.

    Аргументы: отсутствуют.

    Возвращаемое значение: true, если сообщение пустое и false в противном случае.

    Блок кода
    languagephp
    $isEmpty = queue.last().isEmpty() // $isEmpty содержит true, если последнее сообщение пользователя пустое и false в противном случае

    hasAttachments() bool

    Назначение: определяет есть ли вложения в данном сообщении.

    Аргументы: отсутствуют.

    Возвращаемое значение: true, если сообщение имеет вложения и false в противном случае.

    Блок кода
    languagephp
    $hasAttachments = queue.first().hasAttachments() // $hasAttachments содержит true, если первое сообщение пользователя имеет вложения и false в противном случае

    Объект Sentence

    intent string

    Назначение: распознанное намерение.

    Блок кода
    languagephp
    $sentence = nlu.parse("Привет Вася", "d926726a-5acb-4233-8c1e-ce4300921de0")
    $intent = $sentence.intent   // $intent содержит "greeting"

    intentConfidence number

    Назначение: степень достоверности распознанного намерения (1 - однозначное распознавание, 0 - намерение фактически нераспознанно).

    Блок кода
    languagephp
    $sentence = nlu.parse("Привет Вася", "d926726a-5acb-4233-8c1e-ce4300921de0")
    $confidence = $sentence.intentConfidence   // $confidence содержит 0.98

    entities List<Tuple>

    Назначение: список распознанных сущностей. Каждый элемент списка содержит кортеж из трёх элементов: тип сущности (string), значение сущности (строка), достоверность распознавания сущности (number).

    Блок кода
    languagephp
    $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"
    English (US)
    nlp.join(queue.lastNth(2), queue.lastNth(1)) // объединяем предпоследнее и последнее сообщения пользователя и затем парсим его  

    nlp.setPerception($sentence Sentence)

    Назначение: позволяет установить сообщение пользователя для обработки в других узлах (блоках) схемы бота. 

    Аргументы:

    1. sentence – объект Sentence, содержащий информацию о намерениях и сущностях некоторого сообщения.

    Возвращаемое значение: отсутствует.

    Примечание

    Стоит учитывать, что setPerception устанавливает текст только для обработки в следующем блоке. Если обработки не последовало, то значение perception очищается. Если между использованием функции setPerception и обработкой текста будут идти другие блоки, то обработка не произойдет.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $sentence = nlp.join(queue.lastNth(2), queue.lastNth(1)) // объединяем предпоследнее и последнее сообщения пользователя и затем парсим его
    nlp.setPerception($sentence)                             // Теперь остальные узлы схемы будут работать с cообщением $sentence

    Функции для "понимания" естественного языка.

    nlu.parse(text string, agentId string, timezoneOffset int = 0, version int = 1, confidenceThreshold float = -1) Sentence

    Purpose: разбор текста на естественном языке. Выявление намерений и сущностей.

    Arguments:

    1. text текст для разбора.
    2. agentId – идентификатор (uuid) агента (нейросети), производящего разбор текста.
    3. timezoneOffset – смещение временной зоны, необходимое для правильного выявления временных сущностей. По умолчанию используется смещение для UTC.
    4. version – версия NLU. Может быть числом 1 (для сценариев из старого ЛК) или 11 (для сценариев из нового ЛК).
    5. confidenceThreshold - значение от 0 до 0.99 определяющее порог доверия распознанным намерениям.

    Возвращаемое значение: объект Sentence.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПример использования
    linenumberstrue
    $sentence = nlu.parse("Доброе утро Вася!", "d926726a-5acb-4233-8c1e-ce4300921de0")

    Функции для работы с HTTP

    http.sendRequest(url string, method string, body any = nil, headers Map = nil) Response

    Назначение: отправляет HTTP запрос на указанный URL. 

    Аргументы:

    1. url – URL-адрес, на который будет оправлен запрос.
    2. method – HTTP-метод. Допустимые значения: GET, POST, PUT, DELETE, PATCH, HEAD и OPTIONS.
    3. body – тело запроса. Может быть представлено скалярным значением, списком или ассоциативным массивом.
    4. headers – HTTP-заголовки запроса. По умолчанию устанавливается заголовок Content-Type: application/json

    Возвращаемое значение: объект HTTP-ответа.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Выполняем запрос на получение списка юзеров
    $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

    Примечание: для типов содержимого запроса json или xml значение body если оно является списком или ассоциативным массивом автоматически конвертируется в строку соответствующего формата. То же касается и тела ответа: если тип содержимого ответа json или xml, то строка тела ответа будет автоматически преобразована в список или ассоциативный массив. Ниже показаны типовые примеры преобразования:

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Тело Json запроса в виде структур данных BPL
    $requestBody = [
        {
            "param1": "value1",
            "param2": 123,
        },
        {
            "param3": ["a", "b", "c"],
        },
    ]
    // Это тело автоматически будет преобразовано в строку
    // [
    //     {
    //         "param1": "value1",
    //         "param2": 123
    //     },
    //     {
    //         "param3": ["a", "b", "c"]
    //     }
    // ]
    $response = http.sendRequest("http://some.url", "POST", $requestBody, {"Content-Type": "application/json"})
    
    // Если тип содержимого ответа json, то тело ответа будет автоматически преобразовано в структуру BPL (в переменной $body).
    $body = $response.body
    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Тело Xml запроса в виде структур данных BPL
    $requestBody = [
        {
            "tag": "xml",
            "value": [
                {
                    "tag": "head",
                    "value": [
                        {
                            "tag": "title",
                            "value": "chapter 2",
                        },
                    ],
                },
                {
                    "tag": "body",
                    "value": [
                        {
                            "tag": "div",
                            "attributes": {
                                "class": "color",
                                "style": "display:block;",
                            },
                            "value": [
                                "Some",
                                 {
                                     "tag": "br",
                                 },
                                 "text",
                            ],
                        },
                        {
                            "tag": "div",
                            "attributes": {
                                "id": "a12",
                            },
                            "value": [
                                {
                                    "tag": "i",
                                    "value": "Another text",
                                },
                                {
                                    "tag": "span",
                                    "expand": true, // если true, то тэг с пустым значением будет иметь закрывающий тэг
                                },
                            ],
                        },
                    ],
                },
            ],
        },
    ]
    // Это тело автоматически будет преобразовано в строку
    // <xml><head><title>Chapter 2</title></head><body><div class="color" style="display:block;">Some<br />text</div><div id="a12"><i>Another text</i><span></span></div></body></xml>
    $response = http.sendRequest("http://some.url", "POST", $requestBody, {"Content-Type": "text/xml"})
    
    // Если тип содержимого ответа xml, то тело ответа будет автоматически преобразовано в структуру BPL (в переменной $body).
    $body = $response.body

    http.request(url string = "", method string = "POST", body any = nil) Request

    Назначение: формирует новый объект HTTP-запроса.

    Аргументы:

    1. url – строка URL.
    2. method – название HTTP-метода.
    3. body – содержимое тела запроса.

    Возвращаемое значение: объект, содержащий информацию о HTTP-запросе.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПример использования
    linenumberstrue
    $response = http.request("https://some.url", "POST", {"param1": 123, "param2": true}).
                     headers({"Content-Type": "application/json"}).
                     timeout(300).
                     send()

    Объект Request

    timeout(timeout int) Request

    Назначение: задаёт максимально допустимое время запроса в секундах. Если запрос отрабатывается дольше указанного времени, то его выполнение прерывается.

    Аргументы:

    1. timeout – допустимое время запроса в секундах.

    Возвращаемое значение: объект, содержащий информацию о HTTP-запросе.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $response = http.request("https://some.url", "GET").
                     timeout(300).
                     send()

    url(url string) Request

    Назначение: задаёт URL запроса.

    Аргументы:

    1. url – строка URL.

    Возвращаемое значение: объект, содержащий информацию о HTTP-запросе.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПример использования
    linenumberstrue
    $response = http.request().
                     url("http://some.url?p1=v1&p2=v2").
                     method("GET").
                     send()

    method(method string) Request

    Назначение: задаёт HTTP-метод запроса.

    Аргументы:

    1. method – название HTTP-метода.

    Возвращаемое значение: объект, содержащий информацию о HTTP-запросе.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $response = http.request().
                     url("http://some.url?p1=v1&p2=v2").
                     method("GET").
                     send()

    body(body any) Request

    Назначение: задаёт тело запроса.

    Аргументы:

    1. body – тело запроса.

    Возвращаемое значение: объект, содержащий информацию о HTTP запросе.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $response = http.request().
                     url("http://some.url?p1=v1&p2=v2").
                     method("PUT").
                     body("some body").
                     send()

    header(header string, value string) Request

    Назначение: добавляет HTTP заголовок.

    Аргументы:

    1. header – название HTTP-заголовка.
    2. value – значение HTTP-заголовка.

    Возвращаемое значение: объект, содержащий информацию о HTTP запросе.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $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()

    headers(headers Map) Request

    Назначение: задаёт HTTP-заголовки.

    Аргументы:

    1. headers – HTTP-заголовки.

    Возвращаемое значение: объект, содержащий информацию о HTTP-запросе.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $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()

    file(fileId string, name string = "") Request

    Назначение: добавляет файл для отправки по HTTP.

    Аргументы:

    1. fileId – идентификатор ранее загруженного файла.
    2. name – название параметра запроса. Если параметр не задан, то его имя будет совпадать с идентификатором файла.

    Возвращаемое значение: объект, содержащий информацию о HTTP-запросе.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПример использования
    linenumberstrue
    $response = http.request().
                     url("http://some.url").
                     method("POST").
                     header("Content-Type", "multipart/form-data").
                     file($fileId, "file").
                     send()

    send() Response

    Назначение: отправляет сформированный запрос.

    Возвращаемое значение: объект ответа сервера.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПример использования
    linenumberstrue
    $response = http.request("http://some.url?p1=v1&p2=v2", "PUT", "some body").
                     headers({"header1": "...", "header2": "...").
    
    Якорь
    TopTop
    CSS Stylesheet
    .top-button {
    		background-image: url(https://confluence.twin24.ai/download/thumbnails/23986188/baseline_keyboard_arrow_up_white_18dp.png) !important;
    		background-position: center;
    		background-color: #47a7f5 !important;
    		background-repeat: no-repeat;
    		box-shadow: -1px 1.5px 3px #999;
    		color: #47a7f5 !important;
    		border-radius:50px !important;
            position: fixed;
            bottom: 45px;
            left: 93.5%;
            width: 50px;
    		height: 50px !important;
            font-size: 12px !important;
            padding: 14.5px !important;
    		z-index: 2;
    }
    .top-button:hover{
    		background-color: #65b9ff !important;
            color: #65b9ff !important;
    }
    .page-header{
    		background-color: #232838;
    	    background-repeat: no-repeat;
    	    background-position: center;
    		width: auto;
        	height: 100px;
    		background-image: url(https://confluence.twin24.ai/download/attachments/23986188/logo_twin-02.png);
    		background-size: 10em;
            color: #fff;
            font-size: 20px;
            padding: 20px;
    }
    .page-footer{
    		background-color: #232838;
    		background-image: url(https://confluence.twin24.ai/download/thumbnails/23986188/decorated-pattern-dark.png);
    		width: auto;
        	height: 10px;
            color: #fff;
    		text-align: end;
        	font: small-caption;
        	padding-inline-end: 30px;
        	padding-top: 200px;
        	padding-bottom: 30px;
    }
    .page-headline{
    		background-image: url(https://confluence.twin24.ai/download/thumbnails/23986188/Solid256dot8_2changed.png);
        	background-repeat: no-repeat;
        	background-position-x: -227px;
        	background-position-y: center;
        	padding: 20px;
    		background-color: #007bff;
    		width: auto;
        	height: 10px;
            color: #fff;
    		text-align: center;
        	font: caption;
        	font-weight: 600;
    }
    .tabs-menu{
        	padding-left: 85% !important;
    }

    On this page:

    Оглавление
    classbpl

    Предупреждение
    titleВнимание

    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.

    General functions

    del(varName string)

    Purpose: deletion of a local or module variable.

    Arguments:

    1. varName is the name of the variable as a string. The name can start with a variable scope prefix. If the prefix is ​​omitted, then the variable is regarded to be local.

    Returned value: none.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    $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

    Math functions

    math.pos(num mixed) number

    Purpose: converts the argument to a number. The function acts as quivalent to the unary "+" operator.

    Arguments:

    1. num - arbitrary value that will be converted to a number.

    Returned value: number.

    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    $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)

    math.neg(num number) number

    Purpose: changes the sign of a number. The function acts as quivalent to the unary operation "-".

    Arguments:

    1. num - an arbitrary number whose sign changes to the opposite.
    Returned value: the samenumber with the opposite sign.
    Блок кода
    languagepy
    themeDJango
    linenumberstrue
    collapsetrue
    $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)

    math.inv(num number) number

    Purpose: bit number inversion. This function is equivalent to the unary operator "~".

    Arguments:

    1. num - an arbitrary number with invertable bits.

    Returned value: inverted number.

    Блок кода
    languagephp
    $a = math.inv(5) // $a is equal to 3
    $a = ~5          // same as previous line

    math.not(num number) bool

    Purpose: logical negation of a number. This function is equivalent to the unary operation "!".

    Arguments:

    1. num - an arbitrary number.

    Returned value: true if num is not equal to 0; otherwise false.

    Блок кода
    languagephp
    $a = math.not(5) // $a is equal to false
    $a = math.not(0) // $a is equal to true
    $a = !0          // same as previous line

    math.add(num1 number, num2 number, precision int = 12) number

    Purpose: addition of numbers.  This function is equivalent to the binary operation "+".

    Arguments:

    1. num1 - the first part
    2. num2 - the second part.
    3. precision - the accuracy of calculation, the number of digits after the decimal point. The default value is 12. The maximum value is 100.

    Returned value: sum of numbers.

    Блок кода
    languagephp
    $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

    math.sub(num1 number, num2 number, precision int = 12) number

    Purpose: difference of numbers. This function is equivalent to the binary operation "-".

    Arguments:

    1. num1 - minuend.
    2. num2 - subtrahend.
    3. precision - calculation accuracy, the number of digits after the decimal point. The default value is 12, the maximum is 100.

    Returned value: difference of numbers.

    Блок кода
    languagephp
    $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

    math.mul(num1 number, num2 number, precision int = 12) number

    Purpose: multiplication. This function is equivalent to the binary operation "*".

    Arguments:

    1. num1 - first multiplier.
    2. num2 - second multiplier.
    3. precision - calculation accuracy, the number of digits after the decimal point. The default value is 12, the maximum is 100.

    Returned value: multiplication.

    Блок кода
    languagephp
    $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

    math.div(num1 number, num2 number, precision int = 12) number

    Purpose: quotient of numbers. Equivalent to the binary operation "/".

    Arguments:

    1. num1 - dividend.
    2. num2 - divider.
    3. precision - calculation accuracy, the number of digits after the decimal point. The default value is 12, the maximum is 100.

    Returned value: quotient of numbers.

    Блок кода
    languagephp
    $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

    math.idiv(num1 number, num2 number) int

    Purpose: integer division of numbers. This function is equivalent to the binary operation "\".

    Arguments:

    1. num1 - dividend.
    2. num2 - divider.

    Returned value: integer part of private numbers.

    Блок кода
    languagephp
    $a = math.idiv(2.5, 0.3) // $a is equal to 8
    $a = 2.5 \ 0.3           // same as previous line

    math.mod(num1 number, num2 number, precision int = 12) number

    Purpose: remainder after dividing two numbers. This function is equivalent to the binary operation "%".

    Arguments:

    1. num1 - dividend.
    2. num2 - divider.
    3. precision - calculation accuracy, the number of digits after the decimal point. The default value is 12, the maximum is 100.

    Returned value: remainder of the division.

    Блок кода
    languagephp
    $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

    math.pow(base number, power number, precision int = 12) number

    Purpose: raising the number base to the power power. This function is equivalent to the binary operation "**".

    Arguments:

    1. base - base.
    2. power - degree.
    3. precision - calculation accuracy, the number of digits after the decimal point. The default value is 12, the maximum is 100.

    Returned value: result of exponentiation.

    Блок кода
    languagephp
    $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

    math.sqrt(num number, precision int = 12) number

    Purpose: extracting the square root.

    Arguments:

    1. num - the number from which the root is taken.
    2. precision - calculation accuracy, the number of digits after the decimal point. The default value is 12, the maximum is 100.

    Returned value: square root or error if the number is negative.

    Блок кода
    languagephp
    $a = math.sqrt(3.14)   // $a is equal to 1.772004514667
    $a = math.sqrt(1.7, 5) // $a is equal to 0.30384

    math.round(num number, precision int) number

    Purpose: rounding the number to the required decimal place.

    Arguments:

    1. num - number to round.
    2. precision - calculation accuracy, the number of digits after the decimal point. The maximum is 100.

    Returned value: number rounded with a given precision.

    Блок кода
    languagephp
    $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

    Functions for working with strings

    str.len(str string) int

    Purpose: determining the length of the string in characters.

    Arguments:

    1. str - string whose length is to be determined.

    Returned value: integer is equal to the number of characters in the string.

    Блок кода
    languagephp
    $str = "Some string"
    $len = str.len($str) // $len will contain 15

    str.lower(str string) string

    Purpose: convertion of string characters to lower case.

    Arguments:

    1. str - string to be converted.

    Returned value: a string with all characters in lowercase.

    Блок кода
    languagephp
    $str = "StRiNg"
    $lower = str.lower($str) // $lower will contain "string" 

    str.upper(str string) string

    Purpose: преобразование символов строки в верхний регистр.

    Arguments:

    1. str - строка, которую необходимо преобразовать.

    Returned value: строка все символы которой находятся в верхнем регистре.

    Блок кода
    languagephp
    $str = "СтРоКа"
    $upper = str.upper($str) // $lower будет содержать "СТРОКА" 

    str.ucfirst(str string) string

    Purpose: преобразование первого символа строки в верхний регистр.

    Arguments:

    1. str - строка, первый символ которой необходимо преобразовать.

    Returned value: строка в которой первый символ записан в верхнем регистре.

    Блок кода
    languagephp
    $str = str.ucfirst("строка") // $str будет содержать "Строка" 

    str.lcfirst(str string) string

    Purpose: преобразование первого символа строки в нижний регистр.

    Arguments:

    1. str - строка, первый символ которой необходимо преобразовать.

    Returned value: строка в которой первый символ записан в нижнем регистре.

    Блок кода
    languagephp
    $str = str.ucfirst("Строка") // $str будет содержать "строка" 

    str.letter(str string, index int) string

    Purpose: получение указанного символа строки.

    Arguments:

    1. str - строка, символ которой требуется получить.
    2. index - целое число определяющее позицию символа в строке начиная с 0. Если это число отрицательное то отсчёт начинается с конца строки.

    Returned value: строка соответствующая указанному символу, либо пустая строка если символа с такой позицией не существует.

    Блок кода
    languagephp
    $str = "Слово"
    $firstLetter = str.letter($str, 0)  // Первая буква
    $lastLetter = str.letter($str, -1)  // Последняя буква

    str.first(str string, index int = 0) string

    Purpose: получение указанного символа строки начиная с начала строки.

    Arguments:

    1. str - строка, символ которой требуется получить.
    2. index - целое число определяющее позицию символа с начала строки начиная с 0. При этом знак числа игнорируется. Значение по умолчанию 0 (первый символ).

    Returned value: строка соответствующая указанному символу, либо пустая строка если символа с такой позицией не существует.

    Блок кода
    languagephp
    $str = "Слово"
    $firstLetter = str.first($str)      // Первая буква
    $secondLetter = str.first($str, 1)  // Вторая буква

    str.last(str string, index int = 0) string

    Purpose: получение указанного символа строки начиная с конца строки.

    Arguments:

    1. str - строка, символ которой требуется получить.
    2. index - целое число определяющее позицию символа с конца строки начиная с 0. При этом знак числа игнорируется. Значение по умолчанию 0 (последний символ).

    Returned value: строка соответствующая указанному символу, либо пустая строка если символа с такой позицией не существует.

    Блок кода
    languagephp
    $str = "Слово"
    $lastLetter = str.last($str)       // Последняя буква
    $penultLetter = str.last($str, 1)  // Предпоследняя буква

    str.concat(str1 string, str2 string) string

    Purpose: объединяет две строки в одну.

    Arguments:

    1. str1 - строка которая объединяется.
    2. str2 - строка с которой объединяются.

    Returned value: новая строка состоящая из первой строки справа от которой добавлена вторая строка.

    Блок кода
    languagephp
    $str1 = "один"
    $str2 = "два"
    $str = str.concat($str1, $str2) // $str будет содержать "одиндва" 

    str.sub(str string, offset int, length int = nil) string

    Purpose: возвращает подстроку строки str, начинающейся с offset символа по счету и длиной length символов.

    Arguments:

    1. str - исходная строка.
    2. offset - если offset неотрицателен, возвращаемая подстрока начинается с позиции offset от начала строки, считая от нуля.
      Если offset отрицательный, возвращаемая подстрока начинается с позиции, отстоящей на offset символов от конца строки str.
      Если str меньше offset символов, будет возвращена пустая строка.
    3. length - если length положительный, возвращаемая строка будет не длиннее length символов, начиная с параметра offset (в зависимости от длины string).
      Если length отрицательный, то будет отброшено указанное этим аргументом число символов с конца строки string (после того как будет вычислена стартовая позиция, если offset отрицателен). Если при этом позиция начала подстроки, определяемая аргументом offset, находится в отброшенной части строки или за ней, возвращается пустая строка. 
      Если параметр length задан и равен 0, будет возвращена пустая строка.
      Если параметр length опущен или nil, то будет возвращена подстрока, начинающаяся с позиции, указанной параметром offset и длящейся до конца строки.

    Returned value: часть str или пустая строка.

    Блок кода
    languagephp
    $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.join(arr Collection, separator string = "") string

    Purpose: объединяет элементы коллекции (кортежа, списка или ассоциативного массива) в строку.

    Arguments:

    1. arr - коллекция элементов для объединения.
    2. separator - разделитель элементов коллекции. По умолчанию равен пустой строке.

    Returned value:  новая строка составленная из всех элементов коллекции отделённых между собой разделителем.

    Блок кода
    languagephp
    $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 будет содержать ""

    str.split(str string, separator string = "", limit int = 0) List

    Purpose: разбивает строку на части использую separator в качестве разделителя.

    Arguments:

  • str - строка для разделения.
  • separator - разделитель. Если равен пустой строке, то разбиение происходит посимвольно.
  • limit - необязательный параметр равный максимальному количеству частей на которые будет разбита строка. Если limit равен 0, то без ограничений. Если limit является положительным, возвращаемый список будет содержать максимум limit элементов, при этом последний элемент будет содержать остаток строки str. Если limit отрицателен, то будут возвращены все компоненты, кроме последних -limit.

    Returned value:  список подстрок на которые была разбита строка.

    Блок кода
    languagephp
    $letters = str.split("абвгде")             // Получили список букв слова
    $words = str.split("один два три", " ")    // Получили список слов
    $words = str.split("один два три", " ", 1) // words содержит ["один", "два три"]

    str.replace(str string, search string, replace string) string

    Purpose: ищет все вхождения подстроки в строке и заменяет их на заданное значение.

    Arguments:

    1. str - строка для преобразования.
    2. search - подстрока которая ищется в исходной строке. 
    3. replace - строка замены.

    Returned value:  новая строка в которой все search заменены на replace.

    Блок кода
    languagephp
    $str = str.replace("мама мыла раму", "рам", "Даш") // $str содержит "мама мыла Дашу"

    str.match(str string, pattern string) bool

    Purpose: выполняет проверку данной строки регулярному выражению.

    Arguments:

    1. str - строка для сопоставления с регулярным выражением.
    2. pattern - шаблон регулярного выражения. 

    Returned value:  возвращает true, если строка соответствует регулярному выражению и false в противном случае.

    Примечание: в качестве регулярных выражений используется Perl совместимые регулярные выражения (PCRE). Ссылка на документацию и примеры регулярных выражений: PCRE Doc.

    Онлайн редактор регулярных выражений: http://myregexp.com/

    Блок кода
    languagephp
    $isIntNumber = str.match("1.234", "/^[0-9]+$/") // $isIntNumber будет равен false
    $isIntNumber = str.match("1234", "/^[0-9]+$/")  // $isIntNumber будет равен true

    str.distance(str1 string, str2 string) number

    Purpose: вычисляет степень сходства двух строк.

    Arguments:

    1. str1 - первая строка для сравнения.
    2. str2 - вторая строка для сравнения. 

    Returned value:  возвращает число от 0 до 1 включительно определяющее степень сходства двух строк. 1 - строки эквивалентны, 0 - строки абсолютно разные.

    Примечание: функция фактически вычисляет расстояние Дамерау-Левенштейна.

    Блок кода
    languagephp
    $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

    Функции хэширования

    hash.of(text string, algo string = "md5", binary bool = false) string

    Purpose: вычисляет хэш строки согласно указанному алгоритму.

    Arguments:

    1. text - произвольная строка для хэширования.
    2. algo - название алгоритма хэширования. По умолчанию используется алгоритм md5.
    3. binary - когда установлено в true, выводит необработанные двоичные данные. При false выводит данные в шестнадцатеричной кодировке в нижнем регистре. По умолчания равен false.

    Returned value: возвращает строку содержащую вычисленный хеш-код в шестнадцатеричной кодировке в нижнем регистре. Если binary задан как true, то возвращается хеш-код в виде бинарных данных. В случае ошибки (например, если указан недопустимый алгоритм хэширования) возвращает пустую строку.

    Допустимые значения алгоритмов хэширования:

    • md2
    • md4
    • md5
    • sha1
    • sha224
    • sha256
    • sha384
    • sha512/224
    • sha512/256
    • sha512
    • sha3-224
    • sha3-256
    • sha3-384
    • sha3-512
    • ripemd128
    • ripemd160
    • ripemd256
    • ripemd320
    • whirlpool
    • tiger128,3
    • tiger160,3
    • tiger192,3
    • tiger128,4
    • tiger160,4
    • tiger192,4
    • snefru
    • snefru256
    • gost
    • gost-crypto
    • adler32
    • crc32
    • crc32b
    • crc32c
    • fnv132
    • fnv1a32
    • fnv164
    • fnv1a64
    • joaat
    • murmur3a
    • murmur3c
    • murmur3f
    • xxh32
    • xxh64
    • xxh3
    • xxh128
    • haval128,3
    • haval160,3
    • haval192,3
    • haval224,3
    • haval256,3
    • haval128,4
    • haval160,4
    • haval192,4
    • haval224,4
    • haval256,4
    • haval128,5
    • haval160,5
    • haval192,5
    • haval224,5
    • haval256,5

    Примечание: если третий параметр true, то передавать возвращаемое функцией значение в качества сообщения бота или его части нельзя. Это приведёт к падению бота.

    Блок кода
    languagephp
    $hash = hash.of("Наглый коричневый лисёнок прыгает вокруг ленивой собаки.")                 // $hash будет содержать bff8b4bc8b5c1c1d5b3211dfb21d1e76
    $hash = hash.of("Наглый коричневый лисёнок прыгает вокруг ленивой собаки.", "ripemd160")    // $hash будет содержать 8817ca339f7f902ad3fb456150a1bb9b4cb5dde9
    $hash = hash.of("Наглый коричневый лисёнок прыгает вокруг ленивой собаки.", "sha256", true) // $hash будет содержать бинарную строку (содержащую неотображаемые символы)

    Функции кодирования/декодирования

    codec.base64Encode(str string) string

    Purpose: кодирует заданную строку в base64.

    Arguments:

    1. str - произвольная строка для кодирования.

    Returned value: возвращает строку закодированную в base64.

    Блок кода
    languagephp
    $encoded = codec.base64Encode("Привет!") // $encoded будет содержать строку "0J/RgNC40LLQtdGCIQ=="

    codec.base64Decode(str string) ?string

    Purpose: декодирует заданную в base64 строку.

    Arguments:

    1. str - строка закодированная в base64.

    Returned value: возвращает раскодированную строку либо nil, если закодированная строка содержит символы не входящие в алфавит символов base64 кодировки.

    Блок кода
    languagephp
    $decoded = codec.base64Decode("0J/RgNC40LLQtdGCIQ==") // $decoded будет содержать строку "Привет!"
    $failed = codec.base64Decode("Привет!")               // $failed будет равен nil

    Функции для работы с датой и временем

    dt.add(d1 int|string, d2 int|string) string

    Purpose: складывает две даты, заданные в виде строки либо как число секунд.

    • Если хотя бы один из аргументов функции число секунд, то это число будет прибавлено к числу секунд другой даты.
    • Если обе даты заданы строкой, то результат определяется по формуле d1 + abs(secondsOf(d1) - secondsOf(d2)), где abs - модуль числа (положительное значение), secondsOf - это дата представленная как количество секунд прошедших с начала 1970 года (даты до этого времени представлены отрицательным значением). 

    Arguments:

    1. d1 - строка представляющая собой дату в одном из допустимых форматов или целое число соответствующее количеству секунд.
    2. d2 - аналогично первому аргументу.

    Returned value: возвращает новую дату и время в виде строки.

    Блок кода
    languagephp
    $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"

    dt.sub(d1 int|string, d2 int|string) int|string

    Purpose: вычисляет разность двух дат, заданных в виде строк либо количеством секунд.

    • Если обе даты заданы количеством секунд, то функция вернёт их разность в виде числа секунд.
    • Если обе даты заданы строкой, то будет возвращено целое число равное разности между датами в секундах.
    • Если первый аргумент задан строкой даты, а второй числом секунд, то результатом будет новая дата равная разности даты и числа секунд.
    • Если второй аргумент задан строкой даты, а первый числом секунд, то результатом будет ошибка.

    Arguments:

    1. d1 - строка представляющая собой дату в одном из допустимых форматов или целое число соответствующее количеству секунд.
    2. d2 - аналогично первому аргументу.

    Returned value: возвращает новую дату и время в виде строки либо число секунд - разность дат.

    Блок кода
    languagephp
    $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

    dt.format(dt int|string, format string) string

    Purpose: форматирует дату согласно заданному формату.

    Arguments:

    • dt - дата заданная строкой или числом секунд.
    • format - строка определяющая формат даты и времени.

    Returned value: строка даты в заданном формате.

    Допустимые параметры форматирования:

    Символ в строке formatОписаниеПример возвращаемого значенияГодyПолное числовое представление года, не менее 4 цифр1999, 2012, 10208yyДве последние цифры года c дополнением нулями если необходимо99, 05МесяцMПорядковый номер месяца без ведущего нуляот 1 до 12MMПорядковый номер месяца с ведущим нулёмот 01 до 12ДеньdДень месяца без ведущего нуляот 1 до 31ddДень месяца, 2 цифры с ведущим нулёмот 01 до 31ЧасhЧасы в 12-часовом формате без ведущего нуляот 1 до 12hhЧасы в 12-часовом формате с ведущим нулёмот 01 до 12HЧасы в 24-часовом формате без ведущего нуляот 0 до 23HHЧасы в 24-часовом формате с ведущим нулёмот 00 до 23МинутыmМинуты без ведущего нуляот 0 до 59mmМинуты с ведущим нулёмот 00 до 59СекундыsСекунды без ведущего нуляот 0 до 59ssСекунды с ведущим нулёмот 00 до 59

    Примечание: если строка формата содержит символы совпадающие с вышеперечисленными, но не являющиеся параметрами форматирования, то их следует экранировать с помощью символа обратного слэша "\".

    Блок кода
    languagephp
    $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"

    date.nearFuture(day int) string

    Purpose: возвращает ближайшую будущую к текущей дату по заданному дню.

    Arguments:

    1. day - число дней для определения ближайшей в будущем даты.

    Returned value: возвращает ближайшую к day дату.

    Блок кода
    languagephp
    // Допустим сейчас 2022-12-20
    $d = date.nearFuture(25) // $d содержит 2022-12-25
    $d = date.nearFuture(10) // $d содержит 2023-01-10

    date.nearPast(day int) string

    Purpose: возвращает ближайшую прошлую к текущей дату по заданному дню.

    Аргументы:

    1. day - число дней для определения ближайшей в прошлом даты.

    Returned value: возвращает ближайшую к day дату.

    Блок кода
    languagephp
    // Допустим сейчас 2022-12-20
    $d = date.nearPast(25) // $d содержит 2022-11-25
    $d = date.nearPast(10) // $d содержит 2023-12-10

    date.future(day int) string

    Purpose: возвращает дату соответствующую указанному дню в следующем месяце.

    Arguments:

    1. day - число дней для определения даты в будущем.

    Returned value: дата в будущем.

    Блок кода
    languagephp
    // Допустим сейчас 2022-12-20
    $d = date.future(25) // $d содержит 2023-01-25
    $d = date.future(10) // $d содержит 2023-01-10

    date.past(day int) string

    Purpose: возвращает дату соответствующую указанному дню в прошлом месяце.

    Аргументы:

    1. day - число дней для определения даты в прошлом.

    Returned value: дата в прошлом.

    Блок кода
    languagephp
    // Допустим сейчас 2022-12-20
    $d = date.past(25) // $d содержит 2022-11-25
    $d = date.past(10) // $d содержит 2022-11-10

    time.nearFuture(minute int) string

    Purpose: возвращает ближайшее будущее к текущему время по заданному количеству минут.

    Arguments:

    1. minute - число минут для определения ближайшего в будущем времени.

    Returned value: возвращает ближайшее к minute время.

    Блок кода
    languagephp
    // Допустим сейчас 23:30:00
    $t = time.nearFuture(45) // $t содержит 23:45:00
    $t = time.nearFuture(15) // $t содержит 00:15:00

    time.nearPast(minute int) string

    Purpose: возвращает ближайшее прошлое к текущему время по заданному количеству минут.

    Arguments:

    1. minute - число минут для определения ближайшего в прошлом времени.

    Returned value: возвращает ближайшее к minute время.

    Блок кода
    languagephp
    // Допустим сейчас 23:30:00
    $t = time.nearPast(45) // $t содержит 22:45:00
    $t = time.nearPast(15) // $t содержит 23:15:00

    time.future(minute int) string

    Purpose: возвращает время соответствующее указанному числу минут в следующем часе.

    Arguments:

    1. minute - число минут для определения времени в будущем.

    Returned value: время в будущем.

    Блок кода
    languagephp
    // Допустим сейчас 23:30:00
    $t = time.future(45) // $t содержит 00:45:00
    $t = time.future(15) // $t содержит 00:15:00

    time.past(minute int) string

    Purpose: возвращает время соответствующее указанному числу минут в прошедшем часе.

    Arguments:

    1. minute - число минут для определения времени в прошлом.

    Returned value: время в прошлом.

    Блок кода
    languagephp
    // Допустим сейчас 23:30:00
    $t = time.past(45) // $t содержит 22:45:00
    $t = time.past(15) // $t содержит 22:15:00

    Функции по работе с очередью сообщений пользователя

    queue.size() int

    Purpose: определение размера очереди сообщений пользователя.

    Arguments: отсутствуют.

    Returned value: число сообщений пользователя.

    Блок кода
    languagephp
    $messageCount = queue.size() // $messageCount содержит число сообщений пользователя за всё время диалога

    queue.last() ?UserMessage

    Purpose: возвращает последнее сообщение пользователя либо nil, если очередь сообщений пуста.

    Arguments: отсутствуют.

    Returned value: объект UserMessage или nil.

    Блок кода
    languagephp
    $lastMessage = queue.last() // $lastMessage содержит последнее на данный момент сообщение пользователя

    queue.first() ?UserMessage

    Purpose: возвращает первое сообщение пользователя либо nil, если очередь сообщений пуста.

    Arguments: отсутствуют.

    Returned value: объект UserMessage или nil.

    Блок кода
    languagephp
    $firstMessage = queue.first() // $firstMessage содержит первое сообщение пользователя за всё время диалога

    queue.nth(index int) ?UserMessage

    Purpose: возвращает сообщение пользователя по его порядковому номеру, начиная с 1.

    Arguments:

    1. index - порядковый номер сообщения пользователя.

    Returned value: объект UserMessage или nil.

    Блок кода
    languagephp
    $message = queue.nth(1) // $message содержит первое сообщение пользователя
    $message = queue.nth(5) // $message содержит пятое сообщение пользователя

    queue.lastNth(index int) ?UserMessage

    Purpose: возвращает сообщение пользователя по его порядковому номеру считая с конца очереди. Последнее сообщение соответствует порядковому номеру 1.

    Arguments:

    1. index - порядковый номер сообщения пользователя считая с конца очереди.

    Returned value: объект UserMessage или nil.

    Блок кода
    languagephp
    $message = queue.lastNth(1) // $message содержит последнее сообщение пользователя
    $message = queue.lastNth(5) // $message содержит пятое с конца очереди сообщение пользователя

    Функции для работы с фактами

    fact.save(context string, factName string, factValue mixed, botId string = nil, clientId string = nil)

    Purpose: сохраняет факт в базе фактов.

    Arguments:

    1. context - строка определяющая контекс в рамках которого существует факт.
    2. factName - строка определяющая название факта.
    3. factValue - любое значение определяющее содержимое факта.
    4. botId - идентификатор бота. По умолчанию не задан.
    5. clientId - идентификатор клиента, По умолчанию не задан.

    Returned value: отсутствует.

    Блок кода
    languagephp
    fact.save("место", "город", "Екатеринбург")                    // Факт доступный всем ботам компании       
    fact.save("место", "город", "Екатеринбург", nil, @clientId)    // Факт с привязкой к клиенту
    fact.save("место", "город", "Екатеринбург", @botId)            // Факт с привязкой к боту
    fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Факт с привязкой к боту и клиенту

    fact.load(context string, factName string, botId string = nil, clientId string = nil) mixed

    Purpose:  извлекает факт из базы фактов.

    Arguments:

    1. context - строка определяющая контекс в рамках которого существует факт.
    2. factName - строка определяющая название факта.
    3. botId - идентификатор бота. По умолчанию не задан.
    4. clientId - идентификатор клиента, По умолчанию не задан.

    Returned value: содержимое факта.

    Блок кода
    languagephp
    fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Сохраняет факт с привязкой к боту и клиенту
    $city = fact.load("место", "город", @botId, @clientId)         // Загружаем факт в переменную. $city содержит "Екатеринбург"

    fact.delete(context string, factName string, botId string = nil, clientId string = nil)

    Purpose:  удаляет факт из базы фактов.

    Arguments:

    1. context - строка определяющая контекс в рамках которого существует факт.
    2. factName - строка определяющая название факта.
    3. botId - идентификатор бота. По умолчанию не задан.
    4. clientId - идентификатор клиента, По умолчанию не задан.

    Returned value: отсутствует.

    Блок кода
    languagephp
    fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Сохраняет факт с привязкой к боту и клиенту
    $city = fact.load("место", "город", @botId, @clientId)         // Загружаем факт в переменную. $city содержит "Екатеринбург"
    fact.delete("место", "город", @botId, @clientId)               // Удаляем факт.
    $city = fact.load("место", "город", @botId, @clientId)         // Пытаемся загрузить удалённый факт. Теперь $city содержит nil.

    fact.query() FactQuery

    Purpose: возвращает экземпляр FactQuery для построения и выполнения запросов к базе фактов.

    Arguments: отсутствуют.

    Returned value: объект FactQuery.

    Блок кода
    languagephp
    // Добавили пару фактов в базу
    fact.save("место", "страна", "Россия")
    fact.save("место", "город", "Екатеринбург")
    
    // Загрузили в $places список мест отсортированных по имени факта в порядке убывания:
    // [{"name": "город", "value": "Россия"}, {"name": "страна", "value": "Екатеринбург"}]
    $places = fact.query().
        select("name,value").
        where("context", "=", "место").
        sortBy("-name").
        rows()

    fact.cond() FactQueryCondition

    Purpose: возвращает экземпляр FactQueryCondition для построения составных условий в запросах к базе фактов.

    Arguments: отсутствуют.

    Returned value: объект FactQueryCondition.

    Блок кода
    languagephp
    // Добавили факты в базу
    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()

    Функции для работы с таймером

    timer.start(time int, nodeId string) string

    Purpose: запускает таймер обратного отсчёта. По истечении указанного времени бот осуществит переход на указанный узел (блок).

    Arguments:

    1. time - время в секундах.
    2. nodeId - идентификатор блока для перехода после завершения отсчёта.

    Returned value: идентификатор таймера.

    Блок кода
    languagephp
    $timerId = timer.start(60, "760b9732-4bfb-4846-a348-faae5138fcb2") // $timerId содержит уникальный идентификатор таймера на 60 секунд

    timer.stop(timerId string)

    Purpose: останавливает (удаляет) таймер обратного отсчёта.

    Arguments:

    1. timerId - идентификатор таймера.

    Returned value: отсутствует.

    Блок кода
    languagephp
    $timerId = timer.start(60, "760b9732-4bfb-4846-a348-faae5138fcb2")
    timer.stop($timerId) // останавливаем (удаляем) таймер

    Функции для работы с текстом на естественном языке (NLP)

    nlp.parse(message string|UserMessage) Sentence

    Purpose: парсит текст на естественном языке. 

    Arguments:

    1. message - текст на естественном языке или объект UserMessage.

    Returned value: объект Sentence содержащий информацию о всех намерениях и сущностях исходного сообщения.

    Примечание: данная функция извлекает из текста только сущности. Для работы с намерениями используйте функцию nlu.parse

    Блок кода
    languagephp
    $sentence = nlp.parse(queue.first()) // парсим первое сообщение пользователя

    nlp.join(message1 string|UserMessage, message2 string|UserMessage) Sentence

    Purpose: объединяет два текста на естественном языке в одно и затем парсит его.

    Arguments:

    1. message1 - текст на естественном языке или объект UserMessage.
    2. message2 - текст на естественном языке или объект UserMessage.

    Returned value: объект Sentence содержащий информацию о всех намерениях и сущностях объединённого сообщения.

    Блок кода
    languagephp
    $sentence = nlp.join(queue.lastNth(2), queue.lastNth(1)) // объединяем предпоследнее и последнее сообщения пользователя и затем парсим его  

    nlp.setPerception($sentence Sentence)

    Purpose: позволяет установить сообщение пользователя для обработки в других узлах (блоках) схемы бота. 

    Arguments:

    1. sentence - объект Sentence содержащий информацию о намерениях и сущностях некоторого сообщения.

    Returned value: отсутствует.

    Блок кода
    languagephp
    $sentence = nlp.join(queue.lastNth(2), queue.lastNth(1)) // объединяем предпоследнее и последнее сообщения пользователя и затем парсим его
    nlp.setPerception($sentence)                             // Теперь остальные узлы схемы будут работать с cообщением $sentence

    Функции для "понимания" естественного языка.

    nlu.parse(text string, agentId string, timezoneOffset int = 0, version int = 1) Sentence

    Purpose: разбор текста на естественном языке. Выявление намерений и сущностей.

    Arguments:

    text -текст для разбора.
  • agentId - идентификатор (uuid) агента (нейросети) производящего разбор текста.
  • timezoneOffset - смещение временной зоны, необходимое для правильного выявления временных сущностей. По умолчанию используется смещение для UTC.
  • version - версия NLU. Может быть числом 1 или 2.
  • Returned value: объект Sentence.

    Блок кода
    languagephp
    $sentence = nlu.parse("Доброе утро Вася!", "d926726a-5acb-4233-8c1e-ce4300921de0")

    Функции для работы с HTTP

    http.sendRequest(url string, method string, body any = nil, headers Map = nil) Response

    Purpose: отправляет HTTP запрос на указанный URL. 

    Arguments:

    1. url - URL адрес на который будет оправлен запрос.
    2. method - HTTP метод. Допустимые значения: GET, POST, PUT, DELETE, PATCH, HEAD и OPTIONS.
    3. body - тело запроса. Может быть представлено скалярным значением, списком или ассоциативным массивом.
    4. headers - HTTP заголовки запроса. По умолчанию устанавливается заголовок Content-Type: application/json. 

    Returned value: объект HTTP ответа.

    Блок кода
    languagephp
    // Выполняем запрос на получение списка юзеров
    $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.request(url string = "", method string = "POST", body any = nil) Request

    Purpose: формирует новый объект HTTP запроса.

    Arguments:

    1. url - строка URL.
    2. method - название HTTP метода.
    3. body - содержимое тела запроса.

    Returned value: объект содержащий информацию о HTTP запросе.

    Блок кода
    languagephp
    $response = http.request("https://some.url", "POST", {"param1": 123, "param2": true}).
                     headers({"Content-Type": "application/json"}).
                     timeout(300).
                     send()

    Объект Request

    timeout(timeout int) Request

    Purpose: задаёт максимально допустимое время запроса в секундах. Если запрос отрабатывает дольше указанного времени, то его выполнение прерывается.

    Arguments:

    1. timeout - допустимое время запроса в секундах.

    Returned value: объект содержащий информацию о HTTP запросе.

    Блок кода
    languagephp
    $response = http.request("https://some.url", "GET").
                     timeout(300).
                     send()

    url(url string) Request

    Purpose: задаёт URL запроса.

    Arguments:

    1. url - строка URL.

    Returned value: объект содержащий информацию о HTTP запросе.

    Блок кода
    languagephp
    $response = http.request().
                     url("http://some.url?p1=v1&p2=v2").
                     method("GET").
                     send()

    method(method string) Request

    Purpose: задаёт HTTP метод запроса.

    Arguments:

    1. method - название HTTP метода.

    Returned value: объект содержащий информацию о HTTP запросе.

    Блок кода
    languagephp
    $response = http.request().
                     url("http://some.url?p1=v1&p2=v2").
                     method("GET").
                     send()

    body(body any) Request

    Purpose: задаёт тело запроса.

    Arguments:

    1. body - тело запроса.

    Returned value: объект содержащий информацию о HTTP запросе.

    Блок кода
    languagephp
    $response = http.request().
                     url("http://some.url?p1=v1&p2=v2")
                     method("PUT").
                     body("some body").
                     send()

    header(header string, value string) Request

    Purpose: добавляет HTTP заголовок.

    Arguments:

    1. header - название HTTP заголовка.
    2. value - значение HTTP заголовка.

    Returned value: объект содержащий информацию о HTTP запросе.

    Блок кода
    languagephp
    $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()

    headers(headers Map) Request

    Purpose: задаёт HTTP заголовки.

    Arguments:

    1. headers - HTTP заголовки.

    Returned value: объект содержащий информацию о HTTP запросе.

    Блок кода
    languagephp
    $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()

    file(fileId string, name string = "") Request

    Purpose: добавляет файл для отправки по HTTP.

    Arguments:

    1. fileId - идентификатор ранее загруженного файла.
    2. name - название параметра запроса. Если параметр не задан, то его имя будет совпадать с идентификатором файла.

    Returned value: объект содержащий информацию о HTTP запросе.

    Блок кода
    languagephp
    $response = http.request().
                     url("http://some.url").
                     method("POST").
                     header("Content-Type", "multipart/form-data").
                     file($fileId, "file").
                     send()

    send() Response

    Purpose: отправляет сформированный запрос.

    Returned value: объект ответа сервера.

    Блок кода
    languagephp
    $response = http.request("http://some.url?p1=v1&p2=v2", "PUT", "some body").
                     headers({"header1": "...", "header2": "...").
                     send()

    Объект Response

    statusCode int

    Purpose: код статуса ответа.

    Блок кода
    languagephp
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $code = $response.statusCode

    body any

    Purpose: тело ответа.

    Блок кода
    languagephp
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $body = $response.body

    headers Map

    Purpose: заголовки ответа.

    Блок кода
    languagephp
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $headers = $response.headers

    error string

    Purpose: значение элемента error тела ответа или пустая строка, если такого элемента нет.

    Блок кода
    languagephp
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $error = $response.error

    isError() bool

    Purpose: определение успешности ответа.

    Returned value: возвращает true, если свойство error не пустое или код статуса больше или равен 400, иначе возвращает false.

    Блок кода
    languagephp
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $isError = $response.isError()

    isSuccessful() bool

    Purpose: определение успешности ответа.

    Returned value: возвращает true, если свойство error пустое и код статуса меньше 400, иначе возвращает false.

    Блок кода
    languagephp
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $isSuccessful = $response.isSuccessful()

    hasHeader(header string) bool

    Purpose: определение наличия заголовка.

    Arguments:

    1. header - название заголовка.

    Returned value: true, если заголовок с указанным именем существует и false в противном случае.

    Блок кода
    languagephp
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $hasContentType = $response.hasHeader("Content-Type")

    header(header string) string

    Purpose: получение значения заголовка.

    Arguments:

    1. header - название заголовка.

    Returned value: значение заголовка с указанным именем или пустую строку, если такого заголовка нет.

    Блок кода
    languagephp
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $contentType = $response.header("Content-Type")

    toFile() string

    Purpose: получение файла из HTTP ответа.

    Returned value: идентификатор загруженного файла.

    Блок кода
    languagephp
    $response = http.sendRequest("http://some.url", "GET")
    $fileId = $response.toFile()

    Системные функции

    sys.sleep(microseconds int)

    Purpose: останавливает работу бота на указанное количество микросекунд. Если количество микросекунд превышает 1 минуту, то пауза будет уменьшена до 1 минуты.

    Arguments:

    1. microseconds - число микросекунд паузы.

    Returned value: отсутствует.

    Блок кода
    languagephp
    sys.sleep(3_000_000) // Пауза в 3 секунды

    Функции для работы с GPT-3

    gpt3.ask(text string) string

    Purpose: отправляет сообщение в нейросеть ChatGPT3 и возвращает её ответ.

    Arguments:

    1. text - запрос к нейросети на русском языке.

    Returned value: ответ нейросети в виде строки.

    Блок кода
    languagephp
    $answer = gpt3.ask("Есть ли жизнь на Марсе?") // В $answer будет ответ нейросети на заданный вопрос

    Объект FactQuery

    Используя методы этого объекты
     send()

    Объект Response

    statusCode int

    Назначение: код статуса ответа.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $code = $response.statusCode

    body any

    Назначение: тело ответа.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $body = $response.body

    headers Map

    Назначение: заголовки ответа.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $headers = $response.headers

    error string

    Назначение: значение элемента error тела ответа или пустая строка, если такого элемента нет.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $error = $response.error

    isError() bool

    Назначение: определение успешности ответа.

    Возвращаемое значение: возвращает true, если свойство error не пустое или код статуса больше или равен 400, иначе возвращает false.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $isError = $response.isError()

    isSuccessful() bool

    Назначение: определение успешности ответа.

    Возвращаемое значение: возвращает true, если свойство error пустое и код статуса меньше 400, иначе возвращает false.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $isSuccessful = $response.isSuccessful()

    hasHeader(header string) bool

    Назначение: определение наличия заголовка.

    Аргументы:

    1. header – название заголовка.

    Возвращаемое значение: true, если заголовок с указанным именем существует, и false в противном случае.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $hasContentType = $response.hasHeader("Content-Type")

    header(header string) string

    Назначение: получение значения заголовка.

    Аргументы:

    1. header – название заголовка.

    Возвращаемое значение: значение заголовка с указанным именем или пустую строку, если такого заголовка нет.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $response = http.sendRequest("http://some.url?p1=v1&p2=v2", "PUT", "some body")
    $contentType = $response.header("Content-Type")

    toFile() string

    Назначение: получение файла из HTTP-ответа.

    Возвращаемое значение: идентификатор загруженного файла.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $response = http.sendRequest("http://some.url", "GET")
    $fileId = $response.toFile()

    Системные функции

    sys.sleep(microseconds int)

    Назначение: останавливает работу бота на указанное количество микросекунд. Если количество микросекунд превышает 1 минуту, то пауза будет уменьшена до 1 минуты.

    Аргументы:

    1. microseconds – число микросекунд паузы.

    Возвращаемое значение: отсутствует.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    sys.sleep(3_000_000) // Пауза в 3 секунды

    Функции для работы с GPT-3.5 turbo (устаревшее)

    gpt3.ask(text string, temperature float = 0.7, useContext bool = false, maxTokens int = 0, timeout int = 0) string

    HTML
    <b>Назначение:</b> отправляет сообщение в нейросеть <a href="https://openai.com/blog/chatgpt" target="_blank">ChatGPT3</a> и возвращает её ответ.

    Аргументы:

    1. text – запрос к нейросети на русском языке.
    2. temperature - число от 0 до 1 обозначающее степень достоверности и вариативности ответов нейросети (0 - максимальная достоверность и минимальная вариативность, 1 - минимальная достоверность и максимальная вариативность).
    3. useContext - определяет следует ли использовать предыдущий контекст разговора или нет.
    4. maxTokens - если больше нуля, то определяет максимальное число токенов в ответе нейросети. Если меньше или равно нулю, то не используется.
    5. timeout - если больше нуля, то ограничивает время выполнения запроса (в секундах). Если меньше или равно, то не используется. 

    Возвращаемое значение: ответ нейросети в виде строки.

    Примечание: в случае использования контекста текущее сообщение отправленное chat gpt будет добавлено в переменную список $gpt3Context. Все предыдущие сообщения из этого списка будут переданы в качестве контекста запроса.
    Если параметр useContext равен false, то текущее сообщение не добавляется в список. Сам список сообщений (значение переменной $gpt3Context) доступен для редактирования.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $answer = gpt3.ask("Есть ли жизнь на Марсе?", 0.5, true, 500, 10) // В $answer будет ответ нейросети на заданный вопрос

    Функции для работы с GPT-4(устаревшее)

    gpt4.ask(text string, temperature float = 0.7, useContext bool = false, maxTokens int = 0, timeout int = 0) string

    HTML
    <b>Назначение:</b> отправляет сообщение в нейросеть <a href="https://openai.com/blog/chatgpt" target="_blank">ChatGPT4</a> и возвращает её ответ.

    Аргументы:

    1. text – запрос к нейросети на русском языке.
    2. temperature - число от 0 до 1 обозначающее степень достоверности и вариативности ответов нейросети (0 - максимальная достоверность и минимальная вариативность, 1 - минимальная достоверность и максимальная вариативность).
    3. useContext - определяет следует ли использовать предыдущий контекст разговора или нет.
    4. maxTokens - если больше нуля, то определяет максимальное число токенов в ответе нейросети. Если меньше или равно нулю, то не используется.
    5. timeout - если больше нуля, то ограничивает время выполнения запроса (в секундах). Если меньше или равно, то не используется. 

    Возвращаемое значение: ответ нейросети в виде строки.

    Примечание: в случае использования контекста текущее сообщение отправленное chat gpt будет добавлено в переменную список $gpt4Context. Все предыдущие сообщения из этого списка будут переданы в качестве контекста запроса.
    Если параметр useContext равен false, то текущее сообщение не добавляется в список. Сам список сообщений (значение переменной $gpt4Context) доступен для редактирования.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $answer = gpt4.ask("Есть ли жизнь на Марсе?", 0.5, true, 500, 10) // В $answer будет ответ нейросети на заданный вопрос

    Функции для работы с GPT

    gpt.ask(model string, text string, temperature float = 0.7, useContext bool = false, maxTokens int = 0, timeout int = 0) string

    HTML
    <b>Назначение:</b> отправляет сообщение в нейросеть <a href="https://openai.com/blog/chatgpt" target="_blank">ChatGPT</a> и возвращает её ответ.

    Аргументы:

    1. model - название конкретной модели нейросети. 
    2. text – запрос к нейросети на русском языке.
    3. temperature - число от 0 до 1 обозначающее степень достоверности и вариативности ответов нейросети (0 - максимальная достоверность и минимальная вариативность, 1 - минимальная достоверность и максимальная вариативность).
    4. useContext - определяет следует ли использовать предыдущий контекст разговора или нет.
    5. maxTokens - если больше нуля, то определяет максимальное число токенов в ответе нейросети. Если меньше или равно нулю, то не используется.
    6. timeout - если больше нуля, то ограничивает время выполнения запроса (в секундах). Если меньше или равно, то не используется. 

    Возвращаемое значение: ответ нейросети в виде строки.

    Примечание: в случае использования контекста текущее сообщение отправленное chat gpt будет добавлено в переменную список $"context.{MODEL}". Все предыдущие сообщения из этого списка будут переданы в качестве контекста запроса.
    Если параметр useContext равен false, то текущее сообщение не добавляется в список. Сам список сообщений (значение переменной $"context.{MODEL}") доступен для редактирования.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $answer = gpt.ask("gpt-4o-mini", "Есть ли жизнь на Марсе?", 0.5, true, 500, 10) // В $answer будет ответ нейросети на заданный вопрос

    gpt.createThread() string

    HTML
    <b>Назначение:</b> создаёт разговорную сессию с GPT ассистентом.

    Аргументы: отсутствуют.

    Возвращаемое значение: идентификатор чат сессии с ассистентом.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $threadId = gpt.createThread()

    gpt.deleteThread(threadId string)

    HTML
    <b>Назначение:</b> удаляет разговорную сессию с GPT ассистентом.

    Аргументы:

    1. threadId - идентификатор чат сессии.

    Возвращаемое значение: отсутствует.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    gpt.deleteThread($threadId)

    gpt.assist(assistantId string, threadId string, messages string|Collection, model string = '', instructions string = '', additionalInstructions string = '', temperature float = 0.7, maxTokens int = 0, timeout int = 0) string

    HTML
    <b>Назначение:</b> отправляет сообщение в ассистента чат GPT и возвращает его ответ.

    Аргументы:

    1. assistantId - идентификатор ассистента.
    2. threadId - идентификатор чат сессии с ассистентом подученный с помощью функции gpt.createThread()
    3. messages – запрос к нейросети, может быть как строкой, так и списком из нескольких сообщений.
    4. model - название модели, которая будет применяться взамен той модели которая была указана при создании ассистента.
    5. instructions - указание для ассистента взамен той инструкции что была указана при его создании.
    6. additionalInstructions - дополнительная инструкция которая будет добавлена в конец инструкции ассистента.
    7. temperature - число от 0 до 1 обозначающее степень достоверности и вариативности ответов нейросети (0 - максимальная достоверность и минимальная вариативность, 1 - минимальная достоверность и максимальная вариативность).
    8. maxTokens - если больше нуля, то определяет максимальное число токенов в ответе нейросети. Если меньше или равно нулю, то не используется.
    9. timeout - если больше нуля, то ограничивает время выполнения запроса (в секундах). Если меньше или равно, то не используется. 

    Возвращаемое значение: ответ нейросети в виде строки.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $answer = gpt.assist($assistId, $threadId, "Есть ли жизнь на Марсе?", "gpt-4o-mini", "", "", 0.5, 500, 10) // В $answer будет ответ нейросети на заданный вопрос

    Функции для работы с YandexGPT

    ygpt.ask(model string, text string, temperature float = 0.7, maxTokens int = 0, timeout int = 0) string

    HTML
    <b>Назначение:</b> отправляет сообщение в нейросеть <a href="https://ya.ru/ai/gpt-3" target="_blank">YandexGPT</a> и возвращает её ответ.

    Аргументы:

    1. model - название модели.
    2. text – запрос к нейросети на русском языке.
    3. temperature - число от 0 до 1 обозначающее степень достоверности и вариативности ответов нейросети (0 - максимальная достоверность и минимальная вариативность, 1 - минимальная достоверность и максимальная вариативность).
    4. maxTokens - если больше нуля, то определяет максимальное число токенов в ответе нейросети. Если меньше или равно нулю, то не используется.
    5. timeout - если больше нуля, то ограничивает время выполнения запроса (в секундах). Если меньше или равно, то не используется. 

    Возвращаемое значение: ответ нейросети в виде строки.

    Доступные модели: возможны следующие значения для параметра model:

    • yandexgpt - для YandexGPT Pro
    • yandexgpt-lite - для YandexGPT Lite
    • summarization - для формирования краткого пересказа текста
    • ds://<идентификатор_дообученной_модели> - для моделей дообученных в Yandex DataSphere

    Примечание: для каждой модели можно указать через / "версию" модели (/latest /rc /deprecated). Соответствие "версии" и "модели" можно найти в официальной документации yandex

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $answer = ygpt.ask("yandexgpt/latest", "Есть ли жизнь на Марсе?", 0.5, 500, 15) // В $answer будет ответ нейросети на заданный вопрос

    Функции для работы с RekaAI

    reka.ask(model string, text string, temperature float = 0.7, maxTokens int = 0, timeout int = 0) string

    HTML
    <b>Назначение:</b> отправляет сообщение в нейросеть <a href="https://www.reka.ai/" target="_blank">Reka</a> и возвращает её ответ.

    Аргументы:

    1. model - название модели.
    2. text – запрос к нейросети на русском языке.
    3. temperature - число от 0 до 1 обозначающее степень достоверности и вариативности ответов нейросети (0 - максимальная достоверность и минимальная вариативность, 1 - минимальная достоверность и максимальная вариативность).
    4. maxTokens - если больше нуля, то определяет максимальное число токенов в ответе нейросети. Если меньше или равно нулю, то не используется.
    5. timeout - если больше нуля, то ограничивает время выполнения запроса (в секундах). Если меньше или равно, то не используется. 

    Возвращаемое значение: ответ нейросети в виде строки.

    Примечание: возможны следующие значения для параметра model (полный список тут):

    • reka-core - для Reka Core.
    • r - для Reka Flash.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $answer = reka.ask("reka-core", "Есть ли жизнь на Марсе?", 0.5, 500, 15) // В $answer будет ответ нейросети на заданный вопрос

    Функции для работы с GigaChat

    gigachat.ask(model string, text string, temperature float = 0.7, maxTokens int = 0, timeout int = 0) string

    HTML
    <b>Назначение:</b> отправляет сообщение в нейросеть <a href="https://developers.sber.ru/portal/products/gigachat-api" target="_blank">GigaChat</a> и возвращает её ответ.

    Аргументы:

    1. model - название модели.
    2. text – запрос к нейросети на русском языке.
    3. temperature - число от 0 до 1 обозначающее степень достоверности и вариативности ответов нейросети (0 - максимальная достоверность и минимальная вариативность, 1 - минимальная достоверность и максимальная вариативность).
    4. maxTokens - если больше нуля, то определяет максимальное число токенов в ответе нейросети. Если меньше или равно нулю, то не используется.
    5. timeout - если больше нуля, то ограничивает время выполнения запроса (в секундах). Если меньше или равно, то не используется. 

    Возвращаемое значение: ответ нейросети в виде строки.

    Примечание: возможны следующие значения для параметра model:

    • GigaChat - для использования GigaChat Lite.
    • GigaChat-Pro - для использования GigaChat Pro.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $answer = gigachat.ask("GigaChat", "Есть ли жизнь на Марсе?", 0.5, 500, 15) // В $answer будет ответ нейросети на заданный вопрос

    Функции для работы с атрибутами клиента

    clients.setAttributes (clientId string, attributes array)

    Назначение: установка атрибутов клиента

    Аргументы:

    1. clientId – идентификатор (uuid) клиента
    2. attributes  – атрибуты клиента в формате {"attribute_uuid": "attribute_value", ...}
      Идентификаторы допустимых для компании атрибутов берутся в API сервиса чатов в GET /clients/attributes

    Возвращаемое значение: void

    Блок кода
    languagephp
    themeDJango
    titleПример использования
    linenumberstrue
    clients.setAttributes(@clientId, {"74eb7a40-36d5-4db9-b4a1-abe435fd5f0d": "Firstame", "b87e9a3e-21ad-4b42-aab1-fdc52a13c769": "Lastname", "d5443075-e79d-4d1c-bdca-1c0a1965a078": "example@email.com"});


    Функции для работы с YCLIENTS


    Для работы с функциями yclients у вас должно быть установлено наше приложение: https://yclients.com/e/mp_364_twin/

    yclients.createRecord(salonId int, params Map) ?int

    Назначение: записывает клиента на услугу.

    Аргументы:

    1. salonId  int – идентификатор филиала.
    2. params Map – параметры записи.
      • staffId int идентификатор сотрудника (обязательный параметр).

      • services List список услуг (обязательный параметр).

        где каждый элемент это ассоциативный массив:

            id int идентификатор услуги

      • client Map информация о клиенте (обязательный параметр).

                phone string номер телефона клиента (обязательный параметр).

                name string имя клиента (обязательный параметр, если это новый клиент).

                email string email клиента

      • datetime string - дата и время (обязательный параметр).

      • seanceLength int - длительность сеанса, сек (обязательный параметр).

      • saveIfBusy bool - сохранять ли запись если время занято или нерабочее (по умолчанию false)

      • sendSms bool - отправлять ли смс с деталями записи клиенту (по умолчанию false)

      • comment string - комментарий к записи

      • smsRemainHours int - за сколько часов до визита следует выслать смс напоминание клиенту (0 - если не нужно, по умолчанию 1)

      • emailRemainHours int - за сколько часов до визита следует выслать email напоминание клиенту (0 - если не нужно, по умолчанию 12)

      • attendance int - статус записи (2 - Пользователь подтвердил запись, 1 - Пользователь пришел, услуги оказаны, 0 - ожидание пользователя, -1 - пользователь не пришел на визит, по умолчанию 0)

      • customFields Map - ассоциативный массив дополнительных полей, заполняется согласно настроенным полям в филиале

      • recordLabels List - список идентификаторов категорий записи

      • customColor string|nil - цвет записи (по умолчанию null)

      • apiId string|nil - идентификатор внешней системы (по умолчанию null)

    Возвращаемое значение: int, если удалось создать запись и nil в случае ошибки.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $recordId = yclients.createRecord(25344, {"staffId": 2303331, "services": [{"id": 11428840}], "client": {"phone": "79876543210", "name": "Семён", "email": "semen@gmail.com"}, "datetime": "2023-06-07 15:00", "seanceLength": 3600,"saveIfBusy": false, "sendSms": false, "comment": "Комментарий к записи", "smsRemainHours": 1, "emailRemainHours": 12, "attendance": 2, "customFields": {"priority":"high"}, "recordLabels": ["67345", "78549"], "customColor": nil, "apiId": "7894"});

    yclients.recordDetails(salonId int, recordId int) ?Map

    Назначение: получает данные о записи.

    Аргументы:

    1. salonId  int – идентификатор филиала.
    2. recordId int – идентификатор записи.

    Возвращаемое значение: ассоциативный массив если запись существует и nil в случае ошибки.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $record = yclients.recordDetails(25344, 52157914);
    // $record будет содержать:
    // {
    //    "id": 52157914,
    //    "client": {
    //        "id": 167359987,
    //        "name": "Семён",
    //        "surname": "",
    //        "phone": "+79876543210",
    //        "card": "",
    //        "email": "semen@gmail.com"
    //    },
    //    "staff": {
    //        "id": 2303331,
    //        "name": "Анисимова Полина",
    //        "specialization": "специалист",
    //        "position": {
    //            "id": 231647,
    //            "title": "Парикмахер"
    //        }
    //    },
    //    "services": [
    //        {
    //            "id": 11440288,
    //            "title": "Стрижка",
    //            "cost": 1000,
    //            "costToPay": 0,
    //            "manualCost": 0,
    //            "costPerUnit": 0,
    //            "discount": 0,
    //            "firstCost": 0,
    //            "amount": 1
    //        }
    //    ],
    //    "date": "2023-06-03T14:33:00+00:00",
    //    "createDate": "2023-05-31T05:51:44+00:00",
    //    "comment": "",
    //    "attendance": 2,
    //    "length": 4200,
    //    "lastChangeDate": "2023-06-02T10:26:50+00:00",
    //    "prepaid": false,
    //    "prepaidConfirmed": false,
    //    "deleted": true,
    //    "apiId": "7894"
    //}

    yclients.rescheduleRecord(salonId int, recordId int, datetime string) bool

    Назначение: переносит запись на новое время.

    Аргументы:

    1. salonId  int – идентификатор филиала.
    2. recordId int – идентификатор записи.
    3. datetime string – новая дата и время в формате (y-MM-dd HH:mm)

    Возвращаемое значение: true в случае успеха и false в случае ошибки

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $success = yclients.rescheduleRecord(25344, 52157914, "2023-06-07 16:00");

    yclients.confirmRecord(salonId int, recordId int) bool

    Назначение: подтверждает запись.

    Аргументы:

    1. salonId  int – идентификатор филиала.
    2. recordId int – идентификатор записи.

    Возвращаемое значение: true в случае успеха и false в случае ошибки

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $success = yclients.confirmRecord(25344, 52157914);

    yclients.cancelRecord(salonId int, recordId int) bool

    Назначение: отменяет запись.

    Аргументы:

    1. salonId  int – идентификатор филиала.
    2. recordId int – идентификатор записи.

    Возвращаемое значение: true в случае успеха и false в случае ошибки

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $success = yclients.cancelRecord(25344, 52157914);

    yclients.deleteRecord(salonId int, recordId int) bool

    Назначение: удаляет запись.

    Аргументы:

    1. salonId  int – идентификатор филиала.
    2. recordId int – идентификатор записи.

    Возвращаемое значение: true в случае успеха и false в случае ошибки

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $success = yclients.deleteRecord(25344, 52157914);

    yclients.searchRecords(salonId int, filters Map) ?List

    Назначение: поиск записей по филиалу.

    Аргументы:

    1. salonId  int – идентификатор филиала
    2. filters Map - фильтры поиска
      • staffId int идентификатор сотрудника.
      • clientId int идентификатор клиента.
      • createdUserId int - идентификатор пользователя, создавшего запись.
      • startDate string - дата сеанса, возвращает записи начиная с указаной даты
      • endDate string - дата сеанса, возвращает записи до указаной даты
      • cStartDate string - дата создания записи, возвращает записи созданные начиная с указаной даты
      • cEndDate string - дата создания записи, возвращает записи созданные до указаной даты
      • changedAfter string - дата создания/изменения записи, возвращает записи начиная с указаной даты
      • changedBefore string -дата создания/изменения записи, возвращает записи до указаной даты

    Возвращаемое значение: List в случае успеха иnil в случае ошибки

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $records = yclients.searchRecords(25344);
    
    
    //$records будет содержать:
    //[
    //    {
    //        "id": 52157914,
    //        "companyId": 25344,
    //        "staffId": 2303331,
    //        "services": [
    //			  {
    //				  "id": 11440288,
    //				  "title": "Стрижка",
    //				  "cost": 1000,
    //				  "manualCost": 1000,
    //				  "costPerUnit": 1000,
    //				  "discount": 0,
    //				  "firstCost": 1000,
    //				  "amount": 1
    //		  	  }
    //		  ],
    //        "staff": {
    //            "id": 2303331,
    //            "name": "Сотрудник 2",
    //            "specialization": "мужской мастер",
    //            "position": {
    //                "id": 264317,
    //                "title": "Парикмахер"
    //            },
    //            "avatar": "",
    //            "avatarBig": "",
    //            "rating": 0,
    //            "votesCount": 0
    //        },
    //        "date": "2023-08-13T07:40:00+00:00",
    //        "datetime": "2023-08-13T04:40:00+00:00",
    //        "createDate": "2023-08-08T11:18:04+00:00",
    //        "comment": "",
    //        "online": false,
    //        "visitAttendance": 0,
    //        "attendance": 0,
    //        "confirmed": true,
    //        "seanceLength": 3600,
    //        "length": 3600,
    //        "smsBefore": true,
    //        "smsNow": false,
    //        "smsNowText": "",
    //        "emailNow": false,
    //        "notified": false,
    //        "masterRequest": true,
    //        "apiId": "",
    //        "fromUrl": "",
    //        "reviewRequested": false,
    //        "visitId": 0,
    //        "createdUserId": 787095,
    //        "paidFull": 1,
    //        "prepaid": false,
    //        "prepaidConfirmed": false,
    //        "lastChangeDate": "2023-08-08T11:18:04+00:00",
    //        "customColor": "",
    //        "customFontColor": "",
    //        "recordLabels": [
    //			  {
    //			  	  "id": 104474,
    //				  "title": "категория",
    //				  "color": "#3b2c54"
    //				  "icon": "icon"
    //				  "fontColor": "#ffffff"
    //			  }
    //		  ],
    //        "activityId": 0,
    //        "documents": [
    //            {
    //                "id": 8172893,
    //                "typeId": 7,
    //                "storageId": 0,
    //                "userId": 787095,
    //                "companyId": 25344,
    //                "number": 8172893,
    //                "comment": "",
    //                "dateCreated": "2023-08-13T06:40:00+00:00",
    //                "categoryId": 0,
    //                "visitId": 0,
    //                "recordId": 52157914,
    //                "typeTitle": "Визит"
    //            }
    //        ],
    //        "smsRemainHours": null,
    //        "emailRemainHours": null,
    //        "bookformId": 0,
    //        "recordFrom": "",
    //        "isMobile": false,
    //        "isSaleBillPrinted": false
    //	  }
    //]

    yclients.recordsByVisits(salonId int, filters Map) ?List

    Назначение: поиск записей по истории посещений клиента.

    Аргументы:

    1. salonId  int – идентификатор филиала.
    2. filters Map - фильтры поиска
      • clientId int идентификатор клиента.
      • clientPhone string - телефон клиента (обязателен при отсутствии clientId)
      • from string - дата начала периода
      • to string - дата окончания периода
      • paymentStatuses List - статус оплаты визита ("not_paid","paid_not_full","paid_full", "paid_over")
      • attendance int - статус посещения (-1 - клиент не пришёл; 0 - ожидание клиента; 1 - клиент пришёл; 2 - клиент подтвердил запись.)

    Возвращаемое значение:  List в случае успеха иnil в случае ошибки

    Примечание: для использования функции необходимо передать clientId или clientPhone, чтобы идентифицировать клиента.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $records = yclients.recordsByVisits(25344, {"clientId": 2303331});
    
    
    //$records будет содержать:
    //[
    //    {
    //        "id": 52157914,
    //        "comment": "",
    //        "date": "2023-06-21T15:00:00+00:00",
    //        "visitId": 550229870,
    //        "attendance": 0,
    //        "services": [
    //            {
    //                "id": 11440288,
    //                "title": "Стрижка",
    //                "firstCost": 1000,
    //                "discountPercent": 0,
    //                "costToPay": 1000,
    //                "paidSum": 0,
    //                "paymentStatus": "not_paid"
    //            }
    //        ],
    //        "staff": {
    //            "id": 2331303,
    //            "name": "Сотрудник 1",
    //            "companyId": 25344,
    //            "specialization": "специалист",
    //            "avatar": "",
    //            "avatarBig": "",
    //            "position": {
    //                "id": 264317,
    //                "title": "Парикмахер"
    //            }
    //        },
    //        "company": {
    //            "id": 25344,
    //            "title": "Twin"
    //        },
    //        "tips": {
    //            "hasTips": false,
    //            "sum": null
    //        },
    //        "comer": null
    //	  }
    //]

    yclients.bookingDates(salonId int, serviceIds List = nil, staffId int = nil, date string = nil) ?Map

    Назначение: запрашивает даты доступные для бронирования.

    Аргументы:

    1. salonId  int – идентификатор филиала.
    2. serviceIds List – список идентификаторов услуг.
    3. staffId int – идентификатор сотрудника.
    4. date string – дата в формате (y-MM-dd).

    Возвращаемое значение: Map в случае успеха и nil в случае ошибки

    Формат ответа:

    • bookingDays – массив дней, которые доступны для бронирования на указанные услуги.
    • bookingDates – массив дат, когда есть свободные сеансы на услугу к выбранному сотруднику/организации.
    • workingDays – массив рабочих дней сгруппированных по месяцам (рабочие дни сотрудника/организации).
    • workingDates – массив дат, когда работает сотрудник/организация.


    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Запрашивает даты доступные для бронирования
    $dates = yclients.bookingDates(25344);
    
    // Запрашивает даты доступные для бронирования с фильтром по услугам
    $dates = yclients.bookingDates(25344, [75426, 58654]);
    
    // Запрашивает даты доступные для бронирования с фильтром по сотруднику
    $dates = yclients.bookingDates(25344, nil, 2303331);
    
    // Запрашивает даты доступные для бронирования с фильтром по дате
    $dates = yclients.bookingDates(25344, nil, nil, "2023-06-08");
    
    // Запрашивает даты доступные для бронирования с фильтром по сотруднику и дате
    $dates = yclients.bookingDates(25344, nil, 2303331, "2023-06-08");
    
    // Запрашивает даты доступные для бронирования с фильтром по услугам и дате
    $dates = yclients.bookingDates(25344, [75426, 58654], nil, "2023-06-08");
    
    // $dates будет содержать:
    // {
    //    "bookingDays": {
    //        "6": [
    //            20,
    //            21,
    //            22,
    //            23,
    //            24,
    //            25,
    //            26,
    //            27,
    //            28,
    //            29,
    //            30
    //        ],
    //        "7": [
    //            1,
    //            2,
    //            3,
    //            4,
    //            8,
    //            9,
    //            12,
    //            14,
    //            20,
    //            26,
    //            28
    //        ],
    //        "8": [
    //            1,
    //            5,
    //            7
    //        ]
    //    },
    //    "bookingDates": [
    //        "2023-06-20",
    //        "2023-06-21",
    //        "2023-06-22",
    //        "2023-06-23",
    //        "2023-06-24",
    //        "2023-06-25",
    //        "2023-06-26",
    //        "2023-06-27",
    //        "2023-06-28",
    //        "2023-06-29",
    //        "2023-06-30",
    //        "2023-07-01",
    //        "2023-07-02",
    //        "2023-07-03",
    //        "2023-07-04",
    //        "2023-07-08",
    //        "2023-07-09",
    //        "2023-07-12",
    //        "2023-07-14",
    //        "2023-07-20",
    //        "2023-07-26",
    //        "2023-07-28",
    //        "2023-08-01",
    //        "2023-08-05",
    //        "2023-08-07"
    //    ],
    //    "workingDays": {
    //        "6": [
    //            20,
    //            21,
    //            22,
    //            23,
    //            24,
    //            25,
    //            26,
    //            27,
    //            28,
    //            29,
    //            30
    //        ],
    //        "7": [
    //            1,
    //            2,
    //            3,
    //            4,
    //            8,
    //            9,
    //            12,
    //            14,
    //            20,
    //            26,
    //            28
    //        ],
    //        "8": [
    //            1,
    //            5
    //        ]
    //    },
    //    "workingDates": [
    //        "2023-06-20",
    //        "2023-06-21",
    //        "2023-06-22",
    //        "2023-06-23",
    //        "2023-06-24",
    //        "2023-06-25",
    //        "2023-06-26",
    //        "2023-06-27",
    //        "2023-06-28",
    //        "2023-06-29",
    //        "2023-06-30",
    //        "2023-07-01",
    //        "2023-07-02",
    //        "2023-07-03",
    //        "2023-07-04",
    //        "2023-07-08",
    //        "2023-07-09",
    //        "2023-07-12",
    //        "2023-07-14",
    //        "2023-07-20",
    //        "2023-07-26",
    //        "2023-07-28",
    //        "2023-08-01",
    //        "2023-08-05"
    //    ]
    //  }

    yclients.bookingServices(salonId int, serviceIds List = nil, staffId int = nil, date string = nil) ?Map

    Назначение: запрашивает услуги доступные для бронирования.

    Аргументы:

    1. salonId  int – идентификатор филиала.
    2. serviceIds List – список идентификаторов услуг, при использовании будут возвращены как выбранные услуги так и дополнительно доступные на основе фильтров.
    3. staffId int – идентификатор сотрудника.
    4. date string – дата и время в формате y-MM-dd HH:mm. В случаях когда указана только дата, время будет выставлено автоматически как 00:00.

    Возвращаемое значение: Map в случае успеха и nil в случае ошибки

    Формат ответа:

    • services List – список услуг доступных для бронирования.
    • categories List – список категорий услуг (забронировать категорию нельзя).


    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Запрашивает доступные услуги
    $services = yclients.bookingServices(25344);
    
    // Запрашивает доступные услуги с учетом только необходимых
    $services = yclients.bookingServices(25344, [75426, 58654]);
    
    // Запрашивает доступные услуги сотрудника
    $services = yclients.bookingServices(25344, nil, 2303331);
    
    // Запрашивает доступные услуги на определенное время
    $services = yclients.bookingServices(25344, nil, nil, "2023-06-08 12:00");
    
    // Запрашивает доступные услуги сотрудника на определенное время
    $services = yclients.bookingServices(25344, nil, 2303331, "2023-06-08 12:00");
    
    // $services будет содержать:
    // {
    //    "services": [
    //        {
    //            "id": 11440288,
    //            "title": "Стрижка",
    //            "categoryId": 11440287,
    //            "priceMin": 1000,
    //            "priceMax": 2000,
    //            "discount": 0,
    //            "comment": "",
    //            "weight": 2,
    //            "active": 1,
    //            "sex": 0,
    //            "image": "",
    //            "prepaid": "forbidden",
    //            "seanceLength": 3600, // в секундах. возвращается если задан фильтр по сотруднику, в ином случае вернется null
    //            "abonementRestriction": 0,
    //            "prepaidSettings": {
    //                "status": "forbidden",
    //                "prepaidFull": {
    //                    "amount": 1000,
    //                    "currency": "RUB"
    //                },
    //                "prepaidMin": {
    //                    "amount": 1000,
    //                    "percent": 100,
    //                    "currency": "RUB"
    //                }
    //            }
    //        },
    //        {
    //            "id": 12685752,
    //            "title": "Окрашивание",
    //            "categoryId": 11440287,
    //            "priceMin": 3000,
    //            "priceMax": 3000,
    //            "discount": 0,
    //            "comment": "",
    //            "weight": 0,
    //            "active": 1,
    //            "sex": 0,
    //            "image": "",
    //            "prepaid": "forbidden",
    //            "seanceLength": null,
    //            "abonementRestriction": 0,
    //            "prepaidSettings": {
    //                "status": "forbidden",
    //                "prepaidFull": {
    //                    "amount": 3000,
    //                    "currency": "RUB"
    //                },
    //                "prepaidMin": {
    //                    "amount": 3000,
    //                    "percent": 100,
    //                    "currency": "RUB"
    //                }
    //            }
    //        }
    //    ],
    //    "categories": [
    //        {
    //            "id": 11440287,
    //            "title": "Категория услуг",
    //            "sex": 0,
    //            "apiId": 0,
    //            "weight": 1
    //        }
    //    ]
    // }

    yclients.bookingStaff(salonId int, serviceIds List = nil, date string = nil) ?List

    Назначение: запрашивает сотрудников доступных для бронирования.

    Аргументы:

    1. salonId  int – идентификатор филиала.
    2. serviceIds List – список идентификаторов услуг.
    3. date string – дата в формате (y-MM-dd).

    Возвращаемое значение: List в случае успеха и nil в случае ошибки


    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Запрашивает доступных сотрудников
    $staff = yclients.bookingStaff(25344);
    
    // Запрашивает доступных сотрудников с учетом услуг
    $staff = yclients.bookingStaff(25344, [75426, 58654]);
    
    // Запрашивает доступных сотрудников с учетом даты
    $staff = yclients.bookingStaff(25344, nil, "2023-06-08");
    
    // Запрашивает доступных сотрудников на определенную дату с учетом услуг
    $staff = yclients.bookingStaff(25344, [75426, 58654], "2023-06-08");
    
    // $staff будет содержать:
    // [
    //    {
    //        "id": 2631363,
    //        "apiId": null,
    //        "name": "Сотрудник 2",
    //        "specialization": "мужской мастер",
    //        "rating": 0,
    //        "showRating": 1,
    //        "userId": null,
    //        "avatar": "https://be.cdn.yclients.com/images/no-master-sm.png",
    //        "avatarBig": "https://be.cdn.yclients.com/images/no-master.png",
    //        "commentsCount": 0,
    //        "votesCount": 0,
    //        "bookable": true,
    //        "information": "",
    //        "positionId": 263147,
    //        "scheduleTill": "2023-08-31",
    //        "weight": 2,
    //        "fired": 0,
    //        "status": 0,
    //        "hidden": 0,
    //        "user": null,
    //        "prepaid": "forbidden",
    //        "position": {
    //            "id": 217643,
    //            "title": "Парикмахер"
    //        }
    //    },
    //    {
    //        "id": 2331303,
    //        "apiId": null,
    //        "name": "Сотрудник 1",
    //        "specialization": "специалист",
    //        "rating": 0,
    //        "showRating": 1,
    //        "userId": null,
    //        "avatar": "https://be.cdn.yclients.com/images/no-master-sm.png",
    //        "avatarBig": "https://be.cdn.yclients.com/images/no-master.png",
    //        "commentsCount": 0,
    //        "votesCount": 0,
    //        "bookable": true,
    //        "information": "",
    //        "positionId": 231647,
    //        "scheduleTill": "2023-07-02",
    //        "weight": 1,
    //        "fired": 0,
    //        "status": 0,
    //        "hidden": 0,
    //        "user": null,
    //        "prepaid": "forbidden",
    //        "position": {
    //            "id": 217643,
    //            "title": "Парикмахер"
    //        }
    //    }
    // ]
    

    yclients.bookingStaffSeances(salonId int, staffId int, serviceIds List = nil, date string = nil) ?Map

    Назначение: запрашивает ближайшие доступные сеансы сотрудника

    Аргументы:

    1. salonId  int – идентификатор филиала.
    2. staffId int - иднтификатор сотрудника
    3. serviceIds List – список идентификаторов услуг.

    Возвращаемое значение: Map в случае успеха и nil в случае ошибки

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Запрашивает доступные сеансы сотрудника
    $staffSeances = yclients.bookingStaffSeances(25344, 2331303);
    
    // Запрашивает доступные сеансы сотрудника с учетом услуг
    $staffSeances = yclients.bookingStaffSeances(25344, 2331303, [75426, 58654]);
    
    // $staffSeances будет содержать:
    // {
    //    "seanceDate": "2023-06-20",
    //    "seances": [
    //        {
    //            "time": "13:00",
    //            "seanceLength": 3600,
    //            "sumLength": 3600,
    //            "datetime": "2023-06-20T10:00:00+00:00"
    //        },
    //        {
    //            "time": "13:30",
    //            "seanceLength": 3600,
    //            "sumLength": 3600,
    //            "datetime": "2023-06-20T10:30:00+00:00"
    //        }
    //    ]
    // }
    
    

    yclients.bookingTimes(salonId int, staffId int, date string, serviceIds List = nil) ?List

    Назначение: запрашивает список сеансов доступных для бронирования

    Аргументы:

    1. salonId  int – идентификатор филиала.
    2. staffId int - иднтификатор сотрудника
    3. date string – дата в формате (y-MM-dd).
    4. serviceIds List – список идентификаторов услуг.

    Возвращаемое значение: List в случае успеха и nil в случае ошибки

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Запрашивает доступные сеансы сотрудника
    $times = yclients.bookingTimes(25344, 2331303, "2023-06-20");
    
    // Запрашивает доступные сеансы сотрудника на определенные услуги
    $times = yclients.bookingTimes(25344, 2331303, "2023-06-20", [75426, 58654]);
    
    // $times будет содержать:
    // [
    //    {
    //        "time": "6:00",
    //        "seanceLength": 3600,
    //        "sumLength": 3600,
    //        "datetime": "2023-06-21T03:00:00+00:00"
    //    },
    //    {
    //        "time": "6:30",
    //        "seanceLength": 3600,
    //        "sumLength": 3600,
    //        "datetime": "2023-06-21T03:30:00+00:00"
    //    },
    //    {
    //        "time": "19:00",
    //        "seanceLength": 3600,
    //        "sumLength": 3600,
    //        "datetime": "2023-06-21T16:00:00+00:00"
    //    }
    // ]
    

    yclients.searchClient(salonId int, filters Map) ?int

    Назначение: производит поиск клиента по передаваемым фильтрам

    Аргументы:

    1. salonId  int – идентификатор филиала.
    2. filters Map - фильтры поиска
      • phone string телефон клиента (необязательный параметр).
      • email string почта клиента (необязательный параметр).

    Возвращаемое значение: int, если клиент найден и nil, если клиент не найден.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Поиск клиента по номеру телефона
    $clientId = yclients.searchClient(1, {'phone': '11111111111'});
    
    
    // Поиск клиента по почте
    $clientId = yclients.searchClient(1, {'email': 'test@mail.com'});
    

    yclients.clientDetails(salonId int, clientId int) ?Map

    Назначение: получает данные о клиенте

    Аргументы:

    1. salonId  int – идентификатор филиала.
    2. clientId int - идентификатор клиента

    Возвращаемое значение: Map, если клиент найден и nil, если клиент не найден.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $client = yclients.clientDetails(1, 1);
    
    // $client будет содержать:
    // {
    // 		"id": 1,
    // 		"email": "test@mail.com",
    // 	    "name": "name",
    // 	    "surname": "",
    // 	    "patronymic": "",
    // 	    "phone": "+111111111",
    // 	    "categories": [],
    // 	    "sex": "Неизвестно",
    // 	    "discount": 0,
    // 	    "importance": "Без класса важности",
    // 	    "card": "",
    // 	    "birthDate": "",
    // 	    "comment": "",
    // 	    "smsCheck": false,
    // 	    "smsNot": false,
    //      "spent": 0,
    //      "balance": 0,
    //      "visits": 0,
    //      "lastChangeDate": "2022-12-19T10:47:21+0400",
    //      "customFields": []
    //}
    
    

    yclients.createClient(salonId int, params Map) ?int

    Назначение: создает нового клиента

    Аргументы:

    1. salonId  int – идентификатор филиала.
    2. params Map - параметры клиента
      • name string имя клиента (обязательный параметр).
      • phone string телефон клиента (обязательный параметр).
      • email string почта клиента (необязательный параметр).
      • sexId int пол клиента (1 - мужской, 2 - женский, 0 - не известен).
      • importanceId int класс важности клиента (0 - нет, 1 - бронза, 2 - серебро, 3 - золото).
      • discount int скидка клиента.
      • card string номер карты клиента.
      • birthDate string дата рождения клиента в формате yyyy-mm-dd.
      • spent int сколько потратил средств в компании на момент добавления.
      • smsCheck int статус sms уведомлений. 1 - Поздравлять с Днем Рождения по SMS, 0 - не поздравлять.
      • categories List список идентификаторов категорий клиента.
      • customFields Map массив дополнительных полей клиента в виде пар "api-key": "value".

    Возвращаемое значение: int, если клиент создан и nil, если нет.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $clientId = yclients.createClient(1, {'name': 'Имя', 'phone': '1111111111111', 'email': 'testclient@mail.com', 'sexId': 1, 'birthDate': '1999-01-01'});
    

    yclients.updateClient(salonId int, clientId int, params Map) bool

    Назначение: редактирует информацию клиента

    Аргументы:

    1. salonId  int – идентификатор филиала.
    2. clientId  int – идентификатор клиента.
    3. params Map - параметры клиента
      • name string имя клиента (обязательный параметр).
      • phone string телефон клиента (обязательный параметр).
      • email string почта клиента.
      • sexId int пол клиента (1 - мужской, 2 - женский, 0 - не известен).
      • importanceId int класс важности клиента (0 - нет, 1 - бронза, 2 - серебро, 3 - золото).
      • discount int скидка клиента.
      • card string номер карты клиента.
      • birthDate string дата рождения клиента в формате yyyy-mm-dd.
      • spent int сколько потратил средств в компании на момент добавления.
      • smsCheck int статус sms уведомлений. 1 - Поздравлять с Днем Рождения по SMS, 0 - не поздравлять.
      • customFields Map массив дополнительных полей клиента в виде пар "api-key": "value".

    Возвращаемое значение: true, если клиент успешно отредактирован и false, если нет.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $client = yclients.updateClient(1, 1, {'name': 'Имя', 'phone': '1111111111111', 'email': 'updateclient@mail.com'});
    

    yclients.createClientComment(salonId int, clientId int, text string) ?int

    Назначение: добавляет комментарий к клиенту

    Аргументы:

    1. salonId  int – идентификатор филиала.
    2. clientId  int – идентификатор клиента.
    3. text string - текст комментария

    Возвращаемое значение: int, если комментарий создан и nil, если нет.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $commentId = yclients.createClientComment(1, 1, 'text');
    

    Объект FactQuery

    Используя методы этого объекты, вы можете выполнять и строить разнообразные запросы к базе фактов. База фактов представляет собой список записей. Каждая запись представляет собой единичный факт, состоящий из следующих частей (полей):

    • Контекст (context). Произвольная строка, длина которой не превышает 255 символов. Обозначает некоторую предметную область, в рамках которой существует факт. Может участвовать в поиске.
    • Имя факта (name). Произвольная строка, длина которой не превышает 255 символов. Служит для идентификации факта в заданном контексте. Может участвовать в поиске.
    • Значение факта (value). Любое значение. Это

    ...

    • и есть та информация, которую мы трактуем как факт. Не может участвовать в поиске (технически может, но результат

    ...

    • не определен).
    • Идентификатор бота (botId). Может быть задан при сохранении факта с целью привязки факта к боту. Может участвовать в поиске.
    • Идентификатор клиента (clientId). Может быть задан при сохранении факта с целью привязки факта к клиенту. Может участвовать в поиске.

    select(fields string|Collection) FactQuery

    ...

    Назначение: задаёт список полей из базы фактов, значения которых следует вернуть в результате запроса. Если метод select не

    ...

    вызывался, то будут возвращены поля context, name и value.

    ...

    Аргументы:

    1. fields

    ...

    1. строка, содержащая список

    ...

    1. необходимых полей, разделённых запятой либо коллекция этих полей.

    ...

    Возвращаемое значениетот же объект FactQuery.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $facts = fact.query().rows()                               // select не вызван возвращаем все поля.
    $facts = fact.query().select(["value", "context"]).rows()  // Возвращаем список фактов, для которых нам нужны только value и context.
    $facts = fact.query().select("botId").rows()               // Возвращаем только поле botId, к 
    которым
    которому привязаны факты.

    where(field string, operator string, value mixed) FactQuery

    ...

    Назначение: задаёт условие поиска фактов. Несколько методов where объединяются по принципу логического "И"

    ...

    . Т.е. все условия должны быть выполнены. Метод where равносилен методу andWhere(field, operator, value).

    ...

    Аргументы:

    1. field

    ...

    1. название поля, для которого задаётся условие

    ...

    1. (т.е. первый аргумент операции operator).
    2. operator

    ...

    1. оператор, обозначающий операцию, выполняющуюся над field. Список доступных операций смотри ниже.
    2. value

    ...

    1. второй аргумент операции.

    ...

    Возвращаемое значениетот же объект FactQuery.

    Список доступных операций:

    1. "=" проверка, что field равно value.
    2. "!=" или "<>" проверка на неравенство, что field не равно value.
    3. ">" проверяет, что field больше value.
    4. "<" проверяет, что field меньше value.
    5. ">=" проверяет, что field больше или равно value.
    6. "<=" проверяет, что field меньше или равно value.
    7. "^@" или "startsWith" ищет совпадение строки value с началом field. Поиск регистрозависимый.
    8. "~" проверяет соответствие field регулярному выражению value. Поиск регистрозависимый.
    9. "!~" проверяет несоотвествие field регулярному выражению value. Поиск регистрозависимый.
    10. "~*" проверяет соответствие field регулярному выражению value. Поиск регистронезависимый.
    11. "!~*" проверяет несоотвествие field регулярному выражению value. Поиск регистронезависимый.
    12. "in" проверяет совпадение field хотя бы с одним значением в коллекции value
    13. "not in" проверяет несовпадение field со всеми значениями из коллекции value.
    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Ищем факты, у которых context содержит подстроку test
    $facts = fact.query().
        select("name,value").
        where("context", "~", "^.*test.*$").
        rows()

    andWhere(field string, operator string, value mixed) FactQuery

    Эквивалентен where(field, operator, value).

    orWhere(field string, operator string, value mixed) FactQuery

    Аналогичен where

    ...

    с той лишь разницей, что несколько вызовов этого метода объединяются по принципу логического "ИЛИ"

    ...

    (т.е. должно выполняться хотя бы одно условие).

    where(cond FactQueryCondition) FactQuery

    ...

    Назначение: задаёт сложное (вложенное) условие. Несколько вызвов метода объединяются по принципу логического "И". Эквивалентен методу andWhere(cond).

    ...

    Аргументы:

    1. cond

    ...

    1. объект FactQueryCondition, определяющий сложносоставное условие.

    ...

    Возвращаемое значениетот же объект FactQuery.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Ищем факты, у которых context содержит подстроку test, и при этом name равен "слово", или name начинается на "оп".
    $facts = fact.query().
        select("name,value").
        where("context", "~", "^.*test.*$").
        andWhere(fact.cond().
            where("name", "=", "слово").
            orWhere("name", "^@", "оп")).
        rows()

    andWhere(cond FactQueryCondition) FactQuery

    Эквивалентен where(cond).

    orWhere(cond FactQueryCondition) FactQuery

    Аналогичен where(cond), с той лишь разницей, что несколько вызовов этого метода объединяются по принципу логического "ИЛИ", т.е. должно выполняться хотя бы одно условие.

    sortBy(fields string|Collection) FactQuery

    ...

    Назначениезадаёт сортирову фактов по указанным полям.

    ...

    Аргументы:

    1. fields

    ...

    1. строка, содержащая список полей (через запятую), по которым следует отсортировать факты, либо коллекция, содержащая названия полей. Каждое поле может содержать префикс "+" для сортировки по возрастанию или "-" для сортировки по убыванию. Если префикс не указан, то используется сортировка по возрастанию. 

    ...

    Возвращаемое значениетот же объект FactQuery. 

    php
    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    language
    // Получаем все факты для бота с двойной сортировкой: 
    // 
    сначала
    Сначала по контексту по возрастанию (т.е. в алфавитном порядке)
    // 
    и
    И далее по имени факта по убыванию.
    $facts = fact.query().
        select("name,value").
        where("botId", "=", @botId)
        sortBy("+context,-name"). // 
    можно
    Можно также использовать коллеции. Например, sortBy(["+context", "-name"])
        rows()

    limit(limit int) FactQuery

    ...

    Назначениеставит ограничение на максимальное количество извлекаемых фактов.

    ...

    Аргументы:

    1. limit

    ...

    1. целое число, определяющее лимит на количество извлекаемых фактов.

    ...

    Возвращаемое значениетот же объект FactQuery

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Получаем первые 10 фактов
    $facts = fact.query().
        select("name,value").
        sortBy("name").
        limit(10).
        rows()

    skip(count int) FactQuery

    ...

    Назначение: задаёт количество фактов, которые следует пропустить при поиске.

    ...

    Аргументы:

    1. count

    ...

    1. целое число, определяющее количество фактов для пропуска.

    ...

    Возвращаемое значениетот же объект FactQuery

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Пропускаем 5 первых фактов и извлекаем следующие 10
    $facts = fact.query().
        select("name,value").
        sortBy("name").
        skip(5).
        limit(10).
        rows()

    one() mixed

    ...

    Назначениевозвращает первое указанное через select поле первого найденного факта.

    ...

    Аргументыотсутствуют.

    ...

    Возвращаемое значениезначение поля.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Извлекает имя первого найденного факта
    $firstFactName = fact.query().
        select("name,value").        // value хоть и указано, но будет проигнорировано
        one()

    column() List

    ...

    Назначениевозвращает список, состоящий из всех значений первого выбранного поля найденных фактов.

    ...

    Аргументыотсутствуют.

    ...

    Возвращаемое значение: списокзначений поля.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Извлекает список имён всех найденных фактов
    $names = fact.query().
        select("name,value").        // value хоть и указано, но будет проигнорировано
        column()

    row() Map

    ...

    Назначениевозвращает все выбранные поля в виде ассоциативного массива для первого найденного факта.

    ...

    Аргументыотсутствуют.

    ...

    Возвращаемое значение: значения всех полей первого факта.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Извлекает имя и значение первого найденного факта
    $names = fact.query().
        select("name,value").
        row()

    rows() List<Map>

    ...

    Назначениевозвращает список всех найденных фактов. Каждый факт возвращается как ассоциативный массив, ключами которого являются поля факта, а значениями

    ...

    значения полей.

    ...

    Аргументыотсутствуют.

    ...

    Возвращаемое значение: значения всех полей всех фактов.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    // Извлекает имя и значение всех фактов
    $names = fact.query().
        select("name,value").
        rows()

    Объект FactQueryCondition

    Используйте методы этого объекта, чтобы строить сложные вложенные условия к базе

    ...

    фактов.

    where(field string, operator string, value mixed) FactQueryCondition

    Аналогичен методу where(field string, operator string, value mixed) объекта FactQuery.

    andWhere(field string, operator string, value mixed) FactQueryCondition

    Аналогичен методу andWhere(field string, operator string, value mixed) объекта FactQuery.

    orWhere(field string, operator string, value mixed) FactQueryCondition

    Аналогичен методу orWhere(field string, operator string, value mixed) объекта FactQuery.

    and(field string, operator string, value mixed) FactQueryCondition

    Аналогичен методу andWhere(field string, operator string, value mixed) объекта FactQuery.

    or(field string, operator string, value mixed) FactQueryCondition

    Аналогичен методу orWhere(field string, operator string, value mixed) объекта FactQuery.

    where(cond FactQueryCondition) FactQueryCondition

    Аналогичен методу where(cond FactQueryCondition) объекта FactQuery.

    andWhere(cond FactQueryCondition) FactQueryCondition

    Аналогичен методу andWhere(cond FactQueryCondition) объекта FactQuery.

    orWhere(cond FactQueryCondition) FactQueryCondition

    Аналогичен методу orWhere(cond FactQueryCondition) объекта FactQuery.

    and(cond FactQueryCondition) FactQueryCondition

    Аналогичен методу andWhere(cond FactQueryCondition) объекта FactQuery.

    or(cond FactQueryCondition) FactQueryCondition

    Аналогичен методу orWhere(cond FactQueryCondition) объекта FactQuery.

    Объект UserMessage

    message string

    ...

    Назначение: оригинальный текст сообщения.

    php
    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПример использования
    linenumberstrue
    language
    $msg = queue.last().message // $msg содержит текст последнего сообщения пользователя

    attachments List<string>

    ...

    Назначение: список идентификаторов файлов, приложенных к сообщению.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПример использования
    linenumberstrue
    $attachments = queue.first().attachments // $attachments содержит список вложений первого сообщения пользователя.

    isEmpty() bool

    ...

    Назначениеопределяет пустое ли сообщение.

    ...

    Аргументыотсутствуют.

    ...

    Возвращаемое значение: true, если сообщение пустое, и false в противном случае.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПример использования
    linenumberstrue
    $isEmpty = queue.last().isEmpty() // $isEmpty содержит true, если последнее сообщение пользователя пустое, и false в противном случае

    hasAttachments() bool

    ...

    Назначениеопределяет, есть ли вложения в данном сообщении.

    ...

    Аргументыотсутствуют.

    ...

    Возвращаемое значение: true, если сообщение имеет вложения, и false в противном случае.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПример использования
    linenumberstrue
    $hasAttachments = queue.first().hasAttachments() // $hasAttachments содержит true, если первое сообщение пользователя имеет вложения, и false в противном случае

    Объект Sentence

    intent string

    ...

    Назначение: распознанное намерение.

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $sentence = nlu.parse("Привет Вася", "d926726a-5acb-4233-8c1e-ce4300921de0")
    $intent = $sentence.intent   // $intent содержит "greeting"

    intentConfidence number

    Назначение: степень достоверности распознанного намерения (1 – однозначное распознавание, 0 – намерение фактически нераспознанно).

    php
    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    language
    $sentence = nlu.parse("Привет Вася", "d926726a-5acb-4233-8c1e-ce4300921de0")
    
    $intent
    $confidence = $sentence.
    intent
    intentConfidence   // 
    $intent
    $confidence содержит 
    "greeting"

    intentConfidence number

    Purpose: степень достоверности распознанного намерения (1 - однозначное распознавание, 0 - намерение фактически нераспознанно
    0.98

    intents List<Tuple>

    Назначение: список распознанных намерений. Каждый элемент списка содержит кортеж из двух элементов: название намерения (string) и его достоверность распознавания (float).

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $sentence = nlu.parse("
    Привет
    Доброе утро Вася, пора вставать", "d926726a-5acb-4233-8c1e-ce4300921de0")
    
    $confidence
    $intents = $sentence.
    intentConfidence
    intents // $entities допустим содержит [("greetings", 0.97), ("wakeup", 0.88)]
    $first = $intents.get(0)     // 
    $confidence
    $first содержит ("greetings", 0
    .98
    .97)
    $intent = $first.get(0)      // $intent содержит "greetings"

    entities List<Tuple>

    ...

    Назначение: список распознанных сущностей. Каждый элемент списка содержит кортеж из трёх элементов: тип сущности (string), значение сущности (строка), достоверность распознавания сущности (

    ...

    float).

    Блок кода
    languagephp
    themeDJango
    firstline1
    titleПримеры использования
    linenumberstrue
    $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"


    Button Hyperlink
    custom-icontop-button
    idtop-button
    title.
    typestandard
    classtop-button
    url#Top