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

Ключ

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

...

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

Объект FactQuery

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

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

select(fields string|Collection) FactQuery

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

Аргументы:

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

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

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 - идентификатор таймера.

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

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

Аргументы:

  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. 

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)

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

Аргументы:

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

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

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

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

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

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

Аргументы:

  1. text -текст для разбора.
  2. agentId - идентификатор (uuid) агента (нейросети) производящего разбор текста.
  3. timezoneOffset - смещение временной зоны, необходимое для правильного выявления временных сущностей. По умолчанию используется смещение для UTC.

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

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

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

http.request(url string, method string, params Collection, headers Map) Map

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

Аргументы:

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

Возвращаемое значение: HTTP ответ на запрос в виде ассоциативного массива со следующими  ключами: statusCode - HTTP код ответа, body - тело ответа (преобразованное в соответствии с заголовком Content-Type),  headers - HTTP заголовки ответа в виде ассоциативного массива, exception - текст ошибки или nil если запрос прошёл без ошибок.  

Блок кода
languagephp
// ПолучаемВыполняем всезапрос фактына дляполучение ботасписка сюзеров
$response двойной сортировкой: 
// сначала по контексту по возрастанию (т.е. в алфавитном порядке)
// и далее по имени факта по убыванию.
$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 поле первого найденного факта.

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

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

= 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 минуты.

Аргументы:

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

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

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

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

gpt3.ask(text string) string

Назначение: отправляет сообщение в демо версию нейросети RuGTP-3 и возвращает её ответ.

Аргументы:

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

column() List

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

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

...

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

row() Map

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

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

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

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

rows() List<Map>

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

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

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

Блок кода
languagephp
// Извлекает имя и значение всех фактов
$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

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

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

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

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

queue.last() ?UserMessage

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

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

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

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

queue.first() ?UserMessage

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

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

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

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

queue.nth(index int) ?UserMessage

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

Аргументы:

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

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

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

queue.lastNth(index int) ?UserMessage

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

Аргументы:

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

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

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

Объект UserMessage

message string

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

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

attachments List

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

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

isEmpty() bool

Аргументы:

  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 поле первого найденного фактаНазначение: определяет пустое ли сообщение.

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

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

Блок кода
languagephp
$isEmpty// Извлекает имя первого найденного факта
$firstFactName = queuefact.lastquery().isEmpty() // $isEmpty содержит true, если последнее сообщение пользователя пустое и false в противном случае

hasAttachments() bool


    select("name,value").        // value хоть и указано, но будет проигнорировано
    one()

column() List

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

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

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

Блок кода
languagephp
// Извлекает список имён всех найденных фактов
$names$hasAttachments = queuefact.firstquery().hasAttachments() // $hasAttachments содержит true, если первое сообщение пользователя имеет вложения и false в противном случае

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

timer.start(time int, nodeId string) string

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

Аргументы:

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

    select("name,value").        // value хоть и указано, но будет проигнорировано
    column()

row() Map

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

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

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

Блок кода
languagephp
$timerId// Извлекает имя и значение первого найденного факта
$names = timerfact.start(60, "760b9732-4bfb-4846-a348-faae5138fcb2") // $timerId содержит уникальный идентификатор таймера на 60 секунд

timer.stop(timerId string)

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

Аргументы:

  1. timerId - идентификатор таймера.
query().
    select("name,value").
    row()

rows() List<Map>

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

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

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

Блок кода
languagephp
$timerId// Извлекает имя и значение всех фактов
$names = timerfact.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)

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

Аргументы:

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

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

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

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

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

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

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

queue.last() ?UserMessage

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

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

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

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

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

http.request(url string, method string, params Collection, headers Map) Map

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

Аргументы:

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

queue.first() ?UserMessage

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

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

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

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

queue.nth(index int) ?UserMessage

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

Аргументы:

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

Возвращаемое значение: объект UserMessage или nil.Возвращаемое значение: HTTP ответ на запрос в виде ассоциативного массива со следующими  ключами: statusCode - HTTP код ответа, body - тело ответа (преобразованное в соответствии с заголовком Content-Type),  headers - HTTP заголовки ответа в виде ассоциативного массива, exception - текст ошибки или nil если запрос прошёл без ошибок.  

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

Аргументы:

  1. microseconds - число микросекунд паузы.
nth(1) // $message содержит первое сообщение пользователя
$message = queue.nth(5) // $message содержит пятое сообщение пользователя

queue.lastNth(index int) ?UserMessage

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

Аргументы:

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

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

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

Объект UserMessage

message string

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

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

attachments List

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

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

isEmpty() bool

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

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

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

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

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

gpt3.ask(text string) string

Назначение: отправляет сообщение в демо версию нейросети RuGTP-3 и возвращает её ответ.

Аргументы:

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

hasAttachments() bool

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

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

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

Блок кода
languagephp
$answer$hasAttachments = gpt3.ask("Есть ли жизнь на Марсе?") // В $answer будет ответ нейросети на заданный вопросqueue.first().hasAttachments() // $hasAttachments содержит true, если первое сообщение пользователя имеет вложения и false в противном случае