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

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

Agent Platform предоставляет встроенные функции, которые позволяют управлять диалогом, взаимодействовать с базами данных и интеграциями, отправлять 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

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

    JavaScriptPythonОписание
    getAccountIdget_account_idID вашего аккаунта Agent Platform.
    getProjectShortNameget_project_short_nameКороткое имя проекта.
    getBotId
    getChannelType
    isAsyncChannel
    isTestChannel
    get_bot_id
    get_channel_type
    is_async_channel
    is_test_channel
    ID и тип канала.
    getChatIDget_chat_idИдентификатор диалога.
    getSessionIDget_session_idИдентификатор текущей сессии.
    getClientInfoget_client_infoИнформация о пользователе, который взаимодействует с процессом.
  • Получайте подробную информацию о запросе пользователя:

    JavaScriptPythonОписание
    getRequestIdget_request_idID запроса.
    getMessageContentget_message_contentКонтент сообщения.
    getRawRequestget_raw_requestПолные данные запроса.
    getEmailContentget_email_contentДанные письма при использовании триггера IMAP Email.
  • Отслеживайте состояние диалога:

    JavaScriptPythonОписание
    getChatHistoryget_chat_historyИстория сообщений в диалоге.
    getLastFunctionResultget_last_function_resultРезультат последнего вызова функции в процессе.
  • Сохраняйте и получайте значения по ключу (не поддерживаются для движка версии 1):

    JavaScriptPythonОписание
    setsetСохраняет значение по ключу. Ключ можно затем использовать в подстановках.
    getgetВозвращает сохраненное значение по ключу.
примечание

В пользовательских Python-функциях и блоке Код доступны встроенные функции sdk.context.*. Названия функций соответствуют используемым в JavaScript с переводом в snake_case.

Пример: sdk.context.get_channel_type().

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

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

JavaScriptPythonОписание
sendTextsend_textТекстовое сообщение.
sendHtmlsend_htmlСообщение в разметке HTML.
sendAudiosend_audioАудио.
sendImagesend_imageИзображение.
sendVideosend_videoВидео.
sendFilesend_fileФайл.
sendLocationsend_locationГеолокация.
sendRawRequestsend_raw_requestДанные для ответа в формате, который поддерживает канал.
примечание

В пользовательских Python-функциях и блоке Код доступны встроенные функции sdk.reactions.*. Названия функций соответствуют используемым в JavaScript с переводом в snake_case.

Параметры передаются в виде Python-словаря, ключи указываются в кавычках.

Пример: await sdk.reactions.send_text({"text": "Привет!"}).

Telegram

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

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

Функции:

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

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

Синхронность или асинхронность встроенных функций зависит от версии движка в проекте.

Версия 2
Все встроенные функции являются синхронными.
Версия 1

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

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

  • Context:

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

    • getCaller
    • getSipHeaders
    • hangUp
    • setNoInputTimeout