...
| Блок кода | ||
|---|---|---|
| ||
// Добавили факты в базу
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() |
Объект FactQuery
Используя методы этого объекты вы можете выполнять и строить разнообразные запросы к базе фактов. База фактов представляет собой список записей. Каждая запись представляет собой единичный факт состоящий из следующих частей (полей):
- Контекст (context). Произвольная строка длина которой не превышает 255 символов. Обозначает некоторую предметную область в рамках которой существует факт. Может участвовать в поиске.
- Имя факта (name). Произвольная строка длина которой не превышает 255 символов. Служит для идентификации факта в заданном контексте. Может участвовать в поиске.
- Значение факта (value). Любое значение. Это собственно и есть та информация которую мы трактуем как факт. Не может участвовать в поиске (технически может, но результат недетерминирован).
- Идентификатор бота (botId). Может быть задан при сохранении факта с целью привязки факта к боту. Может участвовать в поиске.
- Идентификатор клиента (clientId). Может быть задан при сохранении факта с целью привязки факта к клиенту. Может участвовать в поиске.
select(fields string|Collection) FactQuery
Назначение: задаёт список полей из базы фактов значения которых следует вернуть в результате запроса. Если метод select не вызыался, то будут возвращены поля context,name и value.
Аргументы:
- fields - строка содержащая список неободимых полей разделённых запятой либо коллекция этих полей.
Функции для работы с таймером
timer.start(time int, nodeId string) string
Назначение: запускает таймер обратного отсчёта. По истечении указанного времени бот осуществит переход на указанный узел (блок).
Аргументы:
- time - время в секундах.
- nodeId - идентификатор блока для перехода после завершения отсчёта.
Возвращаемое значение: идентификатор таймера.
| Блок кода | ||
|---|---|---|
| ||
$timerId = timer.start(60, "760b9732-4bfb-4846-a348-faae5138fcb2") // $timerId содержит уникальный идентификатор таймера на 60 секунд |
timer.stop(timerId string)
Назначение: останавливает (удаляет) таймер обратного отсчёта.
Аргументы:
- timerId - идентификатор таймера.
Возвращаемое значение: отсутствуетВозвращаемое значение: тот же объект FactQuery.
| Блок кода | ||
|---|---|---|
| ||
$facts$timerId = facttimer.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).
Аргументы:
- field - название поля для которого задаётся условие, т.е. первый аргумент операции operator.
- operator - оператор обозначающий операцию выполняющуюся над field. Список доступных операций смотри ниже.
- value - второй аргумент операции.
Возвращаемое значение: тот же объект FactQuery.
Список доступных операций:
- "=" проверка, что field равно value.
- "!=" или "<>" проверка на неравенство, что field не равно value.
- ">" проверяет, что field больше value.
- "<" проверяет, что field меньше value.
- ">=" проверяет, что field больше или равно value.
- "<=" проверяет, что field меньше или равно value.
- "^@" или "startsWith" ищет совпадение строки value с началом field. Поиск регистрозависимый.
- "~" проверяет соответствие field регулярному выражению value. Поиск регистрозависимый.
- "!~" проверяет несоотвествие field регулярному выражению value. Поиск регистрозависимый.
- "~*" проверяет соответствие field регулярному выражению value. Поиск регистронезависимый.
- "!~*" проверяет несоотвествие field регулярному выражению value. Поиск регистронезависимый.
- "in" проверяет совпадение field хотя бы с одним значением в коллекции value.
- "not in" проверяет несовпадение field со всеми значениями из коллекции value.
| Блок кода | ||
|---|---|---|
| ||
// Ищем факты у которых 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).
Аргументы:
- cond - объект FactQueryCondition определяющий сложносоставное условие.
Возвращаемое значение: тот же объект FactQuery.
| Блок кода | ||
|---|---|---|
| ||
// Ищем факты у которых 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
Назначение: задаёт сортирову фактов по указанным полям.
Аргументы:
- fields - строка содержащая список полей (через запятую) по которым следует отсортировать факты либо коллекция содержащая названия полей. Каждое поле может содержать префикс "+" для сортировки по возрастанию или "-" для сортировки по убыванию. Если префикс не указан, то используется сортировка по возрастанию.
Возвращаемое значение: тот же объект FactQuery.
start(60, "760b9732-4bfb-4846-a348-faae5138fcb2")
timer.stop($timerId) // останавливаем (удаляем) таймер |
Функции для работы с текстом на естественном языке (NLP)
nlp.parse(message string|UserMessage) Sentence
Назначение: парсит текст на естественном языке.
Аргументы:
- message - текст на естественном языке или объект UserMessage.
Возвращаемое значение: объект Sentence содержащий информацию о всех намерениях и сущностях исходного сообщения.
Примечание: данная функция извлекает из текста только сущности. Для работы с намерениями используйте функцию nlu.parse
| Блок кода | ||
|---|---|---|
| ||
$sentence = nlp.parse(queue.first()) // парсим первое сообщение пользователя |
nlp.join(message1 string|UserMessage, message2 string|UserMessage) Sentence
Назначение: объединяет два текста на естественном языке в одно и затем парсит его.
Аргументы:
- message1 - текст на естественном языке или объект UserMessage.
- message2 - текст на естественном языке или объект UserMessage.
Возвращаемое значение: объект Sentence содержащий информацию о всех намерениях и сущностях объединённого сообщения.
| Блок кода | ||
|---|---|---|
| ||
$sentence = nlp.join(queue.lastNth(2), queue.lastNth(1)) // объединяем предпоследнее и последнее сообщения пользователя и затем парсим его |
nlp.setPerception($sentence Sentence)
Назначение: позволяет установить сообщение пользователя для обработки в других узлах (блоках) схемы бота.
Аргументы:
- sentence - объект Sentence содержащий информацию о намерениях и сущностях некоторого сообщения.
Возвращаемое значение: отсутствует.
| Блок кода | ||
|---|---|---|
| ||
$sentence = nlp.join(queue.lastNth(2), queue.lastNth(1)) // объединяем предпоследнее и последнее сообщения пользователя и затем парсим его
nlp.setPerception($sentence) // Теперь остальные узлы схемы будут работать с cообщением $sentence |
Функции для "понимания" естественного языка.
nlu.parse(text string, agentId string, timezoneOffset int = 0) Sentence
Назначение: разбор текста на естественном языке. Выявление намерений и сущностей.
Аргументы:
- text -текст для разбора.
- agentId - идентификатор (uuid) агента (нейросети) производящего разбор текста.
- timezoneOffset - смещение временной зоны, необходимое для правильного выявления временных сущностей. По умолчанию используется смещение для UTC.
Возвращаемое значение: объект Sentence.
| Блок кода | ||
|---|---|---|
| ||
$sentence = nlu.parse("Доброе утро Вася!", "d926726a-5acb-4233-8c1e-ce4300921de0") |
Функции для работы с HTTP
http.request(url string, method string, params Collection, headers Map) Map
Назначение: отправляет HTTP запрос на указанный URL.
Аргументы:
- url - URL адрес на который будет оправлен запрос.
- method - HTTP метод. Допустимые значения: GET, POST, PUT, DELETE, PATCH, HEAD и OPTIONS.
- params - параметры запроса. Могут быть представлены как списком так и ассоциативным массивом.
- headers - HTTP заголовки запроса. По умолчанию устанавливается заголовок Content-Type: application/json.
Возвращаемое значение: HTTP ответ на запрос в виде ассоциативного массива со следующими ключами: statusCode - HTTP код ответа, body - тело ответа (преобразованное в соответствии с заголовком Content-Type), headers - HTTP заголовки ответа в виде ассоциативного массива, exception - текст ошибки или nil если запрос прошёл без ошибок.
| Блок кода | ||
|---|---|---|
| ||
// ПолучаемВыполняем всезапрос фактына дляполучение ботасписка сюзеров $response двойной сортировкой: // сначала по контексту по возрастанию (т.е. в алфавитном порядке) // и далее по имени факта по убыванию. $facts = fact.query(). select("name,value"). where("botId", "=", @botId) sortBy("+context,-name"). // можно также использовать коллеции. Например, sortBy(["+context", "-name"]) rows() |
limit(limit int) FactQuery
Назначение: ставит ограничение на максимальное количество извлекаемых фактов.
Аргументы:
- limit - целое число определяющее лимит на количество извлекаемых фактов.
Возвращаемое значение: тот же объект FactQuery.
| Блок кода | ||
|---|---|---|
| ||
// Получаем первые 10 фактов
$facts = fact.query().
select("name,value").
sortBy("name").
limit(10).
rows() |
skip(count int) FactQuery
Назначение: задаёт количество фактов которые следует пропустить при поиске.
Аргументы:
- count - целое число определяющее количество фактов для пропуска.
Возвращаемое значение: тот же объект FactQuery.
| Блок кода | ||
|---|---|---|
| ||
// Пропускаем 5 первых фактов и извлекаем следующие 10
$facts = fact.query().
select("name,value").
sortBy("name").
skip(5).
limit(10).
rows() |
one() mixed
Назначение: возвращает первое указанное через select поле первого найденного факта.
Аргументы: отсутствуют.
Возвращаемое значение: значение поля.
= http.request("https://iam.twin24.ai/api/v1/users", "GET", {"limit": 15, "offset": 5}, {"Authorization": "Bearer authToken"})
// Извлекаем информацию о запросе
$statusCode = $response.get("statusCode")
$body = $response.get("body")
$headers = $response.get("headers")
$exception = $response.get("exception")
// Можно извлечь так
{"statusCode": $statusCode, "body": $body, "headers": $headers, "exception": $exception} = $response
// Или даже так (тут важен порядок перечисления переменных)
($statusCode, $body, $headers, $exception) = $response
// или
[$statusCode, $body, $headers, $exception] = $response
// получаем общее количество юзеров и их список
$userCount = $body.get("count")
$userList = $body.get("items") |
Системные функции
sys.sleep(microseconds int)
Назначение: останавливает работу бота на указанное количество микросекунд. Если количество микросекунд превышает 1 минуту, то пауза будет уменьшена до 1 минуты.
Аргументы:
- microseconds - число микросекунд паузы.
Возвращаемое значение: отсутствует.
| Блок кода | ||
|---|---|---|
| ||
sys.sleep(3_000_000) // Пауза в 3 секунды |
Функции для работы с GPT-3
gpt3.ask(text string) string
Назначение: отправляет сообщение в демо версию нейросети RuGTP-3 и возвращает её ответ.
Аргументы:
- text - запрос к нейросети на русском языке.
Возвращаемое значение: ответ нейросети в виде строки.
| Блок кода | ||
|---|---|---|
| ||
$answer = gpt3.ask("Есть ли жизнь на Марсе?") // В $answer будет ответ нейросети на заданный вопрос |
Объект FactQuery
Используя методы этого объекты вы можете выполнять и строить разнообразные запросы к базе фактов. База фактов представляет собой список записей. Каждая запись представляет собой единичный факт состоящий из следующих частей (полей):
- Контекст (context). Произвольная строка длина которой не превышает 255 символов. Обозначает некоторую предметную область в рамках которой существует факт. Может участвовать в поиске.
- Имя факта (name). Произвольная строка длина которой не превышает 255 символов. Служит для идентификации факта в заданном контексте. Может участвовать в поиске.
- Значение факта (value). Любое значение. Это собственно и есть та информация которую мы трактуем как факт. Не может участвовать в поиске (технически может, но результат недетерминирован).
- Идентификатор бота (botId). Может быть задан при сохранении факта с целью привязки факта к боту. Может участвовать в поиске.
- Идентификатор клиента (clientId). Может быть задан при сохранении факта с целью привязки факта к клиенту. Может участвовать в поиске.
select(fields string|Collection) FactQuery
Назначение: задаёт список полей из базы фактов значения которых следует вернуть в результате запроса. Если метод select не вызыался, то будут возвращены поля context,name и value.
Аргументы:
- fields - строка содержащая список неободимых полей разделённых запятой либо коллекция этих полей.
Возвращаемое значение: тот же объект FactQuery.
| Блок кода | ||
|---|---|---|
| ||
$facts = fact.query().rows() | ||
| Блок кода | ||
| ||
// Извлекает имя первого найденного факта $firstFactName = fact.query(). select("name,value"). // value хоть и указано, но будет проигнорировано one() |
column() List
Назначение: возвращает список состоящий из всех значений первого выбранного поля найденных фактов.
Аргументы: отсутствуют.
...
| Блок кода | ||
|---|---|---|
| ||
// Извлекаетselect списокне имёнвызван всехвозвращаем найденныхвсе фактовполя. $names$facts = fact.query(). select(["name,value"). , "context"]).rows() // valueВозвращаем хотьсписок ифактов указано,для нокоторых будетнам проигнорировано нужны только value column() |
row() Map
Назначение: возвращает все выбранные поля в виде ассоциативного массива для первого найденного факта.
Аргументы: отсутствуют.
Возвращаемое значение: значения всех полей первого факта.
| Блок кода | ||
|---|---|---|
| ||
// Извлекает имя и значение первого найденного факта $namesи context. $facts = fact.query(). select("name,valuebotId"). rows() row() |
rows() List<Map>
Назначение: возвращает список всех найденных фактов. Каждый факт возвращается как ассоциативный массив ключами которого являются поля факта, а значениями - значения полей.
Аргументы: отсутствуют.
Возвращаемое значение: значения всех полей всех фактов.
| Блок кода | ||
|---|---|---|
| ||
// Извлекает имя и значение всех фактов $names = fact.query(). select("name,value"). rows() |
Объект FactQueryCondition
...
// Возвращаем только поле botId к которым привязаны факты. |
where(field string, operator string, value mixed)
...
FactQuery
Назначение: задаёт условие поиска фактов. Несколько методов where объединяются по принципу логического "И", т.е. все условия должны быть выполнены. Метод where равносилен
Аналогичен методу 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.
Функции по работе с очередью сообщений пользователя
queue.size() int
Назначение: определение размера очереди сообщений пользователя.
Аргументы: отсутствуют.
Возвращаемое значение: число сообщений пользователя.
| Блок кода | ||
|---|---|---|
| ||
$messageCount = queue.size() // $messageCount содержит число сообщений пользователя за всё время диалога |
queue.last() ?UserMessage
Назначение: возвращает последнее сообщение пользователя либо nil, если очередь сообщений пуста.
Аргументы: отсутствуют.
Возвращаемое значение: объект UserMessage или nil.
| Блок кода | ||
|---|---|---|
| ||
$lastMessage = queue.last() // $lastMessage содержит последнее на данный момент сообщение пользователя |
queue.first() ?UserMessage
Назначение: возвращает первое сообщение пользователя либо nil, если очередь сообщений пуста.
Аргументы: отсутствуют.
Возвращаемое значение: объект UserMessage или nil.
| Блок кода | ||
|---|---|---|
| ||
$firstMessage = queue.first() // $firstMessage содержит первое сообщение пользователя |
queue.nth(index int) ?UserMessage
Назначение: возвращает сообщение пользователя по его порядковому номеру, начиная с 1.
Аргументы:
- index - порядковый номер сообщения пользователя.
Возвращаемое значение: объект UserMessage или nil.
| Блок кода | ||
|---|---|---|
| ||
$message = queue.nth(1) // $message содержит первое сообщение пользователя
$message = queue.nth(5) // $message содержит пятое сообщение пользователя |
queue.lastNth(index int) ?UserMessage
Назначение: возвращает сообщение пользователя по его порядковому номеру считая с конца очереди. Последнее сообщение соответствует порядковому номеру 1.
Аргументы:
- index - порядковый номер сообщения пользователя считая с конца очереди.
Возвращаемое значение: объект UserMessage или nil.
| Блок кода | ||
|---|---|---|
| ||
$message = queue.lastNth(1) // $message содержит последнее сообщение пользователя
$message = queue.lastNth(5) // $message содержит пятое с конца очереди сообщение пользователя |
Объект UserMessage
message string
Назначение: оригинальный текст сообщения.
| Блок кода | ||
|---|---|---|
| ||
$msg = queue.last().message // $msg содержит текст последнего сообщения пользователя |
attachments List
Назначение: список идентификаторов файлов приложенных к сообщению.
| Блок кода | ||
|---|---|---|
| ||
$attachments = queue.first().attachments // $attachments содержит список вложений первого сообщения пользователя. |
isEmpty() bool
Аргументы:
- field - название поля для которого задаётся условие, т.е. первый аргумент операции operator.
- operator - оператор обозначающий операцию выполняющуюся над field. Список доступных операций смотри ниже.
- value - второй аргумент операции.
Возвращаемое значение: тот же объект FactQuery.
Список доступных операций:
- "=" проверка, что field равно value.
- "!=" или "<>" проверка на неравенство, что field не равно value.
- ">" проверяет, что field больше value.
- "<" проверяет, что field меньше value.
- ">=" проверяет, что field больше или равно value.
- "<=" проверяет, что field меньше или равно value.
- "^@" или "startsWith" ищет совпадение строки value с началом field. Поиск регистрозависимый.
- "~" проверяет соответствие field регулярному выражению value. Поиск регистрозависимый.
- "!~" проверяет несоотвествие field регулярному выражению value. Поиск регистрозависимый.
- "~*" проверяет соответствие field регулярному выражению value. Поиск регистронезависимый.
- "!~*" проверяет несоотвествие field регулярному выражению value. Поиск регистронезависимый.
- "in" проверяет совпадение field хотя бы с одним значением в коллекции value.
- "not in" проверяет несовпадение field со всеми значениями из коллекции value.
| Блок кода | ||
|---|---|---|
| ||
// Ищем факты у которых 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).
Аргументы:
- cond - объект FactQueryCondition определяющий сложносоставное условие.
Возвращаемое значение: тот же объект FactQuery.
| Блок кода | ||
|---|---|---|
| ||
// Ищем факты у которых 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
Назначение: задаёт сортирову фактов по указанным полям.
Аргументы:
- fields - строка содержащая список полей (через запятую) по которым следует отсортировать факты либо коллекция содержащая названия полей. Каждое поле может содержать префикс "+" для сортировки по возрастанию или "-" для сортировки по убыванию. Если префикс не указан, то используется сортировка по возрастанию.
Возвращаемое значение: тот же объект FactQuery.
| Блок кода | ||
|---|---|---|
| ||
// Получаем все факты для бота с двойной сортировкой:
// сначала по контексту по возрастанию (т.е. в алфавитном порядке)
// и далее по имени факта по убыванию.
$facts = fact.query().
select("name,value").
where("botId", "=", @botId)
sortBy("+context,-name"). // можно также использовать коллеции. Например, sortBy(["+context", "-name"])
rows() |
limit(limit int) FactQuery
Назначение: ставит ограничение на максимальное количество извлекаемых фактов.
Аргументы:
- limit - целое число определяющее лимит на количество извлекаемых фактов.
Возвращаемое значение: тот же объект FactQuery.
| Блок кода | ||
|---|---|---|
| ||
// Получаем первые 10 фактов
$facts = fact.query().
select("name,value").
sortBy("name").
limit(10).
rows() |
skip(count int) FactQuery
Назначение: задаёт количество фактов которые следует пропустить при поиске.
Аргументы:
- count - целое число определяющее количество фактов для пропуска.
Возвращаемое значение: тот же объект FactQuery.
| Блок кода | ||
|---|---|---|
| ||
// Пропускаем 5 первых фактов и извлекаем следующие 10
$facts = fact.query().
select("name,value").
sortBy("name").
skip(5).
limit(10).
rows() |
one() mixed
Назначение: возвращает первое указанное через select поле первого найденного фактаНазначение: определяет пустое ли сообщение.
Аргументы: отсутствуют.
Возвращаемое значение: true, если сообщение пустое и false в противном случае значение поля.
| Блок кода | ||
|---|---|---|
| ||
$isEmpty// Извлекает имя первого найденного факта $firstFactName = queuefact.lastquery().isEmpty() // $isEmpty содержит true, если последнее сообщение пользователя пустое и false в противном случае |
hasAttachments() bool
select("name,value"). // value хоть и указано, но будет проигнорировано
one() |
column() List
Назначение: возвращает список состоящий из всех значений первого выбранного поля найденных фактовНазначение: определяет есть ли вложения в данном сообщении.
Аргументы: отсутствуют.
Возвращаемое значение: true, если сообщение имеет вложения и false в противном случаесписокзначений поля.
| Блок кода | ||
|---|---|---|
| ||
// Извлекает список имён всех найденных фактов $names$hasAttachments = queuefact.firstquery().hasAttachments() // $hasAttachments содержит true, если первое сообщение пользователя имеет вложения и false в противном случае |
Функции для работы с таймером
timer.start(time int, nodeId string) string
Назначение: запускает таймер обратного отсчёта. По истечении указанного времени бот осуществит переход на указанный узел (блок).
Аргументы:
- time - время в секундах.
- nodeId - идентификатор блока для перехода после завершения отсчёта.
select("name,value"). // value хоть и указано, но будет проигнорировано
column() |
row() Map
Назначение: возвращает все выбранные поля в виде ассоциативного массива для первого найденного факта.
Аргументы: отсутствуют.
Возвращаемое значение: значения всех полей первого фактаВозвращаемое значение: идентификатор таймера.
| Блок кода | ||
|---|---|---|
| ||
$timerId// Извлекает имя и значение первого найденного факта $names = timerfact.start(60, "760b9732-4bfb-4846-a348-faae5138fcb2") // $timerId содержит уникальный идентификатор таймера на 60 секунд |
timer.stop(timerId string)
Назначение: останавливает (удаляет) таймер обратного отсчёта.
Аргументы:
- timerId - идентификатор таймера.
query().
select("name,value").
row() |
rows() List<Map>
Назначение: возвращает список всех найденных фактов. Каждый факт возвращается как ассоциативный массив ключами которого являются поля факта, а значениями - значения полей.
Аргументы: отсутствуют.
Возвращаемое значение: значения всех полей всех фактовВозвращаемое значение: отсутствует.
| Блок кода | ||
|---|---|---|
| ||
$timerId// Извлекает имя и значение всех фактов $names = timerfact.start(60, "760b9732-4bfb-4846-a348-faae5138fcb2") timer.stop($timerId) // останавливаем (удаляем) таймер |
Функции для работы с текстом на естественном языке (NLP)
nlp.parse(message string|UserMessage) Sentence
Назначение: парсит текст на естественном языке.
Аргументы:
- message - текст на естественном языке или объект UserMessage.
Возвращаемое значение: объект Sentence содержащий информацию о всех намерениях и сущностях исходного сообщения.
Примечание: данная функция извлекает из текста только сущности. Для работы с намерениями используйте функцию nlu.parse
| Блок кода | ||
|---|---|---|
| ||
$sentence = nlp.parse(queue.first()) // парсим первое сообщение пользователя |
nlp.join(message1 string|UserMessage, message2 string|UserMessage) Sentence
Назначение: объединяет два текста на естественном языке в одно и затем парсит его.
Аргументы:
- message1 - текст на естественном языке или объект UserMessage.
- message2 - текст на естественном языке или объект UserMessage.
Возвращаемое значение: объект Sentence содержащий информацию о всех намерениях и сущностях объединённого сообщения.
| Блок кода | ||
|---|---|---|
| ||
$sentence = nlp.join(queue.lastNth(2), queue.lastNth(1)) // объединяем предпоследнее и последнее сообщения пользователя и затем парсим его |
nlp.setPerception($sentence Sentence)
Назначение: позволяет установить сообщение пользователя для обработки в других узлах (блоках) схемы бота.
Аргументы:
- sentence - объект Sentence содержащий информацию о намерениях и сущностях некоторого сообщения.
Возвращаемое значение: отсутствует.
| Блок кода | ||
|---|---|---|
| ||
$sentence = nlp.join(queue.lastNth(2), queue.lastNth(1)) // объединяем предпоследнее и последнее сообщения пользователя и затем парсим его
nlp.setPerception($sentence) // Теперь остальные узлы схемы будут работать с cообщением $sentence |
Функции для "понимания" естественного языка.
nlu.parse(text string, agentId string, timezoneOffset int = 0) Sentence
Назначение: разбор текста на естественном языке. Выявление намерений и сущностей.
Аргументы:
...
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.
Функции по работе с очередью сообщений пользователя
queue.size() int
Назначение: определение размера очереди сообщений пользователя.
Аргументы: отсутствуют.
Возвращаемое значение: число сообщений пользователя.
| Блок кода | ||
|---|---|---|
| ||
$messageCount = queue.size() // $messageCount содержит число сообщений пользователя за всё время диалога |
queue.last() ?UserMessage
Назначение: возвращает последнее сообщение пользователя либо nil, если очередь сообщений пуста.
Аргументы: отсутствуют.
Возвращаемое значение: объект UserMessage или nilВозвращаемое значение: объект Sentence.
| Блок кода | ||
|---|---|---|
| ||
$sentence$lastMessage = nluqueue.parse("Доброе утро Вася!", "d926726a-5acb-4233-8c1e-ce4300921de0") |
Функции для работы с HTTP
http.request(url string, method string, params Collection, headers Map) Map
Назначение: отправляет HTTP запрос на указанный URL.
Аргументы:
- url - URL адрес на который будет оправлен запрос.
- method - HTTP метод. Допустимые значения: GET, POST, PUT, DELETE, PATCH, HEAD и OPTIONS.
- params - параметры запроса. Могут быть представлены как списком так и ассоциативным массивом.
- headers - HTTP заголовки запроса. По умолчанию устанавливается заголовок Content-Type: application/json.
last() // $lastMessage содержит последнее на данный момент сообщение пользователя |
queue.first() ?UserMessage
Назначение: возвращает первое сообщение пользователя либо nil, если очередь сообщений пуста.
Аргументы: отсутствуют.
Возвращаемое значение: объект UserMessage или nil.
| Блок кода | ||
|---|---|---|
| ||
$firstMessage = queue.first() // $firstMessage содержит первое сообщение пользователя |
queue.nth(index int) ?UserMessage
Назначение: возвращает сообщение пользователя по его порядковому номеру, начиная с 1.
Аргументы:
- index - порядковый номер сообщения пользователя.
Возвращаемое значение: объект UserMessage или nil.Возвращаемое значение: HTTP ответ на запрос в виде ассоциативного массива со следующими ключами: statusCode - HTTP код ответа, body - тело ответа (преобразованное в соответствии с заголовком Content-Type), headers - HTTP заголовки ответа в виде ассоциативного массива, exception - текст ошибки или nil если запрос прошёл без ошибок.
| Блок кода | ||
|---|---|---|
| ||
// Выполняем запрос на получение списка юзеров $response $message = httpqueue.request("https://iam.twin24.ai/api/v1/users", "GET", {"limit": 15, "offset": 5}, {"Authorization": "Bearer authToken"}) // Извлекаем информацию о запросе $statusCode = $response.get("statusCode") $body = $response.get("body") $headers = $response.get("headers") $exception = $response.get("exception") // Можно извлечь так {"statusCode": $statusCode, "body": $body, "headers": $headers, "exception": $exception} = $response // Или даже так (тут важен порядок перечисления переменных) ($statusCode, $body, $headers, $exception) = $response // или [$statusCode, $body, $headers, $exception] = $response // получаем общее количество юзеров и их список $userCount = $body.get("count") $userList = $body.get("items") |
Системные функции
sys.sleep(microseconds int)
Назначение: останавливает работу бота на указанное количество микросекунд. Если количество микросекунд превышает 1 минуту, то пауза будет уменьшена до 1 минуты.
Аргументы:
- microseconds - число микросекунд паузы.
nth(1) // $message содержит первое сообщение пользователя
$message = queue.nth(5) // $message содержит пятое сообщение пользователя |
queue.lastNth(index int) ?UserMessage
Назначение: возвращает сообщение пользователя по его порядковому номеру считая с конца очереди. Последнее сообщение соответствует порядковому номеру 1.
Аргументы:
- index - порядковый номер сообщения пользователя считая с конца очереди.
Возвращаемое значение: объект UserMessage или nil.
| Блок кода | ||
|---|---|---|
| ||
$message = queue.lastNth(1) // $message содержит последнее сообщение пользователя
$message = queue.lastNth(5) // $message содержит пятое с конца очереди сообщение пользователя |
Объект UserMessage
message string
Назначение: оригинальный текст сообщения.
| Блок кода | ||
|---|---|---|
| ||
$msg = queue.last().message // $msg содержит текст последнего сообщения пользователя |
attachments List
Назначение: список идентификаторов файлов приложенных к сообщению.
| Блок кода | ||
|---|---|---|
| ||
$attachments = queue.first().attachments // $attachments содержит список вложений первого сообщения пользователя. |
isEmpty() bool
Назначение: определяет пустое ли сообщение.
Аргументы: отсутствуют.
Возвращаемое значение: true, если сообщение пустое и false в противном случаеВозвращаемое значение: отсутствует.
| Блок кода | ||
|---|---|---|
| ||
sys.sleep(3_000_000) // Пауза в 3 секунды |
Функции для работы с GPT-3
gpt3.ask(text string) string
Назначение: отправляет сообщение в демо версию нейросети RuGTP-3 и возвращает её ответ.
Аргументы:
- text - запрос к нейросети на русском языке.
$isEmpty = queue.last().isEmpty() // $isEmpty содержит true, если последнее сообщение пользователя пустое и false в противном случае |
hasAttachments() bool
Назначение: определяет есть ли вложения в данном сообщении.
Аргументы: отсутствуют.
Возвращаемое значение: true, если сообщение имеет вложения и false в противном случаеВозвращаемое значение: ответ нейросети в виде строки.
| Блок кода | ||
|---|---|---|
| ||
$answer$hasAttachments = gpt3.ask("Есть ли жизнь на Марсе?") // В $answer будет ответ нейросети на заданный вопросqueue.first().hasAttachments() // $hasAttachments содержит true, если первое сообщение пользователя имеет вложения и false в противном случае |