Перейти к основному содержимому

Встроенные функции

Agent Platform предоставляет встроенные JavaScript-функции, которые позволяют управлять диалогом, взаимодействовать с базами данных и интеграциями, отправлять HTTP-запросы и многое другое.

Подробнее о работе с функциями читайте в разделе Использование функций в процессе.

Встроенные коллекции

КоллекцияНазначение
AgentContextУправлять общим контекстом и отдельными контекстами агентов
Asr и TtsРаспознавать и синтезировать речь
ContextПолучать метаданные, подробную информацию о запросе пользователя, отслеживать состояние процесса
CredentialsПолучать учетные данные для интеграций
Db и SessionDbРаботать с базами данных
DialerУправлять входящими звонками
EmailОтправлять email-сообщения
HttpВыполнять HTTP-запросы
LlmВзаимодействовать с языковыми моделями
LogЗаписывать сообщения в журнал
ProjectRouterВзаимодействовать с другими проектами Agent Platform и JAICP
RagРаботать с базами знаний RAG
ReactionsОтправлять ответы клиенту в подключенном канале
TelegramОтправлять сообщения в Telegram без подключения канала

AgentContext

Функции для работы с контекстом. Подробнее смотрите в статье Управление контекстом агента.

  • addNote(text, [agentId]) — добавляет текстовую заметку в контекст указанного агента, а если агент не указан — в общий контекст. Заметка должна быть непустой: если она состоит только из пробельных символов, то добавлена не будет.
  • getNotes([agentId]) — возвращает все заметки из общего контекста и контекста агента (если указан), объединенные в одну строку, в порядке добавления.
  • deleteNotes([agentId]) — удаляет все заметки из контекста указанного агента, если указано all — из всех контекстов, а если параметр не указан — из общего контекста.
  • putValue(key, value, [agentIds]) — сохраняет значение по ключу в контекст каждого из указанных агентов, а если агенты не указаны — в общий контекст.
  • getValue(key, [agentId]) — получает значение по ключу. Если указан агент, сначала ищет в его контексте, затем в общем.
  • deleteValue(key, [agentId]) — удаляет значение по ключу из контекста указанного агента, если указано all — из всех контекстов, а если параметр не указан — из общего контекста.
  • clear([agentId]) — удаляет контекст (все ключи и заметки) указанного агента, если указано all — все контексты, а если параметр не указан — общий контекст.

Asr и Tts

Для работы этих функций нужно подключить интеграции: Модель ASR и Голос TTS.

  • Asr.recognize — получает файл по URL и распознает речь в нем.
  • Tts.synthesize — синтезирует речь из текста и возвращает URL, по которому можно скачать аудиофайл.

Подробнее о работе с этими функциями читайте в статье ASR и TTS в текстовых каналах.

Context

  • Получайте различные метаданные процесса:

    • getAccountId — ID вашего аккаунта Agent Platform.
    • getProjectShortName — короткое имя проекта.
    • getBotId, getChannelType, isAsyncChannel, isTestChannel — ID и тип канала.
    • getChatID, getSessionID — идентификаторы диалога и текущей сессии.
    • getClientInfo — информация о пользователе, который взаимодействует с процессом.
  • Получайте подробную информацию о запросе пользователя:

    • getRequestId — ID запроса.
    • getMessageContent, getRawRequest — контент сообщения и полные данные запроса.
    • getEmailContent — данные письма при использовании триггера IMAP Email.
  • Отслеживайте состояние диалога:

    • getChatHistory — история сообщений в диалоге.
    • getLastFunctionResult — результат последнего вызова функции в процессе.

Credentials

Получайте учетные данные для интеграций из хранилища с помощью функции get вместо непосредственной вставки в код.

Db и SessionDb

С помощью Db вы можете работать с базами данных, которые вы добавили в разделе Интеграции или Базы данных.

Функции из коллекции SessionDb работают аналогично, но не требуют настройки интеграции с БД и обрабатывают данные только в рамках текущей сессии.

  • Получайте данные:

    • get — получить запись по ключу.
    • findByFilters — найти одну или несколько записей по заданным фильтрам.
    • countByFilters — получить количество записей, которые соответствуют фильтрам.
  • Добавляйте и изменяйте данные:

    • put — добавить новую запись в базу.
    • updateByFilters — обновить поля в записях, которые соответствуют фильтрам.
  • Удаляйте данные:

    • delete — удалить запись по ключу.
    • deleteByFilters — удалить все записи, которые соответствуют фильтрам.

Dialer

Функции для входящих звонков:

  • Получение данных:

    • getCaller — получить номер телефона клиента.
    • getSipHeaders — получить SIP-заголовки звонка.
  • Управление звонком:

    • hangUp — завершить вызов. Если ассистент общается в текстовом канале, вы можете отправить клиенту сообщение через необязательный параметр text.
    • setNoInputTimeout — задать время ожидания ответа от клиента.
примечание

Остальные функции Dialer предназначены для исходящих звонков и сейчас не поддерживаются.

Email

Отправляйте email-сообщения с помощью функции send.

Http

  • Функции для вызова HTTP-методов:

    • get
    • post
    • put
    • delete
    • patch
  • execute — функция, в которой вы можете выбрать HTTP-метод сами.

Llm

  • getChatHistory — получайте историю сообщений в специальном формате для LLM.
  • sendRequest — настраивайте все параметры запроса вручную.
  • sendText — отправляйте простые текстовые запросы к LLM.
  • summarizeText — сокращайте длинные тексты до заданного размера с сохранением ключевой информации. Поддерживаются тексты до 200 000 символов.

Log

Используйте функции Log, чтобы выводить промежуточные значения переменных или оставлять заметки. Это поможет быстрее найти ошибку в сложном процессе.

Вы можете добавлять в журнал сообщения разных уровней. Смотрите результаты на вкладке Выполнение.

ProjectRouter

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

  • callProject — вызов другого проекта и JAICP. Ответ другого проекта не отправляется клиенту, а обрабатывается в исходном проекте. Подробнее смотрите в разделе Вызов другого проекта.
  • switchTo — передача управления в другой проект и JAICP. Позволяет другому боту вести диалог с клиентом. Новый бот может вернуть диалог исходному боту с помощью backToOriginalProject. Подробнее смотрите в разделе Передача управления в другой проект.
  • backToOriginalProject — вернуть управление в исходный проект.
  • getCustomData — извлечь данные, полученные при передаче или возврате управления.
к сведению

JAICP (Just AI Conversational Platform) — платформа для разработки диалоговых решений любой сложности. Подробнее о JAICP можно узнать на нашем сайте или в документации.

Rag

Используйте интеграцию с базой знаний RAG:

  • retrieveChunks — получить фрагменты документов, релевантные запросу пользователя.
  • generateAnswer — сгенерировать ответ на вопрос пользователя с помощью RAG.

Reactions

Отправляйте сообщения клиентам в подключенных каналах:

  • sendText — текстовое сообщение.
  • sendHtml — сообщение в разметке HTML.
  • sendAudio, sendImage, sendVideo, sendFile — аудио, изображение, видео или файл.
  • sendLocation — геолокация.
  • sendRawRequest — данные для ответа в формате, который поддерживает канал.

Telegram

Отправляйте сообщения в Telegram без подключения канала. В каждой функции укажите API-токен вашего Telegram-бота. Эти функции можно использовать вместо Reactions, например, в следующих случаях:

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

Функции:

  • sendText — отправить текстовое сообщение.
  • sendImage, sendAudio, sendVoice — отправить изображение, аудио или голосовое сообщение.
  • sendButtons — отправить сообщение с кнопками.

Асинхронность функций

Большинство встроенных функций являются асинхронными. Вы можете вызывать их с помощью await.

Синхронными являются только следующие функции:

  • Context:

    • getAccountId
    • getProjectShortName
    • getBotId
    • getChannelType
    • isAsyncChannel
    • isTestChannel
    • getChatID
    • getSessionID
    • getClientInfo
    • getRequestId
    • getMessageContent
    • getRawRequest
    • getEmailContent
    • getLastFunctionResult
  • Dialer:

    • getCaller
    • getSipHeaders
    • hangUp
    • setNoInputTimeout